跳到主内容

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

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则