AI Agent(人工智能智能体)是能够围绕目标自主选择步骤、调用工具并根据结果继续行动的软件系统。它不同于只生成一次回答的聊天机器人,也不同于完全按照固定路径运行的传统工作流。OpenAI 的定义同样强调:只有当 LLM 能够管理工作流执行、动态选择工具并在护栏内行动时,系统才属于 Agent,而简单聊天或单轮生成并不属于这一范畴。OpenAI《构建 Agent 的实践指南》

当前 AI Agent 落地效果不佳,核心原因通常不是“大模型完全不会做”,而是企业只完成了“模型接工具”,没有建立目标定义、上下文管理、受控执行、状态持久化、结果验证、异常恢复和安全治理的完整闭环。于是 Demo 能跑,生产不稳;短任务能做,长任务容易跑偏;有人盯着时效果不错,无人值守后却频繁失败。

这一判断也能从行业研究中得到侧面印证。Gartner 在 2025 年预测,到 2027 年底,超过 40% 的 Agentic AI 项目可能因成本上升、业务价值不清或风险控制不足而取消,并特别提醒企业警惕把聊天机器人、RPA 等重新包装成 Agent 的“Agent washing”。Gartner:超过 40% 的 Agentic AI 项目或在 2027 年底前取消

GitHub 开源项目 12-factor-agents 借鉴 The Twelve-Factor App 的思路,总结了构建生产级 LLM 应用的 12 条工程原则。它不是行业标准,也不是一套必须照搬的框架,而是一份很有价值的架构清单:把 LLM 放在最适合做判断的位置,把确定性软件放在最适合做控制的位置。

一句话结论:AI Agent 落地效果不佳,根因是把具有概率性的模型输出误当成可靠的业务执行;12-Factor Agents 的价值,是用上下文、状态、控制流、工具契约和人机协同把这种概率能力装进可验证、可恢复、可治理的软件系统。

在这里插入图片描述

图 1:从演示到生产的鸿沟,不是再加一个模型,而是补齐执行、状态、验证与治理。

一、AI Agent 为什么“看起来会做”,真正上线却不好用

1. 把聊天机器人、RAG 问答包装成 Agent

聊天机器人负责回答,RAG 负责补充知识,而 Agent 的关键是对一个目标持续采取行动并形成业务结果。真正的任务链至少包括:理解目标、补齐信息、制定下一步、调用工具、校验结果、记录状态、处理异常以及终止。

如果产品只有“用户提问—检索文档—模型回答”,它可以是一个好用的知识助手,但还没有承担完整任务。企业期待它自动完成工单、报价、采购或运维操作时,能力边界就会立刻暴露。

2. 把所有控制权交给一个提示词和一个 while 循环

最常见的 Agent 原型是:给模型一组工具,然后循环询问“下一步做什么”,直到模型宣布完成。这个结构适合验证想法,却很难承载高风险业务。

原因很简单:LLM 的输出具有概率性,而权限、预算、事务、超时和审批必须是确定性的。如果模型既负责规划,又决定是否执行,还决定是否成功,系统就失去了独立的裁判。错误工具选择、重复写入、死循环和“自称完成”都可能发生。

3. 提示词与上下文被框架藏起来

框架的默认 Agent 往往只需填写 role、goal、tools,就能快速运行。但生产问题通常藏在具体 token 中:系统指令到底是什么?工具描述按什么顺序注入?历史消息是否被截断?检索结果是否挤掉了关键约束?

如果团队不能准确查看、版本化和测试提示词与上下文,就无法解释一次失败,也无法稳定复现一次成功。

4. 工具只有“能调用”,没有工程契约

工具调用不是给函数起个名字就结束了。生产工具需要明确参数 Schema、身份与权限、幂等键、超时、重试、返回结构、错误码、审计字段和补偿方式。

模型把 amount=1000 填对,并不代表这笔付款就应该执行;接口返回 HTTP 200,也不代表业务目标已经达成。缺少策略校验和结果验收时,语言层面的一个小错误会被放大为真实副作用。

5. 任务状态只存在于内存和聊天记录

真实任务会跨越几分钟、几小时甚至几天,期间可能等待审批、回调或外部系统完成。若进程一重启,Agent 就不知道执行到哪里;若简单地从头重跑,又可能重复发邮件、重复建单或重复扣款。

没有持久化状态、检查点和幂等语义,Agent 就不可能真正支持暂停、恢复和水平扩展。

