dsh-profiler:給 DeepSeek Harness 加一層運行時剖析與變更回檔

前言

DSH 的官方能力裏有 compaction(上下文壓縮)和 session projection(會話投影),但當你想知道「這次啓動爲什麼這麼慢」「某個工具調用的 P95 耗時是多少」「這個會話的 token 花在哪」,官方沒有直接給出答案。dsh-profiler 補的就是這一層運維視角的剖析與回檔:啓動歸因、工具延遲採樣、會話 token 歸因,以及寫文件類變更的可逆回檔。它對標 Minecraft 服務端圈子裏的 Spark(性能剖析)和 CoreProtect(審計回檔)。

這是什麼

dsh-profiler 是一個 DeepSeek Harness 插件,維護者是 Yuncan050115,託管在 https://github.com/Yuncan050115/dsh-profiler ,社區目錄頁在 https://www.skillhub.cn/plugins/Yuncan050115/dsh-profiler 。

它解決的問題有兩類:一是觀測——在 DSH 運行時拿到啓動耗時、工具調用延遲、會話 token 的分佈;二是回滾——在插件或 Agent 誤改文件之後,按時間點恢復。兩者都通過命令、Agent 工具和 HTTP 看板暴露,不需要額外搭建監控服務。

核心功能

README 給出一張能力清單,數據來源與輸出如下:

能力 數據來源 輸出
啓動歸因 進程 uptime 反推 + apply 計時 冷/熱啓動對照、插件掛載耗時、啓動瀑布圖
工具延遲 session/event 的 tool/call ↔ tool/result 配對 count / avg / p50 / p95 / p99 / 成功率 / 時間序列折線 / 火焰條
token 歸因 本地會話持久化(projcache) 分類彙總、緩存命中率、Top 會話、環形圖
變更回檔 寫文件類工具調用前的自動快照(append-only 歷史庫 + blob 去重) 時間點列表、一鍵回檔(可逆)、新文件回檔即刪除
生態掃描 profiles 清單 第三方插件統計、跨會話記憶插件檢測
診斷 閾值規則 findings(啓動慢 / P95 高 / 記憶缺口 / 緩存低…)

直接可用的診斷結論由閾值規則生成,不需要自己寫 SQL 或正則。

安裝與啓用

官方給的安裝命令是:

dsh plugin --profile desktop add npm:dsh-profiler

也可以手動裝:在 profile 的 package.json dependencies 里加 "dsh-profiler": "^2",在 bundles 數組裏加 "dsh-profiler",npm install 後重啓。手動方式適合需要鎖版本或離線分發的場景。

插件當前版本是 2.0.0,許可證爲 MIT,聲明的 compatibility 爲 0.2.1-rc.2: compatible,engines.node 要求 >=20。

典型用法

命令行側,主命令是 /profiler,子命令覆蓋 tools|sessions|plugins|json|export:

/profiler tools        # 工具延遲彙總
/profiler sessions     # 會話 token 歸因
/profiler plugins      # 生態掃描
/profiler json         # JSON 輸出
/profiler export       # 導出

回檔走兩個命令:

/profiler rewind           # 列出變更點
/profiler restore <id>      # 恢復到某個變更點

回檔前插件會自動存一個 restore-point,因此恢復操作本身也可以反向。新文件如果被回檔,會直接刪除。

Agent 側有一個名爲 profiler_report 的工具,Agent 可以自己調用,scope 取 summary/tools/sessions/plugins/rewind。

HTTP 側默認暴露 /dsh-profiler 看板,包含延遲時間序列、火焰條、token 環形圖、啓動瀑布和回檔時間線,頁面 5 秒自刷新一次。機器讀數據走 report.json 和 rewind.json,恢復走接口:

  • GET /dsh-profiler/report.json
  • GET /dsh-profiler/rewind.json
  • POST /dsh-profiler/rewind/restore

跑一遍插件自帶的測試可以驗證契約、採樣和回檔全鏈路:

node test/smoke.mjs   # 契約 + 採樣 + 回檔全鏈路(快照→修改→恢復→新文件刪除)
node test/edge.mjs    # 降級與髒數據場景

適用場景與注意

適合兩類人:一是自己維護 DSH profile、想定位啓動慢或工具慢的插件作者;二是希望在 Agent 誤改文件之後能按時間點恢復,而不是靠手工 diff 的運維角色。

幾個使用上的事實需要知道:

  1. 插件以當前 dsh 進程的權限運行,命令、工具和 HTTP 端口的能力邊界與 DSH 進程一致。安裝前應先閱讀源碼,確認它是否符合你的安全要求。
  2. 許可證是 MIT,源碼可以自由看、自由改。
  3. 設計上有一處刻意的取捨:profile 的 node_modules 下沒有 @deepseek-ai/* 軟鏈,因此插件零外部依賴,只用 node:fs/os/path/crypto/url,工具和命令定義按官方源碼契約手工構造。也就是說它不依賴 DSH 內部包,升級 DSH 時契約變動需要由插件自己跟進。
  4. cordis.patch.yml 聲明瞭 bundle patch,屬於需要留意的改動點。
  5. README 給出的實測基線是:2026-10-23,DSH 0.2.1-rc.2,Windows 環境,冷啓動 11,738 ms / 熱啓動 4,391 ms / 插件掛載約 1.5 s / 6 進程 RSS 約 2 GB / 37 會話累計 3300 萬 tokens / 緩存命中 97.5%。這是作者自己的環境數據,只作參考,不代表你的機器也長這樣。

結尾

dsh-profiler 的價值在於把「啓動歸因 / 工具耗時 / token 歸因 / 變更回滾」這四件事收進一個插件,避開了自建監控的成本。如果你已經在跑 DSH 並關心這些指標,可以先裝起來用 /profiler 看一眼;如果只是想知道插件生態裏有哪些工作流類工具,目錄頁可以用來做一次橫向對比。

目錄頁:https://www.skillhub.cn/plugins/Yuncan050115/dsh-profiler
倉庫:https://github.com/Yuncan050115/dsh-profiler

需要說明的是,SkillHub 是獨立的 AI Skills 社區站點,與 DeepSeek / 幻方沒有官方從屬關係。

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

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

小夜