{"version":1,"scope":"full","truncated":false,"id":"editorial-learn-agent-tool-error-reading","url":"https://wenbu.app/learn/agent-tool-error-reading/","locale":"zh","revision":"3a99d4d95dc14192e591215c56d57807648377b5a7d5775b3a9138f98c54ca07","updated":"2026-11-02T07:01:45.452Z","content":"# Agent 报错时先读什么：状态、约定与重试边界\n\n一次失败的 Agent 调用，先看返回状态与输入字段，再对照公开约定，最后才决定重试、改输入还是停止。本文用一张分诊表区分字段无效、限流、断流、预算用尽与成功但为空，并说明每种情况不能推出什么。\n\nUpdated: 2026-11-02 · Wenbu AI-assisted editorial\n\n先读状态，再读输入，最后读约定。MCP 调用应先检查 isError；内置 agent 命令则看 done 事件的 status：complete 表示本回合完成，waiting 表示还需用户补充，limited 表示预算已用完，error 或没有终止事件的断流都不是完成。REST 接口的错误带有稳定的 code 和用户可读消息，422 通常表示字段或时刻无效，429 表示短时限流或 AI 额度不足。已收到的内容可以保留，但重试要由用户决定；AI 已开始的请求即使失败也可能计次，不要自动重试。报错只说明这一次调用没有按约定完成，不说明工具坏了、牌抽错了或解读不准。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n- 先看 isError 或 done 事件的 status，再决定是否读内容；没有终止事件的断流不等于完成。\n\n- 422 类错误先查字段与时刻，429 类错误先退避并读错误消息，不要立刻重发。\n\n- AI 已开始的请求即使失败也可能计次，重试应由用户决定，而不是自动循环。\n\n- 成功但结果为空，往往说明输入或范围问题，不能据此推断工具缺少某项能力。\n\n## 一次失败调用的阅读顺序\n\n1. **读状态** — MCP 先看 isError；agent 命令看 done 事件的 status 是否为 complete、waiting 或 limited。error 与无终止事件的断流都不算完成。\n\n2. **读输入** — 核对字段、日期范围、时区与时刻。422 通常指向字段或时刻无效；省略时区会默认 Asia/Shanghai 并返回警告。\n\n3. **读约定** — 确认所用约定，例如换日规则、真太阳时近似、塔罗抽取张数与逆位设置，避免把约定差异误判为错误。\n\n4. **做决定** — 改输入、退避、保留已收内容交给用户，或停止。429 请退避；AI 已开始的请求可能计次，不要自动重试。\n\n从状态到约定再到决定的四步流程。它描述的是阅读顺序，不是自动重试策略；每一步都以公开文档写明的状态或约定为依据。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n## 先读状态：这一次调用到底结束了没有\n\n判断一次 Agent 调用是否失败，第一步不是看内容像不像答案，而是看协议层给出的状态。MCP 为成功结果声明 outputSchema 并返回 structuredContent，文档要求先检查 isError；如果 isError 为真，后面的结构化内容就不应被当作可用结果继续解读。内置 agent 命令输出逐行 JSON 事件，最后要检查 done 事件的 status：complete 表示本回合完成，waiting 表示还需用户补充，limited 表示预算已用完。error 或根本没有终止事件的断流，都不是完成。\n\n这一步的意义在于把「没拿到想要的答案」和「调用没有完成」分开。断流时你已经收到的内容可以保留，但它只是半成品；把它当成完整解读，会让后续追问建立在残缺的上下文上。文档同时说明，重试需由用户决定，而不是由 Agent 自行循环。状态是事实，内容是否够用是判断，两者不要混在一起。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n## 再读输入：字段、时刻与约定是否对得上\n\n状态显示调用未完成时，第二个要核对的是输入。REST 接口使用 POST application/json，个人输入不得放到 URL；422 通常表示字段或时刻无效。对照公开约定逐项检查：八字输入为 1901 至 2099 年的公历日期、出生地钟表时间，以及 IANA 时区名称或明确的 UTC 偏移；省略时区会默认 Asia/Shanghai 并返回警告；出生时间未知时不生成时柱。这些都属于输入层面的可修正问题，而不是工具缺陷。\n\n约定还决定了哪些结果本来就会带不确定性。真太阳时是近似校正，临近换日或时辰边界时建议对照不同设置；紫微不自动换算时区或校正太阳时；塔罗从 78 张牌中等概率抽取 1 张或 3 张，同一次抽取不会重复。如果返回结果与预期不符，先确认自己传的是哪一种约定，再判断是不是错误。把约定差异当成报错，会引出不必要的重试。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) · [Wenbu · calculation conventions](https://wenbu.app/methodology/)\n\n## 分诊表：五种结果各自先查什么\n\n下表把常见结果归成五类，每类给出先查什么、以及不能据此得出什么结论。它只依据公开文档已经写明的状态与约定，不补充文档未声明的错误码、重试次数或额度重置时间。遇到文档没有描述的情况，正确做法是记录原始返回并停止推断，而不是套用某条经验规则。\n\n需要强调的是，这张表是阅读顺序，不是自动重试策略。字段无效要改输入，限流要退避并读错误消息，断流要保留已收内容并交给用户决定，预算用尽要停下来说明，成功但为空要先查范围。任何一类都不构成「工具不可用」的结论，因为单次结果无法覆盖全部工具与全部输入。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) · [Wenbu · calculation conventions](https://wenbu.app/methodology/)\n\n## 重试边界：什么时候该停\n\n文档给出的边界很具体：遇到 429 请退避；AI 已开始的请求即使失败也可能计次，不要自动重试。这两句话合起来意味着，重试不是免费的默认动作，而是一个需要用户知情的选择。对计算类工具，同样的输入按约定可以复算；对随机抽取，重抽会得到不同结果，公开约定要求保留返回的牌，不要在用户没有选择重抽时重新抽取。\n\n因此，停止也是一种正确处理。当状态是 limited，或断流且用户尚未决定，或错误消息指向额度而非输入，继续重发只会消耗更多次数而不增加信息。把原始返回、已收到的内容和你的判断一起交给用户，比自动重试更接近可复核的工作方式。软件测试通过只说明已测试行为符合约定，不等于预测得到验证，这一点同样适用于对报错的解读。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) · [Wenbu · calculation conventions](https://wenbu.app/methodology/)\n\n## Agent 调用结果分诊表\n\n| 结果类型 | 先查什么 | 不能据此得出什么 |\n| --- | --- | --- |\n| 字段或时刻无效（如 422） | 核对字段名、日期是否在 1901–2099 年、时区写法与钟表时间；读用户可读的错误消息 | 不能推断工具缺少该能力，也不能推断命盘本身有问题 |\n| 限流或额度不足（如 429） | 读错误消息区分短时限流与 AI 额度不足；按文档退避 | 不能推断服务永久不可用，也不能自行假定额度何时恢复 |\n| 流式断流、无终止事件 | 确认是否收到 done 事件；保留已收到的内容 | 不能把半成品当作完整解读，也不能断定模型给出了错误结论 |\n| 预算用尽的回合（limited） | 确认 status 为 limited，说明本回合预算已用完 | 不能推断输入有误，也不能推断后续回合一定同样受限 |\n| 成功但结果为空 | 先查搜索范围、locale 与输入是否落在工具覆盖范围内 | 不能推断该功能不存在；页面未描述某能力不等于厂商没有该能力 |\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n## 假设案例：一次三张牌的解读请求断流了（虚构情境）\n\n以下为虚构的教学情境，不对应任何真实用户或真实命盘。假设一位读者请 Agent 用三张牌做一次反思练习，宿主在流式返回中途断开，界面只显示了前两张牌的文字。读者想知道是不是应该立刻重发请求。\n\n1. 第一步，读状态：检查是否收到 done 事件。本例没有终止事件，按文档属于断流，不是完成；即使前两张牌看起来合理，也不能当作完整结果。\n\n2. 第二步，保留已收内容：把已显示的两张牌名、正逆位与关键词原样记下。公开约定要求保留返回的牌，不要在用户没有选择重抽时重新抽取。\n\n3. 第三步，读输入与约定：确认请求里写的是 1 张还是 3 张、是否开启逆位、locale 是否明确。本例请求为 3 张，返回只有 2 张，说明是传输中断而非张数设置错误。\n\n4. 第四步，做决定：把断流事实、已收内容和「是否重抽由你决定」一起交给读者。若读者选择重抽，新的一次抽取是独立的随机过程，可能碰巧重复某张牌，也可能完全不同；不能承诺复现原来的牌面。\n\n5. 第五步，记录：在札记里注明这次是断流、保留了哪些内容、读者最终选择什么。下次遇到类似情况时，这份记录比记忆更可靠。\n\n这个案例教的具体一点是：断流与「牌面不好」是两类不同的问题。断流属于调用未完成，处理方式是保留内容并交回决定权；牌面含义属于解释，需要读者自己结合现实判断。把两者混为一谈，就会在传输问题上反复重抽，或在解释问题上反复重发请求。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) · [Wenbu · calculation conventions](https://wenbu.app/methodology/)\n\n## FAQ\n\n### MCP 调用返回了内容，但我不确定它是否成功，应该先看哪里？\n\n先看 isError。文档说明 MCP 为成功结果声明 outputSchema 并返回 structuredContent，并要求先检查 isError；如果 isError 为真，就不应把后面的内容当作可用结果继续解读。确认成功后再读结构化字段，并核对输入与约定是否与你的请求一致。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n### 遇到 429，是不是等一会儿自动重发就行？\n\n文档的表述是遇到 429 请退避，并说明 429 表示短时限流或 AI 额度不足，需要阅读错误消息。它没有给出统一的重试间隔或额度恢复时间，所以不要自行假定。若错误消息指向 AI 额度，自动重发可能继续消耗次数；重试应由用户决定。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/)\n\n### 成功返回但结果为空，是不是说明这个工具不支持我要的功能？\n\n不能这样推断。空结果更可能来自输入范围、locale 设置或搜索范围，例如 search_library 搜索的是问卜原创资料与精选来源目录，不是全网搜索。页面没有描述某项能力，也不等于厂商没有该能力；应回到能力清单核对工具覆盖范围，而不是据一次空结果下结论。\n\n[Wenbu · agent integrations](https://wenbu.app/agents/) · [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n### 重抽塔罗能不能得到和上次一样的牌？\n\n不能按需复现。塔罗是从 78 张牌中等概率抽取 1 张或 3 张，同一次抽取不会重复；新的一次抽取是独立的随机过程，可能碰巧重复某张牌，也可能完全不同。公开约定要求保留返回的牌，不要在用户没有选择重抽时重新抽取。\n\n[Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) · [Wenbu · calculation conventions](https://wenbu.app/methodology/)\n\n## Glossary\n\n- **isError**: MCP 结果中的错误标记。文档要求先检查它，再决定是否读取 structuredContent；它为真时，后续内容不应被当作可用结果。 [Wenbu · agent integrations](https://wenbu.app/agents/)\n\n- **done 事件**: 内置 agent 命令逐行 JSON 输出中的终止事件，其 status 可为 complete、waiting 或 limited。error 或没有终止事件的断流都不算完成。 [Wenbu · agent integrations](https://wenbu.app/agents/)\n\n- **422 与 429**: REST 接口的两种错误状态。422 通常表示字段或时刻无效；429 表示短时限流或 AI 额度不足，需要阅读错误消息并退避。 [Wenbu · agent integrations](https://wenbu.app/agents/)\n\n- **保留返回的牌**: 塔罗约定的一部分：同一次抽取不重复，重抽是新的随机过程，因此应保留已返回的牌供后续讨论，而不是默认重抽。 [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) · [Wenbu · calculation conventions](https://wenbu.app/methodology/)\n\n## Evidence notes\n\n- MCP 成功结果会声明 outputSchema 并返回 structuredContent，调用方应先检查 isError 再读内容。 — “先检查 isError” (fact); [Wenbu · agent integrations](https://wenbu.app/agents/)\n\n- 内置 agent 命令的完成与否要看 done 事件的 status，error 或没有终止事件的断流都不算完成。 — “error 或没有终止事件的断流都不是完成” (fact); [Wenbu · agent integrations](https://wenbu.app/agents/)\n\n- 公开能力清单把计算描述为确定性约定或明确随机抽取，解释属于文化反思而非既成事实预测。 — “Cultural reflection, not established factual predictions” (editorial); [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json)\n\n## Sources\n\n- [Wenbu · agent integrations](https://wenbu.app/agents/) — Current first-party product documentation; fetched 2026-11-02T07:00:31.992Z; complete response\n\n- [Wenbu · versioned public capabilities](https://wenbu.app/capabilities.json) — First-party current tool, convention and privacy contract; not external endorsement or predictive validation; fetched 2026-11-02T07:00:31.896Z; complete response\n\n- [Wenbu · calculation conventions](https://wenbu.app/methodology/) — First-party implementation; not evidence of predictive accuracy; fetched 2026-11-02T07:00:31.917Z; complete response\n\n[运行 CLI doctor 检查连接与版本](https://wenbu.app/agent/)","edition":{"title":"Agent 报错时先读什么：状态、约定与重试边界","description":"一次失败的 Agent 调用，先看返回状态与输入字段，再对照公开约定，最后才决定重试、改输入还是停止。本文用一张分诊表区分字段无效、限流、断流、预算用尽与成功但为空，并说明每种情况不能推出什么。","answer":"先读状态，再读输入，最后读约定。MCP 调用应先检查 isError；内置 agent 命令则看 done 事件的 status：complete 表示本回合完成，waiting 表示还需用户补充，limited 表示预算已用完，error 或没有终止事件的断流都不是完成。REST 接口的错误带有稳定的 code 和用户可读消息，422 通常表示字段或时刻无效，429 表示短时限流或 AI 额度不足。已收到的内容可以保留，但重试要由用户决定；AI 已开始的请求即使失败也可能计次，不要自动重试。报错只说明这一次调用没有按约定完成，不说明工具坏了、牌抽错了或解读不准。","answerSourceIds":["agents","capabilities"],"evidence":[{"claim":"MCP 成功结果会声明 outputSchema 并返回 structuredContent，调用方应先检查 isError 再读内容。","sourceId":"agents","quote":"先检查 isError","kind":"fact"},{"claim":"内置 agent 命令的完成与否要看 done 事件的 status，error 或没有终止事件的断流都不算完成。","sourceId":"agents","quote":"error 或没有终止事件的断流都不是完成","kind":"fact"},{"claim":"公开能力清单把计算描述为确定性约定或明确随机抽取，解释属于文化反思而非既成事实预测。","sourceId":"capabilities","quote":"Cultural reflection, not established factual predictions","kind":"editorial"}],"takeaways":["先看 isError 或 done 事件的 status，再决定是否读内容；没有终止事件的断流不等于完成。","422 类错误先查字段与时刻，429 类错误先退避并读错误消息，不要立刻重发。","AI 已开始的请求即使失败也可能计次，重试应由用户决定，而不是自动循环。","成功但结果为空，往往说明输入或范围问题，不能据此推断工具缺少某项能力。"],"sections":[{"heading":"先读状态：这一次调用到底结束了没有","paragraphs":["判断一次 Agent 调用是否失败，第一步不是看内容像不像答案，而是看协议层给出的状态。MCP 为成功结果声明 outputSchema 并返回 structuredContent，文档要求先检查 isError；如果 isError 为真，后面的结构化内容就不应被当作可用结果继续解读。内置 agent 命令输出逐行 JSON 事件，最后要检查 done 事件的 status：complete 表示本回合完成，waiting 表示还需用户补充，limited 表示预算已用完。error 或根本没有终止事件的断流，都不是完成。","这一步的意义在于把「没拿到想要的答案」和「调用没有完成」分开。断流时你已经收到的内容可以保留，但它只是半成品；把它当成完整解读，会让后续追问建立在残缺的上下文上。文档同时说明，重试需由用户决定，而不是由 Agent 自行循环。状态是事实，内容是否够用是判断，两者不要混在一起。"],"sourceIds":["agents","capabilities"]},{"heading":"再读输入：字段、时刻与约定是否对得上","paragraphs":["状态显示调用未完成时，第二个要核对的是输入。REST 接口使用 POST application/json，个人输入不得放到 URL；422 通常表示字段或时刻无效。对照公开约定逐项检查：八字输入为 1901 至 2099 年的公历日期、出生地钟表时间，以及 IANA 时区名称或明确的 UTC 偏移；省略时区会默认 Asia/Shanghai 并返回警告；出生时间未知时不生成时柱。这些都属于输入层面的可修正问题，而不是工具缺陷。","约定还决定了哪些结果本来就会带不确定性。真太阳时是近似校正，临近换日或时辰边界时建议对照不同设置；紫微不自动换算时区或校正太阳时；塔罗从 78 张牌中等概率抽取 1 张或 3 张，同一次抽取不会重复。如果返回结果与预期不符，先确认自己传的是哪一种约定，再判断是不是错误。把约定差异当成报错，会引出不必要的重试。"],"sourceIds":["agents","capabilities","methods"]},{"heading":"分诊表：五种结果各自先查什么","paragraphs":["下表把常见结果归成五类，每类给出先查什么、以及不能据此得出什么结论。它只依据公开文档已经写明的状态与约定，不补充文档未声明的错误码、重试次数或额度重置时间。遇到文档没有描述的情况，正确做法是记录原始返回并停止推断，而不是套用某条经验规则。","需要强调的是，这张表是阅读顺序，不是自动重试策略。字段无效要改输入，限流要退避并读错误消息，断流要保留已收内容并交给用户决定，预算用尽要停下来说明，成功但为空要先查范围。任何一类都不构成「工具不可用」的结论，因为单次结果无法覆盖全部工具与全部输入。"],"sourceIds":["agents","capabilities","methods"]},{"heading":"重试边界：什么时候该停","paragraphs":["文档给出的边界很具体：遇到 429 请退避；AI 已开始的请求即使失败也可能计次，不要自动重试。这两句话合起来意味着，重试不是免费的默认动作，而是一个需要用户知情的选择。对计算类工具，同样的输入按约定可以复算；对随机抽取，重抽会得到不同结果，公开约定要求保留返回的牌，不要在用户没有选择重抽时重新抽取。","因此，停止也是一种正确处理。当状态是 limited，或断流且用户尚未决定，或错误消息指向额度而非输入，继续重发只会消耗更多次数而不增加信息。把原始返回、已收到的内容和你的判断一起交给用户，比自动重试更接近可复核的工作方式。软件测试通过只说明已测试行为符合约定，不等于预测得到验证，这一点同样适用于对报错的解读。"],"sourceIds":["agents","capabilities","methods"]}],"figure":{"title":"一次失败调用的阅读顺序","caption":"从状态到约定再到决定的四步流程。它描述的是阅读顺序，不是自动重试策略；每一步都以公开文档写明的状态或约定为依据。","sourceIds":["agents","capabilities"],"steps":[{"label":"读状态","detail":"MCP 先看 isError；agent 命令看 done 事件的 status 是否为 complete、waiting 或 limited。error 与无终止事件的断流都不算完成。"},{"label":"读输入","detail":"核对字段、日期范围、时区与时刻。422 通常指向字段或时刻无效；省略时区会默认 Asia/Shanghai 并返回警告。"},{"label":"读约定","detail":"确认所用约定，例如换日规则、真太阳时近似、塔罗抽取张数与逆位设置，避免把约定差异误判为错误。"},{"label":"做决定","detail":"改输入、退避、保留已收内容交给用户，或停止。429 请退避；AI 已开始的请求可能计次，不要自动重试。"}]},"table":{"title":"Agent 调用结果分诊表","columns":["结果类型","先查什么","不能据此得出什么"],"rows":[["字段或时刻无效（如 422）","核对字段名、日期是否在 1901–2099 年、时区写法与钟表时间；读用户可读的错误消息","不能推断工具缺少该能力，也不能推断命盘本身有问题"],["限流或额度不足（如 429）","读错误消息区分短时限流与 AI 额度不足；按文档退避","不能推断服务永久不可用，也不能自行假定额度何时恢复"],["流式断流、无终止事件","确认是否收到 done 事件；保留已收到的内容","不能把半成品当作完整解读，也不能断定模型给出了错误结论"],["预算用尽的回合（limited）","确认 status 为 limited，说明本回合预算已用完","不能推断输入有误，也不能推断后续回合一定同样受限"],["成功但结果为空","先查搜索范围、locale 与输入是否落在工具覆盖范围内","不能推断该功能不存在；页面未描述某能力不等于厂商没有该能力"]],"sourceIds":["agents","capabilities"]},"example":{"title":"假设案例：一次三张牌的解读请求断流了（虚构情境）","intro":"以下为虚构的教学情境，不对应任何真实用户或真实命盘。假设一位读者请 Agent 用三张牌做一次反思练习，宿主在流式返回中途断开，界面只显示了前两张牌的文字。读者想知道是不是应该立刻重发请求。","steps":["第一步，读状态：检查是否收到 done 事件。本例没有终止事件，按文档属于断流，不是完成；即使前两张牌看起来合理，也不能当作完整结果。","第二步，保留已收内容：把已显示的两张牌名、正逆位与关键词原样记下。公开约定要求保留返回的牌，不要在用户没有选择重抽时重新抽取。","第三步，读输入与约定：确认请求里写的是 1 张还是 3 张、是否开启逆位、locale 是否明确。本例请求为 3 张，返回只有 2 张，说明是传输中断而非张数设置错误。","第四步，做决定：把断流事实、已收内容和「是否重抽由你决定」一起交给读者。若读者选择重抽，新的一次抽取是独立的随机过程，可能碰巧重复某张牌，也可能完全不同；不能承诺复现原来的牌面。","第五步，记录：在札记里注明这次是断流、保留了哪些内容、读者最终选择什么。下次遇到类似情况时，这份记录比记忆更可靠。"],"conclusion":"这个案例教的具体一点是：断流与「牌面不好」是两类不同的问题。断流属于调用未完成，处理方式是保留内容并交回决定权；牌面含义属于解释，需要读者自己结合现实判断。把两者混为一谈，就会在传输问题上反复重抽，或在解释问题上反复重发请求。","sourceIds":["agents","capabilities","methods"]},"faq":[{"question":"MCP 调用返回了内容，但我不确定它是否成功，应该先看哪里？","answer":"先看 isError。文档说明 MCP 为成功结果声明 outputSchema 并返回 structuredContent，并要求先检查 isError；如果 isError 为真，就不应把后面的内容当作可用结果继续解读。确认成功后再读结构化字段，并核对输入与约定是否与你的请求一致。","sourceIds":["agents","capabilities"]},{"question":"遇到 429，是不是等一会儿自动重发就行？","answer":"文档的表述是遇到 429 请退避，并说明 429 表示短时限流或 AI 额度不足，需要阅读错误消息。它没有给出统一的重试间隔或额度恢复时间，所以不要自行假定。若错误消息指向 AI 额度，自动重发可能继续消耗次数；重试应由用户决定。","sourceIds":["agents"]},{"question":"成功返回但结果为空，是不是说明这个工具不支持我要的功能？","answer":"不能这样推断。空结果更可能来自输入范围、locale 设置或搜索范围，例如 search_library 搜索的是问卜原创资料与精选来源目录，不是全网搜索。页面没有描述某项能力，也不等于厂商没有该能力；应回到能力清单核对工具覆盖范围，而不是据一次空结果下结论。","sourceIds":["agents","capabilities"]},{"question":"重抽塔罗能不能得到和上次一样的牌？","answer":"不能按需复现。塔罗是从 78 张牌中等概率抽取 1 张或 3 张，同一次抽取不会重复；新的一次抽取是独立的随机过程，可能碰巧重复某张牌，也可能完全不同。公开约定要求保留返回的牌，不要在用户没有选择重抽时重新抽取。","sourceIds":["capabilities","methods"]}],"glossary":[{"term":"isError","definition":"MCP 结果中的错误标记。文档要求先检查它，再决定是否读取 structuredContent；它为真时，后续内容不应被当作可用结果。","sourceIds":["agents"]},{"term":"done 事件","definition":"内置 agent 命令逐行 JSON 输出中的终止事件，其 status 可为 complete、waiting 或 limited。error 或没有终止事件的断流都不算完成。","sourceIds":["agents"]},{"term":"422 与 429","definition":"REST 接口的两种错误状态。422 通常表示字段或时刻无效；429 表示短时限流或 AI 额度不足，需要阅读错误消息并退避。","sourceIds":["agents"]},{"term":"保留返回的牌","definition":"塔罗约定的一部分：同一次抽取不重复，重抽是新的随机过程，因此应保留已返回的牌供后续讨论，而不是默认重抽。","sourceIds":["capabilities","methods"]}],"cta":{"label":"运行 CLI doctor 检查连接与版本","reason":"在排查报错前，先用文档提到的 CLI doctor 确认连接与版本是否正常，再按状态、输入、约定的顺序阅读返回结果；这一步只检查接入，不构成一次解读。"}},"editionScope":"full","sources":[{"id":"agents","title":"Wenbu · agent integrations","url":"https://wenbu.app/agents/","role":"Current first-party product documentation","fetchedAt":"2026-11-02T07:00:31.992Z","hash":"93a965358202f2256f2d430a517a7cc192c950b3e6f6157a242a234d3c24a7d8","truncated":false},{"id":"capabilities","title":"Wenbu · versioned public capabilities","url":"https://wenbu.app/capabilities.json","role":"First-party current tool, convention and privacy contract; not external endorsement or predictive validation","fetchedAt":"2026-11-02T07:00:31.896Z","hash":"557485b2f5513f237e8258ecf9d0a1fbbf5aa19a30c726f9199bf3817e021546","truncated":false},{"id":"methods","title":"Wenbu · calculation conventions","url":"https://wenbu.app/methodology/","role":"First-party implementation; not evidence of predictive accuracy","fetchedAt":"2026-11-02T07:00:31.917Z","hash":"5452dbc076e1c31aa334fa49949d682ad7851e75a5cf9396b6682530b30f0f0c","truncated":false}],"previousAdditions":[]}