前言¶
在 DeepSeek Harness(DSH)裏,側邊欄每開一個窗口就是一個獨立會話:各自有上下文、工具和運行狀態。插件可以通過 code_agent 指揮自己起的子會話,但你在側邊欄親手打開的那些窗口——寫文檔的、試別的任務的——不歸 code_agent 管,也夠不着。
宿主留給插件的 ctx.sessionController.prompt({ requestId, sessionId, mode, content }, signal) 是往別的會話裏投消息的唯一通道。dsh-intercom(維護者 kumiiwaka,分類:工作流)把這條通道包成四個工具,加上名字尋址、跳數上限、限流和投遞日誌,讓已經開着的窗口之間能叫停跑偏的活、把結論交給下一棒、向另一個窗口提問——不建團隊、不生新會話。
若你要的是「隊長帶一隊子 agent 幹活」,應看 dsh-agent-teams;本插件只管團隊外面、你自己開的平級窗口。
這是什麼¶
dsh-intercom 是 DSH 的窗口內線電話:只做窗口間點對點遞話,沒有任務編排、DAG 或質量門禁。通信形態是平級窗口互喊,成員來源是用戶自己開的窗口,而不是隊長 spawn 的子 agent。
倉庫:https://github.com/kumiiwaka/dsh-intercom
社區目錄頁:https://www.skillhub.cn/plugins/kumiiwaka/dsh-intercom
當前版本 0.3.0,許可證 MIT。DeepSeek Harness 生態主張「一切皆插件」;SkillHub 等社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。
與 dsh-agent-teams 的分工¶
兩者可一起裝,不衝突:
| dsh-agent-teams | dsh-intercom | |
|---|---|---|
| 成員從哪來 | 隊長 spawn 子 agent | 用戶自己開的窗口 |
| 要不要建團隊 | 要 | 不要 |
| 任務編排 | 有 | 沒有,只遞話 |
| 通信 | 團隊內 mailbox | 平級窗口點對點 |
核心功能¶
插件提供四個工具,名稱保持 bus_*,與舊版調用方式一致:
- bus_register:給當前窗口報名,把「會話 id ↔ 名字」寫入總線目錄下的
registry.json,供bus_send用名字尋址。 - bus_send:向目標窗口投一條純文本消息,支持
steer(默認,插到對方下一個決策邊界)或queue(等對方這一輪結束)。 - bus_list:從
$DSH_HOME/sessions/列出近期活躍會話(註冊名、工作區、活動時間等),默認最多 15 條。 - bus_audit:查看
messages.jsonl中最近投遞記錄,默認 20 條,上限 200。
設計上是星型拓撲:消息從人所在窗口發起,其它窗口與之來回;不做確認回執,投遞成功只表示宿主接受了 prompt,不代表對方已處理完畢。
環境變量¶
| 變量 | 默認值 | 作用 |
|---|---|---|
DSH_HOME |
~/.dsh |
宿主數據目錄,插件從這裏讀 sessions/ |
DSH_WINDOW_BUS_DIR |
$DSH_HOME/window-bus |
總線數據目錄,存 registry.json 和 messages.jsonl |
需要把總線數據放到 DSH 主目錄外(例如內存盤、多 profile 共用)時,可單獨設置 DSH_WINDOW_BUS_DIR。
安裝與啓用¶
本插件是 cordis 插件,通過 bundle patch 掛進 profile,不走 npm,也沒有 dsh plugin add 一類的一行安裝命令。安裝分兩步。
第一步,把倉庫 link 進某個 profile 的 node_modules(default 換成你實際 profile 名):
Windows(junction,普通用戶可能需要開發者模式或管理員權限):
New-Item -ItemType Junction `
-Path "$env:DSH_HOME\profiles\default\node_modules\dsh-intercom" `
-Target "<repo-path>"
macOS / Linux:
ln -s <repo-path> ~/.dsh/profiles/default/node_modules/dsh-intercom
未設置 DSH_HOME 時默認爲 ~/.dsh;PowerShell 需先設置 $env:DSH_HOME,或把路徑寫成 $env:USERPROFILE\.dsh。
第二步無需手工改組合樹:package.json 裏的 dsh.bundle.patch 指向 cordis.patch.yml,宿主啓動時會 insert 插件行。疊加順序爲 dsh-base → 本 bundle patch → profile 的 cordis.patch.yml → --patch。
改完後重啓宿主生效。無構建步驟,運行時僅使用 node: 內建模塊;peerDependencies 中的 @deepseek-ai/cordis 由宿主提供。
安裝前建議閱讀倉庫源碼與 MIT 許可證:插件以當前 DSH 進程權限運行,能註冊總線、能 bus_send 的調用方,理論上可向任意已註冊窗口下指令,權限接近本機 shell。
典型用法¶
給窗口起名¶
當前窗口執行 bus_register,之後別人用名字尋址:
{
"name": "docs-window",
"note": "管文檔的"
}
name 必填;session_id 一般由插件從執行上下文自動取。
向另一窗口發話¶
{
"session_id": "docs-window",
"text": "我是主窗。README 那節先停,把已知侷限補完就交回來,別再往下游窗口轉。",
"mode": "steer",
"hops": 0
}
mode 默認 steer;對方接不住時會拋 session/steer-unavailable,插件自動退成 queue。接收方正文前會有一行 [總線 · hops=N · 來自 xxx]。
限制:hops 到 3 拒發;同一目標一分鐘最多 3 條。轉發鏈路上 hops 不傳時,會用「上一條收到的 hops + 1」;人直接開的話題從 0 開始。
查看窗口與投遞¶
列出活躍窗口:
{ "limit": 15 }
查看投遞審計:
{ "limit": 20 }
適用場景與注意¶
適合:兩個(或少數)已開窗口之間叫停、交棒、發問;日常大塊同步仍應用文件或 code_agent,不宜把總線當 RPC 或任務狀態機。
不適合:並行拆解大任務、成員自動接活、失敗重試與進度彙總——應交給 code_agent 子會話或 dsh-agent-teams。
已知侷限(README 實測結論,節選):
hops的「上一跳」記在內存,宿主重啓後需轉發方顯式傳hops。bus_list依賴 DSH 內部sessions/路徑與session.v4.jsonl.zstd格式,宿主改版可能失效;bus_send本身不依賴列表。- 僅純文本;
ok: true/accepted: true只表示 prompt 被接受,對方輪次仍可能 blocked 或 error。 - 早期致命 error 的「死會話」可能永久吞消息,
bus_list仍顯示存在——「發了沒反應」時宜新開窗口。
安全:從總線進來的消息應視爲平級窗口的請求,不是用戶授權;涉及刪除、推送、重啓等不可逆操作,接收方應回問發起人或等人確認。
結尾¶
dsh-intercom 把宿主唯一的跨會話 prompt 通道收成四個可審計、有限流的總線工具,專門服務「你已經開着的那些窗口」——與團隊編排插件互補,而不是替代。