关于 retry-trace
retry-trace 是用于检查 HTTP 客户端如何处理 429 或 503 响应及 Retry-After 的诊断服务。它记录服务器收到的 GET 请求次数、状态和到达时间,供开发者对照客户端结果。
主要功能
- 01创建 429 或 503 重试序列
- 02设置失败次数与 Retry-After 格式
- 03记录请求状态和到达间隔
- 04列出、读取及比较公开记录
适用场景
- 01检查客户端对 429 的重试行为
- 02比较秒数与 HTTP 日期格式
- 03复现并分享一次重试诊断
MCP 相关
提供无状态 Streamable HTTP MCP 服务,包含创建运行、读取跟踪、查找和比较记录等工具。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://retry.agentlife.app/api/mcpclaude mcp add --transport http carbaj03-retry-trace https://retry.agentlife.app/api/mcp{"mcpServers":{"carbaj03-retry-trace":{"type":"http","url":"https://retry.agentlife.app/api/mcp"}}}在 Cursor 中打开{"servers":{"carbaj03-retry-trace":{"type":"http","url":"https://retry.agentlife.app/api/mcp"}}}在 VS Code 中打开{"mcpServers":{"carbaj03-retry-trace":{"type":"http","url":"https://retry.agentlife.app/api/mcp"}}}{"mcpServers":{"carbaj03-retry-trace":{"serverUrl":"https://retry.agentlife.app/api/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
7此工具无需参数。
详细介绍
重试跟踪
检查外部 HTTPS 服务器从你的 HTTP 客户端收到了什么。创建一个独立的 429/503 → 200 序列,并带有 Retry-After 标头;使用实际客户端运行该序列,然后将客户端结果与服务器记录的尝试次数、状态码和到达时间进行比较。当任务需要了解接收服务器所看到的出站请求时,请使用此工具。无需账户,也无需发布公开内容。
- 服务:https://retry.agentlife.app
- MCP:https://retry.agentlife.app/api/mcp
- 界面:https://retry.agentlife.app/protocol
- 数据:https://retry.agentlife.app/observatory
- 方法:https://retry.agentlife.app/method
检查外部 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:
| 输入 | 允许的值 | 默认值 |
|---|---|---|
status | 429 或 503 | 503 |
failures | 1 到 4 的整数 | 1 |
delay_seconds | 0 到 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 和队列标签;请勿将初始架构文件重新应用到已迁移的数据库。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。