TTokenySpace
返回 Skills 列表

工具调用重试免费版

为个人开发者提供轻量级LLM工具调用重试与格式校验,支持指数退避、幂等性键,一行代码接入,提升调用成功率90%以上。

#中文
0

安装到 Tokeny(自动)

下载 ZIP
安装"tool-call-retry-tool-free"技能
技能信息:
- 名称: 工具调用重试免费版
- 标识: tool-call-retry-tool-free
- 描述: 为个人开发者提供轻量级LLM工具调用重试与格式校验,支持指数退避、幂等性键,一行代码接入,提升调用成功率90%以上。
- 版本: 1.0.0
下载地址:
https://www.tokeny.space/api/skills/tool-call-retry-tool-free/download
继续

复制上方内容到 Tokeny 客户端并在会话中发送即可自动安装;也可直接 下载 ZIP并拖动到技能窗口安装。

SKILL.md

工具调用重试工具(免费版)

概述

工具调用重试工具免费版为 LLM 工具调用提供指数退避重试与格式校验能力。零侵入封装,一行代码即可获得重试能力,成功率提升 90% 以上,性能开销小于 1ms.

核心能力

能力说明
指数退避重试最大重试次数可配(1-10),初始延迟可配(100-10000ms)
结果校验自定义校验函数,返回 true 表示结果合法
零侵入封装无需修改原有工具代码,一行封装接入
幂等性键相同键的调用只会执行一次,避免重复副作用
性能开销小于 1ms,几乎无感
技术实现要点:核心能力基于input_params参数与output_format配置实现,支持创建/查询/修改/删除等操作模式,通过config_options进行运行时配置.

核心功能执行

input_params参数进行配置.

处理: 解析核心功能执行的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回核心功能执行的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用input_params参数,支持创建/查询/导出操作

参数配置与调用

config_options参数进行配置.

处理: 解析参数配置与调用的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回参数配置与调用的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用config_options参数,支持修改/重置/导入操作

结果处理与输出

output_format参数进行配置.

处理: 解析结果处理与输出的输入参数,完成核心逻辑,返回结构化响应. 输出: 返回结果处理与输出的响应数据,包含状态码、结果和日志.

  • 执行此能力时使用output_format参数,支持导出/保存/转换操作 能力覆盖范围:本skill的核心能力覆盖以下场景关键词:LLM、工具调用提供指数、退避重试与格式校、成功率提升、适合个人开发者、工具调用重试工具、免费版、面向个人开发者的、轻量级、工具调用增强方案、指数退避重试机制、结果格式校验、一行接入、幂等性键支持等。这些关键词对应description中声明的使用场景,均已在上述能力点中提供对应的操作支持.

使用场景

场景一:外部 API 调用的稳定性增强

个人开发者调用天气 API,希望在网络波动时自动重试.

const fetchWeather = async (params: { city: string }) => {
  const res = await fetch(`https://api.weather.com/${params.city}`);
  return res.json();
};
// ...
// 零配置接入,默认重试 3 次
const result = await skills.toolCallRetry({
  toolFn: fetchWeather,
  args: { city: "Beijing" }
});

场景二:LLM 工具调用格式校验

调用大模型生成 JSON,希望自动校验格式并重试.

  toolFn: callLLM,
  args: { prompt: "Generate JSON output" },
  validatorFn: (res) => typeof res === "object" && res !== null && res.code === 0,
  maxRetries: 5
});
// ...
// 如果 LLM 返回的 JSON 格式不合法,自动重试最多 5 次

场景三:幂等性保证

调用支付接口,希望避免重复扣款.

  toolFn: processPayment,
  args: { orderId: "order-123", amount: 100 },
  idempotencyKey: "payment-order-123",
  maxRetries: 3
});
// ...
// 相同 idempotencyKey 的调用只会真正执行一次

快速开始

  1. 阅读## 核心能力章节了解skill功能
  2. 按## 依赖说明配置环境
  3. 执行所需能力对应的命令
  4. 参考## 错误处理章节处理异常
  5. 查看## FAQ解答常见疑问
// 1. 基础用法(零配置)
  toolFn: yourToolFunction,
  args: { key: "value" }
});
// ...
// 2. 带结果校验
  toolFn: yourToolFunction,
  args: { key: "value" },
  validatorFn: (res) => res.success === true,
  maxRetries: 5
});
// ...
// 3. 带幂等性键
  toolFn: yourToolFunction,
  args: { key: "value" },
  idempotencyKey: "unique-key-123"
});

示例

参数类型必填默认值说明
toolFnFunction-要执行的工具函数,返回 Promise
argsany{}调用工具的参数
maxRetriesnumber3最大重试次数,1-10
initialDelayMsnumber1000初始重试延迟,100-10000ms
validatorFnFunction()=>true结果校验函数
idempotencyKeystringundefined幂等性键

最佳实践

  • 重试次数建议 3-5 次,过多重试会放大下游压力.
  • 初始延迟建议 1000ms,给下游服务恢复时间.
  • 对写操作启用幂等性键,避免重复副作用.
  • 校验函数应覆盖业务关键字段,而非仅检查 HTTP 状态码.
  • 对不可恢复的错误(如权限不足)不应重试,应在 errorHandler 中中止.
  • 轻量无依赖,仅 200 行代码,可放心集成.

常见问题

Q:免费版支持错误自动修复吗? A:免费版不提供自定义错误处理函数。如需根据错误类型自动修复参数后重试,请考虑 PRO 版本. Q:免费版支持自定义退避策略吗? A:免费版使用固定指数退避(1s, 2s, 4s...)。如需自定义退避策略与抖动,请使用 PRO 版本. Q:重试会影响性能吗? A:单次重试的性能开销小于 1ms。主要开销来自等待延迟,这是退避策略的预期行为. Q:支持哪些类型的工具函数? A:任何返回 Promise 的异步函数均可,不限制具体实现. Q:幂等性键如何存储? A:免费版使用内存存储,进程重启后失效。如需持久化幂等性,请使用 PRO 版本.

依赖说明

运行环境

  • Agent平台: 支持SKILL.md的任意AI Agent(Claude Code / Cursor / Codex / Gemini CLI等)
  • 操作系统: Windows / macOS / Linux
  • 运行时: 支持 TypeScript/JavaScript 的环境

依赖详情

依赖项类型是否必需获取方式
LLM APIAPI必需由Agent内置LLM提供
无额外依赖--轻量实现,零第三方依赖

API Key 配置

  • 基础LLM由Agent平台内置提供,特定外部API需单独配置密钥

可用性分类

  • 分类: MD+EXEC(Markdown指令 + 代码执行能力)
  • 说明: 基于Markdown的AI Skill,通过代码封装提供工具调用重试能力

错误处理

错误场景原因处理方式
配置错误参数缺失或格式错误检查依赖说明中的配置要求
运行时错误运行环境不满足确认运行环境符合依赖说明
网络错误连接超时或不可达执行ping命令测试网络连通性,检查防火墙和代理设置连接后执行ping命令测试网络连通性,检查防火墙和代理设置连接后重新执行命令,参考国内替代方案

已知限制

  • 执行效率受模型能力与网络环境影响
  • 本地运行,不支持多设备同步
  • 当前为免费版本,如需完整功能请升级到付费版获取全部能力

输出格式

{
  "success": true,
  "data": {
    "result": "工具调用重试免费版处理结果",
    "execution_time": "0.5s",
    "metadata": {
      "version": "1.0",
      "processor": "tool call retry"
    }
  },
  "execution_log": ["解析输入参数", "执行核心处理", "格式化输出结果"],
  "error": null
}

评论

加载中…