dsh-agent-lab:Agent 行爲迴歸實驗臺

前言

在 DeepSeek Harness(DSH)裏做智能體開發時,換模型、改 effort、動提示詞或升級插件後,同一條任務的行爲是否一致,往往只能靠「再跑一遍、憑感覺對比」。一次成功、一次失敗時,也很難快速定位差異出在哪一步工具調用。現有方式多停留在「看會話錄像」,缺少把多次運行並排對齊、標出漂移、並按任務聚合爲矩陣的能力。

下面介紹社區插件 dsh-agent-lab(維護者 Limtide,分類:工作流)。它把一次真實會話錄成運行(run),支持與另一次運行並排對比工具序列、參數、結果與用量;可從同一任務在隔離副本里重放(換模型或改提示詞);再按任務 × 變體聚合成矩陣,併爲任務配置斷言,用 CLI 退出碼接入 CI 迴歸門禁。當前 package 版本爲 0.4.0,許可證 MIT。

目錄頁:https://www.skillhub.cn/plugins/Limtide/dsh-agent-lab
源碼:https://github.com/Limtide/dsh-agent-lab

這是什麼

dsh-agent-lab 的定位是「給 agent 配置做 pytest」的第一程:錄製運行 → 對比差異 → 有意識重跑 → 矩陣彙總 → 斷言門禁。

它解決的核心問題包括:

  • 換了模型、effort、提示詞或插件版本,同一任務的行爲變了嗎?
  • 兩次跑同一流程,一次成功一次失敗,差異出在哪一步?
  • 收到「亂改文件」類反饋時,如何把現場錄下來供對照?

比較口徑側重行爲不變量(工具名、順序、參數、成功/失敗、結果內容),而不是模型回覆的逐字文本;README 也明確不保證模型輸出可復現。

核心功能

對比(v0.1 起)

側欄打開 迴歸實驗臺。在 對比 頁籤中:

  1. 從會話導入 —— 選擇已有會話(含進行中的),錄製成運行。
  2. 重放(v0.2)—— 在運行下拉菜單點重放:可改任務提示詞、模型與推理強度;插件複製基線工作區到副本並真實重跑,完成後自動成爲對照 B。
  3. 或直接再錄一次,或從運行庫選兩次運行。

頁面將 基線 A 與 對照 B 並排對齊,包括:

  • 頂部指標:行爲相似度、工具調用數、失敗數、Token、耗時、步驟,帶 A→B 增量與變好/變差着色。
  • 配置指紋:模型、effort、工具 schema 數與哈希、系統提示詞哈希、沙箱與審批策略。
  • 對齊軌跡:逐行狀態(一致 / 參數漂移 / 結果變化 / 成敗翻轉 / 缺失 / 新增);序列對齊使用 Needleman–Wunsch,同名工具才能配對,避免多一次調用導致後面全部錯位。
  • 僅差異、展開行看完整參數與結果等交互,README 中有截圖說明。

