跳到正文

omdsh-dev/dsh-tool-calculator

60最近提交 2026年8月14日

dsh-tool-calculator DSH 插件

DSH 计算器插件提供安全的数学表达式求值器,在进程中运行,不启动子进程。使用手写递归下降解析器,支持算术运算符、常用数学函数和常量。不使用 eval 或 new Function,确保安全。

如何安装 dsh-tool-calculator DSH 插件

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

复制不会执行命令。安装 dsh-tool-calculator DSH 插件前请核对仓库和版本。

dsh-tool-calculator DSH 插件数据来源

dsh-tool-calculator DSH 插件快照日期:2026年8月16日

discovered

dsh-tool-calculator DSH 插件能做什么

  • 支持算术运算符:+、-、*、/、%、**(幂,右结合)
  • 支持数学函数:abs、ceil、floor、round、sqrt、log、log2、log10、exp、sin、cos、tan、max、min、pow
  • 支持常量:PI、E
  • 手写递归下降解析器,不使用 eval 或 new Function
  • 只返回有限数字,拒绝 NaN/Infinity
  • 毫秒级求值,无子进程开销

dsh-tool-calculator DSH 插件适合哪些场景

  • Agent 需要计算包含三角函数的复杂表达式
  • 避免每次算术操作都启动子进程,降低延迟
  • 安全地进行数学求值,无代码注入风险
  • 集成到 DSH 工作流中,需要精确数值计算的场景

dsh-tool-calculator DSH 插件适合谁

  • 需要可靠数学计算的 DSH agent 开发者
  • 频繁进行计算的 DSH 用户

dsh-tool-calculator DSH 插件的限制

  • 三角函数使用弧度制,不支持角度制
  • 不支持超出 IEEE 754 双精度范围(±9e15)的大整数
  • 不支持科学计数法(如 1e5)
  • 仅支持 DSH 0.1.0-rc.6(npm)及以上版本

dsh-tool-calculator DSH 插件的仓库 README 摘录

以下文字摘自 dsh-tool-calculator DSH 插件的上游仓库 omdsh-dev/dsh-tool-calculator 的 README,版权归原作者,仅作引用。

DSH 计算器工具插件 —— 安全的数学表达式求值器。零依赖、零进程、纯函数。 [![License](https://img.shields.io/badge/license-MIT-blue.svg)](LICENSE) ## 动机 Agent 做算术不稳定是 LLM 的通病。DSH 内置的 `bash` 工具可以调用 `echo $((15 + 27 * 3))` 完成计算,但有两个问题: 1. **每次算术都起一个 bash 进程**——Windows 上尤其昂贵(创建进程、加载 shell、执行、收集输出),高频调用时累积延迟显著 2. **bash 算术语法有限**——不支持 `sqrt`、`sin`、`cos`、`log`、`pow` 等数学函数,agent 在这些场景下只能猜答案或写脚本 本插件提供零依赖、零进程、纯函数的计算器——一次函数调用,毫秒级得出结果,覆盖常用初等数学函数。 ## 安全模型 **无 `eval`、无 `new Function`。** 使用手写递归下降解析器(词法层 + 语法层),只求值白名单节点: - 词法层只识别数字字面量、白名单标识符、运算符;引号、分号、反引号、`{}` `[]` 直接报错 - 标识符按名查白名单表(15 个函数 + 2 个常量),查不到即抛 `Unknown identifier` - 求值结果必须是有限数字,`NaN`/`Infinity`(除零、负数开方等)统一拒绝 `new Function` + 正则白名单是**不安全的**——`constructor.constructor(...)` 可直达 `Function` 构造器执行任意代码,`process.exit(0)` 可直接杀死宿主进程(均已实测复现)。本实现不使用任何代码求值捷径。 ## 架构 ``` ┌──────────────────────────────┐ │ DSH Agent │ │ tool call: calculator { ... }│ └──────────┬───────────────────┘ │ ctx.tools.register() ┌──────────▼───────────────────┐ │ src/index.ts │ │ Cordis 插件入口 │ └──────────┬───────────────────┘ │ ┌──────────▼───────────────────┐ │ src/evaluate.ts │ │ tokenize() → parse() │

阅读完整 README仓库许可: MIT

dsh-tool-calculator DSH 插件常见问题

如何安装 DSH 计算器插件?

使用命令:dsh plugin add github:omdsh-dev/dsh-tool-calculator。也可以先克隆仓库,运行 npm pack 生成 tarball,然后使用 dsh plugin add ./deepseek-ai-dsh-tool-calculator-*.tgz 安装。确保你使用的是 DSH 0.1.0-rc.6(npm)或更高版本。

计算器插件安全吗?会不会被代码注入?

非常安全。插件使用手写递归下降解析器,不使用 eval 或 new Function。它只识别数字、运算符和白名单标识符(函数和常量)。引号、分号、反引号、花括号、方括号等都会被词法层拒绝,从而防止任意代码执行。

插件支持哪些数学函数?

支持:abs、ceil、floor、round、sqrt、log、log2、log10、exp、sin、cos、tan、pow、max、min。还包含常量 PI 和 E。注册插件后,可以查看工具描述获取完整列表。

三角函数可以使用角度制吗?

不行。插件使用弧度制,与 JavaScript 的 Math 函数一致。如果需要角度制,可以在表达式中手动转换:sin(30 * PI / 180)。

为什么插件拒绝科学计数法如 1e5?

词法分析器不识别 'e' 表示法为有效数字字面量,这是一个已知限制。你可以将 1e5 改写为 1 * 10**5 或直接使用 100000。