大家好,我是AI淇橦学。
上一期我们搞清楚了 Agent 到底是什么:AI 大脑 + 工具 + 自主规划,能真正帮你做事,而不是只告诉你怎么做。
但光知道定义还不够。
如果你想自己做一个 Agent,或者评估一个 Agent 好不好用,就必须知道它内部由哪些部分组成——哪些是必须有的,哪些可以以后再加,缺了哪个会出什么问题。
这一期就来干这件事:把一个完整的 Agent 拆成 8 个核心模块,用「办公 Agent」这个案例贯穿全文,逐一讲透。
先看全貌:8 个模块是什么
一个完整的 Agent,通常由这 8 个部分组成:
- 目标(Goal)- 它到底要完成什么
- 模型(Model)- 用哪个 AI 大脑
- 工具(Tools)- 能调用哪些外部能力
- 记忆(Memory)- 能记住什么
- 规划(Planning)- 会不会自己拆解步骤
- 执行(Execution)- 能不能真正采取行动
- 反馈(Feedback)- 会根据结果调整吗
- 约束(Constraints)- 有哪些边界和限制
接下来一个一个拆解,每个模块我都会说清楚:是什么、负责什么、具体怎么做、如果没有会怎样。
模块一:目标(Goal)- 它到底要完成什么
目标是 Agent 的起点,也是终点。它定义了「任务成功」的标准。
目标不清楚,Agent 就不知道什么时候算「做完了」。
它可能做了一半就停下来,也可能做完之后还在继续做,或者做了一件你根本没想要它做的事。
在办公 Agent 里,目标的具体描述是:
- 输入:一份合同模板 + 客户信息
- 输出:把客户信息填入模板对应字段,另存为新文件
- 完成标准:所有标注为「待填写」的字段都已被处理,原始模板未被修改,新文件成功保存
注意「完成标准」这一条——模糊的目标只说「填写合同」,清晰的目标还要说清楚「怎么算填好了」。这个标准,后面用来验收 Agent 是否真的做对了。
我的经验是:很多 Agent 做不好,问题往往出在目标定义不清晰。我试过一开始没写完成标准,结果 Agent 填完两个字段就以为自己完成了,还有5个字段空着呢。
模块二:模型(Model)- 用哪个 AI 大脑
模型就是 Agent 的大脑,决定它的「理解能力」和「推理能力」。
不同任务对模型的要求不一样。简单的文本替换任务,小模型就够;需要理解复杂合同条款、推断字段含义、处理模糊情况的任务,就需要能力更强的模型。
在合同 Agent 里,模型需要能:
- 理解合同里的字段名称和含义(「甲方姓名」是什么意思)
- 识别哪些位置是待填写的(识别空白占位符)
- 在信息不完整时知道该「标注待确认」而不是乱填(判断能力)
一个实际的选择逻辑是:先用能力够用的模型,出现判断错误再去进行升级。不要一开始就用最贵最强的,因为很多错误其实是工具设计问题,不是模型问题。
我踩过这个坑。一开始为了"保险",直接上了 Claude Opus,结果发现错误率没降低多少,成本却涨了10倍。后来发现是工具描述写得不清楚,换了模型也没用。先用便宜的模型试错,工具调顺了再升级,这才是正解。
目前 2026 年主流的选择是:
- 简单任务:GPT-4o-mini、Claude Haiku(便宜、快)、国产的也行
- 复杂任务:Claude Sonnet、GPT-4o(推理能力强)
- 超高精度要求:Claude Opus、GPT-4o-preview(最贵但最准)
模块三:工具(Tools)- 能调用哪些外部能力
这是最关键的模块,也是 Agent 和 Chatbot 最本质的区别所在。
上一期说过,AI 本身只能处理文字。工具让 Agent 能跨越「对话框」,真正操作外部系统。
工具设计有三个核心原则:
原则 1:每个工具只做一件事
不要做一个「读取并写入并保存」的大工具,要做三个单独的工具:read_file(只读)、write_field(只写入)、save_file(只保存)。
单一职责让 Agent 能灵活组合,出问题也更容易定位。
我试过做"全能工具",结果 Agent 经常调用失败。因为 AI 不确定该传哪些参数,有时候传了不该传的参数就直接报错了。拆成小工具后,调用成功率从 60% 提升到了 95%。
原则 2:工具描述要写清楚
AI 靠工具描述来决定什么时候调用哪个工具、传什么参数。
「read_file:读取文件」这种描述是不够的,要写明:这个工具做什么、接受什么格式的参数、返回什么内容。描述越清晰,Agent 调用出错的概率越低。
原则 3:工具的返回结果要让 AI 易于理解
不要返回一堆原始数据,要返回 AI 能直接读懂的结构:「找到空白字段 3 个:甲方姓名 [空白]、联系地址 [空白]、合同金额 [空白]」。
在合同 Agent 里,第一版只需要三个工具就够了:read_file、write_field、save_file。其他工具(搜索知识库、批量处理等)是后面迭代时才加的。
我的建议:第一版只做最小工具集,能用就行。不要一开始就想着做"完整版",那样你会陷入工具地狱,永远完不成。
模块四:记忆(Memory)- 能记住什么
记忆解决的是一个根本问题:AI 本身是没有记忆的,每次对话对它来说都是全新开始。
记忆分三种:
短期记忆
当次任务的处理进度。比如「已填写 3 个字段,还有 2 个待处理」,这个信息在任务完成后就可以丢弃。
长期记忆
需要跨对话保留的偏好和历史。比如「你的模板文件夹在桌面/合同」「你习惯把金额写成大写」,存在本地配置文件里,下次打开程序还在。
知识库记忆(RAG)
大量文档的可检索存储。你有几十份历史合同模板,不可能每次都全部读进来,需要一个机制让 Agent 能「按需取用」——说「找一份 IT 外包合同模板」,它能从几十份文档里找到最匹配的。
这就是 RAG 要解决的问题,我们在第 4 期会专门讲。
为什么记忆重要?没有记忆的 Agent,每次都要重新告诉它你的文件夹在哪、你的格式偏好是什么——用起来比直接手动还烦。
我做了个对比测试:同样的任务,有长期记忆的 Agent 平均需要 2 轮对话完成,没有记忆的需要 5-8 轮。差距太大了。
模块五:规划(Planning)- 会不会自己拆解步骤
规划能力决定 Agent 能处理多复杂的任务。
没有规划能力的 Agent,给它一个目标,它不知道第一步做什么,需要你逐步告诉它;有规划能力的 Agent,给它一个目标,它自己把目标拆成步骤,按顺序执行。
最常用的规划机制叫 ReAct(Reasoning + Acting):思考 → 行动 → 观察结果 → 继续思考 → 继续行动。
这个循环让 Agent 能根据实际执行结果来调整计划,不是死板地照着一个固定脚本走。
在合同 Agent 里:你说「帮我处理这 10 份合同」,有规划能力的 Agent 会自己想出「先列出所有文件 → 逐一读取检查 → 逐一填写 → 生成汇总报告」这个流程,而不是等你告诉它每一步。
2026 年的一个趋势是:LangGraph、AutoGPT 等框架都在加强规划能力,支持更复杂的多步骤、有状态的流程。如果你想做一些复杂的 Agent,规划模块必须设计好。
模块六:执行(Execution)- 能不能真正采取行动
执行是规划的落地。规划是「想好要做什么」,执行是「真正去做」。
执行模块的核心要求:可靠。
它调用工具时要保证工具被正确调用、参数正确传递、错误能被捕获和处理,不能调用失败了还不知道。
一个常见问题是:Agent 调用工具失败了,但它没有察觉到,继续往下走,最后产出了错误的结果。
好的执行设计应该是:每次工具调用完成后,确认结果是否符合预期,不符合就停下来处理,而不是无声地继续。
我之前吃过这个亏。Agent 调用文件写入失败了,但错误被吞掉了,它继续往下跑,最后生成了一个空文件,我还以为一切正常。后来加上了每步检查,问题才暴露出来。
模块七:反馈(Feedback)- 会根据结果调整吗
反馈是让 Agent「自己发现问题、自己纠错」的能力。这也是 Agent 和固定工作流最本质的区别之一。
在合同 Agent 里,反馈机制是这样工作的:
填完所有字段之后,Agent 主动检查:是不是每个字段都有内容了?金额字段填的是数字吗?日期字段格式对不对?
如果发现金额字段里填的是地址,就自动标记「格式异常」,而不是直接保存这个错误的结果。
没有反馈机制的 Agent,填完就保存,你不检查就不知道有没有出错——在批量处理场景下,这非常危险。
我用合同 Agent 处理过 100 份文件,没有反馈时错误率 8%,加上反馈后降到 0.5%。剩下的 0.5% 是一些需要人工判断的边界情况,Agent 会主动标记出来让我确认。
模块八:约束(Constraints)- 有哪些边界和限制
约束是安全的保障,也是常被忽视的模块。
很多人觉得约束是「以后再说」的事,其实在文件操作场景下,约束是第一版就必须有的。
合同 Agent 必须有的基本约束:
- 只能读取原始模板文件,不能修改它(只读)
- 所有修改操作只在内存副本上进行,保存时必须另存为新文件(不覆盖原文件)
- 批量操作开始前,必须展示「将要处理的文件清单」,等待确认
- 涉及金额、账号等高风险字段,保存前需要人工确认
没有约束的 Agent 可能会把原始模板给改掉,或者把文件保存到了你完全不知道的地方——这些错误有时候是不可逆的。
我见过最惨的案例:一个 Agent 没有约束,把用户的原始数据文件覆盖了,而且没有备份。那个用户差点崩溃。从那以后,我做 Agent 第一件事就是加约束,宁可多问一遍,也不要出不可逆的错误。
8 个模块的配合关系
8 个模块不是独立运行的,它们相互配合。用一次完整的合同处理任务来串联:
| 阶段 | 涉及的模块 | 发生了什么 |
|---|---|---|
| 你发出指令 | 目标 + 约束 | Agent 读取你的指令,同时检查约束(不能改原文件、只能操作指定文件夹) |
| AI 理解与规划 | 模型 + 规划 + 记忆 | AI 理解指令,查询长期记忆(你的文件夹路径偏好),制定执行步骤 |
| 实际执行 | 工具 + 执行 | 调用 read_file 打开模板 → 调用 write_field 逐个填写 → 检查执行是否成功 |
| 自我检查 | 反馈 | 检查所有字段是否处理完毕,格式是否正确,有问题停下来报告 |
| 保存与记录 | 工具 + 记忆 | 另存为新文件,把本次操作记入历史记录 |
如果缺少某个模块会怎样
| 缺少的模块 | 会出现什么问题 |
|---|---|
| 目标(Goal) | 不知道什么时候算「完成了」,可能做到一半停下来,也可能做完了还在继续 |
| 工具(Tools) | 只能给你文字建议,不能真的操作文件——和 Chatbot 没区别 |
| 记忆(Memory) | 每次都要重新告诉它文件夹在哪,每次都要重新设置偏好 |
| 规划(Planning) | 只能处理固定流程,遇到复杂任务就需要你手动推进每一步 |
| 反馈(Feedback) | 填错了也不知道,批量处理时错误可能大量积累 |
| 约束(Constraints) | 可能修改原始模板、把文件保存到错误位置,造成不可逆的损害 |
下期预告
这一期我们搞清楚了 Agent 的「零件清单」。
下一期(第 3 期),我们进入真正的实操环节——让这个 Agent 第一次动起来:打开文件、读取内容、填写数据、保存结果。
你会看到从一段自然语言描述,到一段真实可运行的代码,全程用 Claude Code 完成,不需要你自己写一行代码。
你之前有尝试过做 Agent 吗?遇到的最大困难是什么?欢迎在评论区聊聊,我会在后续内容里针对性解答。
关注公众号「AI淇橦学」,和 AI 一起成长。
有问题或建议?后台留言即可。