会自己变好的 agent:三算法、域指标与完整 CoALA
这一章讲三件事: LangMem 的三种学习算法各管哪种学习、怎么组合; 域指标(domain metrics)的权重怎么决定 agent 长成什么样——书里有一笔「汇率」算术,值得背下来; 把投资顾问实现换成任何领域的转换框架。到这里,全书从「检索文档」走到了「agent 自己进化」。
1. 先诚实:LangMem 给积木,房子是自己搭的
原书在最后一章做了一次重要的诚实声明,值得先记住:LangMem 是真实的开源库,
但只提供两个原语(create_memory_manager 记忆提取、create_prompt_optimizer 提示词优化);
书里的 coala_agent.py、分层学习、域分离,全部是作者自建的教学框架——
演示的是「怎么用 LangMem 的积木搭生产级学习 agent」1。
三种记忆在这个架构里终于合流:情景记忆供对话上 下文,语义记忆供提取出的事实, 程序性记忆应用学到的策略——三者协作才是「智能行为」的完整含义2。
2. 三种学习算法:三种时间尺度的学习
程序性记忆的「学习」由三种算法执行,它们读同一段对话历史,但提取的东西完全不同3:
| 算法 | 时间尺度 | 管什么 | 书中的例子 |
|---|---|---|---|
| prompt_memory | 分钟级,实时 | 单遍快速学习:从少量新对话里立刻抓明显模式 | 「用户要具体数字,不要模糊表述」——模式出现几分钟内就被抓住 |
| gradient | 后台持续 | 批判与提案分离:专门分析失败的交互,搞清「为什么不行」 | 防止重蹈覆辙;找到「只顾成功的学习」看不见的边界情况 |
| metaprompt | 日/周级定期 | 多阶段深度反思:把成百上千条对话放在一起挖隐性关联 | 「早晨问波动率的用户需要更多情绪安抚」——小样本(样本即拿来分析的例子)里根本看不见 |
组合用法(原书给的医疗例)4:prompt_memory 实时跟着病人交互学, gradient 后台专啃失败病例,metaprompt 每周对全部历史做一次深析—— 三者互补:一个供速度,一个保稳健,一个挖「好系统与伟大系统的差距」。
多算法并存的规则管理也值得记:每条学到的规则带三样标签——来源算法、置信度、 derives 自多少条对话。冲突时按三个优先级裁决:具体的胜过泛化的(用户级规则压过全局规则)、 高置信胜过低置信、新的胜过旧的。规则的置信度是活的:prompt_memory 以 70% 置信学到的规则, 被 metaprompt 在上千条对话上验证后,置信度升到 95%5。
3. 域指标:你告诉它成功是什么,它就长成什么样
学习需要反馈,反馈来自域指标(domain metrics)——你用一组带权重的指标定义「成功」。 原书在这里放了一句全书最该带走的警告:「agent 会精确优化你告诉它的东西—— 不管那是不是你真正的目标」6。
主走查:一笔「汇率」算术
投资顾问的默认权重:收益 50%、满意度 30%、目标达成 20%。这组权重的真实含义是 目标之间的汇率7:
一个策略:收益降 3%,满意度升 5%
收益损失:0.03 × 50 = 1.5 分
满意收益:0.05 × 30 = 1.5 分
⟹ 打平。agent 会学到:这种交换「可以做,但没赚」
图说:权重不是排名,是可兑换的分数。每个学到的策略都在这套汇率下计算过。
换一组权重,agent 的性格就变了。原书给出的对照8:
- 保守型(收益 20 / 满意 60 / 目标 20): 学出的策略是「充分解释每一步风险」「每步确认用户理解」;
- 目标型(20 / 20 / 60): 学出「定期对照退休目标检查进度」这类策略。
指标冲突时,程序性记忆的反应最见功力:高收益策略持续拉低满意度,agent 不会二选一, 而是学出条件策略——「只对明确表示重收益的用户使用激进策略」。 多目标优化最终落地为对不同用户的不同打法9。
4. 域转换:把投资顾问变成任何东西
分层学习、指标加权、策略库——这套机制对领域完全无知。换领域靠一个四文件转换框架10:
- 换什么: 把金融概念系统性替换成新域概念——
identify_task_type()里「调仓、税务规划」 换成「作业辅导、概念讲解」; - 保什么: 用户交互的结构模式与成功的度量方式原样保留——按风险偏好给投资者分组, 和按学习风格给学生分组,是同一个结构动作;
- 怎么换: 原书直接给了可复制的 LLM 提示词——把投资顾问代码贴给 LLM, 要求保持接口不变、替换域概念,人做审查11。
核心三文件(coala_agent.py、procedural_memory.py、baseline_agent.py)零改动;
语义记忆自动开始抽取教育事实,情景记忆存的是辅导会话,程序性记忆自己发现「什么对学生有效」12。
换好之后,多个领域的专业 agent 可以共享同一套认知架构并行运行——
医疗诊断助手、法律研究助手、烹饪教学机器人,模式全都一样13。
5. 完整 CoALA:全书的落点
四记忆合流的最终形态14:
┌─ 情景记忆:上次发生了什么
用户提问 → agent ──┼─ 语义记忆:已知的事实
├─ 程序性记忆:这种情况下什么打法有效
└─ 工作记忆:刚才说到哪了
│
每次交互的结果 → 学习算法 → 更新策略库
图说:检索的对象从「文档」到「个性化上下文」再到「自己的行为策略」——
RAG 的三级进化在同一张图里。
原书的结语把这本书的立场收得很稳:AI 的未来「不只是更聪明的算法, 而是能持续学习与改进的系统」——而这套东西没有魔法, 「是以最先进形态构建和使用 RAG 的自然结果」15。
6. 边界与局限
- 三个算法的组合是原书的教学架构,置信度体系与冲突裁决是作者的设计,不是 LangMem 的内建行为16;
- 域指标的所有数字(50/30/20、3% 换 5%)是演示用的设定——真实的权重要靠领域专家与数据定;
- 学习型 agent 的评测比静态 agent 难一层:策略变了,历史评测结果就不可比了——原书没有展开这个新问题;
- 自主进化的安全边界(A/B、灰度、回滚)有了,但「谁为 agent 学错的东西负责」是书外的题。
7. 可带走的
- LangMem 只给两个原语;分层学习框架是自建的——看演示学架构,别把教学代码当生产件。
- 三种算法三种时间尺度:prompt_memory 抓即时、gradient 啃失败、metaprompt 挖深层。
- 规则三标签(来源/置信度/样本量——样本量即这条规则见过多少个例子——)加三优先级(具体>泛化、高置信>低置信、新>旧),是多学习源共存的最低要求。
- 权重是汇率不是排名:50/30/20 下「收益降 3% 换满意度升 5%」恰好打平——agent 的每个策略都过这套算术。
- agent 精确优化你告诉它的目标——指标定错,学得越快偏得越远。
- 域转换=换概念保结构:分组投资者的方式和分组学生的方式是同一个动作。
- RAG 的三级进化:检索文档 → 检索个性化上下文 → 检索「自己的最佳行为策略」。
8. 原文地图
| 主题 | 原书章 | 原文位置 |
|---|---|---|
| LangMem 只是原语的诚实声明 | Advanced RAG with Complete Memory Integration | text/137-fm-advanced-rag-with-complete-memory-integration.txt:23(搜「real, open source library」) |
| 三记忆协作 | Advanced RAG with Complete Memory Integration | text/137-fm-advanced-rag-with-complete-memory-integration.txt:43(搜「episodic memory providing conversation context」) |
| prompt_memory 单遍学习 | prompt_memory: efficient single-pass learning | text/143-fm-prompt-memory-efficient-single-pass-learning.txt:1(搜「single-pass」) |
| gradient 批判与提案分离 | gradient: critique and proposal separation | text/144-fm-gradient-critique-and-proposal-separation.txt:1(搜「critique and proposal」) |
| metaprompt 多阶段反思 | metaprompt: multi-stage reflection for complex patterns | text/145-fm-metaprompt-multi-stage-reflection-for-complex-pa.txt:4(搜「multi-stage reflection」) |
| 三算法组合(医疗例) | Combining algorithms for comprehensive learning | text/147-fm-combining-algorithms-for-comprehensive-learning.txt:4(搜「healthcare system」) |
| 规则三标签与置信度升级 | Combining algorithms for comprehensive learning | text/147-fm-combining-algorithms-for-comprehensive-learning.txt:19(搜「confidence」) · text/147-fm-combining-algorithms-for-comprehensive-learning.txt:22(搜「70% confidence」) |
| 冲突裁决三优先级 | Combining algorithms for comprehensive learning | text/147-fm-combining-algorithms-for-comprehensive-learning.txt:19(搜「specificity」) |
| 指标定义成功、塑造 agent | Combining algorithms for comprehensive learning | text/147-fm-combining-algorithms-for-comprehensive-learning.txt:40(搜「domain_metrics」) |
| 权重 50/30/20 | Multi-goal balancing: realism with complexity | text/149-fm-multi-goal-balancing-realism-with-complexity.txt:4(搜「50%」) |
| 汇率算术(3% 换 5%) | Multi-goal balancing: realism with complexity | text/149-fm-multi-goal-balancing-realism-with-complexity.txt:7(搜「exchange rates」) |
| 保守型学出的策略 | Multi-goal balancing: realism with complexity | text/149-fm-multi-goal-balancing-realism-with-complexity.txt:14(搜「Conservative」) |
| 条件策略 | Multi-goal balancing: realism with complexity | text/149-fm-multi-goal-balancing-realism-with-complexity.txt:33(搜「conditional strategies」) |
| 精确优化你告诉它的 | Multi-goal balancing: realism with complexity | text/149-fm-multi-goal-balancing-realism-with-complexity.txt:24(搜「optimize exactly」) |
| 转换框架与结构保留 | Domain conversion framework | text/150-fm-domain-conversion-framework.txt:1(搜「Domain conversion」) · text/150-fm-domain-conversion-framework.txt:73(搜「structural logic」) |
| LLM 辅助转换的提示词 | Domain conversion framework | text/150-fm-domain-conversion-framework.txt:8(搜「educator_agent.py」) |
| 核心文件零改动 | Domain conversion framework | text/150-fm-domain-conversion-framework.txt:125(搜「remains untouched」) |
| 分组同构(风险偏好=学习风格) | Domain conversion framework | text/150-fm-domain-conversion-framework.txt:12(搜「learning styles」) |
| 四记忆合一 | Integration: four memory types working together | text/151-fm-integration-four-memory-types-working-together.txt:4(搜「complete CoALA」) |
| 换域即换实现 | Integration: four memory types working together | text/151-fm-integration-four-memory-types-working-together.txt:7(搜「swapping the domain agent」) |
| 领域专家不懂记忆系统也能造 agent | Practical implications: enabling rapid innovation | text/152-fm-practical-implications-enabling-rapid-innovation.txt:4(搜「Domain experts」) |
| 结语:不是魔法,是 RAG 的自然结果 | Procedural Memory for RAG with LangMem | text/130-fm-procedural-memory-for-rag-with-langmem.txt:125(搜「not magic」) |