前言¶
DeepSeek Harness(命令名 dsh)是 DeepSeek AI 開源的智能體運行時,核心設計是「一切皆插件」:模型、工具、技能、會話、沙箱和界面都可以用插件替換或組合。社區裏還有一份獨立的插件目錄站點 deepseek-harness-plugin.com,它和 DeepSeek / 幻方沒有官方從屬關係,收錄的是帶 dsh-plugin 話題的社區倉庫。
智能體日常最容易翻車的,往往不是寫業務代碼,而是那些看起來很簡單、結果卻必須可復現的操作:現在幾點、這段 JSON 裏某個字段是什麼、CSV 有幾列、15 + 27 * sqrt(9) 等於多少。模型心算時區、閏年和浮點統計很容易錯;走內置 bash 又每次起進程,跨平臺語法還不統一。omdsh-dev 維護的 dsh-toolkit 把十個零依賴的確定性工具打成一個 collection,可以一次安裝,也可以按需只裝某一個。
dsh-toolkit 是什麼¶
dsh-toolkit 是一款面向 DeepSeek Harness 的「工具與能力」插件合集,由 GitHub 組織 omdsh-dev 維護,倉庫地址是 omdsh-dev/dsh-toolkit。社區目錄頁把它歸在「工具與能力」分類,許可證爲 MIT,主要語言是 TypeScript。截至 2026-08-17,GitHub 顯示 21 顆星;目錄頁當時仍標註 16 顆,以倉庫頁面爲準。
它解決的問題很具體:把 time、encoding、json、calculator、csv、regex、markdown、diff、stat、schema 十個工具做成可獨立安裝的 bundle,再在本倉庫裏 vendored 凍結成 pack artifact 快照,統一工程、統一測試、統一維護。根包名是 @deepseek-ai/dsh-toolkit,package.json 裏寫了 "private": true,只用於 Git / collection 分發,並不代表會發到 npm registry,也不代表它是 DeepSeek 官方應用商店裏的產品。
倉庫 README 把它定位成 collection 與安裝輔助倉庫:每個子包都可以單獨啓用、禁用、卸載;collection 提供目錄、清單和批量安裝腳本。適配目標寫的是 DSH 0.1.0-rc.6(npm)的 Profile Bundle 插件系統。根包要求 Node.js 爲 ^22.19.0 || >=24.0.0,當前版本號是 0.0.1。
十個工具分別做什麼¶
倉庫 catalog.json 列出了十個子插件,能力如下。README 還標註了各子包的測試用例數,合計 723 個;這是倉庫自己的統計,不是第三方評測。
1、time(dsh-tool-time):嚴格 ISO 8601 解析、IANA 時區轉換、UTC 日曆加減、固定時長差。支持 now / convert / add / diff。不接受自然語言日期,不帶時區的日期時間也會被拒絕。
2、encoding(dsh-tool-encoding):UTF-8 文本的 base64 / base64url / url / hex 編解碼,以及 md5 / sha1 / sha256 / sha512 摘要和 UUID v4。哈希只適合非安全完整性校驗,不要拿它處理機密材料。
3、json(dsh-tool-json):JMESPath 風格的路徑查詢,手寫遞歸下降解析器。支持點號訪問、方括號索引、數組通配符投影。不支持過濾器 [?...]、管道 | 和函數調用。
4、calculator(dsh-tool-calculator):安全的數學表達式求值。支持 + - * / % **、括號,以及 abs、sqrt、sin、pow、PI、E 等白名單函數和常量。實現不用 eval,也不用 new Function。
5、csv(dsh-tool-csv):RFC 4180 解析、按列精確查詢、行列統計、轉 JSON。與 json 工具形成一對:JSON 管對象,CSV 管表格。
6、regex(dsh-tool-regex):測試匹配、提取捕獲組、安全替換,以及靜態解釋正則含義(explain 不執行匹配)。test / find / replace 在可終止的 worker 裏跑,硬超時 1000ms,用來擋住 ReDoS。
7、markdown(dsh-tool-markdown):HTML↔Markdown、GFM 表格規範化、目錄生成。md2html 走標籤白名單,javascript: / data: 鏈接會降級成純文本;script / style / iframe 等內容會被剝離。
8、diff(dsh-tool-diff):文本 / JSON / CSV / Markdown 的結構化比較,以及內存中的 unified diff。只讀,不讀文件、不寫文件、不聯網、不調 git。
9、stat(dsh-tool-stat):描述統計、百分位數、頻數分佈、Pearson / Spearman 相關。相同輸入得到相同輸出;拒絕 NaN / Infinity。
10、schema(dsh-tool-schema):JSON Schema(draft 2020-12 子集)驗證、失敗路徑、約束解釋、安全應用 default。零網絡、零動態代碼執行;不支持的關鍵字默認直接失敗,不會靜默忽略。
這些工具的共同取向是:零第三方運行時依賴、純函數、結果確定、有資源上限。它們不是去替代 bash 或 git,而是把智能體高頻、易錯、又必須可覈對的那一類操作從「模型猜」改成「工具算」。
安裝與啓用¶
社區目錄頁給出的安裝命令如下,在 DeepSeek Harness 終端裏運行即可:
dsh plugin add github:omdsh-dev/dsh-toolkit
如需可復現安裝,目錄頁建議固定 commit 哈希:
dsh plugin add github:omdsh-dev/dsh-toolkit#commit
把 #commit 換成倉庫裏實際的提交哈希。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼,裝之前應檢查源碼和許可證。
倉庫 README 另外說明了兩種掛載模型,和目錄頁那條「一次加根包」並不完全等同。
獨立 bundle 模型(README 推薦):每個子包單獨安裝、啓用、禁用、卸載。例如只裝 CSV 或 Diff:
# 安裝單個工具到 web profile
dsh plugin --profile web add github:omdsh-dev/dsh-tool-csv
# 一次性任務(headless)profile
dsh plugin --profile headless add github:omdsh-dev/dsh-tool-diff
批量安裝可以用倉庫裏的腳本(冪等,重複執行不會重複添加):
./scripts/install-web.sh # 全部 10 工具 → web profile
./scripts/install-headless.sh # 全部 10 工具 → headless profile
./scripts/install-all.sh # 兩個 profile 都裝
驗證與運行:
dsh --profile web --dump-config | grep tool-csv
dsh run "使用 csv 工具解析 'a,b\n1,2'"
web 與 headless 是不同 profile:裝到 web 不會自動覆蓋 headless;dsh run 默認使用 headless。Windows 路徑要用正斜槓。
meta bundle 模型(可選):需要一次原子掛載全部工具時,掛根包:
dsh plugin --profile web add github:omdsh-dev/dsh-toolkit
dsh --profile web --dump-config | grep tool-kit
若 profile 裏已經單獨掛過同名插件(tool-time 到 tool-schema),再掛 meta 包會因重名報錯。這時應先移除舊插件,或改用獨立 bundle。README 寫明 meta apply 具備原子性:任一子插件失敗時會逆序回滾已註冊工具,不殘留部分狀態。
也可以本地 npm pack 後用 tarball 路徑安裝,不依賴 GitHub。根 meta 包保持 private: true,不要把它理解成已經發布到 npm 公共源。
典型用法¶
安裝成功後,智能體會獲得對應的工具名。下面的例子都來自各子倉庫 README,可以直接對照。
計算器,不用 bash 算術,也不走 eval:
calculator { expression: "15 + 27 * sqrt(9)" } → 96
headless 側可以這樣冒煙:
dsh run "使用 calculator 工具計算 1+2*3"
JSON 路徑查詢:
json { input: <JSON>, query: "items[0].name" } → "hello"
json { input: <JSON>, query: "items[*].name" } → ["a", "b"]
CSV 解析成對象數組(有表頭時):
csv { action: "parse", csv: "name,city\nAlice,NYC" }
→ [{"name":"Alice","city":"NYC"}]
時間工具取當前 UTC:
dsh run "使用 time 工具獲取當前 UTC 時間"
add 始終按 UTC 日曆運算;2026-01-31 加一個月會鉗制成 2026-02-28,而不是溢出到三月。
編碼工具把文本做成標準 base64:
encoding { action: "base64_encode", input: "foobar" } → "Zm9vYmFy"
正則提取捕獲組,以及只解析、不執行的 explain:
regex { action: "find", pattern: "(\\w+)@(\\w+)", input: "a@b x c@d" }
regex { action: "explain", pattern: "\\d{4}-\\d{2}" }
Markdown 轉換與安全降級:
markdown { action: "html2md", html: "<h1>標題</h1><p>你好 <b>世界</b></p>" }
→ # 標題
你好 **世界**
markdown { action: "md2html", markdown: "[x](javascript:alert(1))" }
→ <p>x</p>
統計和 Schema 驗證也可以直接交給工具,而不是讓模型心算:
dsh run "使用 stat 工具計算 [1,2,3,4,5] 的描述統計"
dsh run "用 schema 工具驗證 {name: 'x', age: 3} 是否符合給定 JSON Schema"
適用場景與注意事項¶
適合已經在用 DeepSeek Harness、需要給智能體補一套可覈對、可復現基礎能力的人。典型場景包括:配置和 API 響應裏的 JSON / CSV 抽取、文檔 HTML 轉 Markdown、兩段文本或表格的結構化對比、日期時區換算、以及用 JSON Schema 檢查插件 manifest 或配置文件。
使用前有幾條邊界需要看清楚。
1、權限與來源。插件以當前 dsh 進程的權限運行,安裝時可能執行代碼。裝之前應閱讀 omdsh-dev/dsh-toolkit 源碼和 MIT 許可證;需要可復現環境時固定 commit。社區目錄不是 DeepSeek 官方應用商店。
2、web 和 headless 不要混爲一談。只在 web profile 裏裝了工具,dsh run 默認的 headless profile 裏是看不到的。
3、不要和同名單插件疊裝。meta 包與已經單獨安裝的 dsh-tool-* 會搶同一組工具名。
4、能力是子集,不是全家桶替代品。json 不是完整 JMESPath;time 不接受「下週」這類自然語言;calculator 不支持科學計數法 1e5,三角函數用弧度;encoding 的 hash 沒有 HMAC;schema 只覆蓋 draft 2020-12 的一部分關鍵字;diff / markdown / regex / schema 都有輸入體積和超時上限。超出範圍應退回 bash、jq 或其他專用工具。
5、不要把機密送進工具參數。encoding、markdown、diff、schema 的 README 都寫明:工具參數會記入會話日誌。密鑰、會話 Cookie、私鑰不要作爲 input / html / data 傳進去。
6、包名不等於官方發佈。子包也使用 @deepseek-ai/dsh-tool-* 這種 scoped 名稱,這是 DSH 生態裏的命名約定;本 collection 的維護者是 omdsh-dev,根包還是 private: true。
小結¶
dsh-toolkit 做的事情很剋制:不給智能體加新的「會思考」的能力,只把十件必須算準的小事做成零依賴工具,並能一次裝上。目錄頁安裝命令是 dsh plugin add github:omdsh-dev/dsh-toolkit;更細的按需安裝、profile 選擇和工具語義,以倉庫 README 爲準。
目錄頁:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-toolkit/
GitHub:https://github.com/omdsh-dev/dsh-toolkit