跳到主内容

dsh-tool-calculator 使用指南

DSH 安全数学计算工具,用零依赖纯函数求值替代每次起 bash 进程做算术

本文为派生内容(基于 wiki / faq / compatibility_json 自动组装),非 AI 即时创作。

本文由本站基于该插件已收录的字段自动派生(wiki / faq / compatibility_json / readme),非 AI 即时创作。每节末尾标源字段。

快速上手

dsh-tool-calculator

— 源: plugin_wiki.wiki_content

安装与验证

dsh plugin --profile web add github:omdsh-dev/dsh-toolkit#path:packages/dsh-tool-calculator

复制以上命令在 DSH Web Profile 内运行。安装完成后在「插件列表」启用即可。

— 源: plugins.install

常见问题

这个计算器安全吗?用户输入会被当成代码执行吗?

不会。源码 src/evaluate.ts 自带手写递归下降解析器(词法层+语法层),完全不使用 eval 和 new Function;所有标识符按 Object.hasOwn 查白名单(15 个函数 + 2 个常量),引号、分号、反引号、{}、[] 等在词法层就被直接拒绝。

支持哪些数学运算?

支持四则运算 + - * / %、幂运算 **(右结合,例如 2 ** 3 ** 2 = 512)、一元正负、括号分组,以及 13 个单参函数(abs/ceil/floor/round/sqrt/log/log2/log10/exp/sin/cos/tan)和 2 个多参函数(pow(x,y)、max/min 可变参数),常量 PI 和 E。

三角函数是用角度还是弧度?

弧度。与 Math.sin/Math.cos 行为一致;如需角度请写 sin(30 * PI / 180)。

表达式长度有限制吗?

有。evaluate() 入口对 expression 长度做硬限制(MAX_EXPRESSION_LENGTH = 500),超过会直接抛 'Expression too long',避免超大输入阻塞求值。

哪些输入会失败?会返回 NaN 吗?

除零、负数开方等产生 NaN 或 Infinity 的表达式都会被拒绝并抛 'Expression did not evaluate to a finite number';未知标识符、参数个数错误、非法字符、科学计数法(如 1e5)等也都会抛错,工具不会静默返回垃圾结果。

需要写配置吗?需要联网或读文件吗?

不需要任何配置,所有逻辑都基于单次工具调用的 expression 字符串;实现是纯函数,不读文件、不写文件、不联网、不调子进程。

跟 DSH 内置的 bash 算术 (echo $((1+2))) 比有什么差别?

bash 算术每次要起一个 shell 进程(Windows 上尤其昂贵),且不支持 sqrt/sin/cos/log/pow 等数学函数;本工具是毫秒级纯函数调用,覆盖常用初等数学函数。

装到 web profile 后,dsh run 能直接用到吗?

不能。web 与 headless 是两个独立 profile,本插件需要在 headless profile(dsh run 默认)里也单独装一次,或者直接用 install-all.sh 同时装到两边。

— 源: plugin_wiki.faq_json

兼容性

  • DSH: 0.1.0-rc.8+
  • Node: >=22.19.0
  • Platforms: macOS, Windows, Linux

— 源: plugin_wiki.compatibility_json

踩坑提醒

安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。

— 来源:通用规则