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