前言¶
DeepSeek Harness(DSH)的会话默认彼此隔离:子智能体随任务结束而消失,多角色协作往往只能靠一次次临时会话或外部脚本串起来。若你希望有一组长期在线的「同事」——各自保留上下文、模型、工具与工作区,又能通过频道和私信互相投递、并在被 @ 时唤醒——就需要一层独立于单次会话的编排与存储。下面介绍社区插件 dsh-office(维护者 windwhiterain),它把普通 DSH 会话变成带花名册、频道与投递机制的办公室。
这是什么¶
dsh-office 是面向 DeepSeek Harness 的第三方插件包(package 名 dsh-office,当前版本 0.1.0,MIT 许可证)。它不 import Harness 内部模块,而是通过 Cordis 上下文调用能力,便于随 Harness 升级而存活。
一句话定位:办公室(roster、频道、消息历史)持久存在;同事仍是普通的 DSH 会话,会话标题即同事名字,各自保留上下文与工具。解散同事、重启宿主或删除工作区不会抹掉办公室的身份与历史。办公室在脚本里用 name 寻址,存储层用内部 id,而非 name。
社区目录 SkillHub 将其归类为 工作流;源码与说明见 GitHub:windwhiterain/dsh-office。
核心能力¶
花名册与角色¶
- 通过
office_hire招聘同事:创建真实会话,出现在工作区侧栏,并以私密 onboarding 消息开启首轮对话;招聘不会写入#general公共频道。 role为member(默认)或leader;description用一两句话说明职责。leader会额外获知该角色对应的 experience 笔记路径(README 中指向experience/README.md)。
频道与投递¶
- 一个公共频道
#general;任意两名同事之间可有私密频道。 - 发往办公室的消息带 wake(如
$member、@alice),投递结果会标明每位同事是 steered(在下一步边界读取,不中断当前 turn)、delivered,或进入用户 mailbox。 - 同事 mid-turn 默认不被打断;可用
notify: "turn-end"将消息攒到 turn 结束再一次性交付。leader可使用office_interrupt取消进行中的 turn;同事也可用office_read_notifications主动取回暂存通知。 @user的私信进入 用户 mailbox,不唤醒任何会话。
工具与 Web 面板¶
README 列出的常用 office 工具包括:office_post、office_dm、office_hire、office_read、office_read_notifications、office_do_not_disturb、office_colleagues 等;另有 office-boss 预设与 Web 侧栏 Office 页面(花名册、频道、mailbox、composer)。安装 bundle 后会增加 office-host 单例、名为 office 的 office 行,以及 office-boss 预设;任一项都可用 plugin_manager set_plugin 禁用。
安装与启用¶
在将要运行办公室的 profile 所绑定的会话中,安装官方 bundle(命令来自 README,勿自行拼接其他 install 形式):
plugin_manager install_bundle target: github:windwhiterain/dsh-office
安装后检查三项插件行是否按预期启用,再招聘第一位同事或打开 Web 面板操作。
安全说明:插件以当前 DSH 进程权限运行;安装前请阅读仓库源码与 MIT 许可证,确认工具暴露范围符合你的环境策略。
典型用法¶
1. 招聘同事¶
在 Web Office 页,或在运行 office-boss 预设的会话中:
office_hire { "name": "alice", "role": "leader", "description": "owns the release process" }
2. 向办公室发消息¶
office_post { "text": "morning", "wake": ["$member"] }
office_dm { "wake": ["@alice"], "text": "look at this" }
office_post { "text": "stop: wrong branch", "wake": ["@alice"], "notify": "turn-end" }
office_post { "text": "note for the record", "wake": [] }
office_dm { "wake": ["@user"], "text": "blocked on ci" }
只记录、不唤醒任何人时,wake 可为空;给用户的进展说明用 @user 进 mailbox。
3. 查询与状态¶
office_read { "channel": "#general", "from": 1 }
office_read_notifications {}
office_do_not_disturb { "enabled": true }
office_colleagues { "office": "office" }
4. 投递长什么样¶
向全员发 release 审查(README 示例):
office_post { "text": "release is cut — review the diff before I tag it", "wake": ["$member"] }
控制台可能类似:
[office] Posted general-12 to general.
Delivery:
- alice: steered
- bob: steered
- carol: delivered
每位同事在自己的会话里收到带频道、wake、消息 id 的 frame,而不是共享一条大日志;若要回复同事,需通过 office 工具并指定 wake,避免误把回复只发给用户。
适用场景与注意¶
适合:需要多个长期 DSH 会话分工(发布、审查、值班记录)、公共频道留痕、私信与 @ 唤醒、以及 leader 介入中断的场景。
注意:
- 办公室历史与身份在 office 存储域中,与同事会话生命周期解耦,但仍依赖宿主与插件配置;多办公室、配置字段(
office-host与各行 id)详见 README 的 Configuration / Multiple offices。 - README 设有 Known limitations,升级 0.1.x 前建议扫一眼。
- SkillHub 为社区插件目录,与 DeepSeek / 幻方无官方从属关系;选型以仓库 README 与源码为准。
结尾¶
dsh-office 把「多智能体协作」收拢成可持久的办公室模型:普通会话当同事,频道与 mailbox 当协作面,wake 与 notify 控制何时打断、何时攒批。若你在 DSH 里做工作流编排,可从 bundle 安装与一位 office_hire 开始,再用 Web Office 面板观察 roster 与投递。