如果你想要构建 AI 智能体,非常建议认真读一读这篇论文《Cognitive Architectures for Language Agents(CoALA)》。它把最近两年五花八门的 LLM Agent,统一拉回到一个“认知架构”的老问题上:一个智能体,究竟应该有哪些“心智部件”,它们如何协同?
这两天我又重温了一遍这篇论文,作为学习笔记做一些总结,和大家分享和探讨。
CoALA 的核心观点可以概括为三条:记忆模块、动作空间、决策循环。
一、记忆模块:不只是“加个向量库”
CoALA 直接借用了经典认知心理学的分法:
1. 工作记忆:当前决策轮次里正在被关注的信息,是 LLM 输入输出的“变量容器”;
2. 长期记忆细分为三类:
程序性记忆:规则与技能,一部分在 LLM 权重里,一部分在 Agent 代码和工具定义里;
语义记忆:关于世界与任务的事实知识,可以是文档、知识库、向量检索;
情景记忆:过往任务轨迹、交互历史、失败教训。
关键点在于:一个 Agent 要想真正“可成长”,必须同时会读写这些记忆,而不仅仅是“从知识库检索几段文本”。
二、动作空间:不仅有“调工具”,还有内部动作
CoALA 把 Agent 的动作分为外部与内部两大类:
1. 外部动作:调 API、操作网页/机器人、与人对话等;
2. 内部动作:
检索:从长期记忆读入到工作记忆;
推理:在工作记忆上做分析、规划、反思;
学习:把新的经验、总结、策略写回长期记忆。
这点对工程实践的启示是:如果我们只给 Agent 暴露“调用工具”和“回复用户”两个动作,它就永远学不会管理自己的知识,更不会形成稳定的行为模式。
三、决策循环:从“一次生成”到“提案–评估–选择–执行”
论文把现在各种 CoT、ReAct、ToT、Reflexion 等方法统一成一个通用决策循环:
先通过“推理 + 检索”提出若干候选动作或计划;
再用启发式、价值函数、或 LLM 内部模拟进行评估;
选择其中一个动作执行,并记录反馈到情景记忆;
在合适时机触发学习,把这次经验固化为新的语义/程序性知识。
这不仅是一套方法,更像是一个“思维框架”:不要指望 LLM 一步给答案,而是让它在一个循环里“想一想、试一试、记一记”。
对构建智能体的几个关键启示:
设计 Agent 时,先画出这三样:记忆结构、动作接口、决策流程,再选模型、接工具。大模型只是其中一个“推理引擎”。
要有意识地赋予 Agent “写入记忆”的能力——哪怕一开始只允许写入日志/总结,也比完全无记忆来得强。
安全风险最高的是动作空间里“能改什么”:改代码、改策略、改记忆,都要有明确边界和人工审核。
高级 Agent 的难点,不在于 prompt 有多花哨,而在于:你是否有一个清晰、可复用的认知架构,能让不同任务的 Agent 共用同一套“心智骨架”。
读完这篇论文,设计新 Agent 时需要先想清楚三个问题:
1. 它的记忆是怎样分层的?
2. 它都拥有什么内部与外部动作?
3. 它的决策循环长什么样?
如果这三问答不清,再强的模型接上去,最后多半还是一个“高级脚本”,而不是一个真正可演化的智能体。