dsh-stigmergy:用共享痕跡場協調子智能體,而不是互發消息

前言

在 DeepSeek Harness(DSH)裏做委派樹(主智能體加任意深度的子智能體)時,常見做法是按「組織圖」來:彙報、對齊、審批,智能體之間來回發消息。智能體數量一多,消息量往往按平方級增長,父節點還要充當中繼。

另一種思路是參考生物界的 stigmergy:螞蟻並不告訴另一隻螞蟻食物在哪,而是在環境裏留下信息素痕跡,後來的螞蟻路過時再根據環境反應。信息住在共享環境裏,而不是聊天日誌裏。dsh-stigmergy 是維護者 qsheeeeen 提供的 DSH 工作流類插件(社區目錄當前星標爲 0),給同一會話(或同一工作區,取決於配置)內的智能體提供一塊共享的、會蒸發痕跡場,用改環境、留痕跡來協調,而不是 send_message 或父節點轉發。

這是什麼

一句話:主智能體及其子智能體在每一步之前都會在運行時上下文裏看到同一塊痕跡場;某個智能體寫入的痕跡,會在另一個智能體下一步裏出現,無需顯式私信。

靈感來自生物學 stigmergy。插件通過 Cordis 補丁註冊工具與上下文注入,版本在 package.json 中爲 0.6.0,許可證 MIT。

核心能力

痕跡場與協調方式

  • 每一步之前,每個智能體都會在運行時上下文裏看到痕跡場,內容有界且會蒸發。
  • 一個智能體留下的痕跡,已經出現在另一個智能體下一步裏:沒有 send_message,沒有父節點中繼,沒有 N² 的消息圖。
  • 痕跡用 key 標識,再次寫入同 key 會替換舊值,場次是「當前狀態」而不是聊天記錄。
  • 每條痕跡分兩層:短 title(每一步都會進入上下文)、detail(只有主動讀取時才加載),減輕每步重複閱讀的成本。
  • 痕跡默認 90 分鐘後蒸發(可配置),過時信息自行消失。

三個工具

工具 作用
stigmergy_leave 寫入或替換一條痕跡:key、title(單行,≤160 字符)、detail(可選,≤4000 字符)、kind、author、ttl_minutes
stigmergy_read 按一個或多個 key 讀取 detail,或讀取整個場次
stigmergy_clear 在蒸發前移除一條痕跡

kind 取值爲:note、decision、finding、task、question、done。

title 的設計要點:不是用來概括 detail,而是「若爲真,會改變下一個智能體行動」的那一條事實;路徑、命令、數字等證據放在 detail,按需再讀。

作用域、注入與持久化

  1. 一場次一個場。 默認 scope: session 時,場次根是會話子樹根部,父智能體與所有後代共享一場。scope: workspace 時以工作目錄爲界,同一項目裏不同會話可共享一場。
  2. 注入。 組裝請求時,systemPrompt.context 把場次渲染進運行時上下文,且只展示 title。DSH 每一步都會重算運行時上下文,場次是活的,不是啓動時拍的一張快照。
  3. 鏡像文件。 場次鏡像到 <cwd>/.dsh-stigmergy/<scope>.jsonl,重啓後仍在;可用普通 read / grep 查看;外部合法編輯會在下次讀取時被採納。
  4. 蒸發與壓縮。 expiresAt 到期後痕跡移出場次;鏡像每累計 200 次 append 會壓縮。
  5. 身份。 每條痕跡帶穩定 from(會話 id)與展示用 author;author 可按角色覆蓋自動解析的名字。

無需模型調工具也會發生的兩件事:快照(場次文本變化時,以 user 消息形式注入上一步運行時上下文)和 presence(列出當前同場運行中的智能體,不寫進鏡像)。

安裝與啓用

插件以當前 DSH 進程的權限運行。安裝前建議在 GitHub 上閱讀源碼與 LICENSE,確認可信後再裝入本機環境。

官方 README 給出的步驟如下。先克隆倉庫(PowerShell 示例):

git clone https://github.com/qsheeeeen/dsh-stigmergy

然後在 DSH 中打開 plugin_manager,使用 install_bundle,目標路徑選克隆下來的目錄(也可在 Creator 模式下安裝),安裝完成後重啓 DSH。

配置項

在 cordis.patch.yml 的 config 中設置,也可由你自己的 profile 補丁層覆蓋:

字段 默認值 含義
directory .dsh-stigmergy 鏡像目錄,相對場次工作目錄;"" 表示僅內存
scope session session(會話及子樹)或 workspace(工作目錄)
maxEntries 12 注入快照時最多展示的痕跡條數
maxTextChars 280 快照中每條 title 的防禦性上限(title 本身 ≤160)
defaultTtlMinutes 90 默認蒸發時間;0 表示直到被替換才消失
promptSection true 是否在 system prompt 中加入固定協調說明段落

典型用法與驗證思路

協調流程可以概括爲:某智能體對當前結論調用 stigmergy_leave 寫入 key 與簡短 title,需要證據時再讓同伴或自己 stigmergy_read;任務完成或決策作廢時用 stigmergy_clear 或等新痕跡覆蓋同 key。

README 中的 live 記錄描述了可復現現象(無需子智能體調用 stigmergy_read、也無需父節點轉發消息):

  1. 父智能體寫入 demo/handoff;處於 Start-Sleep 的子智能體在下一步運行時快照裏即可看到。
  2. 子智能體寫入 demo/decision;父智能體下一步運行時上下文裏出現該痕跡。
  3. 兩個並行兄弟子智能體在等待約 45 秒後,互相能在對方下一步裏看到痕跡。
  4. 移除一條痕跡後,另一智能體下一步中該條不再出現。

本地迴歸檢查(PowerShell):

node test/check.mjs

覆蓋同會話共享、跨會話隔離、title/detail 拆分、替換、邊界、刪除、鏡像回放、殘缺行拒絕、外部完整行採納、兩種協調模式下的身份解析與配置規範化等場景。

鏡像爲 append-only JSONL,一行一個操作,例如 put 與 del;缺字段的半行會被丟棄而不修補,避免污染每場每步都會讀到的場次。

適用場景與邊界

適合: 同一 DSH 會話(或同一 workspace 配置下)裏,多子智能體並行探索、分工,需要共享「當前決策 / 發現 / 任務狀態」,又不想堆消息或讓父智能體當中繼時。

邊界(README 原文):

  • 工具全局註冊,preset 仍可做作用域:屏蔽全局工具的 preset 會讓該智能體看不到場次;繼承全局的子智能體仍可見。插件不綁定特定 preset。
  • 場次面向同一會話內運行的智能體;不替代子智能體最終向父節點返回的報告,場次是共享層。
  • 鏡像由 Host 進程直接寫入,在模型工具沙箱之外;寫入失敗時場次降級爲僅內存,工具調用本身不因鏡像失敗而報錯。

DSH 生態強調「一切皆插件」;社區目錄 SkillHub 插件頁 是獨立站點,與 DeepSeek / 幻方無官方從屬關係,本文介紹的是社區維護插件,而非官方應用商店條目。

結尾

dsh-stigmergy 把多智能體協調從「互發消息」換成「共享、可蒸發、按 key 更新的痕跡場」,並通過 title/detail 拆分控制每步上下文成本。若要查看分類與簡介,可打開目錄頁;安裝、工具參數與配置以倉庫 README 爲準。

  • 目錄頁:https://www.skillhub.cn/plugins/qsheeeeen/dsh-stigmergy
  • GitHub:https://github.com/qsheeeeen/dsh-stigmergy
羽毛球分组比赛记分
小程序二维码

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

小夜