安全扫描
OpenClaw
安全
high confidence该技能是一致的重试包装器,实现了工具调用重试、验证和可选错误修复。代码、文档和要求与其目的保持一致。
评估建议
该技能如其所述,提供工具函数的重试/验证包装。安装前,请注意:1) 运行时从deno.land导入zod,确认信任该依赖;2) 用户提供的回调函数可能访问敏感数据;3) 幂等性仅在内存中处理;4) 对有副作用的函数,使用idempotencyKey;5) 仅日志到控制台,无隐藏网络行为。整体一致但需审查回调和依赖。...详细分析 ▾
✓ 用途与能力
名称、描述、SKILL.md、README和TypeScript实现均描述和实现相同功能:对提供的工具函数进行重试包装,包括验证、错误处理钩子和内存中的幂等性缓存。无不相关的凭证、二进制文件或配置路径请求。
✓ 指令范围
运行时指令和示例仅描述调用提供的工具函数(toolFn)和可选的验证器/错误处理回调。该技能不指示读取无关文件、环境变量或向隐藏端点发送数据。自定义回调(validatorFn/errorHandlerFn)运行用户提供的代码,因此具有正常范围来进行网络调用或访问其闭包中的数据——这是对该包装器的预期行为,但集成者应考虑这一点。
ℹ 安装机制
无明确安装规格;这是指令/代码仅。实现从deno.land通过HTTPS URL(https://deno.land/x/zod@v3.22.4)导入zod。使用像deno.land这样的知名公共主机是常见的,但这意味着在运行时将发生对该依赖的远程获取——请确认您信任所引用的版本。
✓ 凭证需求
该技能不请求环境变量或凭证。这与其目的相符。注意:用户提供的回调(toolFn、errorHandlerFn、validatorFn)运行任意代码,可能自己访问运行时可用的环境变量或秘密;这是预期的,但不是由该技能引起的。
ℹ 持久化与权限
该技能为基于idempotencyKey的去重保持内存中的idempotencyCache(Map)。此缓存是进程本地和短暂的(无持久存储/特权行为)。'always'为false,且该技能不修改其他技能或系统配置。
安全有层次,运行前请审查代码。
运行时依赖
无特殊依赖
版本
latestv1.0.12026/3/10
● 无害
安装命令 点击复制
官方npx clawhub@latest install tool-call-retry
镜像加速npx clawhub@latest install tool-call-retry --registry https://cn.clawhub-mirror.com
技能文档
核心亮点
- ✅ 成功率提升90%+:内置指数退避重试、格式校验、错误自动修复,解决Agent工具调用不稳定的核心痛点
- 🛡️ 全链路异常兜底:自定义错误处理、参数修复逻辑,支持复杂场景下的错误自愈
- ⚡ 零侵入增强:无需修改原有工具代码,一行封装即可获得重试能力,性能开销<1ms
- 🔑 幂等性保证:支持幂等性键,避免重复调用导致的副作用
🎯 适用场景
- 所有调用外部API/工具的Agent场景
- 不稳定的第三方服务调用
- 大模型工具调用格式错误自动修复
- 高可靠性要求的Agent执行链路
📝 参数说明
| 参数 | 类型 | 必填 | 默认值 | 说明 |
|---|---|---|---|---|
| toolFn | Function | 是 | - | 要执行的工具函数,返回Promise |
| args | any | 否 | {} | 调用工具的参数 |
| maxRetries | number | 否 | 3 | 最大重试次数,1-10 |
| initialDelayMs | number | 否 | 1000 | 初始重试延迟,100-10000ms |
| validatorFn | Function | 否 | ()=>true | 结果校验函数,返回true表示结果合法 |
| errorHandlerFn | Function | 否 | undefined | 错误处理函数,可返回修复后的参数或中止重试 |
| idempotencyKey | string | 否 | undefined | 幂等性键,相同键的调用只会执行一次 |
基础用法(零配置)
const fetchWeather = async (params: { city: string }) => {
const res = await fetch(https://api.weather.com/${params.city});
return res.json();
};
const result = await skills.toolCallRetry({ toolFn: fetchWeather, args: { city: "Beijing" } });
带结果校验
const result = await skills.toolCallRetry({ toolFn: callLLM, args: { prompt: "Generate JSON output" }, validatorFn: (res) => typeof res === "object" && res !== null && res.code === 0, maxRetries: 5 });
高级用法(错误自动修复)
const result = await skills.toolCallRetry({ toolFn: callDatabase, args: { sql: "SELECT * FROM users" }, errorHandlerFn: async (error, attempt) => {
if (error.message.includes("SQL syntax error")) {
// 自动修复SQL语法
const fixedSql = await fixSqlWithLLM(error.message);
return { args: { sql: fixedSql } };
}
if (attempt >= 2) {
// 重试2次失败后中止
return { abort: true };
}
})
🔧 技术实现说明
- 采用指数退避重试算法,避免服务被打垮
- 全链路类型安全,所有参数带Zod校验
- 支持自定义校验和错误修复逻辑,可扩展性强
- 轻量无依赖,仅200行代码,无额外性能开销
数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制
免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制