基于对 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-agent bin 或封装的 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 → ACP initialize → 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-agent bin)。
  • 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 生态的外部工具

实际部署建议:

  1. 单机多 agent 协作 → 优先使用 Agent Teams(实验性)或 Workflow + subagent(成熟)。
  2. 一个 DSH 实例委派给另一个 → 用 dsh-subagent-dsh-sdk(DSH 原生)或 dsh-subagent-acp(标准协议)。
  3. 跨机器/分布式 → 目前没有内置方案。需要自己搭建:将 DSH ACP server 或 SDK server 部署在远程机器上,通过 TCP/SSH 隧道连接,再结合共享的 git 远程仓库(或 rsync)同步文件。或者使用 MCP 的 HTTP 传输层。
  4. 多实例共享 checkout 写文件 → 注意没有内置文件锁,需要用 writeScopes 做协调提示,或者自己实现 git 工作流(commit → push → pull)。