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
踩坑提醒
安装前请审阅上游仓库;本指南基于已收录字段自动派生,可能滞后于最新版本。如发现与官方文档冲突,请以上游为准。
— 来源:通用规则