運行庫與斷言庫分別保存在 $DSH_HOME/agent-lab/runs/*.json 與 $DSH_HOME/agent-lab/checks/*.json,可直接閱讀與版本化。

重放(v0.2)

點重放後 Host 會:複製基線工作目錄到 $DSH_HOME/agent-lab/replays/<job>/workspace;用基線記錄的 agent preset(不存在則回退默認)在副本里建新會話;按指定 provider / model / effort 跑任務,會話強制 workspace-write 且審批 never;turn/end 後錄成新運行並寫入 replay 元數據。

使用前需知:

  • 真實調用模型與工具,消耗 Token;默認 20 分鐘上限,超時取消並保存已產生軌跡。
  • 工具只能寫副本;越界寫會被沙箱拒絕。副本不會自動刪除;複製的是重放時刻的目錄(含 .git、node_modules),大倉庫會慢。
  • 同一時刻只允許一個重放;進程重啓後內存中的任務狀態丟失,已完成運行已落盤。

矩陣(v0.3)

矩陣 頁籤中:行爲任務(按歸一化任務提示詞分組,鍵形如 task-1a2b3c4d5e6f);列爲變體(provider / model / reasoningEffort);單元格展示通過率、平均工具調用數、平均 Token。無斷言時按「正常結束」判通過;有斷言時需正常結束且全部斷言通過。空單元格可「重放這個變體」,任務與工作區來自該任務最近一次導入的運行(無則退回最近一次重放)。

README 說明 v0.4 不做批量重放隊列,矩陣需逐個發起重放。

斷言與 CI 門禁(v0.4)

斷言掛在任務上($DSH_HOME/agent-lab/checks/<task-key>.json),同一任務的所有運行共用。內置始終檢查:這一輪必須正常結束(turn-completed)。可追加:

斷言 參數 含義
no-tool — 未調用任何工具
file-contains path, text 工作區內相對路徑文件包含文本
final-contains text 最終回覆包含文本
max-tool-calls max 工具調用數上限
max-total-tokens max 輸入+輸出 Token 上限
max-failures max 失敗工具調用數上限

file-contains 對重放讀副本目錄,對導入讀會話當前工作目錄;路徑須留在工作區內。

CI 示例:

node bin/agent-lab-check.mjs --run run-xxxxxxxx
node bin/agent-lab-check.mjs --task task-1a2b3c4d5e6f --variant deepseek-account/deepseek-flash@high
node bin/agent-lab-check.mjs --run run-xxxxxxxx --json

退出碼:0 通過、1 斷言失敗、2 用法或存儲錯誤。默認讀 $DSH_HOME/agent-lab/{runs,checks},可用 --runs-dir / --checks-dir 覆蓋,--checks <file> 指定斷言 JSON。

GitHub Actions 中可寫:

- name: agent regression gate
  run: node plugins/dsh-agent-lab/bin/agent-lab-check.mjs --run "${{ env.RUN_ID }}"

安裝與啓用

DSH 生態裏插件通過 Profile 的 Plugin Manager 安裝。README 給出的安裝 / 更新方式爲(在本 profile 中):

plugin_manager install_bundle <插件目錄的絕對路徑>

Host 側代碼改動在下次 profile 重組(Plugin Manager 裏關閉再開啓該條目)或應用重啓後生效;瀏覽器側刷新頁面即可。開發自測可在插件目錄執行 npm test。

插件以當前 DSH 進程權限運行,安裝前應自行查看源碼與 MIT 許可證;運行記錄、斷言與臨時副本僅在本機,不含上傳。

典型用法

  1. 在 DSH 側欄打開 迴歸實驗臺。
  2. 在 對比 頁籤從目標會話 從會話導入,得到基線運行 A。
  3. 需要對照時:對 A 使用 重放 改 model / effort / 提示詞,或再導入/選擇另一次運行作爲 B。
  4. 查看頂部指標、配置指紋與對齊軌跡;必要時開 僅差異 或展開行覈對參數鍵變化。
  5. 切到 矩陣 頁籤,按任務 × 變體查看通過率與用量;對空單元格按需 重放這個變體。
  6. 爲任務編輯斷言 JSON(或通過 UI 對話框,以實際客戶端爲準),本地或 CI 調用 agent-lab-check.mjs 做門禁。

參數與結果比較前會做歸一化(工作目錄替換爲 <cwd> 等),「行爲相似度」爲啓發式分數(60% 軌跡對齊 + 25% Token + 15% 失敗差異),README 建議只作趨勢參考,以原始 diff 爲準。

適用場景與邊界

適合:需要對比兩次 agent 運行的工具行爲;在換模型/提示詞/插件版本前做手工或 CI 迴歸;把失敗會話錄成 run 留檔對照。

明確不做(v0.4 README):批量重放隊列、worktree 隔離、外部工具夾具、CI 託管、遞歸錄製子代理/工作流樹;數據不上傳。

Skillhub 目錄頁星標爲 0,與 GitHub 公開信息一致;社區目錄爲獨立站點,與 DeepSeek / 幻方無官方從屬關係。

結尾

dsh-agent-lab 把「錄一次、比兩次、重放變體、矩陣彙總、斷言退出碼」串成一條可落地的 agent 行爲迴歸路徑,適合已在 DSH 裏跑真實任務、又需要可版本化運行庫與 CI 門禁的開發者。

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

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

小夜