dsh-plugin-product-subagents 使用指南
把外部 Agent CLI(Claude Code、Codex、任意 ACP 客户端)变成 DeepSeek Harness 中可按角色调用的子代理,支持续聊、跨进程会话恢复与按角色权限隔离。
本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。
本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。
快速上手
dsh-plugin-product-subagents
— 源: plugin_wiki.wiki_content
安装与验证
dsh plugin --profile web add dsh-plugin-product-subagents
复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。
— 源: plugins.install
关键要点
- 可续聊子代理 — 同步 one-shot 或异步连续式(用
send_message/list_agents/interrupt_agent控制;用product_wait同步 attach)。 - 会话连续性 — 子代理的远程产品会话在空闲释放与进程重启后仍可恢复(持久注册表 + 日志标记;claude/codex 按 id 恢复,ACP 重连)。
- 声明式角色(
roles/*.json)—general(默认)、code-review、explore(禁派)、debug。委派默认开启,角色可显式禁止;未知角色回退general。 - 两层权限模型 — 中继模型永远是只读传话筒;
permissionMode(readonly/default/full)作用于远程产品,映射到各产品自己的 CLI 标志。 - 权限天花板 — 子代理不能派生出比自己权限更高的后代。
— 源: plugin_wiki.readme_zh (fallback readme_raw)
常见问题
装好之后怎么开始用?
重启 DeepSeek Harness 让插件加载,新会话里模型就会多出 6 个 product_* 工具,最常用的是 product_delegate(按角色派活)和 product_wait(等子代理返回)。要先在 PATH 上准备好至少一个产品 CLI(claude、codex 或 opencode/agent/cbc/gemini 之一)。
不配置也能用吗?
可以。插件只检测 PATH 上已有的产品 CLI 并自动注册;只装了 Claude Code 就有 claude-code 这个 provider,三件套都不装就什么也跑不起来。要加 Cursor、CodeBuddy 这类自定义 ACP 客户端才需要写 config.providers。
远程子代理的会话能跨进程恢复吗?
可以。子代理的远程会话 ID 会被三处冗余记录:内存绑定 → 默认 ~/.dsh/product-subagents-registry.json 注册表 → 子会话事件日志里的 PRODUCT_SESSION 标记;空闲释放或重启后下次 product_submit 会按这个顺序恢复,自动接上同一会话。
子代理可以再派自己的子代理吗?能突破我的权限吗?
默认允许,角色 JSON 里写 allowDelegation: false 就能禁止。权限有天花板:readonly < default < full,子代理不能派生比自己权限更高的后代,调用会被 product_delegate 直接拒绝。
子代理里的中继模型(relay)会不会偷偷改我文件?
不会。子代理里跑的"中继模型"只看得到 product_submit(必要时再加 product_delegate),永远拿不到 Bash、文件编辑这类写工具;所有实际改文件的工作都被丢给远端 Claude Code / Codex / ACP 进程做,受对应角色 permissionMode 控制。
Windows 上能跑吗?
能。插件在 Windows 下通过 cmd.exe /d /s /c 启动 .cmd 垫片(lib/run.js),任务文本里带空格或引号会自动转义;CI 在 macOS / Ubuntu / Windows × Node 18/20/22 全跑通过。
哪些 ACP 客户端可以直接用,不用写代码?
任何走 Agent Client Protocol(ACP)的 CLI 都可以直接当 provider:opencode、Cursor 的 agent acp、CodeBuddy 的 cbc --acp、Gemini 的 gemini --acp,只要在 PATH 上能被探测到;不支持某个 ACP 能力(比如 setSessionConfigOption 改 model)会自动静默回退。
子代理空闲时会一直占着资源吗?
不会。子代理每完成一轮会被排进空闲释放计时器(默认 600000 毫秒即 10 分钟,可在配置 idleTimeoutMs 改,0 禁用);下一次 product_submit 调用会取消还没触发的释放,所以快速续聊不会重新建会话。
— 源: plugin_wiki.faq_json
兼容性
- DSH: >=0.1.0-rc.6(peerDependencies: @deepseek-ai/dsh-subagent ^0.1.0-rc.6 / @deepseek-ai/dsh-tools ^0.1.0-rc.6)
- Node: >=18(package.json#engines.node)
- Platforms: macOS, Windows, Linux
— 源: plugin_wiki.compatibility_json
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则