首页龙虾技能列表 › http-retry — HTTP 自动重试工具

http-retry — HTTP 自动重试工具

v1.0.0

自动重试 HTTP 请求,具有指数退避、超时控制和连接池,用于处理网络错误和限速。适用于网络不稳定环境下的请求重试,支持自定义重试次数、延迟和超时时间。

0· 732·6 当前·6 累计
by @2233admin·MIT-0
下载技能包
License
MIT-0
最后更新
2026/2/26
安全扫描
VirusTotal
无害
查看报告
OpenClaw
安全
high confidence
该技能的代码、指令和元数据与其声明的目的(HTTP 重试助手)一致,不请求额外凭据也不执行意外操作。
评估建议
该技能是一个小型、仅包含指令的 HTTP 重试助手,似乎与其描述一致。使用前请确保:运行时环境提供 fetch 和 AbortController(或为 Node 添加 polyfill);配置合理的 maxRetries、retryDelay 和超时时间;避免为非幂等请求(POST/DELETE)自动重试(除非有幂等性保证);考虑遵守 429 响应的 Retry-After 头;并记住该技能本身不请求或存储凭据,也不安装代码。...
详细分析 ▾
用途与能力
名称和描述(HTTP 重试、退避、超时、池化)与提供的指令和代码示例匹配。没有无关的环境变量、二进制文件或配置路径被请求。
指令范围
SKILL.md 包含一个聚焦的 fetchWithRetry 实现和触发词;仅对调用者提供的 URL 执行网络请求,并实现重试/超时。它不指示读取文件、访问秘密或联系任何固定外部端点。注意:代码片段假设运行时提供 fetch/AbortController(在某些 Node 版本中可能需要 polyfill)。
安装机制
没有安装规格,除了一个示例 package.json 和 SKILL.md 片段之外,没有其他代码文件。安装程序没有下载或写入磁盘上的内容。package.json 最小化,不引入安装行为。
凭证需求
该技能声明没有必需的环境变量或凭据,指令也不引用任何。没有请求不成比例的秘密访问。
持久化与权限
always 为 false,该技能不请求持久或系统级权限,也不尝试修改其他技能的配置。允许自主调用(平台默认),但与其他因素结合考虑,这不是一个问题。
安全有层次,运行前请审查代码。

License

MIT-0

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

运行时依赖

无特殊依赖

版本

latestv1.0.02026/2/24

http-retry 技能的初始发布:- 提供具有指数退避的自动 HTTP 重试,用于处理网络错误和限速(429、5xx);- 实现请求超时控制;- 支持通过连接池重用;- 由常见网络错误关键词触发,包括 timeouterror、econnreset、econnrefused、429、retry、http error、网络超时。

● 无害

安装命令 点击复制

官方npx clawhub@latest install http-retry
镜像加速npx clawhub@latest install http-retry --registry https://cn.clawhub-mirror.com

技能文档

触发词: timeouterror, econnreset, econnrefused, 429, retry, http error, 网络超时

问题

网络请求失败(超时、连接重置、限流)导致服务不稳定

解决方案

指数退避 + 超时控制 + 连接池复用
async function fetchWithRetry(url, options = {}, maxRetries = 3) {
  const { retryDelay = 1000, timeout = 30000 } = options;
  for (let attempt = 0; attempt <= maxRetries; attempt++) {
    try {
      const controller = new AbortController();
      const timeoutId = setTimeout(() => controller.abort(), timeout);
      const response = await fetch(url, { ...options, signal: controller.signal });
      clearTimeout(timeoutId);
      if (response.status === 429 || response.status >= 500) {
        await new Promise(r => setTimeout(r, retryDelay  Math.pow(2, attempt)));
        continue;
      }
      return response;
    } catch (err) {
      if (attempt === maxRetries) throw err;
      await new Promise(r => setTimeout(r, retryDelay  Math.pow(2, attempt)));
    }
  }
}

数据来源:ClawHub ↗ · 中文优化:龙虾技能库
OpenClaw 技能定制 / 插件定制 / 私有工作流定制

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

了解定制服务