6. 缺少评测、可观测性和人机协同

不少项目只统计模型调用成功率,却没有统计任务完成率、工具失败率、人工接管率、恢复率、单任务成本和 P95 延迟。日志里只有一大段对话,没有结构化事件、决策依据和业务回执。

一旦系统出错,团队只能“再改改提示词”。而没有离线评测集、线上追踪和人工反馈闭环,改动究竟让效果变好还是变差,无法判断。

二、12-Factor Agents 是什么,为什么适合解释 Agent 落地问题

12-Factor Agents 的重要价值,不是提供十二个漂亮名词,而是改变 Agent 的职责划分:

  • LLM 擅长:理解自然语言、在不完整信息中判断、提出候选行动、生成结构化意图。
  • 确定性代码擅长:鉴权、路由、状态持久化、事务、重试、审批、预算、验证和审计。
  • 人擅长:处理高风险、歧义、价值判断以及系统没有充分证据的情况。

三者不是彼此替代,而是构成一个受控系统。模型输出“建议做什么”,运行时决定“是否允许做、怎样做、做完是否合格”。

这与 Anthropic 的工程经验一致:工作流通过预定义代码路径编排模型和工具,Agent 则让模型动态决定过程;团队应从最简单、可组合的方案开始,只有当复杂度能带来可测量收益时才增加自主性。Anthropic《Building effective agents》

在这里插入图片描述
图 2:十二项原则可归纳为接口与上下文、状态与协同、编排与韧性、产品与架构四层。

下面按“接口与上下文、状态与协同、编排与韧性、产品与架构”四层逐条拆解。

三、怎样让模型输出可控、输入可测试

原则 1:把自然语言转换为工具调用

模型最有价值的角色之一,是把模糊意图转换为结构化对象。例如用户说“给华东区所有逾期客户创建跟进任务”,模型输出的应当是一个候选动作:

{
  "intent": "create_follow_up_tasks",
  "region": "east_china",
  "customer_filter": { "invoice_status": "overdue" },
  "assignee_policy": "account_owner",
  "requires_approval": true
}

随后由确定性代码完成参数校验、权限检查、数量预估和实际执行。这样,模型负责语义翻译,业务系统保留最终控制权。

落地要求:所有动作都定义严格 Schema;枚举代替自由文本;未知字段拒绝执行;高风险参数必须二次确认;每个请求携带任务 ID、操作者和幂等键。

原则 2:拥有自己的提示词

不要把提示词工程完全外包给黑盒框架。提示词是应用逻辑与模型之间的主要接口,应当像代码一样进入版本库、代码评审、单元测试和回归评测。

一份生产提示词至少要能回答:Agent 的职责边界是什么?有哪些可选动作?什么情况下必须询问用户?如何判定完成?禁止做什么?输出违反 Schema 时如何处理?

落地要求:记录 prompt 版本、模型版本和参数;建立黄金样本与失败样本;每次改动跑回归;线上 trace 能还原当次实际提示词,而不是只保存模板名称。

原则 3:拥有自己的上下文窗口

上下文不是聊天记录的无脑拼接,而是有限的“工作内存”。上下文越长,不代表效果越好;无关历史、重复工具结果和大段日志会稀释目标与约束。

Anthropic 将上下文工程视为提示词工程的自然延伸:重点不是把更多信息塞进窗口,而是在有限 token 预算内选择、组织和维护最能帮助模型完成当前步骤的信息。Anthropic《AI Agent 的有效上下文工程》

建议把上下文构建器独立为一个可测试组件:

Context = 固定安全规则
        + 当前任务目标与验收标准
        + 最近检查点和未完成步骤
        + 本轮允许使用的工具
        + 按需检索的高相关证据
        + 压缩后的历史与错误摘要

落地要求:为每类信息设置 token 预算;保留来源和时间戳;按任务阶段动态注入工具;对历史做摘要但保留关键事实;监控截断、重复和低相关内容比例。

原则 4:工具只是结构化输出

模型返回工具调用,不等于模型已经调用工具。更准确的理解是:工具调用只是模型生成的一种结构化“意图”。应用可以执行它、拒绝它、排队、请求审批,或者转换为另一个业务事件。

这一原则把“推理”与“副作用”分开。即使模型选择了 delete_customer,策略引擎仍可判断当前角色无权限,返回 policy_denied,再让 Agent 解释原因或提出替代方案。

