Agent 工程笔记①:工具调用失败时,先查哪三层

Agent 靠工具调用(tool calling)读写文件、跑命令、查接口。失败时,控制台往往只丢一句「tool error」,排障却可能停在错误层。

本系列叫「Agent 工程笔记」。第一篇只建立排查顺序:先分清失败发生在哪一层,再决定改提示、改 schema,还是改环境。

一、先说一个具体麻烦

你让 Agent「更新依赖并跑测试」。它调了终端工具,返回非零退出码。你以为是模型笨,把提示加长三倍,还是失败。

后来发现:命令在沙箱里根本没有 pnpm。问题在执行环境,不在「想不想得清楚」。

工具失败常见混在一起。分层以后,动作才对得上病。

二、三层分别是什么

第一层:模型决策

模型有没有选对工具?参数意图对不对?该不该在缺信息时先搜索再写?

症状:调错工具、漏调、乱调、该停不停。

第二层:协议与参数

工具名、JSON 参数、必填字段、类型是否符合 schema?MCP / API 是否校验失败?

症状:参数缺失、类型错误、未知工具名、解析失败。

第三层:执行环境

权限、网络、路径、依赖、超时、沙箱策略、密钥是否可用?

症状:命令找不到、权限拒绝、连不上、超时、磁盘只读。

三、推荐排查顺序

(A)先看原始工具结果:退出码、stderr、HTTP 状态,不要只看模型转述

(B)确认工具名与参数是否合法(第二层)

(C)在同一环境手动复现命令(第三层)

(D)若环境与参数都对,再回头看提示与决策(第一层)

很多人颠倒:先改人格化提示,却不复现命令。

四、每层最小修复动作

第一层:补约束与验收;减少工具数量;要求「先只读探测」。

第二层:收紧 JSON Schema;给枚举;对失败返回可机读错误码。

第三层:装依赖、开放路径、延长超时、提供只读凭据、修好沙箱。

下面是一个更利于第二层排查的工具错误返回示意。

json 复制代码
{
  "ok": false,
  "code": "ENOENT",
  "tool": "run_terminal",
  "message": "pnpm: command not found"
}

上面代码中,code 与 message 让宿主和模型都能定位到环境层,而不是笼统的「失败了」。

五、和 MCP / 约束验收的关系

MCP 把工具接到宿主;接上不等于稳。Server 挂了、schema 漂移、权限过宽,都会在二三层爆雷。

「约束 + 验收」主要稳住第一层:少让模型在模糊目标下乱点工具。三层要一起看。

六、常见误区

(1)只骂模型

多数是环境与契约。

(2)吞掉 stderr

等于丢掉第三层证据。

(3)工具说明过长却缺必填示例

第二层更容易出错。

(4)一次给二十个高危工具

第一层选错概率上升。

七、小结与下一篇

工具失败,先问:决策错了、参数错了,还是环境执行错了?按层动手,比反复加形容词有效。

下一篇预告:上下文太长时,砍什么、留什么。

(完)

相关推荐
阳光九叶草LXGZXJ8 小时前
达梦数据库-报错-15-列【XXX】长度超出定义
linux·运维·数据库·sql·学习
陈卫军老师9 小时前
陈卫军语录全集总结:12句话,一条主线
经验分享·笔记
字节渡客9 小时前
Redis键明明过期了,业务还在读到旧数据
数据库·redis·spring
OnlineProxy11 小时前
亚马逊多账号运营:如何在规避“关联封号”风险的同时实现电商规模化扩张
服务器·数据库·redis
盟接之桥11 小时前
当大模型遇见线束制造:不是通用AI,而是行业AI
大数据·网络·人工智能·安全·制造
91刘仁德12 小时前
IP协议详解:从IP协议头到网段划分、路由与NAT
linux·服务器·网络·网络协议·tcp/ip
辻弋20112 小时前
五年前的旅行视频糊成马赛克?Video2X用Real-ESRGAN逐帧重建细节,但只支持Windows、集显用户建议直接放弃
服务器·数据库·windows·游戏引擎·电脑
2501_9269783312 小时前
给自指系统接一个外部锚 —— 一个关于「用 AI 观察自己」的方法
人工智能·经验分享·笔记·机器学习·ai写作
可乐鸡翅yeah_13 小时前
业务中 M3U8 水印相关坑,硬水印和动态水印区别
前端·网络·数据库·ffmpeg·m3u8在线
石头麻辣鱼14 小时前
Bamboo 调度系统 OceanBase 适配实战:存储过程迁移踩过的三个大坑
数据库