在 DeepSeek Harness (DSH) 的開發流程中,隨着技能庫規模的擴大,判斷哪些技能真正被調用、哪些可以清理,是維護工作的一部分。傳統的日誌排查方式效率有限,且技能形態的統計工具通常只能事後全量掃描,無法實時感知調用。下面介紹 dsh-skill-stats 插件,它通過雙通道數據(歷史回放 + 實時訂閱)統計技能調用次數,幫助開發者判斷哪些技能值得保留。
核心功能¶
該插件提供以下功能:
- 調用統計:統計每個技能的累計調用次數、使用過的會話數、首次/最近調用時間,以及每次調用的具體時間戳。
- 雙通道數據:
- 歷史回放:啓動時掃描宿主環境的會話日誌(
session.jsonl/session.jsonl.zstd),解析tool/call事件中的技能調用。 - 實時訂閱:監聽進行中的工具調用事件,即時累加統計數據。
- 歷史回放:啓動時掃描宿主環境的會話日誌(
- 會話視圖:展示單個會話用過的技能列表,支持排序。每行附帶迷你趨勢圖,展開可查看大圖及每次調用時間;已刪除的技能標記「已刪除」。
- 全局面板:提供所有技能(含 0 次使用)的統計表,支持排序、SVG 趨勢圖,並支持 1/3/7/30 天範圍篩選及每次調用明細。
- 增量緩存:基於文件大小與修改時間記錄水印,重啓時僅重放發生變化的日誌,加快啓動速度。
- 已刪除標記:掃描所有工作區與全局技能根目錄,檢測目錄不再存在的技能。
- 加載態:在日誌重放未完成時顯示提示,避免將空快照誤報爲「未使用」。
安裝與啓用¶
使用以下命令進行安裝和構建:
git clone git@github.com:chen-zz20/dsh-skill-stats.git
cd dsh-skill-stats && pnpm install && pnpm run build
dsh plugin --profile web add link:/path/to/dsh-skill-stats
說明:
* 該插件爲 bundle 型插件,安裝後自動加入 profile 的 dsh.profile.bundles 層,無需手動配置行。
* 依賴 @deepseek-ai/* 已發佈至公共 npm registry,pnpm install 可直接拉取。
* 若遇 pnpm 10.19+ 的 minimumReleaseAge 攔截,倉庫已包含 pnpm-workspace.yaml 豁免配置。
典型用法¶
插件提供 REST API 用於查詢統計數據:
GET /skill-stats/api/stats # 全局統計(含已刪除技能)
GET /skill-stats/api/stats?scope=current # 當前磁盤上的技能(含 0 次使用,無已刪除)
GET /skill-stats/api/stats?sessionId=... # 單會話技能使用
響應示例:
{
"skills": [
{ "name": "file-dsh-issue", "invocations": 5, "sessions": 2,
"firstUsedAt": 1786000000000, "lastUsedAt": 1786009000000,
"deleted": false, "callTimes": [1786000000000, 1786009000000] }
],
"archivedSessionCount": 0,
"ready": true,
"updatedAt": 1786010000000
}
字段說明:
* ready:指示啓動重放是否已全部完成(未完成時前端顯示加載態)。
* callTimes:每次調用的時間戳,升序排列。
* sessionId 參數:按會話查詢;未就緒的會話會在查詢時按需重放其日誌。
注意事項¶
- 只讀插件:插件不修改任何會話日誌或技能文件。
- 實時能力:插件形態的獨特優勢在於可以邊發生邊統計,而技能形態的統計工具只能事後全量掃描。
- 依賴與兼容性:依賴
@deepseek-ai/*包需由宿主環境注入。
總結¶
dsh-skill-stats 是一個專注於技能使用統計的只讀插件。它通過增量緩存和雙通道數據,既能快速提供歷史數據,又能實時更新,幫助開發者清理不再需要的技能文件,維護健康的技能庫。
- 項目主頁:https://github.com/chen-zz20/dsh-skill-stats
- 社區目錄:https://www.skillhub.cn/plugins/chen-zz20/dsh-skill-stats