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 與投遞。

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

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

小夜