AI Agent 落地为什么总翻车:工具权限、状态和失败重试没设计好
很多 AI Agent Demo 看起来很厉害:模型能理解任务、调用工具、修改文件、查网页、生成结果。但一到真实业务里就翻车:调用错工具、重复执行、越权操作、状态丢失、失败后乱重试,最后还需要人手工收拾。
这不是“模型不够聪明”能解释的。AI Agent 落地失败,通常是系统设计没跟上。模型只是 Agent 的决策层,真正决定稳定性的,是工具权限、状态管理、任务边界和失败处理。
Demo 能跑不代表能上线
Demo 场景通常很干净:输入明确,工具少,数据小,失败也无所谓。生产环境完全不同。
真实业务里会遇到:
- 用户表达模糊;
- 工具返回异常;
- 数据权限复杂;
- 中途状态变化;
- 外部系统限流;
- 部分步骤成功、部分失败;
- 需要人工确认;
- 日志和审计必须保留。
如果 Agent 没有设计这些边界,它就不是一个产品能力,只是一个会调用工具的聊天机器人。
第一个坑:工具权限太大
很多团队为了让 Agent 快速跑起来,会给它一个万能工具:执行命令、访问数据库、调用 API、写文件。短期开发方便,长期一定出问题。
工具权限应该分层:
| 权限层级 | 例子 | 策略 |
|---|---|---|
| 只读 | 查询文档、读取日志、列文件 | 默认允许 |
| 可逆写入 | 写草稿、生成报告、创建临时文件 | 限制目录和格式 |
| 业务写入 | 创建工单、更新记录、发消息 | 需要规则和审计 |
| 高风险动作 | 删除、付款、发布、提交生产配置 | 必须人工确认 |
不要让模型自己判断哪些动作高风险。工具层就应该限制。
这也是我写 Claude Code 接入 MCP 权限设计 时强调的:AI 能调用工具,不等于工具应该开放全部能力。
第二个坑:没有状态管理
Agent 不只是一次模型调用。只要任务超过一步,就需要状态。
状态至少包括:
- 当前目标;
- 已完成步骤;
- 正在等待什么;
- 哪些工具已经调用;
- 哪些结果可信;
- 哪些步骤失败;
- 是否需要人工确认。
如果这些都只存在模型上下文里,任务越长越容易混乱。上下文被截断、摘要丢细节、工具结果太长,都会让 Agent 忘记自己做到哪一步。
更稳的方式是把关键状态写成结构化记录,比如:
goal:生成客户周报
completed:读取数据、生成摘要
waiting_for:用户确认是否发送邮件
failed_steps:空
needs_human_approval:true
模型可以读状态,但状态不应该完全依赖模型记忆。
第三个坑:失败重试没有上限
Agent 最容易失控的场景,是工具调用失败后不断重试。
常见表现:
- API 401 后继续用同样参数请求;
- 文件不存在后反复猜路径;
- JSON schema 错误后重复生成无效参数;
- 搜索不到结果后不断扩大范围;
- 构建失败后连续改无关文件。
重试必须有策略:
| 失败类型 | 应该怎么做 |
|---|---|
| 参数错误 | 让模型修一次,仍失败就停 |
| 权限错误 | 停下来要求人工处理 |
| 网络错误 | 有限次数重试 |
| 数据缺失 | 明确说明缺口 |
| 构建失败 | 只修相关错误,不顺手重构 |
一个 Agent 如果没有重试上限,就不是自动化,而是风险循环。
第四个坑:任务边界不清楚
“帮我处理这个问题”不是一个可执行任务。Agent 需要知道什么算完成。
一个好的任务定义应该包括:
- 输入是什么;
- 输出是什么;
- 能调用哪些工具;
- 不能做什么;
- 失败时怎么停;
- 哪些动作必须确认;
- 验收标准是什么。
比如:
读取最近 24 小时错误日志,归类 Top 5 错误,生成报告草稿。不要修改生产配置,不要重启服务。找不到日志时停止并说明缺口。
这比“帮我看下线上问题”清楚得多。
第五个坑:没有人工接管点
真正可用的 Agent 不是永远自动,而是知道什么时候停下来。
这些场景应该人工确认:
- 发送消息给外部用户;
- 修改客户数据;
- 删除文件或记录;
- 发布内容;
- 提交代码;
- 调用付费 API;
- 权限不足或来源不确定。
人工接管点不是失败,而是安全设计的一部分。一个能停下来的 Agent,比一个一直自信执行的 Agent 更适合生产环境。
一个落地前检查清单
在把 Agent 接进业务前,先回答这些问题:
- 工具是否按只读、可逆写入、高风险动作分层?
- 每个工具是否有参数校验?
- 状态是否结构化保存?
- 每类失败是否有重试上限?
- 高风险动作是否需要人工确认?
- Agent 做过什么是否有日志?
- 输出是否能追溯到来源?
- 是否能安全中止或回滚?
如果这些问题答不上来,先不要上线。先做一个只读 Agent,验证价值,再逐步开放写入能力。
FAQ
AI Agent 落地失败主要是模型问题吗?
通常不是。更多是工具权限、状态管理、失败重试和任务边界没有设计好。
Agent 应该默认有写权限吗?
不建议。先从只读工具开始,确认价值和稳定性后,再逐步开放可逆写入。
为什么需要状态管理?
因为 Agent 是多步骤任务。只靠模型上下文记忆,很容易在长任务中丢失关键状态。
人工确认会不会降低效率?
会增加一步,但能防止高风险错误。低风险动作自动化,高风险动作确认,是更适合生产的设计。