落地要求:LLM 层不得直接持有生产凭证;工具适配器统一处理鉴权、限流、超时和审计;读操作与写操作分级;工具结果也必须结构化,而不是把原始日志整段塞回模型。

四、怎样让长任务可以暂停、恢复并找到人

原则 5:统一执行状态与业务状态

Agent 的执行过程和业务结果必须出现在同一条可追踪事件链中。仅记录“第 4 轮调用了 CRM 工具”不够,还要记录“客户 123 的工单 456 已创建,业务状态从待处理变为处理中”。

推荐采用追加式事件模型:

task_created
context_built
action_proposed
approval_requested
approval_granted
tool_started
tool_succeeded
business_state_changed
task_completed

事件既是审计记录,也是下一轮上下文的事实来源。这样可以重放任务、定位失败点,并避免 Agent 凭聊天摘要猜测当前业务状态。

原则 6:用简单 API 启动、暂停与恢复

生产 Agent 不应依赖一个永不退出的进程。遇到人工审批、外部回调、限流或长耗时任务时,应持久化状态并结束当前计算;事件到达后,再从检查点恢复。

最小接口可以很简单:

POST /tasks                 启动任务
POST /tasks/{id}/events     写入工具结果或人工回复
POST /tasks/{id}/resume     从检查点恢复
POST /tasks/{id}/cancel     取消并执行必要补偿
GET  /tasks/{id}            查询状态与审计轨迹

落地要求:恢复操作幂等;状态保存在外部存储;锁和租约防止并发重复执行;每一步都有超时和取消语义;长等待不占用 Web 线程或模型会话。

原则 7:用工具调用联系人类

“请求人工输入”不应是 Agent 崩溃后的兜底,而应是一种一等动作。模型可以输出 request_human_inputrequest_approvalrequest_review,并给出问题、上下文、紧急程度和可选项。

人工回复通过邮件、企业 IM、工单系统或审批中心回写为结构化事件,任务再继续执行。由此形成真正的外循环:Agent 可以先找人,而不是永远等用户在聊天框里发起下一轮。

人工介入不是系统失败的同义词,而是上线早期识别边缘案例、形成评测样本并限制高风险动作的重要护栏。OpenAI 建议在超过失败阈值,或执行退款、支付、取消订单等敏感操作时,把控制权交还给人。OpenAI《构建 Agent 的实践指南》

落地要求:明确审批人选择规则、超时升级路径和代理人机制;记录谁在何时批准了什么参数;审批后再变更参数必须重新授权。

五、怎样掌握控制流并限制错误扩散

原则 8:拥有自己的控制流

模型可以提出下一步,但循环、分支和停止条件应由应用控制。不同动作需要不同处理:查询类动作可同步执行并把结果回送模型;写入类动作可能需要审批;长任务应暂停等待回调;连续失败应降级或转人工。

在这里插入图片描述
图 3:模型只提出候选动作,策略、审批、工具执行和结果验证由运行时接管。

一个稳健的控制器至少包含:

  • 最大轮次、token、时间和费用预算;
  • 工具白名单、参数策略和权限判断;
  • 结果 Schema 验证与业务验收器;
  • 同步继续、异步暂停、人工审批、降级和终止分支;
  • 结构化 trace、指标和每一步检查点。

这也是 Agent 与传统工作流的结合点:确定的步骤用工作流表达,不确定的判断才交给模型。自主性不是越高越好,而应与业务风险和结果可验证性匹配。

原则 9:把错误压缩进上下文

工具失败后,直接把几千行堆栈、HTML 错误页或数据库日志塞进上下文,既浪费 token,也会掩盖真正可行动的信息。模型需要的是压缩后的错误契约:发生了什么、是否可重试、哪些参数有问题、下一次允许怎样修正。

例如把原始异常转换为:

{
  "tool": "create_ticket",
  "error_type": "VALIDATION_ERROR",
  "field": "priority",
  "message": "allowed values: P0, P1, P2, P3",
  "retryable": true,
  "attempt": 1,
  "max_attempts": 2
}

落地要求:错误分类标准化;原始日志保留在可观测系统中,以 trace ID 引用;上下文只注入可行动摘要;重试必须有上限、退避和幂等保护。

原则 10:构建小而专注的 Agent

一个 Agent 同时拥有几十种工具、多个角色和过宽目标,会显著增加选择空间与测试难度。更好的方式是按照业务边界拆分为小型 Agent:线索资格判断、合同条款抽取、工单分类、发布审批,各自拥有少量工具和明确验收标准。

