前言¶
在 DeepSeek Harness(DSH)裏跑 agent,改 prompt、換模型、加插件之後,常見問題是:真實工作會話有沒有變差?傳統 benchmark 要事先寫用例、再跑一輪,和日常 session 不是同一批數據。若再引入 LLM 當裁判,結果還難復現。
下面介紹社區插件 dsh-session-eval(維護者 kittimzhe,分類:工作流):對已持久化的 session 日誌做回顧性評估——固定閾值打出等級卡,並支持跨 session 的迴歸對比。不新建 benchmark、不用 LLM 評判、不要求再跑一輪 agent。
這是什麼¶
dsh-session-eval 是 DSH 會話工具鏈裏的「測量層」插件:讀已有 session,輸出可復現的等級與趨勢,用來回答「這次會話好不好」「改配置之後趨勢是升還是降」。
與同生態插件的分工(均通過 ctx.sessionQuery 讀日誌,JSONL 或 SQLite 後端均可):
| 插件 | 層級 | 回答的問題 |
|---|---|---|
| dsh-session-export | 證據 | 這次 session 裏具體發生了什麼 |
| dsh-session-recall | 記憶 | 之前做過什麼、記錄在哪 |
| dsh-session-eval | 測量 | 會話質量如何、趨勢是否在改善 |
與 benchmark 型 dsh-eval 的對比:前者評估你事先發起的跑分;本插件評估已經發生的 session。兩者互補,不互相替代。
許可證 MIT;npm 包名 dsh-session-eval(資料中 package.json 版本爲 0.2.4)。
核心功能¶
單 session 等級卡(/eval)¶
從持久化日誌提取三項確定性指標,按文檔化閾值映射爲 A–E(缺相關活動時該維度爲 n/a):
| 維度 | 指標 | 含義概要 |
|---|---|---|
| Reliability | 工具錯誤率 | tool result 報錯佔比 |
| Re-ask | 每 10 輪修正信號 | 連續用戶消息中、助手尚未回覆前的額外用戶消息(行爲上近似「沒一次說對」) |
| Tool load | 每輪工具調用數 | 調用密度是否在合理區間 |
Overall 取各已評分維度中的最差檔,偏保守設計。閾值常量見倉庫 src/grade.ts;可配置閾值在 roadmap(GitHub issues)。
同一套日誌多次執行 /eval,輸出一致:無模型參與、無採樣,牆鍾時間僅作備註、不參與打分。
跨 session 迴歸(/eval-diff)¶
指定兩個 sessionId,在噪聲帶(錯誤率 ±2pp、re-ask ±0.5、tool load ±1)內對比,避免微小抖動被誤判爲迴歸。
工作區歷史趨勢(/eval-history)¶
在當前工作區 cwd 範圍內(與 /archive 相同的 sessionQuery 範圍),對最近 N 個 session 分別打分,並對首尾做 diff。適合「改插件 / prompt / 模型前後各抓一批真實 session」做對比。
安裝與啓用¶
環境:Node.js 20 或 22;DSH profile 需掛載 commands 與 sessionQuery 服務(自帶的 web / agent profile 滿足要求)。
在 DSH 中安裝(官方 README 命令):
dsh plugin --profile web add dsh-session-eval
或從 GitHub 源安裝:
dsh plugin --profile web add github:kittimzhe/dsh-session-eval
安裝後 bundle 會掛載 /eval、/eval-diff、/eval-history。若自行維護 cordis.patch.yml,需保留類似條目:
- insert:
- id: session-eval
name: 'dsh-session-eval'
插件以當前 DSH 進程權限運行;安裝前建議瀏覽倉庫源碼與 MIT 許可證,確認符合你的安全與合規要求。
典型用法¶
先看當前 session¶
在 DSH 會話裏執行:
/eval
終端示例(README 摘錄,版本號隨安裝包變化):
Session eval — a1b2c3d4… (dsh-session-eval v0.2.2)
Overall: A
Reliability A 2/87 tool results errored (2.3%)
Re-ask A 1 re-ask signal(s) over 23 turns (0.4/10 turns)
Tool load B 3.8 tool calls per turn
Notes:
• Wall time 41.2 min over 23 turns.
指定 session 或導出 JSON¶
/eval --id <sessionId>
/eval --json
對比兩次變更前後¶
已知兩個 id 時:
/eval-diff <beforeId> <afterId>
/eval-diff <beforeId> <afterId> --json
看最近 N 次趨勢¶
/eval-history [N]
/eval-history [N] --json
/eval-history --out report.md
--out 將終端卡片存爲 Markdown;加 --json 可存 JSON。相對路徑相對當前 session 工作區解析;父目錄須已存在,已有文件會被覆蓋。
適用場景與注意¶
適合:已在 DSH 中持續產生 session 日誌的團隊或個人;需要在真實工作數據上跟蹤 Reliability、Re-ask、Tool load 趨勢;改配置後做噪聲容忍的迴歸判斷,而不是隻依賴事先設計的 benchmark。
不適合替代:需要覆蓋預測場景的標準化 benchmark(仍應使用 dsh-eval 等 benchmark 路徑)。
注意:
- 評分閾值目前爲代碼內常量,自定義門檻需關注上游 issue 或自行 fork。
- 歷史範圍綁定當前工作區
cwd,跨目錄對比請用/eval-diff並明確 session id。 - 社區目錄 SkillHub 插件頁 與 GitHub 倉庫由社區維護,與 DeepSeek / 幻方無官方從屬關係;星標等元數據以各站點當時展示爲準。
結尾¶
dsh-session-eval 把「會話好不好、改完有沒有變差」落到持久化日誌上的固定閾值與 diff,補全 export / recall 之後的測量一環。安裝後從 /eval 和 /eval-history 即可在現有 session 上試跑。