← 返回列表
✓ 可直接安装
🏠 dsh-team-rooms
自动检查通过:npm 包已发布且 engines 声明满足基线(声明 Node ^22.19.0 || >=24.0.0);该结论来自程序自动检查,未经人工实机验证。 · 最近上游提交 2026/9/16 · 已提供中文文档
# DeepSeek Harness 的团队房间:跨独立会话的持久共享房间——消息总线、共享任务板和时线。提取自 dsh-background-agents,其后台代理部分已被 DSH 原生的可延续子代理取代。
综合分
30.7
GitHub 分
30.7
用户评分
—
★ Stars
1
周下载量
—
安装插件(需先安装 dsh CLI 引擎:npm install -g @deepseek-ai/dsh)
dsh plugin --profile web add dsh-team-roomsnpm 包 dsh-team-rooms 已校验归属本仓库,走 npm 安装最省事
数据截至 2026/9/16(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查✓ 自动检查通过
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✓npm 包dsh-team-rooms @ 1.0.1
✓Node 引擎要求 ^22.19.0 || >=24.0.0 · 基线 Node 22.19 满足
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 14:35:12
依赖的 DSH / Cordis 模块
@deepseek-ai/dsh-util-values@deepseek-ai/dsh-attachment@deepseek-ai/dsh-typert-protocol@deepseek-ai/dsh-session@deepseek-ai/dsh-session-projection@deepseek-ai/dsh-tools@deepseek-ai/dsh-llm@deepseek-ai/dsh-commands@deepseek-ai/dsh-storage@deepseek-ai/dsh-storage-domain@deepseek-ai/dsh-storage-json@deepseek-ai/cordis-plugin-include用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
🏠 dsh-team-rooms
- 1024 商店渠道:npm i -g dsh1024 一次,然后 dsh1024 plugin --profile web add dsh-team-rooms(计入 deepseek1024.com 安装排名)。
为 DeepSeek Harness 提供的持久化、跨会话多智能体团队房间——成员、消息总线、共享任务板和共享时间线,可在重启后保留。
每个成员都是一个独立的 DSH 会话;房间是它们之间共享的持久对象。
License
DSH plugin
Node
dsh-doctor
Gitee
CI
Version
npm version
npm downloads
English · 简体中文 · Español · Português · हिन्दी
从 dsh-background-agents 0.9.6 中提取而来。 该插件的后台智能体部分(background_agent 以及五个 bg_ 工具)已被 DSH 原生的可继续子智能体取代;团队房间部分没有原生对应物,因此作为独立包在此延续。由 0.9.6 写入的存储域、会话日志和设置可继续原样工作——参见兼容性。
兼容性
宿主 0.1.2-alpha.2 及更高版本会在会话事件词汇表上失败关闭(fail closed),因此本插件不再向其写入仅日志的事实事件(team-room/fact):事实改为路由到 logger/panel 通道,而 teamRoom 投影退化为空折叠。较旧的 rc 系列(直至 0.1.1-rc.2)保留可忽略标记(ignorable-marker)规则。客户端部分依赖当前的客户端包(dsh-api-session-controller、dsh-client-ui-slots、dsh-client-ui-settings、dsh-client-locale、dsh-client-web)。
与 dsh-background-agents 0.9.6 的数据兼容性是一条硬性规则。 这些字符串与 0.9.6 逐字节相同,绝不能重命名:存储域 team_rooms、teamRoom 投影键、team-room/fact 会话事件类型,以及 team-rooms 设置槽 id。因此,当你替换插件时,现有配置文件会保留其房间、成员日志和设置页面。
| 层面 | 状态 |
|---|---|
| Harness | DeepSeek Harness dsh-v0.1.5-rc.2(GitHub 标签,2026-09-11 验证;开发与运行时固定为 0.1.5-rc.2,对等依赖 >=0.1.2-rc.1 =0.1.5-alpha.1 =24.0.0 |
| 平台 | 全部(宿主工具;设置页面需要 Web 客户端部分和存储域能力) |
| 模型 | 任意(房间不携带模型路由——成员是普通会话) |
你将获得
dsh-team-rooms 将多个独立会话转变为一个协调的团队:
1. /room 命令族——create、join、leave、list、send、tasks、task add|assign|claim|done|delete。房间有名称、有所有者,并通过一个稳定的房间 id 寻址,你可以将其粘贴到另一个会话中。
2. 八个 room_ 工具——room_list_rooms、room_post、room_read、room_list_tasks、room_create_task、room_claim_task、room_transfer_task、room_complete_task。模型在自己的会话内操作共享看板和总线;room_transfer_task 在跨成员交接前请求批准。
3. 持久化房间存储——成员、消息总线(定向或广播)、任务看板和时间线都存放在 team_rooms 存储域中(SQLite 或 JSONL 后端——由部署选择;插件不添加自己的服务),并在 DSH 重启后恢复。
4. Web 设置页面——Team Rooms 设置部分显示当前会话所属每个房间的成员状态、任务看板和时间线,从 teamRoom 会话投影读取,并通过宿主 /room 命令写回。
快速开始
1. install the bundle into your profile
dsh plugin --profile web add "github:PerryLink/dsh-team-rooms#main"
or from npm (published releases)
dsh plugin --profile web add dsh-team-rooms
2. restart and verify the row
dsh --profile web --dump-config | grep -A4 'id: team-rooms'
该 bundle 补丁携带插件行;不需要 Config 键。仓库提交了其构建输出(lib/),因此 git 安装无需构建步骤。房间在存储域被组合的任何地方挂载(@deepseek-ai/dsh-storage-domain,是每个 @deepseek-ai/dsh-base 配置文件的一部分);没有它时,/room 命令和 room_ 工具保持休眠,而其他所有内容仍会加载。
然后,在任何会话中:
/room create release-prep
/room send kickoff: I own the changelog, who takes the docs?
/room task add draft the migration note
/room task claim
将打印出的房间 id 粘贴到另一个会话中,并执行 /room join —— 该会话现在成为成员,会像普通消息一样接收房间投递,并看到同一个看板。
安装与卸载
- git 渠道(最新的 main):dsh plugin --profile web add "github:PerryLink/dsh-team-rooms#main" —— 已提交的 lib/,无需 prepare 或 allowBuilds 步骤。
- npm 渠道(已发布的版本):dsh plugin --profile web add dsh-team-rooms。
- tarball 渠道:在本仓库中执行 pnpm pack,然后执行 dsh plugin --profile web add ./dsh-team-rooms-.tgz。
- 卸载:dsh plugin --profile web remove dsh-team-rooms(或从 profile patch 中删除该行)。你的房间会保留在 team_rooms 存储域中,重新安装后会恢复。
- ⚠️ 不要同时挂载本插件和 dsh-background-agents。 在弃用窗口期内,两个包都会发布,并且它们注册相同的八个 room_ 工具、相同的 settings.section 槽位 id(team-rooms)以及相同的 team_rooms 存储域——因此两个房间部分会发生冲突。如果你已经在运行 dsh-background-agents,请先移除它(dsh plugin --profile web remove dsh-background-agents)。无论哪种方式,你的房间都会保留:它们存在于存储域中,而不是插件中。
配置
每个可调项都是经过验证的 Schemastery Config 字段——请在 cordis.yml 中修改,绝不要在代码中修改。没有必填项。
| 键 | 默认值 | 含义 |
|---|---|---|
| maxRooms | 16 | 整个 profile 中团队房间的硬性上限 |
| maxMembersPerRoom | 8 | 每个房间成员的硬性上限(>= 2) |
| maxRoomsPerMember | 4 | 一个成员会话可加入的房间的硬性上限 |
| busRetention | 200 | 每个房间保留的总线消息数 |
| timelineRetention | 500 | 每个房间保留的时间线事件数 |
| taskRetention | 50 | 每个房间保留的已完成任务数 |
| maxMessageChars | 4000 | 单条房间消息文本的硬性上限(超出则拒绝,绝不截断) |
| injectRoomBrief | true | 将简短房间简报注入成员会话(加入 + 恢复时) |
| roomOpenTimeoutMs | 15000 | team_rooms 存储域打开可花费的时间,超过后每个房间操作都会大声失败(store-unavailable)而不是挂起 |
| allowUnmarkedFacts | false | 在丢弃 ignorable 标记的主机上强制仅记录日志的 team-room/fact 事件(危险:未标记的事实会使会话在其他地方无法恢复);默认是检测并跳过 |
| inbound.enabled | false | 为外部 agent 运行时(OpenAI Agents SDK / CrewAI)启用 stdio JSON-RPC 入站桥接。默认禁用(故障关闭)。 |
| inbound.command | (无) | 外部运行时启动命令;当启用且存在时,插件会启动它并监听以换行分隔的 JSON-RPC 通知。不存在/无法启动 = 桥接保持休眠(记录日志)。 |
工具与界面
| 界面 | 类型 | 备注 |
|---|---|---|
| /room | 命令 | create\|join\|leave\|list\|send\|tasks\|task add\|assign\|claim\|done\|delete |
| room_list_rooms | 工具 | 此会话所属的每个房间:id、名称、成员名单、任务计数 |
| room_post | 工具 | 向总线发布消息(广播,或通过 to 定向发送) |
| room_read | 工具 | 从 seq 游标读取某个房间的总线历史 |
| room_list_tasks | 工具 | 某个房间的共享任务板 |
| room_create_task | 工具 | 添加一行任务板记录(可选分配) |
| room_claim_task | 工具 | 为此会话认领一行记录(负责人 + 进行中) |
| room_transfer_task | 工具 | 将一行记录移交给另一名成员——需审批,失败即关闭 |
| room_complete_task | 工具 | 将一行记录标记为 done |
| teamRoom 投影 | 会话投影 | 从该成员自己日志中的 team-room/fact 事件折叠出的房间视图 |
| Web 设置页面 | 客户端 | 成员状态、任务板、时间线以及房间操作;槽位 id 为 team-rooms |
这就是 八个 room_ 工具,一旦存储域被组合完成,它们就全部注册。
工作原理——以及它为何能在重启后存活
房间存储是跨会话的权威来源;会话投影是每个成员自己重建的副本。两个写入同时运行并保持一致:
- 每一次房间变更(创建、加入、离开、发布、任务状态转换)都在同一条 hub 写入链上排队——team_rooms 域的单一写入链是排序权威,因此并发发布者绝不会交错执行读-改-写,总线 seq 严格按提交顺序生成。
- 模型可见 ⟺ 已记录:投递的房间消息是一次正式的收件箱投递(agent.followup 唤醒在线成员;agent.inject 在离线成员下次启动时将其积压消息交给它),因此它会作为一条持久的 user/message 落入该成员自己的会话日志。
- 共享时间线以仅日志形式的 team-room/fact 事件镜像到每个成员的日志中,并携带权威存储的 timelineSeq;teamRoom 投影折叠每个成员自己的日志,因此每次重新打开时视图都会重建,而无需读取存储。
- 投递至少一次且有序:每个成员的游标(lastDeliveredSeq、lastFactSeq)仅在投递落地后推进,因此提交与投递之间发生崩溃时,会在追赶时重新投递,而不是丢失消息。
那些 Session.append 早于 ignorable 标记的主机(所有已发布的 rc 系列直至 0.1.0-rc.8 和 0.1.1-rc.2 系列,以及 0.1.2-rc 系列——后者仅为存储日志读取兼容性而保留信封字段)会在首次追加之前被检测到(先做对等版本预检查,再探测返回的信封),并且事实追加会被跳过,同时给出一次性警告:持久存储、API 表面以及模型可见的投递仍可正常工作,而 teamRoom 会降级为空折叠。allowUnmarkedFacts: true 可选择重新启用——这是故意为之的危险选项。
不是此插件
| 项目 | 它做什么 | 边界 |
|---|---|---|
| titanwings/dsh-automation | 在全新 agent 会话中执行定时编码任务 | 它负责任务何时运行(调度)。本插件负责多个会话共同操作的共享对象——没有调度器接缝,没有 cron。 |
| YYTbit/dsh-plugin-agent-dashboard | 多 agent 仪表盘技能 | 面向展示且以读取为主。本插件的房间是可写的协调状态:一个总线、一块看板,以及需审批把关的交接,持久化在 harness 自身的存储中。 |
| dsh-background-agents | 后台 agent 加上(此前的)团队房间 | 该包的 bg_ 部分已被 DSH 原生的可续接 subagent 取代;其房间部分即本包。不要同时挂载两个房间部分。 |
权限与数据
- 权限:workshop 清单声明了 session:append 和 tools:register。房间从不生成 subagent,因此本插件不请求任何 subagent: 权限,也不声明任何 subagent 依赖。
- 数据:房间存放在 team_rooms 存储域中(SQLite 或 JSONL——零额外服务)。没有单独的数据库,没有网络。
- 会话日志:在支持该标记的宿主上,team-room/fact 事件会附带信封的 ignorable: true 标记追加(会检测不支持该标记的旧宿主并跳过 fact 追加——参见 allowUnmarkedFacts);模型可见的房间投递是真实的 user/message 记录。
安全边界
- 需审批把关的交接。 room_transfer_task 经由官方审批接缝路由,当未组合审批服务或没有应答者批准时按失败关闭处理——拒绝时不会发生任何变更。
- 模型可见 ⟺ 已记录。 每条投递的房间消息都是成员自身日志中的持久 user/message;共享时间线以仅日志形式的 team-room/fact 事件镜像。房间消息绝不可能在未被记录的情况下到达模型。
- 成员资格即授权边界。 每个 room_ 工具都依据调用会话自身的成员资格进行授权;非成员会得到稳定的拒绝,而不是部分写入。
- 保留量有界。 总线、时间线和已完成任务窗口在每次写入时都会强制执行,因此长期存活的房间不会无限增长。
- 无调度,无跨机器成员。 成员是本部署中进程本地的会话。
跨生态入站(P2)
外部 agent 运行时——OpenAI Agents SDK、CrewAI 及类似者——可以通过一个极简的基于 stdio 的换行分隔 JSON-RPC 2.0 桥接发布到团队房间。这是一个 JSON-RPC 直连最小集,不是官方 ACP 线路协议:完整的 ACP 兼容性有待上游接缝。
用两个 Config 字段启用它,并将 inbound.command 指向一个启动器,该启动器在 stdout 上每行输出一条 JSON 通知:
cordis.yml (plugin row)
inbound:
enabled: true
command: "python external_runtime.py --room "
运行时发出三种通知类型;method 是事件名称,params.name 是外部 agent 的显示名称:
{"jsonrpc":"2.0","method":"agent_started","params":{"name":"researcher","room":"","traceId":"t-1"}}
{"jsonrpc":"2.0","method":"agent_message","params":{"name":"researcher","room":"","traceId":"t-1","message":"found the failing test"}}
{"jsonrpc":"2.0","method":"agent_finished","params":{"name":"researcher","room":"","traceId":"t-1","status":"ok","usage":{"inputTokens":100,"outputTokens":40}}}
每一种都映射到房间现有的界面上:agent_started 打开一张任务板卡片,agent_message 发布到消息总线,agent_finished 完成卡片并发布结果。无效消息会失败关闭——它们被丢弃,并写回一个 JSON-RPC 错误。外部运行时不是 DSH 会话,因此房间所有者的成员会话充当发送者;没有所有者成员的房间会丢弃该事件。启动和停止由插件 fiber 通过 disposer 拥有;无法生成的 inbound.command 会降级为一条记录在案的警告(桥接保持休眠,其他一切不受影响)。
已知限制
- 房间需要组合存储域;没有 @deepseek-ai/dsh-storage-domain,/room 命令和 room_* 工具将被禁用。
- 一个房间至少需要两个成员才有意义,且成员名册受 maxMembersPerRoom 限制;成员资格是按会话而非按用户。
- 没有跨机器成员资格:每个成员都是此部署的进程本地会话。
- room_transfer_task 需要一个审批应答者。没有它,按设计会失败关闭,因此想要交接的自动化配置必须组合一个审批服务。
- 成本/用量核算不在此范围内(那属于后台 agent 部分);房间界面报告的是结构,而非花费。
开发
pnpm install # tooling only; harness packages resolve against a sibling checkout
pnpm run typecheck # strict TS, node + client programs
pnpm test # vitest: unit, room-hub, projection, and jsdom panel tests
pnpm run build # lib/index.js (node half) + lib/client.js (web client bundle)
pnpm run verify:artifacts && pnpm run check:readmes
pnpm run gen-aliases # re-map harness package paths after the checkout moves
pnpm run pack:smoke 会构建、打包,并(在设置了 DSH_HARNESS_ROOT 的情况下)将 tarball 安装到一个一次性配置中以断言组合后的行。
主题
dsh、dsh-plugin、deepseek-harness、team-rooms、multi-agent、message-bus、task-board、collaboration、cross-session
贡献者
- @PerryLink — 创建者和维护者:团队房间中心及其写入链、投递游标、teamRoom 投影、Web 设置页面、文档、CI/CD 和发布。
PerryLink DSH 插件家族
本项目是由 PerryLink 维护的 40 个 DeepSeek Harness 插件之一。如果这个插件对你有帮助,其他的很可能也会:
| 插件 | 一句话简介 |
|---|---|
| dsh-auto-review | 审批链上的第二模型自动审查,默认失败即关闭 | |
| dsh-budget | DeepSeek Harness 的成本治理:预算、碳排和延迟集于一个面板。 | |
| dsh-checkpoint-rewind | 等同于 Claude Code /rewind:快照、会话分叉、一键恢复 | |
| dsh-claude-move | 将 Claude Code 会话、记忆、技能和 CLAUDE.md 迁移到 DSH | |
| dsh-click | 面向 DeepSeek Harness 的跨平台原生桌面控制——Windows 优先。 | |
| dsh-composer-history | Web 编辑器的终端风格输入历史:方向键、Ctrl+R 搜索 | |
| dsh-data-quality | 数据集质量检查和引用交叉核对(此处消费的可选数值桥接) | |
| dsh-defend | 面向 DeepSeek Harness 的提示注入、越狱和密钥泄露防御。 | |
| dsh-doublecheck | 工程纪律守卫:需求拷问、测试门禁、对抗性审查 | |
| dsh-draw | 面向 DeepSeek Harness 的统一静态图像生成路由。 | |
| dsh-fast | 面向 DeepSeek Harness 的只读性能诊断。 | |
| dsh-fund-research | 面向中国公募基金的确定性研究报告 | |
| dsh-github | 面向 DSH 的 GitHub PR/issue 集成,每次写入均需审批 | |
| dsh-industry-research | 行业研究编排,通过本插件的 ctx.researchReport.assemble 封存其交付物 | |
| dsh-library | 面向 DeepSeek Harness 的本地文档知识库。 | |
| dsh-local-ai | 面向 DeepSeek Harness 的本地模型(Ollama)集成。 | |
| dsh-lsp-actions | 通过语言服务器提供 LSP 诊断、格式化、补全、代码操作和重命名 | |
| dsh-mask | PII 脱敏中间件:在模型边界匿名化,在展示层还原 | |
| dsh-mcp-panel | 只读 MCP 运行时面板:/mcp 命令 + 设置选项卡,显示状态、工具和错误 | |
| dsh-memento | 审批门控的跨会话记忆:ctx.memory 接缝 + SQLite + memory 工具 | |
| dsh-observe | 适用于 DeepSeek Harness 的 OpenTelemetry 和 Langfuse 可观测性导出器。 | |
| dsh-output-styles | 等同于 Claude Code outputStyles 的运行时样式切换 | |
| dsh-permission-rules | Claude Code 风格的声明式允许/拒绝/询问权限规则,带审计 | |
| dsh-personal-directive | 带顶栏开关的个人指令注入器(框架版) | |
| dsh-plugin-guide | 作为按需智能体技能提供的插件开发知识库 | |
| dsh-reach | 多渠道审批/提问桥接:微信/Telegram/飞书,会话控制台 | |
| dsh-research-report | 可验证的研究报告引擎:内容寻址的证据账本和密封版本 | |
| dsh-score | 针对 DeepSeek Harness 插件的多维度质量评分。 | |
| dsh-session-pin | 在 Web 侧边栏中固定会话,并保持持久排序 | |
| dsh-session-sync | 适用于 DeepSeek Harness 的跨设备会话同步——会话存储的专用 git 镜像。 | |
| dsh-skill-pack-security | 安全审计技能包:密钥扫描、依赖项和供应链审查 | |
| dsh-talk | 适用于 DeepSeek Harness 的语音优先会话循环:对它说话,听它回答。 | |
| dsh-test-drive | 针对 DeepSeek Harness 插件的隔离安装与冒烟测试驱动。 | |
| dsh-ticktick | TickTick/滴答清单任务桥接:会话头部面板 + 11 个工具 | |
| dsh-translate | 适用于 DeepSeek Harness 的供应商参数转换和确定性 JSON 修复。 | |
| dsh-autotier | 自动强/廉价模型层级路由,带确定性风险防护和 /tier 命令 | |
| dsh-background-agents | 持久后台子智能体,带 Web UI 侧边栏、消息传递和中断 | |
| dsh-catalog | 面向 PerryLink 系列的 DSH Desktop Market 标准目录源 | |
| dsh-cert-mcp | 只读 MCP 服务器,公开认证注册表:等级、快照和五维证据 | |
| dsh-kit | 一键安装核心套件的入门包 | |
| dsh-plugin-certification | 社区认证注册表,提供可复现验证的等级和徽章 | |
| dsh-plugin-doctor | 面向 DSH 插件的零依赖静态 + 沙箱冒烟检测器 | |
| dsh-plugin-kit | 面向 PerryLink DSH 插件的共享零运行时依赖工具包 | |
| dsh-plugin-portal | 零依赖静态门户,将整个插件家族渲染为单一页面 | |
| dsh-plugin-upgrade-015 | 合并的 0.1.3-alpha.1 → 0.1.5-rc.1 升级通道卡片,外加零依赖接缝扫描器 | |
| dsh-wechat | 微信 ↔ DSH 桥接(腾讯 iLink 机器人),与 pan17 共同开发,由其托管仓库 | |
从 DSH 桌面市场安装
所有 PerryLink 插件均可在内置的 DSH 桌面市场中浏览:市场 → 源 → 添加源 → 粘贴 https://perrylink-dsh-catalog.perrylink.workers.dev/catalog-source.json → 选择它。安装仍需经过市场的 npm 身份验证和你的确认。
许可证
Apache License 2.0 © 2026 dsh-team-rooms 贡献者扫码进群