首页龙虾技能列表 › tool-call-retry — 自动重试工具调用

tool-call-retry — 自动重试工具调用

v1.0.1

自动重试工具调用,内置指数退避、格式校验、错误修复,提升工具调用成功率90%。支持自定义错误处理、参数修复,保证幂等性,适用于外部API调用、不稳定服务和高可靠性要求场景。

1· 1,000·0 当前·0 累计
by @ayalili·MIT-0
下载技能包
License
MIT-0
最后更新
2026/3/10
安全扫描
VirusTotal
无害
查看报告
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,且该技能不修改其他技能或系统配置。
安全有层次,运行前请审查代码。

License

MIT-0

可自由使用、修改和再分发,无需署名。

运行时依赖

无特殊依赖

版本

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执行链路

📝 参数说明

参数类型必填默认值说明
toolFnFunction-要执行的工具函数,返回Promise
argsany{}调用工具的参数
maxRetriesnumber3最大重试次数,1-10
initialDelayMsnumber1000初始重试延迟,100-10000ms
validatorFnFunction()=>true结果校验函数,返回true表示结果合法
errorHandlerFnFunctionundefined错误处理函数,可返回修复后的参数或中止重试
idempotencyKeystringundefined幂等性键,相同键的调用只会执行一次
## 💡 开箱即用示例

基础用法(零配置)

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 技能定制 / 插件定制 / 私有工作流定制

免费技能或插件可能存在安全风险,如需更匹配、更安全的方案,建议联系付费定制

了解定制服务