基于对 DSH 代码库和文档的深入调研,以下是多 DSH 实例配合工作中已有的成熟方案和插件实现。DSH 没有内置的"一键分布式集群"模式,但提供了一组可组合的机制覆盖从单进程多 agent 到跨进程实例委派的各种场景。
一、单进程内多 agent 协作(最成熟)
1. Agent Teams(实验性插件)⭐
@deepseek-ai/dsh-experimental-agent-team + dsh-experimental-tool-agent-team
这是 DSH 中最接近"多 agent 团队配合"的一站式方案。
- 工作机制:一个 Lead Session 通过
spawnTeammate()创建多个命名 teammate(每个 teammate 是一个持久化的 continuable subagent)。所有成员共享一个 durable mailbox(消息队列)和 shared task DAG(任务依赖图)。 - 核心能力:
sendMessage()(peer 消息传递)、createTask()/updateTask()(共享任务板)、waitForChange()(等待变更)、interrupt()(中断队友轮次)、listMembers()/listTasks()。 配置:
- id: agent-team name: '@deepseek-ai/dsh-experimental-agent-team' config: maxMembers: 8 maxTasks: 256 - id: tool-agent-team name: '@deepseek-ai/dsh-experimental-tool-agent-team'- 限制:明确标注单进程、单 checkout,不支持跨进程。teammate 共享 workspace cwd,修改立即可见。没有文件锁(advisory write scopes 仅作提示)。
2. Workflow 脚本编排
@deepseek-ai/dsh-tool-workflow + dsh-workflow-worker-thread
模型编写的编排脚本,可以扇出多个 subagent 并收集结果。
- hook 能力:
agent(prompt)启动子 agent;pipeline(items, ...stages)多阶段流水线;parallel(thunks)并发屏障;phase(title)进度分组;log(message)日志。 - 适用场景:需要扇出多个独立子任务再汇总的"编舞模式"。
- 限制:单进程内运行,子 agent 通过 subagent 机制创建。
3. Subagent 委派(同进程)
@deepseek-ai/dsh-subagent-spawn-in-process / dsh-subagent-fork-in-process
- spawn:全新子 agent,无父会话历史。
- fork:继承父会话的已完成轮次(seed),适合需要上下文的子任务。
- 支持
outputSchema(结构化输出)、depthLimit、persona、toolFilter等精细化控制。
二、跨进程/跨实例协作(核心方案)
4. DSH-SDK Subagent Provider ⭐
@deepseek-ai/dsh-subagent-dsh-sdk + dsh-tool-subagent
这是"多个 DSH 实例配合工作"最直接的插件实现:父 DSH 实例把子任务委派给一个完整的独立 DSH 运行时(子进程)。
- 工作机制:通过
dsh-jsonrpc-agentbin 或封装的 SDK 可执行文件,每个 subagent 启动一个独立的 DSH 实例(子进程),通过 stdio JSON-RPC 通信。子实例有自己独立的cordis.yml(插件组合)、模型路由、工具集、会话持久化。 配置示例:
- id: subagent-dsh-sdk name: '@deepseek-ai/dsh-subagent-dsh-sdk' config: providerName: dsh-sdk command: node args: ['./packages/examples/jsonrpc-demo/lib/bin.js', './examples/jsonrpc-agent/cordis.yml'] maxTokens: 49152 env: DEEPSEEK_API_KEY: !!js process.env.DEEPSEEK_API_KEY - id: tool-subagent name: '@deepseek-ai/dsh-tool-subagent' config: { provider: dsh-sdk, toolName: subagent, maxDepth: 'provider-managed' }- 特点:子实例完全隔离(独立的上下文、token、KV cache),父实例只收到最终结果。子实例可以有自己的 provider/model 路由。
- 限制:当前只支持本地子进程("Local child processes only"),无进程池复用。spawn 成本较高(每次启动完整插件树)。
5. ACP Subagent Provider(多实例通用协议)
@deepseek-ai/dsh-subagent-acp + dsh-tool-subagent
通过 Agent Client Protocol 驱动任何 ACP 兼容的 agent(包括另一个 DSH 实例的 ACP server)。
- 工作机制:
spawn→ ACPinitialize→newSession→ 发送 prompt → 收集流式输出。子进程拥有自己的运行时、会话、模型配置、工具集。 配置示例:
- id: subagent-acp name: '@deepseek-ai/dsh-subagent-acp' config: providerName: acp command: node args: ['--import', 'tsx', './packages/examples/acp-demo/src/bin.ts', '--config', './examples/acp-agent/cordis.yml'] permission: reject- 特点:可以实现跨语言、跨产品的 agent 互操作(只要对方实现 ACP wire protocol)。
command可以指向任何 ACP 兼容可执行文件。
6. ACP Server(暴露 DSH 给其他实例)
@deepseek-ai/dsh-acp
DSH 可以作为 ACP server,在 stdio JSON-RPC 上暴露自己的 agent 给外部程序化客户端(包括另一个 DSH 实例的 subagent-acp)。
- 工作机制:
session/new创建新 agent →session/prompt发送提示 →session/update流式输出 →session/cancel取消。支持图像输入(当 attachment store 可用时),支持 one-shot 审批策略。 - 运行:
pnpm run demo:acp启动 ACP server 组合。 - 意义:两个 DSH 实例可以互相连接——实例 A 的
subagent-acp指向实例 B 的 ACP server bin,形成双向委派。
7. MCP Client(对接外部工具生态)
@deepseek-ai/dsh-mcp-client
DSH 作为 MCP Client,将外部 MCP Server 的工具注册到 ctx.tools。
- 适用场景:DSH 实例调用外部 MCP 生态中的工具/agent,但不构成"DSH 实例间的双向协作"。
8. TypeScript SDK(程序化驱动 DSH)
@deepseek-ai/dsh-sdk(client/protocol/server)
- SDK Client:从另一个进程通过 JSON-RPC 驱动 DSH 运行时(
dsh-jsonrpc-agentbin)。 - SDK Server:DSH 运行时作为 server,接收外部 SDK client 的请求。
- 适用场景:外部编排程序(如 CI/CD pipeline、orchestrator)同时控制多个 DSH 实例。你自己写编排层。
三、多实例共享状态
9. 持久化会话(Session Persistence)
所有 subagent 实例(包括跨进程的 dsh-sdk 实例)都有独立的会话持久化。父实例的日志只记录委派工具调用/结果,子实例的完整转录留在子实例自己的会话根中。
10. 共享工作区(Shared Checkout)
- Agent Teams:所有成员共享同一个 workspace cwd,文件修改立即可见。
- 跨实例:dsh-sdk 子实例的 cwd 默认继承父实例的 cwd(可配置覆盖),所以多个实例可以操作同一个文件系统。
- 注意:没有分布式文件锁,advisory write scopes 仅作协调提示。
11. API Gateway / Web 多客户端
Web 组合(dsh-web-app):多个浏览器/Web 客户端可以连接同一个 DSH Host。每个客户端通过 Connection RPC 和 /api 路由调用 Remote 方法。DSH 的 @Remote 装饰器允许声明远程服务方法,自动生成 Client 端调用代码。
四、方案对比与建议
| 方案 | 跨进程 | 跨机器 | 隔离性 | 成熟度 | 推荐场景 |
|---|---|---|---|---|---|
| Agent Teams | ❌ | ❌ | 共享进程 | 实验性 | 单 DSH 进程内的多 agent 团队协作 |
| Workflow + subagent | ❌ | ❌ | 同进程 | 成熟 | 扇出/编排模式的子任务委派 |
| dsh-sdk subagent | ✅(子进程) | ❌(本地) | 完全隔离 | 成熟 | 一个 DSH 实例委派给另一个完整 DSH 实例 |
| ACP subagent | ✅(子进程) | ✅(可远程) | 完全隔离 | 成熟 | 跨产品/跨语言的 agent 互操作 |
| SDK 自定义编排 | ✅ | ✅(可扩展) | 完全隔离 | 成熟 | 外部程序管理多个 DSH 实例 |
| MCP | ✅(外部进程) | ✅ | 工具级 | 成熟 | 对接 MCP 生态的外部工具 |
实际部署建议:
- 单机多 agent 协作 → 优先使用 Agent Teams(实验性)或 Workflow + subagent(成熟)。
- 一个 DSH 实例委派给另一个 → 用
dsh-subagent-dsh-sdk(DSH 原生)或dsh-subagent-acp(标准协议)。 - 跨机器/分布式 → 目前没有内置方案。需要自己搭建:将 DSH ACP server 或 SDK server 部署在远程机器上,通过 TCP/SSH 隧道连接,再结合共享的 git 远程仓库(或 rsync)同步文件。或者使用 MCP 的 HTTP 传输层。
- 多实例共享 checkout 写文件 → 注意没有内置文件锁,需要用
writeScopes做协调提示,或者自己实现 git 工作流(commit → push → pull)。