Claude Code 依 MCP 注解决定重试:标注 105 个工具的五条实战经验
Future_AGI · reddit · 2026-10-28
自 Claude Code 2.1.307(10 月 21 日)起,如果 HTTP 调用中途断连且调用可能已执行,Claude Code 只对标注了 readOnlyHint 或 idempotentHint 的工具重发一次;只读工具还会与其他读取并行执行,其余则直接报 "connection closed" 错误。这意味着 MCP 注解不再是纸面语义,而是真正改变客户端行为。作者在开源 eval/可观测性仓库的 MCP server 中为 105 个工具全部标注了四种 hint,总结出五条经验:
- 从 API 契约自动生成注解:基于 Swagger 契约 + YAML 目录生成,只读仅当目录声明只读,GET/PUT/PATCH/DELETE 标 idempotent,得到 65 个只读、10 个幂等写、30 个不会被重发的写工具——手写 105 个注解块根本维护不过来。
- 两个 GET 其实是写操作:如 getprompttemplate 会创建草稿,必须在目录中如实标记并走写权限校验。
- 部分 PATCH 不幂等:updateevaltask 的 freshrun 模式会删除旧结果并重跑、可能产生费用,须覆盖为 idempotent: false + destructive,否则重发会重复执行。
- openWorldHint 标在触达外部模型提供者的 13 个工具上(runprompt、rundatasetevals 等)。
- 写操作响应过大时返回回执:写已提交就返回 id + 状态和 "操作成功";此时报错会诱使重试已执行的操作——issue #3394 记录的双执行问题 20/20 复现且仍未修复。
「编程与Agent」频道最新
- 用 logprobs 把 LLM 从硬分类器升级为可调阈值的软分类器 — JnBrymn · 2026-10-28
- Codex 团队日更系列第 23 天:跳过 iCloud 插件,进行一次重置 — dotey · 2026-10-28
- Cloudflare Access 支持 HTML+Liquid 自定义登录与拒绝页 — dinasaur_404 · 2026-10-28
- 查内存泄漏时 Opus 重试同一会话 2060 万次,开发者晒翻车现场 — johnlindquist · 2026-10-28
- 开源视频设计 Skill:让 AI Agent 按方法论做视频 — songguoxiansen · 2026-10-28
- 不是所有流程都需要 Agent:固定步骤用配方,别用 Token 跑 if 语句 — adamse · 2026-10-28