dsh-units:DeepSeek Harness 的單位換算插件

前言

在 DSH 智能體工作流裏,單位換算看起來簡單,但實際很容易出錯:攝氏與華氏之間存在偏移量,十進制 MB 與二進制 MiB 不能混用,mpg 與 L/100km 是倒數關係,機械馬力、公制馬力和電動馬力也不等於同一個“hp”。如果智能體靠心算或臨時推斷,結果可能直接進入報告、腳本、配置和解釋文本。

dsh-units 是 DeepSeek Harness,也就是 DSH 的單位換算工具箱插件。它提供 convert_unit 和 list_units 兩個工具,讓智能體在需要時直接調用靜態單位表完成換算,而不是自行猜測係數。

這是什麼

TYEclipse/dsh-units 是一個 DSH 插件,由 TYEclipse 維護,許可證爲 MIT。當前資料中的版本號爲 0.3.0,運行環境要求 node >=20。

它的定位很窄:做單位換算。覆蓋長度、質量、溫度、面積、體積(含烹飪單位)、速度、時間、數據大小、壓強、能量、角度、頻率、功率、力、扭矩、排版和油耗等 17 個類別。實現上不依賴網絡、不訪問文件系統、不執行代碼,主要是對靜態單位表做純算術。

核心功能

下面是已覈實的兩項主要能力。

convert_unit

convert_unit 用於在同一類別內把 value 從一個單位換算到另一個單位。它可以接收符號或完整名稱,例如 °C、m²、"miles"、"MiB" 都可以工作。

它會拒絕未知單位、跨類別換算以及非有限數值,並給出明確的錯誤信息。內部計算保留浮點精度,返回結果時再做顯示舍入。

返回內容會包含原始值、源單位和目標單位的符號與完整名稱、換算結果、所用公式和所屬類別。這樣智能體解釋結果時,可以說明計算路徑,而不是隻給出一個數字。

list_units

list_units 用於查看類別和單位。它可以列出全部 17 個類別,也可以只列出某一個類別,例如 "data" 或 "temperature"。

這個工具適合在調用 convert_unit 之前使用,用來確認準確的單位符號或完整名稱。

安裝與啓用

在 DSH 環境中,可以使用下面的插件安裝命令:

dsh plugin --profile default add github:TYEclipse/dsh-units

如果需要在本地構建,可以使用倉庫裏的開發流程:

git clone https://github.com/TYEclipse/dsh-units.git
cd dsh-units && pnpm install && pnpm build

構建腳本使用 tsc,測試腳本使用 vitest,lint 腳本使用 oxlint。這些開發工具只出現在 devDependencies 和腳本中,不屬於運行時依賴。

典型用法

下面這些示例都來自插件說明中的可復現調用。

把公里換算成英里:

convert_unit { value: 100, from: "km", to: "mi" }
→ 100 km = 62.137119 mi (length, × 0.621371)

區分二進制 MiB 和十進制 MB:

convert_unit { value: 500, from: "MiB", to: "MB" }
→ 500 MiB = 524.288 MB (data size / transfer, × 1.048576)

華氏溫度換算爲攝氏溫度:

convert_unit { value: 350, from: "fahrenheit", to: "celsius" }
→ 350 f = 176.666667 c (temperature, (x − 32) × 5/9)

CSS 與排版中的像素、點:

convert_unit { value: 16, from: "px", to: "pt" }
→ 16 px = 12 pt (typography (CSS / print), × 0.75)

油耗單位換算:

convert_unit { value: 20, from: "mpg", to: "l/100km" }
→ 20 mpg = 11.760729 l/100km (fuel economy, 235.214583 ÷ x → x)

功率換算:

convert_unit { value: 150, from: "kw", to: "hp" }
→ 150 kw = 201.153313 hp (power, × 1.341022)

扭矩換算:

convert_unit { value: 1, from: "lbfft", to: "n.m" }
→ 1 lbfft = 1.355818 n.m (torque, × 1.355818)

查看體積類別:

list_units { category: "volume" }
→ volume (volume (incl. cooking), base: liter): m3 = cubic meter | l = liter | ...

單位符號需要注意的點

幾個容易混淆的符號已經在新版本里做了明確約定。

pt 表示排版中的 point,不再是 US pint。如果要把品脫換算爲升,應該使用 pint:

convert_unit { value: 1, from: "pint", to: "l" }

kn 解析爲 knot,也就是速度單位節。如果需要使用千牛,應通過完整名稱調用:

convert_unit { value: 1, from: "kilonewton", to: "n" }

nm 表示納米,也就是長度單位。扭矩裏的牛頓米使用符號 n.m:

convert_unit { value: 1, from: "lbfft", to: "n.m" }

排版單位有一些約定值:px 假設 96 dpi;em 和 rem 假設常見的 16 px 瀏覽器默認基礎字號。這些是實現說明,不是物理絕對值。

配置

插件提供一個顯示舍入配置項:

plugins:
  dsh-units:
    maxDecimals: 6

這裏的 maxDecimals: 6 隻影響返回結果的顯示舍入,例如十進制位數或有效數字展示方式。內部計算仍保留完整浮點精度。

適用場景與注意

適合使用這個插件的場景包括:

  1. DSH 智能體需要回答長度、質量、溫度、面積、體積、速度、時間等常規單位問題。
  2. 處理數據大小時需要嚴格區分 MB 與 MiB。
  3. 處理油耗時需要在 mpg、l/100km 等之間換算。
  4. 處理功率時需要在 kw、w、不同馬力定義之間換算。
  5. 需要在調用前用 list_units 確認單位符號。

使用前需要注意幾點:

  1. 插件會隨 DSH 插件機制運行,實際執行環境以當前 DSH 進程權限爲準。安裝前應檢查源碼、依賴和許可證。
  2. 該插件提供的是算術換算,不判斷輸入是否有物理意義。例如轉換 -10 K 會返回算術結果,物理合理性由調用方負責。
  3. 該插件沒有網絡、文件系統訪問、子進程或代碼執行。這個安全模型描述來自插件資料,實際風險仍應結合 DSH 宿主環境判斷。
  4. 不要把它當作通用計算引擎;它的範圍是單位換算和類別內單位列表。

結尾

dsh-units 解決的是 DSH 智能體裏一個很具體的問題:把高頻、易錯、需要解釋的單位換算從心算裏拿出來。它的範圍不廣,但邊界清楚:靜態單位表、類別內換算、嚴格校驗、結構化結果、零運行時依賴。

GitHub 倉庫:

https://github.com/TYEclipse/dsh-units

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

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

小夜