前言¶
在 DeepSeek Harness(DSH)裏做智能體或對話開發時,模型經常要處理 JSON 校驗、日誌解析、traceback 定位這類「格式活」和「診斷活」。常見做法是每次讓模型現寫 shell 或腳本:引號、編碼、PowerShell 版本一換,結果就不穩定,也難以復現。DSH 生態按「一切皆插件」擴展能力;社區插件目錄在 SkillHub 等站點維護,與 DeepSeek / 幻方無官方從屬關係。
下面介紹維護者 ax2 發佈的合裝包 dsh-toolbox-bundle(GitHub:ax2/dsh-toolbox-bundle):一條命令寫入四個獨立插件的配置,共 46 個純本地、無網絡、無安裝期腳本的確定性工具,覆蓋 JSON/YAML/CSV/編碼/正則等日常處理,以及 JVM、Python、Windows 生產側常見診斷輸入的解析。
這是什麼¶
dsh-toolbox-bundle 本身不實現工具邏輯,而是在 DSH 的 bundle 層一次插入四行配置,依賴並拉取四個 npm 插件(各自獨立版本、獨立測試):
| 插件 | 工具數 | 側重 |
|---|---|---|
| dsh-deterministic-tools | 29 | JSON 校驗(精確行列)、JSONPath、diff、CSV/YAML 互轉、文本統計、正則、編解碼與哈希等 |
| dsh-jvm-doctor | 5 | thread dump(含 Java 級死鎖環)、GC 日誌、Maven/Gradle 依賴衝突、異常鏈、Spring 配置 diff |
| dsh-py-doctor | 6 | traceback、pytest、Django migrations/N+1/checks、celery 報告(均帶解析覆蓋率) |
| dsh-win-native | 6 | 編碼檢測與轉換、Windows 路徑合法性、netstat 解讀、只讀磁盤巡檢與重複文件 |
README 標明:214 個測試通過;許可證 MIT;npm 包當前版本 0.1.2(以倉庫 package.json 爲準)。前身包名 dsh-zidev-toolbox、@ax2zicode/dsh-dev-toolbox 已在 npm 廢棄並指向本包。
核心能力與設計取向¶
四個插件的回執遵循統一契約:結構化 { result, meta },超預算拒絕(如 INPUT_TOO_LARGE),文本截斷按 code point 並標註 truncated,解析工具上報覆蓋率與未識別行;聲明能力邊界(例如 jwt_inspect 不驗籤、netstat_parse 不編造文本里沒有的進程名)。
46 個工具裏僅 2 個只讀訪問磁盤:dir_usage、file_duplicates(有文件數/字節預算,不跟隨符號鏈接與 junction)。其餘工具只在用戶提供文本或字節時分析,不髮網絡請求、不依賴額外二進制。
與「完全交給模型心算」相比,README 的立場是:模型往往算得對,但插件提供的是更高的一次成功率、固定實現下的可復現輸出,以及明確的邊界行爲——適合輸入遠大於輸出、或 shell 一行難以可靠完成的聚合任務。
安裝與啓用¶
npm 包名是 dsh-toolbox-bundle,與 GitHub 倉庫 ax2/dsh-toolbox-bundle 對應。
Web 版 profile 安裝:
dsh plugin --profile web add dsh-toolbox-bundle
裝完後重啓 DSH 應用(bundle 列表在啓動時讀取)。桌面版將 web 換成 desktop:
dsh plugin --profile desktop add dsh-toolbox-bundle
離線或固定版本可從 Release 拉取 tarball:
dsh plugin --profile web add https://github.com/ax2/dsh-toolbox-bundle/releases/latest/download/dsh-toolbox-bundle.tgz
不要與本合裝包已包含的四個插件單獨混裝,否則會重複註冊同名工具。家族總覽入口:zicode.com/software。
運行環境:package.json 要求 Node.js >= 20.10。
典型用法¶
安裝並重載後,在對話裏粘貼生產側常見片段,由模型選用對應工具即可。README 給出的 Python traceback 示例:
Traceback (most recent call last):
File "svc.py", line 42, in handle
KeyError: 'user_id'
模型可調用 python_traceback,得到結構化字段(異常類型、最深棧幀、cause_hints、coverage 等),便於下一步改代碼或查數據,而不是在長文本里人工掃行號。
其他對照關係(摘自 README):
| 用戶意圖(示意) | 工具 | 輸出要點 |
|---|---|---|
| 校驗帶尾逗號的 JSON,要精確行列 | json_validate |
line/column/position + 錯誤文案 |
檢查 C:\temp\CON.txt 是否合法 |
path_inspect |
保留 DOS 設備名等規則 |
| 分析 jstack 是否死鎖 | java_thread_dump |
死鎖環、鎖競爭、狀態直方圖 |
| GC 日誌 p99 停頓 | java_gc_log |
停頓分位數、Young/Full 等 |
從 netstat -ano 找監聽 8080 |
netstat_parse |
監聽項與 PID/進程名(僅基於文本) |
| 查看目錄佔用 | dir_usage |
總字節、最大文件、擴展名直方圖 |
Token 成本與按需裁剪¶
工具 schema 隨每次請求發送,安裝即佔用 prompt,即使用戶不調用工具。README 實測(非估算):在乾淨 headless base(75 個工具名、約 11,931 inputTokens)上增加本 bundle 的 46 工具後,工具名約 121 個,首次請求約 19,608 inputTokens(+7,677)。單次「校驗 JSON 並給精確行列」:不裝插件約 3 步、13.0 s;裝插件約 2 步、6.1 s,但 raw token 可能反而更多——一次性小活不一定更省 token,更適合大輸入壓縮進工具、結果遠小於輸入、或模型易算錯的場景。
若只需常用子集,可在 profile 自己的 profiles/<name>/cordis.patch.yml 裏按插件 id 配置 only 與 toolPrefix(README 示例針對 deterministic-tools)。勿用 dsh --patch 去改 bundle 層未暴露的 id,否則會報 patch: entry "deterministic-tools" not found。
適用場景與注意¶
適合:需要在 DSH 對話中穩定處理 JSON/YAML/CSV、正則與編碼;粘貼 JVM thread dump / GC 日誌、Python traceback / pytest / Django 報告;在 Windows 環境解讀 netstat、路徑與磁盤佔用(只讀)的開發者與智能體場景。
注意:
- 插件以當前 dsh 進程權限運行;安裝前請自行審閱 GitHub 源碼 與各子插件倉庫及 MIT 許可證。
- 合裝包是配置聚合層,四個插件也可單獨從 npm 或各自
releases/latest/download/<repo>.tgz安裝;與 bundle 二選一,避免重複。 - SkillHub 目錄分類爲「模型推理」;倉庫星標以目錄頁爲準(當前爲 0),不代表功能完整度——應以 README 與測試說明爲準。
結尾¶
dsh-toolbox-bundle 用一條 DSH 命令把四套確定性、離線工具鏈掛進 profile,把格式處理與 JVM/Python/Windows 診斷從「每次現寫腳本」收成固定實現與結構化回執。目錄頁:SkillHub — ax2/dsh-toolbox-bundle;源碼與安裝說明:github.com/ax2/dsh-toolbox-bundle。