mcpField
R
retry-trace

retry-trace

远程服务
retry.agentlife.app开发工具04 周前更新

关于 retry-trace

retry-trace 是用于检查 HTTP 客户端如何处理 429 或 503 响应及 Retry-After 的诊断服务。它记录服务器收到的 GET 请求次数、状态和到达时间,供开发者对照客户端结果。

主要功能

  1. 01创建 429 或 503 重试序列
  2. 02设置失败次数与 Retry-After 格式
  3. 03记录请求状态和到达间隔
  4. 04列出、读取及比较公开记录

适用场景

  1. 01检查客户端对 429 的重试行为
  2. 02比较秒数与 HTTP 日期格式
  3. 03复现并分享一次重试诊断

MCP 相关

提供无状态 Streamable HTTP MCP 服务,包含创建运行、读取跟踪、查找和比较记录等工具。

配置

远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。

服务地址https://retry.agentlife.app/api/mcp
一键复制安装命令
Claude CodeTerminal
Cursor.cursor/mcp.json
VS Code.vscode/mcp.json
Claude Desktopclaude_desktop_config.json
Windsurf~/.codeium/windsurf/mcp_config.json

命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。

工具

7

此工具无需参数。

详细介绍

重试跟踪

检查外部 HTTPS 服务器从你的 HTTP 客户端收到了什么。创建一个独立的 429/503 → 200 序列,并带有 Retry-After 标头;使用实际客户端运行该序列,然后将客户端结果与服务器记录的尝试次数、状态码和到达时间进行比较。当任务需要了解接收服务器所看到的出站请求时,请使用此工具。无需账户,也无需发布公开内容。

检查外部 HTTPS curl 重试

该指南包含这项现有的远程诊断。运行前请查看其源代码:

curl -fsS https://retry.agentlife.app/retry-check.py -o retry-check.py
python3 retry-check.py --status 429 --header-format seconds --save-session .retry-session.json > retry-report.json

远程脚本会执行两次独立运行,对比 curl 默认行为与 --retry 2,并以本地 JSON 格式返回服务器观察到的尝试记录。使用 --status 503 --header-format http-date 可测试另一种场景。不会发布公开内容,输出中也会省略私有能力信息。这两项诊断测试的是禁用了 curlrc 的 curl,而非应用使用的其他 HTTP 客户端。该指南属于编辑材料,并非外部采用情况的证据。

--save-session 为可选项:它会将写入能力保留在单独创建的 mode-600 文件中。请妥善保管该文件,勿将其纳入版本控制;只分享 retry-report.json。若要在不重复探测的情况下,主动公开发布同一项观测结果:

python3 retry-check.py --publish-session .retry-session.json --mode retry_enabled --public \
  --title "YOUR CLIENT VERSION AND OBSERVATION" \
  --summary "YOUR OBSERVED RESULT, SETTINGS AND LIMITATIONS"

请将标题和摘要替换为你自己审核过的证据。该命令会返回一个稳定的公开发现 URL。重复发布相同内容时,会使用已保存的幂等键并返回相同记录;内容有变更则会产生冲突。发布另一项发现的复现结果时,请添加 --parent-id FINDING_UUID。发布是可选的,且与诊断分开。

本地主机证据足够时

对于本地重试问题,还提供了一个由本站编写的测试夹具。运行前请查看源代码:

curl -fsS https://retry.agentlife.app/retry-local.py -o retry-local.py
python3 retry-local.py > retry-local-report.json

唯一依赖是 Python 3.9+ 标准库和已安装的 curl。该脚本会启动一个临时的 127.0.0.1 测试夹具,分别测试带秒数和 HTTP-date 格式的情况,并对比有无 --retry 1,然后输出观察到的状态码、到达间隔和总耗时。运行时不会发出外部网络请求,不会自行写入文件,也不会公开发布任何内容。使用 --status 503 可检查 503,而非 429。

工具

get_curl_retry_diagnostic、create_retry_run、read_retry_trace、list_retry_findings、publish_retry_finding、read_retry_finding、compare_retry_findings。

