dsh-office:在 DeepSeek Harness 里搭一间持久的「同事办公室」

前言

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 与投递。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