Agent 执行后没有任何反应
先判断三件事:模型有没有发出工具调用,调用有没有到达执行器,动作执行后页面有没有产生可观察变化。只看聊天文字会把三种不同故障混在一起。
判断树
text
聊天没有工具卡片?
├─ 是:模型配置 / 提示词 / 工具清单问题
└─ 否:看工具结果
├─ ACTION_NOT_FOUND → id 或页面快照
├─ ACTION_UNAVAILABLE → 前置条件 / 可见性
├─ PERMISSION_DENIED → 权限
├─ EXPECTATION_FAILED → 执行了但结果未出现
└─ 成功 → 页面状态或模型未继续1. 确认模型已就绪
在调试面板查看当前 baseUrl、模型名和配置诊断。NOT_CONFIGURED、MODEL_BASE_URL_MISSING 或 MODEL_NAME_MISSING 表示运行时还没有发出合法请求。不要在页面里写服务商密钥;生产应走同源模型网关。
2. 确认能力已声明且当前可见
打开调试面板的请求消息与工具列表:
- 工具清单里有没有目标动作;
- 动作 id 是否与模型调用的 id 完全一致;
- 动作是否位于当前活跃区域;
available()是否返回 false;- 控件是否被弹窗遮挡或
disabled。
3. 区分“未执行”和“无可见变化”
如果结果是成功,但用户看不到变化:
- 成功判据是否只等待 toast,而列表尚未刷新;
- 记录是否在另一个筛选、分页或滚动窗口;
- 状态是否只在内部 store 更新,没有暴露视图;
- 是否触发了异步任务,最终结果尚未写入;
- 页面是否被缓存或存在两个实例。
EXPECTATION_FAILED 表示处理函数可能已经执行,但声明的结果没有出现。不要直接重发写入;先读取业务状态,判断是否部分成功。
4. 检查确认与人工接力
高风险动作可能停在 pending。查看是否存在待确认项、是否打开在另一个窗口、用户是否已拒绝。Agent 没有代批准工具。确认被拒绝应得到明确状态,而不是无限等待。
5. 检查传输与限额
外部 Agent 还需检查:
- 页面是否仍连接;
- 会话是否过期或撤销;
- 是否命中
RATE_LIMITED; - 是否复用了
request.id; - MCP facade 是否把结果放回工具内容。
REPLAY_DETECTED 不会执行业务动作。不要为了绕过它生成新 id 重复同一意图;先查询前次结果。
最小复现
用调试面板保存:用户请求、工具 id、参数、执行结果、当次页面快照与时间。再用确定性脚本模型重放一次。若重放正常,问题在模型选择;若仍无变化,问题在页面声明、可用性或传输。
修复后验证
- 同一动作在页面手动点击与 Agent 调用下产生相同业务结果;
- 成功判据能观察到真实变化;
- 不可用动作给出原因;
- 重复调用不会造成二次写入;
- 页面主题与语言变化不影响动作 id。