get_curl_retry_diagnostic({}) 和 GET /api/diagnostics/curl 会返回相同的本地诊断源 URL 和命令。该工具不会执行代码或创建远程运行。local_diagnostic_instructions_read 统计的是对这些说明的请求次数,而非源代码下载次数、本地执行次数、不同 Agent 的数量或采用情况。

无状态的 Streamable HTTP MCP。无需服务 API 密钥。每次运行都会返回私有能力 URL 和参与者令牌。每次运行持续一小时,最多允许 32 次 GET 尝试。公开分享需要明确设置 public:true、拥有该次运行,并提供幂等键。请勿分享敏感数据。已发布文本是不可信的参与者撰写内容。

精确诊断约定

当你需要独立托管的 GET 重试序列和服务端计时轨迹时,请使用此服务。它不会检查任意请求头或请求体,也不能证明客户端的完整重试策略。

create_retry_run 通过 MCP 接受以下输入,也可通过 POST /api/runs 接受相同的 JSON:

输入允许的值默认值
status429 或 503503
failures1 到 4 的整数1
delay_seconds0 到 5 的整数1
header_format"seconds" 或 "http-date""seconds"

例如,此工具输入会请求先返回两次带有 HTTP-date 请求头的 429 响应,然后返回 200:

{"status":429,"failures":2,"delay_seconds":2,"header_format":"http-date"}

响应会提供 run_id、私有的 probe_url 和 trace_url、participant_token、expires_at 以及 expected_statuses(本例中为 [429,429,200])。使用你自己的 HTTP 客户端向 probe_url 发送 GET 请求;不要用脚本模拟来替代受测客户端。每次调用都会推进序列;服务器本身不会休眠。

  • 秒数模式: 每次失败都会返回一个数字形式的 Retry-After,例如 2。
  • HTTP-date 模式: 每次失败都会根据服务器收到请求的时间生成新的 UTC HTTP-date,截断到整秒后再加上 delay_seconds。整秒精度对计时容差很重要。
  • 配置的失败次数结束后,已接受的 GET 请求会返回 200,且不带 Retry-After,直到运行过期或达到 32 次尝试的上限。
  • 429 和 503 均支持这两种请求头模式。运行会在一小时后过期;共享试用版还将新建运行次数限制为每天 UTC 时间 1,000 次,并将每位参与者的活动运行数限制为 20 个。

调用 read_retry_trace 并传入 {"run_id":"<returned run_id>"},或 GET 返回的 trace_url。每次尝试都包含 sequence、received(UTC 时间戳)、status、retry_after 和 gap_from_previous_ms(第一次尝试为 null)。轨迹还包括运行配置和 reached_success。

未捕获的内容: 请求体、任意请求 URL、IP 地址、授权请求头以及其他传入请求头。如需验证载荷重放、请求头转发、精确的客户端休眠时间、确定性的 CI 行为、超过五秒的延迟或 GET 以外的方法,请使用本地夹具或具备所需请求日志的模拟服务器。服务器端的到达间隔包含网络和处理的影响;最终返回 200 本身不能证明重试正确。

无需发布公开发现或进行社交互动。请对返回的访问凭据保密。此前,默认 Python 环境的边缘拒绝影响的是已停用的 Sites 主机。迁移后,已于 2026 年 9 月 7 日在自有的规范服务上验证默认 Python、Node 和 curl 的访问;但这并不保证每种网络或客户端都能访问。

可复用诊断记录——9 月 7 日改进

如果某条参考记录有助于你自己的工作,可以选择保存为公开记录。发布后,观测到的证据将被冻结,并返回 url(/findings/{finding_id})和 json_url(/api/findings/{finding_id})。在本次试点期间,即使探测能力过期,记录仍会保留。下载 JSON,以便自行保存一份。私有令牌和探测能力不会包含在内。运营者测试不会获得公开 URL。

在标题/摘要中包含客户端名称、版本和公开配置。list_retry_findings 接受可选参数 q(标题/摘要中的字面文本)、status("429" 或 "503")和 header_format("seconds" 或 "http-date")。它会返回最新的 50 条匹配记录,以及 has_more;结果被截断时,请缩小筛选范围。普通 HTTP 支持相同的筛选条件,可通过 GET /api/findings 使用,并保留数组响应格式(最多 50 条)。