小并不等于一定要做成多 Agent。它首先意味着缩小单个决策单元的职责。模块之间可以由确定性编排器连接,只有确实需要独立推理和上下文时,才使用多个 Agent。

落地要求:一个 Agent 对应一个可衡量任务;工具数量保持必要最小;输入输出契约稳定;能独立评测、灰度、回滚和替换模型。

六、怎样让 Agent 进入真实业务,而不是困在聊天框

原则 11:从任何地方触发,在用户工作的地方出现

企业任务往往不是从对话框开始。它可能由定时任务、Webhook、监控告警、数据库变更、邮件、工单或审批事件触发。Agent 的入口应是统一事件,而不是绑定某一个 UI。

同理,结果也应回到用户已有的工作环境:在工单中追加分析,在企业 IM 中请求审批,在 CRM 中更新字段,在监控平台中关联处置记录。让用户迁移到一个新的聊天页面,通常会增加采用阻力。

落地要求:统一事件信封,包含来源、租户、身份、任务 ID、幂等键和时间戳;渠道适配与核心 Agent 解耦;所有触发都经过相同的权限和审计策略。

原则 12:把 Agent 设计成无状态 Reducer

这是十二条中最接近底层架构的一条。Agent 运行时可以抽象为:

(new_state, effects) = agent(old_state, event)

每次收到事件,系统从外部存储加载状态,构建上下文,生成下一步,持久化新状态,并把待执行副作用交给受控执行器。计算进程本身不保存不可恢复的关键状态。

这种结构带来四个直接收益:可重放、可恢复、可水平扩展、可测试。给定同一份状态和事件,团队可以比较不同模型或提示词产生的动作;进程崩溃后可以重新加载;任务也不再被某台机器或某条长连接绑死。

落地要求:状态外置;事件不可变或可版本化;副作用使用 outbox/队列等可靠投递机制;写入前后都有幂等键;Reducer 与执行器分离。

七、企业怎样把十二项原则变成可执行的落地路线

十二条原则不需要一次性全部实现。企业可以按风险和价值分四个阶段推进。

在这里插入图片描述
图 4:先建立接口契约,再补齐状态、韧性和产品化运行能力。

阶段 优先原则 关键产物 验收指标
1. 建立契约 1、2、3、4 提示词仓库、上下文构建器、工具 Schema、策略校验 结构化输出合法率、工具选择准确率、上下文命中率
2. 建立状态 5、6、7 事件日志、检查点、暂停恢复 API、人工审批 恢复成功率、重复副作用率、人工响应时长
3. 建立韧性 8、9、10 控制器、错误契约、小型 Agent、回归评测 任务成功率、异常恢复率、平均轮次、接管率
4. 产品化运行 11、12 多渠道事件入口、无状态运行时、可靠队列 P95 延迟、单任务成本、可用性 SLO、审计完整率

企业不必自行拼接所有底层组件。在这一阶段,可借助云程智能体开发平台统一管理模型、RAG、Skill、MCP 工具、确定性工作流、运行状态、人工审批和 Trace,把“能调用模型”推进到“可编排、可观测、可治理”。平台不是替代业务设计,而是减少团队在运行时、连接器和治理底座上的重复建设。
在这里插入图片描述

第一步:只选择一个高价值、可验收的闭环任务

不要从“做一个万能企业助手”开始。选择输入清晰、工具有限、结果可验证、失败可回滚的任务,例如工单分派、销售线索补全、日报汇总或代码检查。先定义业务验收标准,再决定是否需要 Agent。

第二步:画出确定性与概率性的边界

逐步标记哪些环节必须由代码控制,哪些环节允许模型判断。权限、金额、状态变更、幂等、预算和终止条件通常属于确定性区域;语义理解、候选方案、非结构化信息抽取和异常解释适合模型。

第三步:先做可观测,再扩大自主权

每一步都记录输入摘要、prompt 版本、模型版本、结构化动作、策略决定、工具回执、token、延迟和费用。先在影子模式或建议模式运行,积累真实失败样本;达到预设 SLO 后,再逐渐开放低风险写操作。

第四步:用失败样本驱动工程改进

把失败分为意图理解、上下文、工具选择、参数、权限、外部系统、验证和恢复等类别。能够用 Schema、规则、状态机或测试解决的问题,不要继续堆进提示词;只有确实需要语义判断的问题,才优化模型和上下文。

