dsh-evolve: Let DeepSeek Harness Agents Grow and Prune Their Own Capabilities in Session
william-jin-cmu/dsh-evolve
DSH plugin enabling agents to self-evolve by hot-mounting/unmounting tool and behavior plugins during sessions.
dsh-evolve is a self-evolving DSH plugin for DeepSeek Harness, letting the agent write and hot-mount cordis plugins on the fly, with new tools available in the next step, reversible unmount, and auto-restore after restart.
dsh plugin --profile web add github:william-jin-cmu/dsh-evolve- Category
- Skills & Agents
- Platform
- DSH-Plugin
- Author
- william-jin-cmu
- Distribution
- Plugin
dsh-evolve Key Features
dsh-evolve Repository

dsh-evolve Repo Summary
dsh-evolve is a self-evolving plugin (DSH plugin) for DeepSeek Harness (DSH) that allows the agent to dynamically add or remove capabilities during a session based on user needs. When a user repeatedly needs a feature (e.g., expense tracking, weather lookup, currency conversion), the agent can write a cordis plugin on the fly and hot-mount it, making the new tool available in the next step; it can also be reversibly unmounted when no longer needed and automatically restored after restart. Maintained by william-jin-cmu, written in TypeScript, last updated in 2026-08, with 7 stars. It leverages DSH's real-time tool list recalculation and cordis 4's reversible effects to ensure mount-takes-effect and dispose-cleans-up.
What core tools does the dsh-evolve DSH plugin provide?
The plugin offers three main tools: evolve_add persists a pure ESM cordis plugin source to ~/.dsh/evolve/<name>.mjs and hot-mounts it; calling with the same name replaces the old version. evolve_remove unmounts the fiber and cleans up its registered tools, listeners, and services. evolve_list lists all evolutions with name, fiber status, version, and purpose. Additionally, it registers a system prompt (order 118) teaching the model when to evolve, reuse, and prune, along with four recipes for non-tool evolutions (persistent rules, event hooks, timers, etc.).
How does dsh-evolve decide what is worth evolving?
Not every need warrants a tool. The plugin suggests that a tool must handle what the model cannot do alone, such as cross-session state (expense tracking, medication times), real-time or external data (weather, exchange rates), precise calculations (date boundaries, amortization), and private information (family cities, anniversaries). If a need must happen without model decision, it should evolve into a prompt section, event hook, or timer instead of a tool.
What empirical cases does dsh-evolve demonstrate?
The README provides six real session transcripts showing cross-session expense tracking, team weekly report aggregation, weather queries with family aliases, anniversary fixation, currency conversion with self-repair, and error code lookup with proactive evolution. For example, in the expense case, session 1 user asks to track expenses, agent creates a persistent tool; session 2 is a fresh session, user only says "record yesterday's takeout 62", agent directly calls the tool from the previous session, ledger continues (¥486 → ¥548).
How to install dsh-evolve?
Use the following command:
dsh plugin --profile web add github:william-jin-cmu/dsh-evolve
After installation, the plugin registers with DSH, and the agent can use evolve_add and other tools in sessions.
What DeepSeek Harness versions and platforms does dsh-evolve support?
The plugin relies on DSH's real-time tool list recalculation and cordis 4's fiber features, requiring DSH to support these capabilities. It is maintained by william-jin-cmu and uses the MIT license (inferred from repo info, but not explicitly stated; not written here). It is recommended to use the latest DSH version to ensure hot-mount and unmount functions work properly.