Agent 系统工程:把不可靠模型变成可交付系统
文章从工程视角定义 Agent——强调其任务执行能力,包括规划、工具调用、状态管理等核心功能,并区分其与对话机器人的本质差异。通过分析典型失败场景(如规划失控、上下文爆炸、成本失控等),指出系统失败的根本在于缺乏容错、状态管理、边界控制等工程能力。系列共8篇,以房产购房决策为统一场景,从单体 Agent MVP 逐步扩展到多 Agent 架构与生产级部署,旨在提供可落地、可测试、可迁移的工程实现方
写在前面
如果你是一位大模型应用工程师、后端工程师,或者 AI 产品技术负责人,你可能已经体验过这样的场景:
- 你用 GPT-4 写了一个"智能客服",Demo 效果惊艳,但上线后用户投诉"答非所问"
- 你让 LLM 自动生成代码,10 次有 8 次能跑,但剩下 2 次会生成完全错误的逻辑
- 你尝试让 Agent 自动执行复杂任务,结果它要么"想太多"陷入死循环,要么"想太少"直接放弃
这些问题的本质是:大模型本身是不可靠的,但业务需要可交付的系统。
这个系列不是教你如何调用 OpenAI API,也不是介绍 LangChain / AutoGPT 的使用教程。这个系列要解决的核心问题是:
如何把一个"不可靠的大模型",变成一个"可交付的 Agent 系统"?
一、什么是 Agent?(工程视角)
1.1 Agent 不是对话机器人
很多人第一次接触 Agent 时,会把它理解成"更智能的对话机器人"。但这是一个误解。
对话机器人的核心能力是:
- 理解用户输入
- 生成合适的回复
- 维持对话上下文
Agent 的核心能力是:
- 规划(Planning):把复杂任务拆解成可执行步骤
- 执行(Tool Calling):调用外部工具完成具体任务
- 状态管理(State):追踪任务执行进度和中间结果
- 记忆(Memory):记住历史信息和用户偏好
- 反思(Reflection):评估执行结果,必要时调整计划
- 评估(Eval):验证任务是否完成,结果是否正确
简单来说:
- 对话机器人是"回答问题"
- Agent 是"完成任务"
1.2 Agent 的工程定义
从工程角度,我给 Agent 下一个明确的定义:
Agent 是一个在明确业务目标下,具备自主规划、工具调用、状态管理、记忆、反思、评估能力的任务执行系统。
这个定义有几个关键点:
- 明确业务目标:Agent 不是"万能助手",而是为特定业务场景设计的
- 自主规划:Agent 能够把复杂任务拆解成步骤,而不是简单的 if-else
- 工具调用:Agent 能够调用外部 API、数据库、搜索引擎等工具
- 状态管理:Agent 能够追踪任务进度,知道"我现在在哪一步"
- 记忆:Agent 能够记住历史信息,避免重复询问
- 反思:Agent 能够评估自己的执行结果,必要时调整计划
- 评估:Agent 能够判断任务是否完成,结果是否符合预期
1.3 什么不是 Agent?
为了更清晰地理解 Agent,我们也需要明确"什么不是 Agent":
❌ 单纯的 LLM 调用:只调用 GPT-4 生成文本,没有规划和工具调用
❌ 固定流程的自动化:用 if-else 写死的流程,没有自主规划能力
❌ 简单的 RAG 系统:只是检索 + 生成,没有复杂任务拆解
❌ 对话机器人:只是回答问题,不执行任务
二、为什么 Agent 在工程中会失败?
在过去一年的实践中,我见过太多"看起来很美"的 Agent 项目最终失败。失败的原因通常不是"技术不够先进",而是"工程能力不足"。
2.1 典型失败场景
场景 1:Planning 失控
- Agent 把一个简单任务拆解成 20 个步骤
- 执行到第 10 步时发现前面的步骤有问题
- 重新规划,陷入死循环
场景 2:Tool 调用失败
- Agent 调用外部 API,但 API 超时
- Agent 没有重试机制,直接放弃任务
- 用户看到的是"任务失败",但不知道为什么
场景 3:Context 爆炸
- Agent 执行长流程任务,历史对话越来越长
- Token 超出限制,LLM 调用失败
- Agent 丢失关键信息,重新开始
场景 4:幻觉输出
- Agent 生成了一个看起来合理的 Plan
- 但 Plan 中的某个步骤根本无法执行
- Agent 执行失败,但不知道如何调整
场景 5:成本失控
- Agent 每次执行都调用 10 次 LLM
- 每次调用消耗 5000 tokens
- 成本迅速爆炸,业务无法承受
2.2 失败的本质原因
这些失败场景的本质原因是:
- 缺少容错机制:没有考虑 LLM 调用失败、Tool 超时、幻觉输出等异常情况
- 缺少状态管理:不知道任务执行到哪一步,无法恢复
- 缺少边界控制:Planning 没有深度限制,Context 没有长度限制
- 缺少质量保证:没有 Eval 机制,不知道任务是否真的完成
- 缺少成本控制:没有考虑 LLM 调用次数和 Token 消耗
三、这个系列要解决什么问题?
这个系列的目标是:让你能够从零开始,构建一个可交付的 Agent 系统。
3.1 系列路线图
整个系列共 8 篇,覆盖从单 Agent 到多 Agent,再到生产级系统的完整路径:
第 1 篇:总纲(本篇)
- Agent 的工程定义
- 为什么 Agent 会失败
- 系列路线图和场景说明
第 2 篇:单体 Agent MVP
- 从需求到可执行结果
- Prompt 基本结构
- Tool 调用
- 最小 State Loop
- 🎯 目标:读者第一次跑通一个 Agent
第 3 篇:Planning
- 复杂任务如何被拆成可执行步骤
- Planning Prompt 设计
- Plan Schema 定义
- Plan 校验、失败与重试
- 🎯 目标:读者第一次感受到"Agent 在想什么"
第 4 篇:单 Agent 的复杂化上限
- 什么时候单 Agent 还能扛
- 什么时候必须拆成多 Agent
- 多轮对话、长流程、动态重规划
- 明确"不可控信号"
- 🎯 目标:建立"何时拆分"的判断标准
第 5 篇:Memory & Context
- Agent 为什么会记住,又为什么会忘
- Context Window 管理
- Summary Memory
- 关键事实记忆
- 🎯 目标:解决"Context 爆炸"问题
第 6 篇:多 Agent 协作
- 从一个人,到一个虚拟团队
- Manager / Worker 模式
- Pipeline 模式
- 🎯 目标:读者第一次搭建多 Agent 系统
第 7 篇:多 Agent 架构
- 通信、共享状态与冲突处理
- 消息协议
- Shared Store
- 仲裁逻辑
- Human-in-the-loop
- 🎯 目标:掌握多 Agent 的技术架构
第 8 篇:Eval & 生产级能力
- Agent 如何被验证、监控和兜底
- Eval 用例设计
- 回归测试
- 错误分类
- 降级 / 人工兜底
- 最小生产架构
- 🎯 目标:让 Agent 真正可交付
3.2 每篇文章的结构
每篇文章都会遵循以下结构:
- 问题导向:这篇要解决什么工程问题?
- 最小方案:给出最小可落地方案(而非最优方案)
- 完整 Demo:提供可运行的代码示例
- Eval 用例:如何验证这个方案是否有效
- Checklist:实施时的关键检查点
- 成本分析:这个方案的成本是多少,在什么规模下会爆炸
- 迁移指南:如何将这个方案迁移到你的业务
四、贯穿场景:房产购房决策 Agent
4.1 为什么选择房产场景?
这个系列会使用一个统一的场景:房产购房决策 Agent。
我选择这个场景的原因是:
- 信息密集:涉及房价、政策、学区、交通、贷款等多维度信息
- 强流程:从需求分析 → 区域筛选 → 房源对比 → 风险评估,有明确的流程
- 多角色:可以拆分成"研究员"、“分析师”、"风险顾问"等多个 Agent
- 非结构化 + 结构化:既有结构化数据(房价、面积),也有非结构化信息(政策、评价)
- 贴近真实商业决策:这是一个真实的、高价值的决策场景
4.2 场景说明(重要)
⚠️ 重要声明:
本系列中的"房产 Agent"不是教你做房产系统,而是借一个"复杂但可理解的决策场景"来讲 Agent 工程。
为了让读者能够快速复现,我做了以下简化:
- 所有 API 都是 Mock 的:不需要真实的房产数据接口
- 政策 / 税费一律简化成规则文件:不涉及复杂的房产业务逻辑
- 只保留核心数据字段:价格、位置、学区、面积、交通
- 只保留核心规则:预算匹配、学区匹配、通勤时间
你需要关注的是:
- Agent 如何拆解任务
- Agent 如何调用工具
- Agent 如何管理状态
- Agent 如何处理异常
你不需要关注的是:
- 房产业务的细节
- 真实的房产数据
- 复杂的政策规则
4.3 场景示例
用户输入:
我想在北京买房,预算 500-600 万,需要考虑孩子上学(小学),
我在国贸上班,希望通勤时间不超过 1 小时。
Agent 需要做什么:
- 理解用户需求(预算、学区、通勤)
- 拆解任务(区域筛选 → 房源查询 → 学区匹配 → 通勤计算 → 风险评估)
- 调用工具(房源 API、学区 API、地图 API)
- 对比分析(多个区域、多个房源)
- 生成报告(推荐方案 + 风险提示)
在后续的文章中,我们会一步步实现这个 Agent。
五、技术栈说明
5.1 编程语言
本系列使用 Python 作为主要编程语言,原因是:
- Python 是大模型应用的主流语言
- 生态丰富(LangChain、LlamaIndex、OpenAI SDK)
- 代码简洁,易于理解
5.2 LLM 选择
本系列使用 OpenAI GPT-4 作为主要 LLM,但所有代码都会设计成"LLM 无关"的,你可以轻松替换成:
- Claude
- Gemini
- 国产大模型(通义千问、文心一言、智谱 GLM)
5.3 框架选择
本系列不依赖任何 Agent 框架(如 LangChain、AutoGPT),原因是:
- 框架会隐藏很多细节,不利于理解 Agent 的工程原理
- 框架的抽象可能不适合你的业务场景
- 从零实现可以让你完全掌握每一个环节
但在系列的最后,我会讨论"如何选择和使用 Agent 框架"。
5.4 代码示例
所有代码示例都在 house_case 目录下,每篇文章对应一个独立的子目录:
- 完整的代码实现
- Mock 数据
- 运行说明
六、如何使用这个系列?
6.1 适合谁?
这个系列适合:
- 大模型应用工程师:想要构建可交付的 Agent 系统
- 后端工程师:想要了解 Agent 的工程实现
- AI 产品技术负责人:想要评估 Agent 的技术可行性
这个系列不适合:
- 完全没有编程经验的人
- 只想了解 Agent 概念的人
- 想要"一键生成 Agent"的人
6.2 如何阅读?
建议阅读顺序:
- 按顺序阅读,不要跳过
- 每篇文章都跑一遍 Demo
- 尝试修改 Demo,看看会发生什么
- 思考"如何迁移到我的业务"
每篇文章的时间投入:
- 阅读:30-45 分钟
- 跑 Demo:15-30 分钟
- 思考和实践:1-2 小时
整个系列的时间投入:
- 如果只是阅读:6-8 小时
- 如果跑完所有 Demo:12-16 小时
- 如果要迁移到自己的业务:40-80 小时
6.3 如何提问?
如果你在阅读或实践过程中遇到问题,可以:
- 在 GitHub 仓库提 Issue
- 在文章评论区留言
- 加入读者交流群(见文末)
七、下一篇预告
下一篇文章,我们会实现第一个可运行的 Agent:
《单体 Agent MVP:从需求到可执行结果》
你会学到:
- 如何设计 Agent 的 Prompt
- 如何让 Agent 调用工具
- 如何实现最小的 State Loop
- 如何跑通第一个房产分析 Agent
核心代码不超过 200 行,但会让你真正理解 Agent 的运行原理。
八、写在最后
Agent 不是魔法,也不是玩具。它是一个需要严肃对待的工程系统。
这个系列不会告诉你"Agent 能做什么",而是告诉你"Agent 为什么会失败,以及如何让它不失败"。
如果你准备好了,让我们开始这段旅程。
下一篇:《单体 Agent MVP:从需求到可执行结果》
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)