Agentic AI 看起来很强,为什么真实项目里总失控?
聊《Agentic AI看起来很强,为什么一进真实项目就容易失控?》之前,先说一句实在的:别急着背概念,先看它在真实项目里到底解决什么问题。
摘要
上周需求评审,业务方提了一个 Agent 需求:"让系统自动处理客户投诉,从读取工单、分析原因、调用知识库,到生成回复并推送,全流程自主完成。"
我听完问了一个问题:这条链路里,哪一步失败后,系统该停下来等人确认?
业务方愣了一下,说"应该都能自动处理吧"。
我说,那如果它调错了知识库、推了错误回复,责任算谁的?
这个场景我见过太多次了。Agentic AI 的 Demo 跑起来很漂亮,LLM 能拆解任务、调用工具、甚至自我反思。但一旦放到真实项目里,权限怎么控、日志怎么记、失败怎么恢复,这些问题没有一个被认真讨论过。
今天这篇,不聊概念,聊边界和取舍。
---
目录
- Agentic 到底是什么
- 自主性边界:什么该让 Agent 做,什么必须人管
- 任务拆解:别指望 LLM 一次性搞定复杂流程
- 可观测性:没有日志的 Agent 等于盲飞
- 安全约束:Agent 的权限,比 Prompt 更重要
- 总结
Agentic 到底是什么
很多人把 Agentic AI 理解成"能自主做事的 AI",这个定义太宽泛了。
从工程角度,Agentic 系统的核心特征是任务驱动 + 工具调用 + 循环决策。它不是一个被动响应问题的聊天机器人,而是一个能主动规划路径、调用外部工具、并根据结果调整下一步的智能体。
典型结构长这样:
用户输入 → 规划器(Plan) → 执行器(Act) → 观察结果(Observation) → 判断是否完成 → 循环这就是 ReAct 模式,Reasoning + Acting。
但问题来了:规划器是谁写的?执行器的边界在哪?观察结果谁来评估?
这些问题的答案,决定了你的 Agent 是可控的系统,还是一个会越跑越野的黑盒。
我见过太多团队,拿到一个 Agent 框架就急着做 Demo,Prompt 写得花里胡哨,工具调得飞起。但上线之后,最基础的问题都没想清楚——这个 Agent 能调什么接口?能改什么数据?出错后谁来兜底?
Agentic 不是能力问题,是工程约束问题。
---
自主性边界:什么该让 Agent 做,什么必须人管
这是我最想强调的一点。
需求评审时,业务方想要的"自主执行",在工程师眼里应该翻译成一份权限清单。
我的判断标准很简单:
- 只读操作 → 可以给 Agent,比如查知识库、读工单
- 生成内容但需人工审核 → 可以给 Agent,但输出必须进人工确认队列
- 写入/修改/删除操作 → 默认不给,除非有强校验机制
- 涉及资金、用户隐私、合规敏感的操作 → 绝对禁止 Agent 直接执行
边界不是靠 Prompt 约束的,是靠系统架构约束的。
一个实际的例子:我们做过一个工单分类 Agent,它能读取工单内容、调用分类模型、写出分类结果。但分类结果不会直接写入数据库,而是进入一个待确认队列,由人工审核后才会生效。
这个设计简单,但有效。它让 Agent 承担了重复劳动,同时把关键决策留给了人。
自主性不等于完全放手。好的 Agentic 系统,是"能自主,但知道什么时候停下来"。
---
任务拆解:别指望 LLM 一次性搞定复杂流程
很多团队踩的第一个坑,就是把一个复杂任务丢给 LLM,指望它自己拆解。
现实是:LLM 能拆,但拆得不可靠。
一个真实的投诉处理流程,可能包含十几个步骤:读取工单 → 查询用户历史 → 检索知识库 → 生成初步回复 → 审核 → 推送。每一步都有失败的可能,LLM 自己规划的路径,可能在第三步就偏离了。
我的建议是:复杂流程用工作流编排,不要依赖 LLM 的动态规划。
用 LangGraph、Temporal 或者简单的状态机,把流程写死,让 LLM 只负责其中需要"智能判断"的环节。
from langgraph.graph import StateGraph, END class AgentState(TypedDict): ticket_id: str user_history: dict knowledge_result: str draft_response: str status: str # pending_review | approved | rejected def read_ticket(state): # 读取工单,固定逻辑 ... def query_knowledge(state): # 调用知识库,固定逻辑 ... def generate_response(state): # LLM 只负责这一步 ... workflow = StateGraph(AgentState) workflow.add_node("read_ticket", read_ticket) workflow.add_node("query_knowledge", query_knowledge) workflow.add_node("generate_response", generate_response) workflow.add_edge("read_ticket", "query_knowledge") workflow.add_edge("query_knowledge", "generate_response") workflow.add_edge("generate_response", END)这样,流程是确定的,LLM 只在关键节点发挥作用。确定性流程 + 智能节点,才是工程上可靠的 Agentic 架构。
---
可观测性:没有日志的 Agent 等于盲飞
这是目前行业里最被忽视的一点。
Agent 跑通了 Demo,但上线一周后,运维发现:这个 Agent 在反复调用同一个 API,每次都在重试,日志里全是 500 错误,但没人知道为什么。
问题出在哪?Agent 的每一步决策都没有被记录。
一个可观测的 Agent 系统,需要记录以下内容:
1. 输入:用户原始请求是什么
2. 规划:Agent 决定做什么、为什么做
3. 工具调用:调了哪个工具、传了什么参数、返回了什么结果
4. 中间状态:每步执行后的状态变化
5. 最终输出:Agent 给出的最终结果
这些信息不能只存在内存里,要持久化到日志系统,最好能关联到 Trace ID,方便排查。
import uuid import logging logger = logging.getLogger("agent.tracer") def tracked_tool_call(tool_name, params, result, correlation_id=None): trace_id = correlation_id or str(uuid.uuid4()) logger.info({ "trace_id": trace_id, "event": "tool_call", "tool": tool_name, "params": params, "result_status": "success" if result else "failed", "timestamp": datetime.utcnow().isoformat() }) return trace_id可观测性不是上线后的补救,是设计时就该考虑的基础设施。
---
安全约束:Agent 的权限,比 Prompt 更重要
回到最初的需求评审场景。
业务方要"自动处理投诉",工程师要问的是:这个 Agent 能访问哪些系统?能写哪些数据?出错后能回滚吗?
安全约束的层级,从低到高依次是:
- Prompt 层:告诉 Agent "不要做 X"——最不可靠,LLM 会忽略或误解
- 工具层:给 Agent 的工具本身做了权限限制——比如分类 Agent 只能读不能写
- 网关层:所有 Agent 的 API 调用经过统一网关,做鉴权和限流
- 审计层:所有操作留痕,可追溯、可回滚
我见过最糟糕的案例:一个 Agent 被赋予了数据库写入权限,Prompt 里写了"只在确认信息准确后写入",结果 LLM 在不确定时直接写了错误数据,而且无法回滚。
安全约束必须放在系统层,不能依赖 LLM 的"自觉"。
---
总结
Agentic AI 的 Demo 跑通很容易,难的是让它在一个可控的边界内稳定运行。
我给团队的验收标准就三条:
1. 权限清单:Agent 能做什么、不能做什么,写清楚,不是靠 Prompt 约束
2. 日志完整:每一步决策可追溯,出问题能还原现场
3. 流程确定:复杂任务用工作流编排,LLM 只在关键节点介入
Demo 看能力,上线看约束。 这两件事,一样都不能少。
资料展示
下面是我整理的AI大模型学习资料和工具包预览,适合收藏后按主题逐步学习。
如果你想看完整资料目录,可以在评论区留言「资料」;也欢迎告诉我你更关注AI大模型里的哪类内容。