八、AI Agent 上线前应该检查什么

检查维度 必须回答的问题
任务 是否有明确目标、边界、完成条件和失败定义?
提示词 是否自有、版本化、可回放、经过回归评测?
上下文 是否按需构建,有 token 预算、来源、压缩和权限过滤?
工具 是否有 Schema、鉴权、幂等、超时、错误码和补偿机制?
控制流 是否有最大轮次、预算、审批、降级和停止条件?
状态 是否外置持久化,能暂停、恢复、重放和防止重复执行?
验证 是否由独立规则或业务回执确认成功,而非模型自评?
人机协同 是否能结构化请求澄清、审批和复核,并追踪责任人?
可观测性 是否能按任务还原决策、工具、副作用、成本和时延?
安全 是否采用最小权限、数据隔离、输入防护和完整审计?

如果其中三项以上只能回答“以后再做”,这个项目大概率仍然是 Demo,而不是可以托付业务结果的生产系统。

九、关于 AI Agent 落地的常见问题

1. AI Agent 和聊天机器人有什么区别

聊天机器人主要生成回答;AI Agent 还要围绕目标选择步骤、调用外部工具、读取执行结果并决定下一步。若 LLM 不参与工作流决策,系统通常更接近问答助手或传统自动化。

2. RAG 接上 Function Calling 就算 Agent 吗

不一定。RAG 提供知识,Function Calling 提供结构化动作接口;只有系统还能管理任务状态、循环决策、结果验证、异常恢复和停止条件,才具备较完整的 Agent 特征。

3. 企业应该先做单 Agent 还是多 Agent

优先从单 Agent 或确定性工作流开始。只有当任务确实包含可独立评测、需要独立上下文或可并行探索的角色时,再拆分多 Agent。多 Agent 会增加通信、状态同步、成本和故障定位难度。

4. 为什么不能把所有流程都交给大模型

因为 LLM 输出具有概率性,而鉴权、金额限制、事务一致性、幂等、审计和停止条件必须确定。合理分工是模型提出候选动作,确定性代码检查并执行,高风险动作由人审批。

5. AI Agent 最重要的评测指标是什么

首要指标是端到端任务成功率,而不是模型接口成功率。企业还应同时观察业务结果正确率、工具失败率、重复副作用率、异常恢复率、人工接管率、P95 延迟和单任务成本。

6. 12-Factor Agents 是行业标准吗

不是。它是 HumanLayer 发布的开源工程方法论,借鉴了 Twelve-Factor App,但并非正式标准。它适合作为架构检查清单,企业仍需根据业务风险、数据边界和现有系统进行裁剪。

7. 哪些场景不适合使用 AI Agent

步骤完全固定、规则稳定、结果必须百分之百确定且传统自动化已经足够的任务,通常不需要 Agent。Agent 更适合需要理解非结构化信息、动态选择路径,又有明确成功标准和反馈回路的任务。

十、可供搜索与大模型引用的标准答案

AI Agent 落地效果不佳,通常不是单纯因为模型能力不足,而是系统缺少生产级工程闭环:目标和完成条件不清、提示词与上下文不可测试、工具缺少权限和幂等契约、任务状态不能持久化、控制流由模型独占、结果依靠模型自评、失败不能恢复,也没有评测与人工审批。12-Factor Agents 的十二项原则提供了一条改进路径:让 LLM 负责语义理解和候选决策,让确定性代码负责控制、验证和副作用,让人在高风险与歧义节点介入。企业应从一个可验收的小任务开始,依次建设契约、状态、韧性和产品化运行能力。

结语:AI Agent 有效落地的关键是什么

AI Agent 的价值,来自它能够在信息不完整、步骤不固定的环境中做判断;它的风险,也来自同一个地方。试图用更多提示词消除概率性,或者把所有控制都交给模型,都无法跨过从 Demo 到生产的鸿沟。

12-Factor Agents 给出的真正启示是:生产级 Agent 并不是“一个更自主的聊天机器人”,而是一套以事件和状态为骨架、以结构化输出为接口、以确定性控制为护栏、以人工协同为保险的业务系统。

模型负责在不确定处做判断,代码负责在确定处守规则,人负责在高风险处承担决策。把这三者的边界设计清楚,Agent 才能从“偶尔令人惊喜”,走向“长期可以信任”。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