前言¶
DeepSeek Harness (DSH) 採用插件化架構,智能體通常在會話中運行。在多智能體協作場景下,需要一種機制讓不同會話中的智能體進行通信或傳遞指令。現有的做法往往依賴原始會話 ID 進行硬編碼,缺乏管理性和穩定性。
dsh-agents-in-the-loop 插件解決了這個問題。它爲 DSH 智能體提供了一個跨會話的“呼叫中心”功能,通過會話間消息傳遞和一個基於名稱的聯繫人目錄,實現了智能體間的標準化通信。
插件定位¶
- 名稱:dsh-agents-in-the-loop
- 類型:工作流
- 所有者:markelayan
- 許可證:MIT
- 核心價值:跨會話消息投遞與命名聯繫人目錄管理。
核心功能¶
該插件提供了三個主要功能模塊:
session_message工具:用於列出當前活躍的會話,並向已註冊的聯繫人名稱發送消息。contacts工具:維護一個基於會話 ID 的命名聯繫人目錄。支持運行時添加、更新、重命名和刪除聯繫人,無需重啓 DSH。- HTTP API:提供僅限迴環的 HTTP 接口,允許外部代理(如 Claude Code)向已註冊聯繫人發送消息,同時也支持客戶端面板讀取聯繫人目錄。
安裝與啓用¶
通過 npm 安裝:
npm i dsh-agents-in-the-loop
安裝後,需要在 DSH 的 cordis.patch.yml 配置文件中添加插件行,並重啓 dsh web。配置示例:
- insert:
- id: dsh-agents-in-the-loop
name: dsh-agents-in-the-loop
config:
enabled: true
sessionMessage:
enabled: true # 開啓 session_message 工具
contacts:
enabled: true # 開啓 contacts 工具
典型用法¶
1. 使用工具發送消息¶
在 DSH 智能體中,可以使用以下指令:
- 列出活躍會話:
session_message { action: "list" }
- 發送消息:
session_message { action: "send", target: "dev-lead", message: "task done", wake: true, resumeIfDead: false }
* `target`:必須使用已註冊的聯繫人名稱(自 v1.4.2 起,原始會話 ID 被拒絕)。
* `wake`:默認爲 true,喚醒空閒會話。
* `resumeIfDead`:默認爲 false,嘗試復活已死會話。
2. 管理聯繫人目錄¶
- 添加聯繫人(僅名稱即可自注冊):
contacts { action: "add", name: "dev-lead" }
* 注:自注冊不需要提供 sessionId。
- 更新聯繫人信息:
contacts { action: "update", name: "dev-lead", label: "Backend Lead", tags: ["senior", "python"] }
3. 外部 HTTP API 調用¶
外部腳本或 Claude Code 等非 DSH 環境的代理可以通過迴環接口發送消息:
curl -s http://127.0.0.1:9001/api/agents-in-the-loop/message \
-H 'Content-Type: application/json' \
-d '{"from":"claude-code","contact":"dev-lead","message":"task done"}'
- 注意:API 僅支持迴環訪問(127.0.0.1),非迴環請求會返回 403。
- 注意:外部 API 僅支持“發送”操作,不支持註冊或接收消息。
注意事項¶
- 版本變更歷史:該插件前身是
taskboard-flow。在 v1.0 版本中移除了看板引擎,v1.3 版本移除了 Web UI,當前版本專注於消息傳遞核心功能。 - 目標鎖定規則(v1.4.2):
session_message send和contacts call只接受已註冊的聯繫人名稱作爲目標。如果嘗試使用原始會話 ID,會返回錯誤並提示使用list操作。 - 上下文衛生(v1.6.0):爲了防止上下文膨脹,消息長度被限制在 8000 字符以內。如果發送長報告,建議通過文件路徑發送。
- 配置與隱私:聯繫人存儲基於文件(默認路徑
~/.dsh/taskboard-flow-contacts.json),所有操作均爲本地化,無遙測數據收集。
結語¶
dsh-agents-in-the-loop 爲 DSH 插件生態提供了一個實用的跨會話通信層。它通過引入“聯繫人”概念替代了原始會話 ID,使得多智能體協作更加規範和可控。適合需要構建複雜工作流或多智能體系統的開發者使用。