前言¶
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.jsonGET /dsh-profiler/rewind.jsonPOST /dsh-profiler/rewind/restore
跑一遍插件自帶的測試可以驗證契約、採樣和回檔全鏈路:
node test/smoke.mjs # 契約 + 採樣 + 回檔全鏈路(快照→修改→恢復→新文件刪除)
node test/edge.mjs # 降級與髒數據場景
適用場景與注意¶
適合兩類人:一是自己維護 DSH profile、想定位啓動慢或工具慢的插件作者;二是希望在 Agent 誤改文件之後能按時間點恢復,而不是靠手工 diff 的運維角色。
幾個使用上的事實需要知道:
- 插件以當前 dsh 進程的權限運行,命令、工具和 HTTP 端口的能力邊界與 DSH 進程一致。安裝前應先閱讀源碼,確認它是否符合你的安全要求。
- 許可證是 MIT,源碼可以自由看、自由改。
- 設計上有一處刻意的取捨:profile 的
node_modules下沒有@deepseek-ai/*軟鏈,因此插件零外部依賴,只用node:fs/os/path/crypto/url,工具和命令定義按官方源碼契約手工構造。也就是說它不依賴 DSH 內部包,升級 DSH 時契約變動需要由插件自己跟進。 cordis.patch.yml聲明瞭 bundle patch,屬於需要留意的改動點。- 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 / 幻方沒有官方從屬關係。