How to use dsh-evolve
Self-evolution: the agent hot-mounts/removes persistent plugins on itself mid-session.
This article is auto-derived from indexed fields (wiki / faq / compatibility_json), not freshly AI-generated.
This article is derived from the plugin's already-indexed fields (wiki / faq / compatibility_json / readme), not freshly generated by AI. Source field is noted at the end of each section.
Quick start
Self-evolution: the agent hot-mounts/removes persistent plugins on itself mid-session.
— source: plugins.ai_summary
Install & verify
dsh plugin --profile web add github:william-jin-cmu/dsh-evolve
Run the command above in your DSH Web Profile. Then enable the plugin in the plugin list.
— source: plugins.install
Key points
evolve_add(name, source, description?, config?)— 把一段纯 ESM cordis 插件源码持久化到 evolve store(~/.dsh/evolve/<name>.mjs+ manifest),并热挂载。同名再次调用即替换(旧 fiber 先完整卸载)。evolve_remove(name, keepSource?)— 卸载 fiber(它注册的工具/监听/服务全部自动清理)、移出 manifest、删除源码。evolve_list()— 每个 evolution 的名称、fiber 状态、版本、用途。- 同名重试必须能加载新源码:挂载失败不写 manifest、rev 不前进,若用 rev 做
import()的 cache-bust,重试会命中 Node 模块缓存加载旧的坏源码(这个 bug 正是在 E2E 里被 agent 自己诊断出来的)。现用进程内单调 seq 作为 cache-buster,与持久 rev 解耦。 - 中途改工具集会使该 session 的 prompt cache 前缀失效,一次性成本,正确性不受影响。
— source: plugin_wiki.readme_en (fallback readme_raw)
Pitfalls
Review the upstream repo before installing. This guide is auto-derived from indexed fields and may lag the latest release. If anything contradicts the official docs, treat the upstream source as authoritative.
— source: general rule