工具调用是"黑盒里最多暗门"的一段
模型回答错了,你还能看输入输出;**工具调用错了,问题可能藏在参数、时序、权限、幂等**里。
所以要专门为它做可观测:**日志要结构化、失败要能回放、重试要有边界**。
一、日志:每次调用记这 10 项
1. 请求 id(串起同一任务的多次调用);
2. 工具名与**版本**;
3. 参数(**脱敏后**的原文);
4. 参数来源(模型生成 / 规则补全 / 用户输入);
5. 校验结果(通过 / 哪条规则不过);
6. 权限判定(允许 / 拒绝 / 需要确认);
7. 耗时(分:排队、执行、返回);
8. 结果摘要(成功/失败 + 关键字段,不要整包);
9. 是否重试、第几次;
10. 副作用是否落库(以及幂等键)。
**关键是 4 与 10**:前者决定"是模型的错还是规则的错",后者决定"能不能安全重试"。
二、回放:把失败变成可复现的用例
没有回放能力,工具出错只能靠猜。
三、重试:三条边界
同时要防**重试放大**:重试会让并发与成本翻倍,必须纳入容量与预算(见容量规划那篇)。
四、该报警的四个指标
五、最小落地顺序
1. 先把上面 10 项日志补齐(半天,收益最大);
2. 加只读工具的离线回放;
3. 给写操作加幂等键与"意图→执行→确认"两阶段;
4. 最后加指标与告警。