DSH 插件 dsh-tool-calculator:安全求值數學表達式

前言

DSH 插件生態中,工具插件可以獨立安裝到指定 profile。下面介紹 omdsh-dev 維護的 dsh-tool-calculator

這個插件註冊 calculator 工具,用於安全求值數學表達式。插件說明將其描述爲“零依賴、零進程、純函數”;從已覈實資料看,它適配 DSH 0.1.2-alpha.1,可作爲獨立 bundle 安裝到 profile。許可證爲 MIT。

插件定位

先確認幾個基礎信息:

  • npm 包名:@deepseek-ai/dsh-tool-calculator
  • 註冊工具名:calculator
  • 倉庫地址:https://github.com/omdsh-dev/dsh-tool-calculator
  • 許可證:MIT
  • package.jsonprivatetrue
  • package.json 聲明 Node 引擎爲 ^22.19.0 || >=24.0.0

工具輸入爲 expression 字符串,輸出爲有限數字;NaN / Infinity 會被拒絕。

核心功能

支持的運算符

支持以下運算:

  • +
  • -
  • *
  • /
  • %
  • **
  • 括號 ( )
  • 一元正負,例如 +5-5

其中 ** 爲冪運算,且是右結合:

2 ** 3 ** 2 = 512

支持的函數與常量

支持這些函數:

  • abs
  • ceil
  • floor
  • round
  • sqrt
  • log
  • log2
  • log10
  • exp
  • sin
  • cos
  • tan
  • pow
  • max
  • min

支持常量:

  • PI
  • E

三角函數使用弧度。如果習慣角度,需要在表達式裏換算,例如:

sin(30 * PI / 180)

安全邊界

已覈實資料顯示,該插件不使用 eval,也不使用 new Function。它使用手寫遞歸下降解析器,只接受白名單數字字面量、標識符和運算符。

下面這些寫法會被拒絕或報錯:

  • 引號
  • 分號
  • 反引號
  • { }
  • [ ]
  • 非白名單標識符
  • 求值結果爲 NaNInfinity 的表達式

也就是說,它只把輸入當作數學表達式處理,而不是當作代碼執行。

安裝與啓用

安裝到 profile

安裝命令如下。webheadless 是不同 profile,按需選擇。

交互式或 web profile:

dsh plugin --profile web add github:omdsh-dev/dsh-tool-calculator

headless profile:

dsh plugin --profile headless add github:omdsh-dev/dsh-tool-calculator

注意:web 安裝不會自動覆蓋 headless;dsh run 默認使用 headless profile。如果你主要用 dsh run,應安裝到 headless profile。

驗證安裝

安裝後先檢查配置裏是否出現該插件:

dsh --profile web --dump-config | grep tool-calculator

如果安裝到 headless profile,對應命令是:

dsh --profile headless --dump-config | grep tool-calculator

運行驗證

用一句自然語言讓 agent 調用 calculator 工具:

dsh run "使用 calculator 工具計算 1+2*3"

環境與依賴注意

下面幾點在安裝前值得確認:

  • 適配 DSH 0.1.2-alpha.1
  • 啓動方式:
npx -p @deepseek-ai/dsh@next dsh web
  • 不要使用 install -g 全局安裝
  • peer 依賴 @deepseek-ai/cordis@deepseek-ai/dsh-tools@deepseek-ai/dsh-invariants 由 profile 的 healed profiles/node_modules 回退安裝提供
  • DSH 0.1.2-alpha.1 的 patch 是 id-targeted 語義,必須用 - insert: 列表包裹

典型用法

安裝後,agent 可以使用 calculator 工具處理數學表達式。

示例:

calculator { expression: "15 + 27 * sqrt(9)" }  →  96

通過命令行運行:

dsh run "使用 calculator 工具計算 1+2*3"

冪運算:

2 ** 3 ** 2 = 512

角度換算後的三角函數:

sin(30 * PI / 180)

適用場景與注意

這個插件適合需要給 agent 增加確定性數學求值能力的場景。它把計算限制在表達式層,避免把輸入交給代碼執行環境。

使用前建議確認:

  • 插件以當前 dsh 進程權限運行
  • 安裝前應檢查源碼與許可證
  • 許可證爲 MIT
  • 插件介紹稱“零依賴、零進程、純函數”,但已覈實資料也顯示它依賴 DSH 0.1.2-alpha.1 profile 環境,並由 profile 的 healed profiles/node_modules 回退安裝提供 peer 依賴

已知限制包括:

  • 求值結果必須是有限數字,NaN / Infinity 統一拒絕
  • 三角函數使用弧度
  • 不支持大整數:JS number 是 IEEE 754 double,超出安全整數範圍 ±9e15 有精度損失
  • 不支持科學計數法:1e5 會被詞法層拒絕
  • web 與 headless 是不同 profile,web 安裝不會自動覆蓋 headless

結尾

dsh-tool-calculator 提供了一個邊界較窄、用途明確的 calculator 工具:輸入數學表達式,輸出有限數字,並拒絕代碼執行類輸入。

倉庫地址:

https://github.com/omdsh-dev/dsh-tool-calculator
羽毛球分组比赛记分
小程序二维码

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

小夜