AI优先|一个AI不够:建立自己的多Agent工作体系
用了AI一段时间以后,我越来越觉得:
真正稳定的AI工作方式,不应该只依赖一个Agent。
这里说的“多个Agent”,不是指一个Agent内部临时调用的子代理。
而是指几个彼此相对独立的智能体。
例如:
- ChatGPT;
- Codex;
- Claude Code;
- OpenCode;
- ZCode;
- 部署在Mac mini或者VPS上的Agent。
它们可能使用不同模型,有不同工具、不同运行环境,也可能保存不同的上下文。
我现在更倾向于把它们理解成:
几个独立的AI工作节点。
每个节点承担不同职责。
这和“一个主Agent内部调用几个Subagent”是两回事。
一、为什么不要把所有工作都压在一个Agent上
原因其实很现实。
任何一个Agent都有可能出现问题。
比如:
- 模型暂时不可用;
- 网络异常;
- API额度耗尽;
- 工具调用失败;
- 文件处理出错;
- 某个版本出现Bug;
- 上下文过长;
- 甚至整个产品临时无法使用。
如果所有工作都依赖一个Agent,那么这个Agent一旦出问题,整个工作就停了。
我自己越来越认可一个非常简单的原则:
重要工作工具,一定要有备份。
电脑要备份。
服务器要备份。
网络要备份。
AI也一样。
所以多Agent体系首先解决的,不是什么高级AI理论。
而是一个最基本的问题:
容灾。
二、不同Agent,本来就适合做不同的事情
第二个原因是,不同Agent的能力并不完全一样。
- 有的擅长长期对话和记忆;
- 有的擅长代码;
- 有的适合直接读取本地文件;
- 有的适合操作Git仓库;
- 有的适合在服务器里运行;
- 有的更适合作为备用排障工具。
所以没有必要强行要求一个Agent包办所有工作。
比如可以形成这样的分工:
- ChatGPT作为长期使用的主智能体,负责记忆、讨论、任务设计和总体协调;
- Codex负责代码、脚本、项目文件和开发任务;
- ZCode负责本地Agent工作和文件处理;
- OpenCode作为备用Agent,在其他Agent无法使用时负责排障和接手;
- VPS上的Agent负责远程服务器任务和持续运行环境。
这里最重要的不是具体用哪个产品。
而是:
每一个Agent最好有一个相对明确的定位。
否则装了很多工具,最后只会增加选择成本。
三、主智能体不一定负责所有执行
我比较喜欢的一种结构是:
一个长期主智能体 + 若干执行Agent。
主智能体最重要的价值,是长期理解你。
它知道:
- 你现在有哪些项目;
- 你习惯怎么工作;
- 你常用什么工具;
- 以前做过什么决定;
- 这类任务通常怎么处理。
所以它更像一个“总入口”。
但真正执行任务的时候,不一定非要由它自己完成。
例如:
- 需要修改大量本地文件,可以交给本地Agent;
- 需要写代码,可以交给Codex;
- 需要处理VPS,可以交给服务器上的Agent;
- 需要检查某个Agent为什么坏了,可以让OpenCode接手。
这样主智能体承担的是:
理解和调度。
其他Agent承担的是:
具体执行。
这个结构比强迫一个Agent什么都干,更稳定。
四、多Agent最重要的能力之一,是“接手”
多个Agent存在以后,一个很实际的问题就出现了:
A做到一半,B能不能继续?
我觉得这比“哪个模型更强”重要得多。
例如Codex已经处理了一个任务两个小时,突然环境出了问题。
如果换到OpenCode,是否需要重新从零开始?
理想状态当然是不需要。
所以我现在越来越重视:
Agent之间的任务交接。
一个可以接续的任务,至少应该能够告诉下一个Agent:
- 任务目标是什么;
- 输入文件在哪里;
- 已经完成了什么;
- 生成了哪些文件;
- 目前做到哪一步;
- 有什么已知问题;
- 哪些地方还没有处理;
- 下一步应该做什么。
这样下一个Agent才能真正“接手”。
而不是重新研究一遍整个项目。
五、对话记录不是最好的交接方式
很多人会直接把上一个Agent的整段聊天复制给下一个Agent。
当然可以。
但复杂任务一长,这种方式效率很低。
因为对话里往往有大量:
尝试;报错;废弃方案;重复讨论;中间推理。
新Agent还要重新判断哪些内容有用。
所以更好的办法是:
让当前Agent在阶段结束时生成一份交接说明。
例如:
- 项目目标;
- 当前状态;
- 关键决策;
- 文件路径;
- 已完成项;
- 待办项;
- 风险和问题。
然后下一个Agent先读交接说明,再读取项目文件。
这比把几万字聊天记录全部塞过去稳定得多。
六、多Agent还有一个价值:互相检查
独立Agent之间可以承担第二层复核。
例如:
- ChatGPT先设计法律分析框架;另一个Agent检查有没有遗漏问题。
- Codex写完脚本;OpenCode重新检查代码和执行结果。
- 一个Agent生成合同修改稿;另一个Agent专门寻找漏改、误改和前后矛盾。
这里不是让两个AI机械重复做同一件事。
而是:
让第二个Agent带着“检查第一个Agent”的任务去工作。
这样更容易发现问题。
尤其是复杂任务里,第一个Agent已经形成某种思路以后,很容易沿着自己的逻辑继续往下走。
换一个Agent,相当于换一个新的上下文重新审视结果。
七、备用Agent应该真正保持可用
备用Agent不是:
“我听说过这个工具,以后有问题再研究。”
真正的备用应该是:
- 已经安装;
- 已经配置;
- 知道怎么启动;
- 必要的模型可以使用;
- 有权限读取相关文件;
- 最好已经实际跑过任务。
否则主Agent出问题以后,你才开始研究备用工具怎么装,实际上起不到容灾作用。
所以备用Agent应该像备用服务器一样:
平时不一定天天用,但必须随时能接手。
我自己会更倾向于保留至少两个相互独立的Agent环境。
甚至可以:
本地一个;VPS一个。
这样机器、网络或者软件本身出现故障时,还有另一条路径。
八、Agent之间最好共享同一套外部工作规则
多个独立Agent还有一个问题:
不能每换一个Agent,就重新培训一次。
所以核心规则最好不要只存在某一个Agent的记忆里面。
例如:
- 工作要求;
- 提示词模板;
- 文件命名规则;
- 输出标准;
- 项目说明;
- Skill;
- 脚本;
- 知识库;
- 常用路径。
尽量保存成Agent都可以读取的外部文件。
这样无论是ChatGPT、Codex、OpenCode还是其他Agent,只要拿到同一套材料,就可以快速进入工作状态。
这其实就是我前面一直强调的:
AI工作系统不能完全绑定在某一个产品里面。
Agent可以更换。
核心工作规则应该属于自己。
九、多Agent不是为了多,而是为了稳定
这里也很容易走到另一个极端:
安装十几个Agent。
每天研究哪个模型强一点;哪个版本更新了;哪个插件好用;最后大量时间都花在维护工具。
这没有必要。
我觉得一个比较简单的体系其实就够了:
- 一个长期主智能体;
- 一个主要执行Agent;
- 一个真正可用的备用Agent。
如果还有特殊需要,再增加专项Agent。
判断一个Agent要不要长期保留,可以问:
它有没有一个现有Agent无法很好替代的职责?
如果没有,就不一定需要。
十、独立Agent和Subagent要分清楚
这里还有一个很容易混淆的概念。
多Agent体系和Subagent并不是一回事。
比如:
Codex内部为了完成一个任务,又调用几个子代理分别检索、写代码、检查结果。
这些属于:
Subagent。
它们仍然处在同一个Agent系统内部,由主Agent管理。
而ChatGPT、Codex、OpenCode、ZCode之间,则是几个独立的Agent。
它们有自己的对话、环境和工具。
所以可以简单理解成:
Subagent解决的是“一个Agent内部怎么分工”。
多Agent解决的是“多个独立AI系统之间怎么协作”。
这是两个不同层级的问题。
十一、最终目标不是拥有很多AI,而是拥有一套可切换的工作系统
我现在越来越不追求:
“找到一个最强的AI,把所有工作都交给它。”
因为AI变化太快。
今天最强的模型,明天可能就换了。
今天最好用的Agent,下个月也可能出现问题。
更稳妥的方式是:
让自己的工作能力不要依赖某一个Agent。
- 任务规则在自己手里;
- 文件在自己手里;
- Skill在自己手里;
- 脚本在自己手里;
- 知识库在自己手里;
- Agent只是不同的执行入口。
这样即使某一个Agent出了问题,也不会导致整个工作系统失效。
所以我理解的多Agent体系,本质上不是:
“我同时用了很多AI。”
而是:
“我的工作可以在不同AI之间切换、接续和备份。”
这才是真正有意义的多Agent。
前面我讲:
不要陪AI工作。
复杂任务先让AI规划。
再往下一步,就是:
不要让整个AI工作系统只依赖一个Agent。
建立主Agent、执行Agent和备用Agent。
让任务可以交接,让结果可以互相检查,让任何一个AI出现故障时,都有另外一个能够接手。
这不是为了把AI系统做得越来越复杂。
恰恰相反。
它的最终目标只有一个:
让AI真正成为稳定、可靠、可以长期使用的工作基础设施。
