Skip to content
Back to skills

Tool Call Retry

ASecurity

Auto retry & fix LLM tool calls with exponential backoff, format validation, error correction, boost tool call success rate by 90%

  • 33 stars
  • 0 votes
  • 0 copies
  • 2 views
  • Added September 5, 2026
toolstypescriptsqlapidatabase

Works with

  • api

Security analysis

A100/100

Pro scans all 3 files and shows the line behind each finding

Scanned September 5, 2026

npx -y skills add dvcrn/openclaw-skills-marketplace --skill tool-call-retry --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Tool Call Retry?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Tool Call Retry
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/dvcrn-tool-call-retry/badge)](https://www.skillsdirectory.com/skills/dvcrn-tool-call-retry)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
name: tool-call-retry
description: "Auto retry & fix LLM tool calls with exponential backoff, format validation, error correction, boost tool call success rate by 90%"
---

# 🔥 工具调用自动重试器
## 核心亮点
1. ✅ **成功率提升90%+**:内置指数退避重试、格式校验、错误自动修复,解决Agent工具调用不稳定的核心痛点
2. 🛡️ **全链路异常兜底**:自定义错误处理、参数修复逻辑,支持复杂场景下的错误自愈
3. ⚡ **零侵入增强**:无需修改原有工具代码,一行封装即可获得重试能力,性能开销<1ms
4. 🔑 **幂等性保证**:支持幂等性键,避免重复调用导致的副作用

## 🎯 适用场景
- 所有调用外部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 | 幂等性键,相同键的调用只会执行一次 |

## 💡 开箱即用示例
### 基础用法(零配置)
```typescript
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" }
});
```

### 带结果校验
```typescript
const result = await skills.toolCallRetry({
  toolFn: callLLM,
  args: { prompt: "Generate JSON output" },
  validatorFn: (res) => typeof res === "object" && res !== null && res.code === 0,
  maxRetries: 5
});
```

### 高级用法(错误自动修复)
```typescript
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行代码,无额外性能开销

Files in this skill

  • README.md2.7 KB
  • SKILL.md2.9 KB
  • index.ts3.5 KB

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…