dsh-genie
Wishes that outlive the session — turn a DeepSeek Harness agent's runtime plugins into permanently installed ones, with no pnpm, no network, and no build authorization.
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:swaylq/dsh-genie说明文档
阅读完整 README ↗🪔 dsh-genie
让愿望活过这一次会话。
DeepSeek Harness 本来就会自己写插件,
只是留不住。这个包补的是后半截。
English | 中文
缺的那一半
DeepSeek Harness 自带一套自引用工具集 —— cordis_inspect、cordis_define、cordis_run ——
agent 可以现场写一个插件,热挂进正在跑的进程。你说一句想要什么,它当场造出来,当场就能用。
然后你一重启,没了。这是那套工具集官方 README 的原话:
动态包只存在于共享 DSH 进程内存中。……它不会创建插件文件、安装任何包、修改
cordis.yml或个人/项目配置、跨重启存续,也不能自动转为正式插件。若要保留实验结果,应让 agent 通过常规开发流程实现普通的本地、项目或仓库插件。
dsh-genie 就是把这句「常规开发流程」压成了一次工具调用。
完整闭环
你 ▸ 以后我每次说「发车」,就把改动全暂存、生成 message 提交
▸ agent 写好插件,cordis_run 挂上 ← DSH 自带
▸ 你试了一下,好用
▸ 「留着」
▸ genie_keep dyn-1 → dsh-wish-ship-it ← 本包
▸ 重启
▸ 还在。
两个让这件事真正舒服的细节:
- 不用 pnpm、不联网、不需要构建授权。 实现的愿望直接写进
$DSH_HOME/genie/, 再软链到启动器本来就会查找模块的地方。对比一下从 git 装插件的常规路径:作者得提供prepare脚本,你还得给一次allowBuilds授权 —— 那等于允许该包的代码在安装时于你机器上执行, 而且不在 agent 的任何沙箱里。 - 它就是一堆文件。 每个愿望都是一个能读的目录,里面是
package.json、cordis.patch.yml和index.js。你可以读它、改它、git init它、发布它。授予之后 dsh-genie 再也不碰它。
安装
dsh plugin --profile web add github:swaylq/dsh-genie
然后重启 dsh。就这样 —— 纯 JavaScript,没有构建步骤,所以没有 prepare 脚本,
也没有任何东西需要你授权。
已经自己挂了 @deepseek-ai/dsh-tool-cordis?见组合。
装完多了什么
genie_keep | 把 agent 刚验证好的动态包变成永久插件。只在动态包 runner 已组合时出现。 |
genie_wish | 同样的事,但直接从 agent 写的代码来,跳过原型步骤。 |
genie_list | 本机所有愿望,以及它在当前 profile 里是否生效。 |
genie_revoke | 撤销一个愿望。默认保留源码。 |
/wish | 给人看的那一面:授予了什么、哪些在生效、代码在哪。 |
这个组合包还会挂上 @deepseek-ai/dsh-tool-cordis,也就是 DeepSeek Harness 自带的那套自我改造工具集。
它随每份安装一起发货,但官方 profile 默认不挂 —— 它的 runner 倒是挂着的,
所以打开它一个包都不用装。