DeepSeek Harness 插件

ishuowang/dsh-agent-team-room

Star 数 ★ 2 分类 会话与消息 收录于 2026-08-15

面向独立 DSH Agent 会话的持久化协作房间,支持显式成员管理、定向与广播消息、任务跟踪和共享 Web 时间线。

安装

# GitHub 源码(首次需按提示配置 allowBuilds 构建授权后重试)

dsh plugin --profile web add github:ishuowang/dsh-agent-team-room

装任何插件都等于在你的机器上跑第三方代码,权限和你本人一样大——能读你的文件、用你的凭据、访问网络,工具审批管不到它。GitHub 来源的插件还会在安装时执行构建脚本。请只安装可信来源,并尽量锁定 commit(github:owner/repo#sha)。

README

Agent Team Room

为 DeepSeek Harness 提供持久化的多 Agent 协作房间。

创建房间、加入不同角色或模型的 Agent、定向或广播消息、跟踪任务,并在一条共享时间线上查看进展——同时保持每个 Agent 的上下文彼此独立。

English · 安装 · 工具一览 · 安全说明

Agent Team Room 看板

带有 Rooms 入口的 DSH 原生侧边栏

为什么需要 Room?

Subagent 解决了“把工作委派出去”,Room 则补齐“团队如何持续协作”:

  • 独立上下文:每个成员都是可继续对话的 DSH 子 Session。
  • 持久成员关系:Harness 重启后房间仍然存在,也能加入已有直属子 Agent。
  • 明确消息通道:定向与广播消息进入各 Agent 自己的 FIFO 收件箱。
  • 可追踪任务:任务分配、结果与失败状态都会持久保存。
  • 共享时间线:房间事件按顺序保留在有上限的窗口中;成员的完整会话不会混在一起。
  • 可视化状态:DSH Web 看板展示房间、成员、任务与活动记录。
flowchart LR
  U[用户] --> L[Leader Agent Session]
  L -->|room_* 工具| R[ctx.rooms]
  R -->|持久化聚合| J[(rooms.json)]
  R -->|创建 / 继续 / 中断| S[ctx.subagents]
  S --> A1[研究 Agent Session]
  S --> A2[开发 Agent Session]
  S --> A3[评审 Agent Session]
  A1 -. 结果 .-> L
  A2 -. 结果 .-> L
  A3 -. 结果 .-> L
  R -->|只读投影| W[DSH Web Room 看板]

Leader 始终是协调者和权限边界。Agent 只共享必要的 Room 事件,不共享隐藏提示词、工具轨迹或完整聊天历史。

安装

环境要求:Node.js ^22.19.0 || >=24、DeepSeek Harness 0.1.0-rc.6

# 固定 Release,获得可复现安装。
dsh plugin --profile web add github:ishuowang/dsh-agent-team-room#v0.2.0

# 启动同一个 Web profile。
dsh web

打开 http://127.0.0.1:3080/agent-team-room/。看板有意保持只读;实际操作仍通过具备 DSH 权限上下文的 Agent 工具完成。

在 DSH Web 中,同一个包还会通过官方 additive sidebar.footer.action 插槽,在原生侧边栏底部增加一个小型 Rooms 入口。它会在新标签页打开同源 /agent-team-room/ 看板,当前会话及全部原生控件会继续保留;插件不会替换或修改 root、sidebar、conversation UI。

还没有创建房间时,可以访问 ?demo=1 查看视觉演示。

创建第一个房间

直接告诉 Leader Agent:

创建一个叫 Release Lab 的房间,用于发布当前改动。加入研究、开发和评审三个 Agent,分别分配独立任务,等待全部完成后汇总结果并关闭房间。

Agent 会自行发现并调用 Room 工具。

Room 工具

工具 用途
room_create 创建由当前 Agent 管理的持久房间。
room_list / room_get 查看房间摘要或完整 Room 聚合。
room_history 读取共享事件,不加载成员的完整会话。
room_add_agent 新建可持续子 Agent,或加入已有直属子 Agent。
room_remove_agent 移出成员,并可中断其当前轮次。
room_send 给一个成员排入定向消息。
room_broadcast 给全部成员广播,并逐个返回投递结果。
room_assign 创建并投递一个可追踪任务。
room_task_get 读取任务状态和结果。
room_task_complete 由任务执行 Agent 显式回报与 Room/Task 关联的终态。
room_wait 在限定时间内等待指定任务。
room_close 关闭房间、保留历史,并可中断成员。

配置

默认使用 DSH 内置的 continuable spawn provider,状态保存到 $DSH_HOME/agent-team-room/rooms.json(未设置时为 ~/.dsh/agent-team-room/rooms.json)。可在 profile 的 cordis.patch.yml 中完整覆盖这一行:

- id: agent-team-room
  name: dsh-agent-team-room
  config:
    provider: spawn
    storageFile: /srv/dsh/agent-team-room/rooms.json
    maxMembersPerRoom: 24
    maxMessageChars: 20000
    maxResultChars: 40000
    maxEventsPerRoom: 10000
    maxTasksPerRoom: 2000

也可以调整看板地址:

- id: agent-team-room-dashboard
  name: dsh-agent-team-room/dashboard
  config:
    routePrefix: /rooms
    allowRemote: false

原生侧边栏入口固定指向默认 /agent-team-room/ 路径。如果修改了 routePrefix,请直接打开或收藏自定义的看板地址。

设计边界

  • 新成员是 Leader 的直属 continuable child,遵循 DSH 的父→子授权规则,不创建无约束的任意 peer 通道。
  • Room 只保存协作信息;提示词、完整历史、工具和生命周期仍归各 Agent Session 所有。
  • 任务只能由被分配的 Agent 通过 room_task_complete 显式回报,并同时校验 Room id 与 Task id。普通 FIFO 消息或其他 Agent 轮次不会误完成任务。
  • JSON 聚合采用原子替换并使用 0600 权限。进程重启时,未收到终态回报的在途任务会标记为失败。一个存储文件应只由一个 DSH 进程写入。
  • 事件与任务都有可配置的单房间保留上限,避免状态无界增长。
  • 看板复用 DSH HTTP Server,只提供只读投影。即使 DSH 绑定 0.0.0.0,默认也会拒绝非 loopback 客户端;只有在带认证和 TLS 的反向代理后才应设置 allowRemote: true
  • DeepSeek Harness 仍处于开发者预览阶段。本项目把 Harness 调用收敛在 RoomRuntime 中,并固定针对 0.1.0-rc.6 测试。

开发

npm ci
npm run check
npm pack --dry-run

仓库有意提交预构建的 lib/,其中包括兼容 ModuleLoader 的浏览器包 lib/client.js。从 GitHub 安装时无需授权依赖执行 prepare 脚本。

开发分支统一使用 feature/ 前缀,详见 AGENTS.mdCONTRIBUTING.md

插件发现与上架

仓库添加官方 dsh-plugin topic 后,即可被 DSH 生态索引发现。awesome-dsh-plugin 精选目录会通过单独 PR 申请,最终是否合入由社区评审决定。

License

MIT © 2026 ishuowang

内容来自项目 README(GitHub)↗

链接

同类插件

查看整个分类 →