DSH Calculator:爲智能體提供確定性數學求值

前言

在 DSH 裏跑智能體時,模型經常靠「心算」回答算術:例如 0.1 + 0.2 可能不等於 0.3,金額相乘也會在浮點誤差裏漂移。常見做法是提示模型「仔細算」,但無法保證結果可復現。下面介紹社區插件 DSH Calculator(qqiqiq/dsh-calculator):它給會話註冊一個真實的求值引擎,讓模型通過工具調用得到確定答案,而不是估算。

這是什麼

DSH Calculator 由維護者 QqiqiQ 發佈,在 SkillHub 插件目錄 中歸類爲模型推理。核心實現是單文件 core.js 裏的手寫詞法分析與遞歸下降解析器,不使用 eval 與 Function,無額外運行時依賴。安裝後會在對應 profile 的每次會話中註冊 calculate 工具,並在系統提示中追加簡短用法規則,引導模型優先調用工具而非心算。

核心功能

經 README 與 package.json(當前版本 1.2.0)覈對,能力包括:

運算符與字面量:+ - * / ^(或 **)% !、括號、一元負號、科學計數法 1.5e-3,以及 × ÷ − 等別名。

常量:pi、e、tau、phi、inf。

函數:sqrt、cbrt、abs、sign、ceil、floor、round、trunc、exp、expm1、ln、log(x)、log(x, base)、log2、log10,以及三角與雙曲函數、pow、mod、gcd、lcm、min、max、hypot、radians、degrees 等。

矩陣(float 模式):字面量 [[1,2],[3,4]]、行向量 [1,2,3];逐元素 + -、矩陣乘法 *、標量乘除、整數次冪 A^n(負指數表示求逆)、轉置 A';以及 det、inv、transpose、trace、rank、solve(A,b)、dot、cross、norm、eye、zeros、ones、shape。

數值微積分(float 模式):integrate(f, x, a, b) 定積分(自適應 Simpson,有限區間);deriv(f, x, p) 某點導數(中心差分 + Richardson)。結果約 12 位有效數字。

變量與批量:通過 variables 傳入如 {"r": 3.5},值可爲標量、向量或矩陣;expression 可爲字符串數組,單次調用最多 50 條表達式。

錯誤反饋:語法、定義域、除零等錯誤帶位置信息,便於模型自行修正。

兩種精度:

  • float(默認):IEEE 雙精度,輸出四捨五入到 15 位有效數字。
  • exact:基於 BigInt 的任意精度十進制,適合金額;僅支持 + - * / %、整數 ^ 與 !;函數與無理常數會顯式拒絕,而非靜默舍入。

安裝與啓用

可從插件市場搜索 “DSH Calculator”,或按官方 README 手動安裝:

dsh plugin --profile web add https://github.com/QqiqiQ/dsh-calculator/releases/latest/download/dsh-calculator.tgz

安裝後需重啓 dsh web。插件以當前 DSH 進程權限運行;安裝前建議自行查看 GitHub 倉庫 源碼與 MIT 許可證。

典型用法

工具入參爲 JSON。下列示例來自 README,可直接對照行爲:

// 單條表達式
{ "expression": "sqrt(2)^2" }

// 變量
{ "expression": "2 * pi * r", "variables": { "r": 3 } }

// 批量
{ "expression": ["0.1 + 0.2", "10!", "log(8, 2)"] }

// 精確十進制(金額)
{ "expression": "price * qty",
  "variables": { "price": "19.99", "qty": 3 },
  "precision": "exact" }

// 矩陣
{ "expression": "[[1,2],[3,4]] * [[5,6],[7,8]]" }
{ "expression": "solve([[2,1],[1,3]], [1,2])" }
{ "expression": "det(A)", "variables": { "A": [[1,2],[3,4]] } }

// 數值微積分
{ "expression": "integrate(sin(x), x, 0, pi)" }
{ "expression": "deriv(x^3, x, 2)" }

README 還說明同一引擎可作爲 OpenCode 自定義工具使用(opencode/tools/calculate.ts),需與 core.js 拷貝爲 calculator.core.js 一併放入項目或全局的 .opencode/tools/;升級引擎後應重新拷貝以保持實現一致。本地開發可運行 node test.js(README 稱 102 條斷言,無依賴)。

適用場景與注意

適合:需要在 DSH Web profile 中做可靠算術、線性代數、簡單數值積分/求導,或 exact 模式下做金額計算的智能體工作流。

注意:

  1. 插件能力以 README 與發佈包爲準;exact 模式會顯式拒絕函數與無理常數,而非靜默舍入。
  2. 矩陣與 integrate / deriv 僅在 float 模式下可用。
  3. DSH 生態強調「一切皆插件」;SkillHub 爲社區目錄,與 DeepSeek / 幻方無官方從屬關係,勿當作官方應用商店。

結尾

DSH Calculator 用無 eval 的確定性引擎替代理算,覆蓋從 0.1 + 0.2 到矩陣與定積分的常見需求,並單獨提供金額友好的 exact 模式。進一步瞭解可訪問插件目錄頁與源碼倉庫:

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

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

小夜