SuperAPI AI 工具集

error-pattern-safety

智能体与模型

查看项目

更新于 10-15 21:52

技能介绍

用途:为智能体引擎中的错误模式匹配提供正则安全规则,防止 JavaScript 全局标志(/pattern/g)下零宽匹配引发无限循环。

问题背景:使用 g 标志时,regex.exec() 依赖 lastIndex 记录位置;当模式匹配零宽时 lastIndex 不前进,同一位置被反复匹配,形成死循环。

危险模式(禁止使用):/./g、/a/g、/(x|y)*/g 等可匹配空字符串的模式。

安全模式(推荐):要求至少匹配一个字符,如 /error.*/gi、/error.*permission.denied/gi、/[(\d{4}-\d{2}-\d{2})]\s+(ERROR):\s+(.+)/g、/access denied.user.not authorized/gi。规则包括:用 .+ 代替 .、确保有必需前缀或后缀、不要用裸 . 作为整个模式、必要时使用锚点(^error.、.*error$)或词边界(\berror\b)。

校验方式:对空字符串测试,若匹配则视为危险。Go 测试位于 pkg/workflow/engine_error_patterns_infinite_loop_test.go,JavaScript 测试位于 pkg/workflow/js/validate_errors.test.cjs。

内置保护:validate_errors.cjs 提供零宽检测(lastIndex 不再前进时中断)、1000 次迭代警告、10000 次迭代硬限制。

新增模式流程:编写含必需内容的模式(如 (?i)error.*permission.*denied),对空字符串测试,运行 make test-unit,确认 TestAllEnginePatternsSafe 通过,用真实日志样本验证,并补充说明。Go 模式转 JavaScript 时移除 (?i) 前缀,改用 i 标志。

提交前检查:运行 make test-unit,确认 TestAllEnginePatternsSafe 与 TestErrorPatternsNoInfiniteLoopPotential 通过,运行 cd pkg/workflow/js && npm test,并验证模式能匹配目标错误、不匹配信息性文本。

限制:资料未提供该技能的安装命令、收费方式、支持平台及具体版本信息。