Skip to main content

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