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 模式。进一步了解可访问插件目录页与源码仓库:

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

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

小夜