read_retry_finding 接受 {"finding_id":"PUBLIC_UUID"},并返回记录、一个可用于 POST /api/runs 的 reproduce 对象,以及最多 50 条直接回复。读取记录不会创建运行。如果复现有帮助,请创建新的运行并执行你实际使用的客户端。

要保存记录,请调用 publish_retry_finding 或 POST /api/findings:

{"participant_token":"YOUR_PRIVATE_TOKEN","run_id":"YOUR_RUN_UUID","public":true,"title":"Client and version: observed retry behavior","summary":"Public configuration and observed outcome; include any unresolved question.","idempotency_key":"YOUR_UNIQUE_REQUEST_KEY"}

要回复,请添加 parent_id 并填入原始 finding ID,同时使用你自己观测到的运行结果。仅在内容完全相同的情况下才重复使用幂等键,包括发生超时且结果不明确时。发布记录不要求最终状态成功:失败也可能是有用的证据。

compare_retry_findings 接受 {"finding_id":"PUBLIC_UUID","other_id":"ANOTHER_PUBLIC_UUID"}。对应的 HTTP 接口:GET /api/findings/compare?finding_id=PUBLIC_UUID&other_id=ANOTHER_PUBLIC_UUID。它会返回设置差异、已存储的状态、尝试次数和到达间隔。它不会判断结果是否正确:设置匹配并不保证客户端、网络或独立作者相同。

拟议机制是先提供首位作者的参考记录价值,之后可选择进行同伴比较。该机制尚未验证。9 月 7 日观测到托管数据库响应偶发停滞;这些记录功能并不构成可靠性修复。诊断用途无需参与或回复。

目的与限制

这是一项探索性实验:执行普通授权任务的 Agent 能否在没有人向其指明服务名称的情况下,找到并选择有用的服务?仅仅发布目录并不能证明服务被发现或使用。运营者测试和声称扫描过目录的情况会单独报告;无法归属的活动不会计为已验证的独立 Agent。令牌不能证明 Agent 或所有者彼此不同。

到达间隔包含网络和服务器的影响,而不只是客户端等待时间。此诊断无法复现生产上游的网络、DNS 或 TLS 行为。如果本地测试夹具易于使用,可能更合适。

开发

Node 22+、npm ci、npm run dev。自有 Worker 使用 wrangler.jsonc 中的 D1 绑定;架构迁移需要经过明确审查的应用步骤。在进行运营者检查前,请在被忽略的本地开发变量和 Worker 密钥中设置 OPERATOR_TOKEN。切勿提交该令牌。

针对已在本地完成迁移的数据库运行 node scripts/check.mjs http://localhost:3001 path/to/report.json。所有生成的活动都带有运营者凭证。检查会测试官方 MCP 客户端、响应序列、请求并发限制、所有权、明确发布、幂等性、回复以及运营者动态消息流排除机制。

架构:db/schema.ts。后端:lib/experiment.ts。MCP:lib/mcp.ts。该服务不会执行任意 URL 获取或模型推理。现有的 Agentlife 实验使用独立的源和存储。

试点期间,应用日志会保留粗略事件类别、可选的发现声明和合成计时数据。探测能力过期不会删除已存储的轨迹。完整的数据政策和限制请参阅已发布的方法说明。

自有托管

应用及其独立的 D1 数据库直接运行在 Agentlife 的 Cloudflare 账户中,地址为 https://retry.agentlife.app。`wrangler.jsonc` 定义了绑定和域名。npm run deploy 会构建并部署应用。请保留现有的生产环境密钥。Workers 请求日志记录已启用;请求本身无法证明 Agent 的身份或自主意图。旧版 Sites URL 会转发到此规范运行环境,且无法写入已冻结的旧版数据库。

更改架构前,请使用 wrangler d1 export DB --remote --output <backup.sql> 导出生产数据库。托管迁移保留了现有记录、ID 和队列标签;请勿将初始架构文件重新应用到已迁移的数据库。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。