{"id":"d0f37dd3-8ff6-4a12-84b4-9cab61545f24","slug":"clawhub-skills-2233admin-evomap-skills-skills-http-retry","name":"http-retry","description":"HTTP 重试技能","canonicalUrl":"https://www.xpersona.co/agent/clawhub-skills-2233admin-evomap-skills-skills-http-retry","sourceUrl":"https://github.com/openclaw/skills/tree/main/skills/2233admin/evomap-skills/skills/http-retry","homepage":null,"source":"CLAWHUB","vendor":{"slug":"openclaw","label":"Openclaw","url":"https://github.com/openclaw/skills/tree/main/skills/2233admin/evomap-skills/skills/http-retry"},"protocols":["OPENCLEW"],"capabilities":[],"trustScore":null,"trustConfidence":"unknown","artifactCount":0,"benchmarkCount":0,"lastRelease":null,"freshnessAt":"2026-02-25T05:53:15.416Z","freshnessLabel":"Feb 25, 2026","securityReviewed":true,"openapiReady":false,"stats":[{"label":"Trust score","value":"Unknown"},{"label":"Compatibility","value":"OpenClaw"},{"label":"Freshness","value":"Feb 25, 2026"},{"label":"Vendor","value":"Openclaw"},{"label":"Artifacts","value":"0"},{"label":"Benchmarks","value":"0"},{"label":"Last release","value":"Unpublished"}],"factsPreview":[{"factKey":"docs_crawl","category":"integration","label":"Crawlable docs","value":"6 indexed pages on the official domain","href":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceUrl":"https://github.com/login?return_to=https%3A%2F%2Fgithub.com%2Fopenclaw%2Fskills%2Ftree%2Fmain%2Fskills%2Fasleep123%2Fcaldav-calendar","sourceType":"search_document","confidence":"medium","observedAt":"2026-04-15T05:03:46.393Z","isPublic":true},{"factKey":"vendor","category":"vendor","label":"Vendor","value":"Openclaw","href":"https://github.com/openclaw/skills/tree/main/skills/2233admin/evomap-skills/skills/http-retry","sourceUrl":"https://github.com/openclaw/skills/tree/main/skills/2233admin/evomap-skills/skills/http-retry","sourceType":"profile","confidence":"medium","observedAt":"2026-04-15T00:45:39.800Z","isPublic":true},{"factKey":"protocols","category":"compatibility","label":"Protocol compatibility","value":"OpenClaw","href":"https://www.xpersona.co/api/v1/agents/clawhub-skills-2233admin-evomap-skills-skills-http-retry/contract","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-2233admin-evomap-skills-skills-http-retry/contract","sourceType":"contract","confidence":"medium","observedAt":"2026-04-15T00:45:39.800Z","isPublic":true},{"factKey":"handshake_status","category":"security","label":"Handshake status","value":"UNKNOWN","href":"https://www.xpersona.co/api/v1/agents/clawhub-skills-2233admin-evomap-skills-skills-http-retry/trust","sourceUrl":"https://www.xpersona.co/api/v1/agents/clawhub-skills-2233admin-evomap-skills-skills-http-retry/trust","sourceType":"trust","confidence":"medium","observedAt":null,"isPublic":true}],"highlights":["Trust evidence available"],"agentCard":{"name":"http-retry","description":"HTTP 重试技能","source":"CLAWHUB","sourceId":"clawhub:skills:2233admin:evomap-skills:skills:http-retry","repository":"https://github.com/openclaw/skills/tree/main/skills/2233admin/evomap-skills/skills/http-retry","documentation":"https://www.xpersona.co/agent/clawhub-skills-2233admin-evomap-skills-skills-http-retry","protocols":["OPENCLEW"],"languages":["typescript"],"examples":[{"kind":"example","language":"javascript","snippet":"async function fetchWithRetry(url, options = {}, maxRetries = 3) {\n  const { retryDelay = 1000, timeout = 30000, ...fetchOptions } = options;\n  \n  for (let attempt = 0; attempt <= maxRetries; attempt++) {\n    try {\n      const controller = new AbortController();\n      const timeoutId = setTimeout(() => controller.abort(), timeout);\n      \n      const response = await fetch(url, {\n        ...fetchOptions,\n        signal: controller.signal\n      });\n      \n      clearTimeout(timeoutId);\n      \n      // 429 或 5xx 重试\n      if (response.status === 429 || response.status >= 500) {\n        const delay = retryDelay * Math.pow(2, attempt);\n        await new Promise(r => setTimeout(r, delay));\n        continue;\n      }\n      \n      return response;\n    } catch (err) {\n      if (attempt === maxRetries) throw err;\n      await new Promise(r => setTimeout(r, retryDelay * Math.pow(2, attempt)));\n    }\n  }\n}"}]}}