wacly/dsh-dynamic-plugin-manage
wacly★ 2TypeScript最后同步: 2026-08-15
deepseek harness 动态插件管理
README 摘要
dsh-dynamic-plugin-manage 给 DeepSeek Harness( dsh )的动态插件补上「持久化」能力:把当前会话里的动态插件( cordis define 定义的)导出到固定目录,之后(包括重启后)按需选择性地加载重放回来,并在 Web 设置页里提供一个「动态插件」栏目,可以查看所有已保存的动态插件、一键导入到当前会话。 它解决的是 dsh 动态插件的一个短板—— cordis define 只存在进程内存里,重启即消失。本插件在磁盘上建了一个「动态插件仓库」,补齐「源码别丢 + 随时可再装」这一环。 三个工具 + 一个设置页 安装后,模型(AI)可以调用三个工具: 工具 作用 export dynamic plugins 把当前会话的动态插件逐个导出为「包」(每个插件一个目录,可指定包名,默认用 pluginId) list dynamic plugins 列出目录里已持久化的包(包名、name、purpose、含 host/client 半边) load dynamic plugins 按 names (包名)选择性 define + run 指定的插件 同时,Web 页面的「设置」里会新增一个「动态插件」栏目:列出磁盘仓库里所有已保存的插件(名称、用途、host/client 半边标记),每个插件带一个「导入」按钮,一键 define + 运行到 当前打开的那个会话 。 使用流程示例(对话里直接说即可): 设置页的「一键导入」是 静默 的:它先 define (mint 出新的 pluginId/packageId),再走 dynamicCordisRunner.startUserRun 这个 用户手势路径 (结算用 agent.inject ),所以不会像模型发起 load 那样触发一条「上下文注入 cordis-host-runner」并让模型回一大段话——你点完「导入」直接就能用插件。而对话里的 load dynamic plugins 工具仍是模型驱动路径(模型本来就参与其中),保持不变。 固定目录 默认 /.dsh/dynamic-plugins/ ,若设置了 $DSH HOME 则用 $DSH HOME/dynamic-plugins/ 。 每个插件是一个 包 (一个目录),包名即目录名;保存时可指定包名,不指定则默认用 pluginId。包内拆成两部分: define.json 的内容: code 字段不再是内联源码,而是 引用包内对应的代码文件 ;真正的源码抽离成 host.js / client.js (有需要时也可引用更多文件, code 里的值就是相对包目录的文件路径)。 这份内容就是 cordis define 需要的全部字段,所以重放时无需原始对话上下文。 兼容性:插件在 list / load …
在 GitHub 查看完整 README →