@deepseek-ai/dsh-tool-regex
DSH 正则工具:对文本进行测试/查找/替换,并附带静态模式解释,零依赖且具备 ReDoS 防护
安装
npx -p @deepseek-ai/dsh dsh plugin --profile web add github:omdsh-dev/dsh-tool-regex说明文档
阅读完整 README ↗dsh-tool-regex
DSH 正则工具插件 —— 测试匹配、提取捕获组、安全替换、静态解释正则含义(不执行任何代码)。零依赖、纯函数。
动机
模型经常需要验证用户给的 pattern、从日志/文本中提取字段、做文本替换。"心算"正则结果错误率极高,且无法给用户展示可验证的过程。现有替代是起 bash 进程跑 node -e 或 python——进程开销 + 模型现写脚本的正确性风险。内置 grep 只能做文件域搜索,无法对任意文本测试/提取/替换/解释。
本插件提供确定性正则工具,其中 explain 是差异化能力:静态解析 pattern 结构并给出人读解释,不执行匹配,天然免疫 ReDoS。
安全模型(ReDoS 多层防线)
JS 正则的灾难性回溯是真实威胁(如 (a+)+$ 配合超长输入)。防线:
- worker 硬超时:test/find/replace 在可终止的 worker 线程内同步执行,1,000ms 预算到期
worker.terminate()并返回regex: execution timed out——灾难性回溯不再能阻塞宿主进程(工具管道的timeoutMs对同步阻塞体是协作式,仅靠它不够;worker 内会再次执行全部上限校验) - 输入长度上限:64,000 字节(UTF-8)——超限在入口直接拒绝,不进入回溯
- 资源上限:pattern ≤ 16KB、replacement ≤ 16KB、输出 ≤ 1MB、匹配数 ≤ 1,000(limit 钳制)
- explain 零执行:只做静态 tokenizer,不构造
RegExp实例,任何 pattern 都即时返回
⚠️ 工具描述与 README 均明确警告模型:不要对不可信的大输入使用无锚点的嵌套量词 pattern(如
(a+)+、(.*)*)。
其余边界:无效 pattern 捕获 SyntaxError 报错(含位置信息);无效/重复 flag 逐字符校验;replace 使用 String.replace 字符串替换路径(JS 原生 $-语义,无 new Function、无 eval)。
工具声明
注册 regex 工具(@deepseek-ai/dsh-tool-regex,row id tool-regex),统一输出 JSON 文本字符串。
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
action | string | ✅ | test / find / replace / explain |
pattern | string | ✅ | 正则(JavaScript 语法,不含外围 /);≤ 16KB |
input | string | 待匹配文本(test/find/replace 必需);≤ 64KB |