从 Harrison Chase 的三层学习框架出发,拆解 Claude Code / Cursor / Copilot 的持续学习机制,并给出你现在就能用的实操配置。
一、你是不是也有这个困扰?
每次打开 AI 编程助手,你都要重新告诉它:
- "我们用的是 TypeScript,不是 JavaScript"
- "项目用 pnpm,别用 npm"
- "数据库查询必须加
WHERE tenant_id = ?" - "组件用函数式写法,别给我写 class"
它什么都不记得。
你可能以为这是 AI 的「本性」——毕竟每次对话结束,上下文就清空了。但事实上,当前主流的 AI 编程工具(Claude Code、Cursor、GitHub Copilot)都已经内置了「持续学习」的能力。只是大多数人从来没有打开过这扇门。
LangChain 创始人 Harrison Chase 最近写了一篇文章叫《Continual Learning for AI Agents》,提出了一个清晰的框架:AI Agent 的学习不只是「训练模型」这一条路,实际上有三个层面可以同时进化。
这篇文章,我会用这个框架,逐层拆解你手里的 AI 编程工具到底能在哪些维度「变聪明」,以及——每一层你现在就能做什么来让它变得更懂你。
二、三层框架总览:Agent 是怎么「学习」的?
Harrison Chase 将一个 AI Agent 系统拆成了三层:
| 层级 | 名称 | 通俗理解 | 类比 |
|---|---|---|---|
| 第一层 | 上下文层(Context) | 你给 AI 写的「说明书」 | 新员工入职时收到的《项目规范手册》 |
| 第二层 | 引擎层(Harness) | 驱动 AI 运行的代码框架 | 公司的 SOP 流程和工具链 |
| 第三层 | 模型层(Model) | 底层大模型的权重 | 员工本人的知识和能力 |
以 Claude Code 为例来映射:
- 上下文层 →
CLAUDE.md、/skills、mcp.json - 引擎层 → Claude Code 这个产品本身的代码逻辑
- 模型层 → Claude Sonnet / Opus 等底层模型
关键洞察:这三层都可以「学习」,但对普通用户来说,投入产出比最高的是第一层。
为什么?因为第三层(模型训练)你几乎无法控制,第二层(引擎优化)需要工具厂商来做,而第一层——你现在就能动手,效果立竿见影。
下面我们逐层展开,每层先讲原理,再给你可以直接复制的实操配置。
三、第一层:上下文中的学习——给 AI 写一份「入职手册」
3.1 原理:为什么一份文件能改变一切?
当你在项目根目录放一个配置文件(比如 CLAUDE.md),AI 工具会在每次对话开始时自动读取它,把内容注入到系统提示词中。
这意味着:你写下的每一条规则,都会成为 AI 的「工作记忆」的一部分。
不同工具的配置文件名不同,但做的是同一件事:
| 工具 | 主配置文件 | 全局配置 | 本地私有层 |
|---|---|---|---|
| Claude Code | CLAUDE.md | ~/.claude/CLAUDE.md | CLAUDE.local.md(不入 Git) |
| Cursor | .cursor/rules/*.mdc | 用户设置中的 User Rules | 无独立本地层 |
| GitHub Copilot | .github/copilot-instructions.md | VS Code 设置中的全局指令 | 无独立本地层 |
3.2 对比:三家的上下文配置有什么不同?
Claude Code 在这一层做得最精细。它支持四层优先级:
全局配置(~/.claude/CLAUDE.md)
↓ 被覆盖
项目配置(./CLAUDE.md)
↓ 被覆盖
模块化规则(./.claude/rules/*.md)
↓ 被覆盖
本地私有覆盖(./CLAUDE.local.md,不入 Git)
这意味着你可以把「我喜欢用中文回复」放在全局配置,把「本项目用 React + TanStack Query」放在项目配置,把「我本地的数据库连接地址」放在不入库的 local 文件里。
Cursor 走的是另一条路。它的 Rules 系统支持 frontmatter 元数据,可以精确控制规则的触发条件:
---
description: "React 组件开发规范"
globs: "src/components/**/*.tsx"
alwaysApply: false
---
这个 globs 字段很强大——它让规则只在你编辑特定路径下的文件时生效。比如你可以给前端组件、后端 API、数据库迁移脚本各写一套规则,互不干扰。
GitHub Copilot 的配置相对简单直接。一个 .github/copilot-instructions.md 文件搞定全局项目指令。最近还新增了 AGENTS.md(用于 Agent 模式)和 .github/.instructions.md(更细粒度的目录级指令)。
3.3 你现在就能做:配置实操指南
方案一:如果你主要用 Claude Code
第一步:初始化配置
在项目根目录运行 /init 命令,Claude Code 会自动生成一份基础的 CLAUDE.md。
第二步:精简并强化
删掉自动生成的废话,保留并补充以下核心内容:
# CLAUDE.md
## 技术栈
- 框架: Next.js 15 + TypeScript 5.7
- 样式: Tailwind CSS v4
- 状态管理: Zustand(NEVER 用 Redux)
- 数据请求: TanStack Query(NEVER 用 useEffect + fetch)
- 包管理: pnpm(NEVER 用 npm 或 yarn)
## 代码规范
- 仅使用函数组件,NEVER 使用 class 组件
- 所有函数必须有完整的 TypeScript 类型注解
- 异步函数必须有 try/catch 错误处理
- 文件命名使用 kebab-case
## 架构约束
- IMPORTANT: 所有数据库查询 MUST 按 tenant_id 过滤(多租户隔离)
- API 路由放在 app/api/ 下,业务逻辑放在 services/
- 数据库操作统一使用 Prisma,NEVER 写原始 SQL
## 常用命令
- 运行开发服务器: `pnpm dev`
- 运行测试: `pnpm test`
- 数据库迁移: `pnpm prisma migrate dev`
- 类型检查: `pnpm type-check`
## 经验教训(踩过的坑)
- user 表有软删除,查询必须加 WHERE deleted_at IS NULL
- 金额字段以"分"为单位存储(整数),展示时再除以 100
- 环境变量在 Edge Runtime 中不可用,需用 next.config.js 注入
写配置的六条黄金法则:
- 写指令,不写描述——"仅使用函数组件"比"我们偏好函数式编程"有效 10 倍
- 只写能改变行为的规则——"写干净代码"删掉(AI 默认就会),"金额以分存储"必须写
- 控制在 200 行以内——超出了收益递减,详细内容用
@引用外部文件 - 关键规则用强词——
MUST、NEVER、IMPORTANT、ALWAYS - 不要复制 Linter 规则——Claude Code 会自动读取
.eslintrc、prettier.config等 - 记录踩过的坑——"经验教训"部分是最有价值的,每次 AI 犯错就加一条
方案二:如果你主要用 Cursor
在 .cursor/rules/ 目录下创建按场景分类的规则文件:
.cursor/
rules/
global.mdc # 全局规则
react-components.mdc # React 组件专用
api-routes.mdc # API 路由专用
database.mdc # 数据库操作专用
示例 react-components.mdc:
---
description: "React 组件开发规范"
globs: "src/components/**/*.tsx"
alwaysApply: false
---
# React 组件规范
- 使用函数组件 + TypeScript
- Props 类型定义放在组件文件顶部
- 使用 Tailwind CSS,禁止内联 style
- 组件文件名使用 PascalCase
- 每个组件导出必须是命名导出(非 default export)
Cursor 的优势在于规则的精准触发。 你可以根据当前编辑的文件路径自动切换上下文,而不是一股脑把所有规则都塞给 AI。
方案三:如果你主要用 GitHub Copilot
创建 .github/copilot-instructions.md:
## 项目概述
这是一个基于 Express + TypeScript 的微服务后端。
## 代码规范
- 所有 API 响应使用统一格式: { code, message, data }
- 错误处理使用自定义 AppError 类
- 日志使用 winston,不要用 console.log
## 禁止事项
- 不要使用 any 类型
- 不要在 Controller 层写业务逻辑
- 不要硬编码配置值,使用环境变量
如果你用的是 Copilot Agent 模式(VS Code 中的 Agent),还可以创建 AGENTS.md 提供更详细的项目结构说明。
方案四:如果你的团队同时用多个工具
推荐策略:以 AGENTS.md 为通用基底。
AGENTS.md 是目前兼容性最广的格式——Claude Code、Copilot、Codex 都支持。然后在各工具的专属文件中引用它:
CLAUDE.md中写See @AGENTS.md,然后补充 Claude 特有配置.github/copilot-instructions.md中复制核心规则.cursor/rules/中按场景拆分
四、第二层:跨会话的持久化记忆——让 AI 真正「记住」你
4.1 原理:从「金鱼记忆」到「长期伙伴」
第一层解决的是「项目规范」——AI 知道怎么写代码。但第二层要解决的是更深的问题:AI 能不能记住和你协作过程中积累的经验?
比如:
- 你告诉它"这个函数的性能很关键,上次优化过"——下次它还记得吗?
- 你纠正它"不要在这个模块用 async/await,用 callback 风格"——它会内化吗?
- 你和它讨论过的架构决策——三天后它还知道吗?
这就是 Harrison Chase 所说的「上下文层的持续学习」中更高级的部分——不只是你手动写的配置文件,还包括 AI 自动从协作中学到的东西。
4.2 三款工具的记忆系统对比
这一层,三款工具的差距非常大。
Claude Code:四层认知架构(最完整)
Claude Code 构建了目前业界最完整的记忆体系,分为四层:
| 层级 | 名称 | 谁来写 | 生命周期 | 作用 |
|---|---|---|---|---|
| L1 | CLAUDE.md | 你手动写 | 永久(随 Git) | 项目的"宪法" |
| L2 | Auto Memory | Claude 自动 | 永久(跨会话) | 自动积累的"工作笔记" |
| L3 | Session Memory | Claude 自动 | 单次会话 | 当前任务的"便签纸" |
| L4 | AutoDream | Claude 子代理 | 周期性运行 | 睡眠时的"记忆整理" |
L2 Auto Memory 是关键创新。每当你纠正 Claude 的错误、做出架构决策、或告诉它一些偏好,Claude 会自动把这些信息写入 ~/.claude/projects/<项目>/memory/ 目录下的结构化文件。
这些记忆按主题组织,包含元数据:
---
name: video-editing-rules
description: 视频编辑项目的特殊规则
type: feedback
---
- 视频首帧不能使用 fade-in 效果(客户明确要求)
- 输出分辨率默认 1080p,除非用户指定
- 字幕文件使用 SRT 格式,不用 ASS
L4 AutoDream 更加惊艳——它模仿人类 REM 睡眠期间的记忆整合过程。大约每 24 小时或 5 个会话后,一个后台子代理会自动运行,对积累的记忆进行去重、合并、过期清理。你不需要手动整理,记忆库会自己保持整洁。
Cursor:Memory Bank(社区方案)
Cursor 目前没有原生的跨会话记忆系统。但社区发展出了一个被广泛采用的方案——Memory Bank。
Memory Bank 的核心思路是:在项目中创建一个 memory-bank/ 目录,用结构化的 Markdown 文件存储项目知识:
memory-bank/
projectbrief.md # 项目概要
productContext.md # 产品上下文
systemPatterns.md # 系统架构模式
techContext.md # 技术上下文
activeContext.md # 当前工作焦点
progress.md # 进度追踪
然后在 .cursorrules 中配置规则,让 Cursor 在每次对话开始时读取这些文件,在每次对话结束时更新它们。
坦率地说,这是一个「人肉实现」的方案。 它需要你在规则中明确告诉 AI "先读 memory-bank/ 下的文件"、"任务完成后更新 progress.md"。它有效,但远没有 Claude Code 的原生方案优雅。
GitHub Copilot:Agentic Memory(新上线)
GitHub Copilot 在 2026 年 1 月推出了 Agentic Memory(目前公共预览版),这是一个原生的跨会话记忆系统。
它的工作方式:
- Copilot 在使用过程中会自动捕获与特定仓库相关的记忆
- 记忆在 Copilot 的各功能间共享——coding agent 学到的东西能帮助 code review
- 记忆是仓库特定的,使用前会验证是否仍然与当前代码库一致
- 记忆会在 28 天后自动过期,防止信息过时
与 Claude Code 的比较:
- Copilot 的记忆更「黑箱」——你无法直接查看和编辑记忆文件
- Copilot 有固定的 28 天过期策略,Claude Code 的记忆是永久的
- Copilot 的记忆在 GitHub 平台层面管理,Claude Code 的记忆在本地文件系统
4.3 对比总结
| 能力 | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|
| 原生记忆系统 | ✅ 四层架构 | ❌ 需社区方案 | ✅ Agentic Memory |
| 自动学习 | ✅ 自动捕获 | ❌ 需手动配置 | ✅ 自动捕获 |
| 记忆可编辑 | ✅ 本地文件 | ✅ (Memory Bank) | ❌ 黑箱管理 |
| 记忆过期 | 手动/AutoDream 整理 | 手动管理 | 28 天自动过期 |
| 记忆整理 | ✅ AutoDream 自动 | ❌ 纯手动 | 自动(不透明) |
| 跨会话恢复 | --continue / --resume | 需手动注入 | 自动加载 |
4.4 你现在就能做:搭建你的记忆系统
如果你用 Claude Code
好消息:你几乎不需要做什么。Claude Code 的 Auto Memory 是默认开启的。
但你可以主动「教」它记住重要的事情:
- 在对话中说:"记住这个:我们的 API 认证使用 JWT + Refresh Token 双令牌模式"
- 纠正错误时说:"以后不要再在这个模块使用
moment.js,我们已经迁移到dayjs" - 做完架构决策后说:"记录一下:我们决定用事件驱动架构处理订单流程"
这些信息会被自动写入 L2 Auto Memory,下次会话自动加载。
你也可以直接查看和编辑记忆文件:
# 查看当前项目的记忆
ls ~/.claude/projects/<你的项目路径hash>/memory/
# 查看记忆索引
cat ~/.claude/projects/<你的项目路径hash>/memory/MEMORY.md
如果你用 Cursor
手动搭建 Memory Bank:
第一步:在项目根目录创建 memory-bank/ 目录和核心文件
第二步:在 .cursor/rules/memory.mdc 中添加规则:
---
description: "Memory Bank 管理规则"
alwaysApply: true
---
# Memory Bank 协议
## 对话开始时
读取 memory-bank/ 下的所有文件,了解项目背景和当前进度。
## 对话结束时
如果有新的决策、发现或进展,更新对应的 memory-bank/ 文件:
- 架构决策 → systemPatterns.md
- 技术选型 → techContext.md
- 当前进展 → progress.md
- 工作焦点 → activeContext.md
第三步:养成习惯,在每次对话结束时提醒 Cursor 更新记忆
如果你用 GitHub Copilot
第一步:确保你使用的是付费 Copilot 计划
第二步:在 GitHub 个人设置 → Copilot → 开启 Memory 功能
第三步:正常使用即可——Copilot 会自动学习
第四步:定期在仓库设置 → Copilot → Memory 中检查记忆是否准确
五、第三层:底层模型的进化——你无法控制,但需要理解
5.1 原理:灾难性遗忘与模型进化
第三层是底层大模型的权重更新——也就是通常说的「模型训练」。
Harrison Chase 特别指出了这一层的核心挑战:灾难性遗忘(Catastrophic Forgetting)。当模型在新数据上训练时,它可能会忘记之前学过的能力。这是一个尚未完全解决的研究问题。
目前,模型层的更新主要有两种模式:
- 全量训练:模型厂商(Anthropic、OpenAI 等)用大规模数据训练新版本模型。比如从 Claude 4.5 Sonnet 到 Claude 4.6 Opus。
- 针对性训练:为特定的 Agent 场景训练专用模型。比如 OpenAI 的 Codex 模型就是专门为 Codex Agent 训练的。
理论上可以为每个用户训练一个轻量级的 LoRA 适配器,但实践中这种方式还很少见。
5.2 三款工具背后的模型演进
| 维度 | Claude Code | Cursor | GitHub Copilot |
|---|---|---|---|
| 默认模型 | Claude Sonnet 4.6 / Opus 4.66 | 多模型可选(Claude/GPT/自研) | GPT-4o / Claude(可选) |
| 模型训练方 | Anthropic | 依赖第三方 + Cursor 自研模型 | OpenAI / Anthropic / GitHub |
| 专用编程模型 | Claude 系列本身就针对编程优化 | Cursor 有自研的 Tab 补全模型 | Codex 模型针对编程场景优化 |
| 用户能影响模型吗? | 间接(通过使用数据反馈) | 间接 | 间接 |
| 更新频率 | 数月级 | 模型可自选更新 | 数月级 |
5.3 你能做什么?
老实说,普通开发者在这一层能做的很有限。但有几件事值得了解:
-
选择合适的模型:如果工具支持多模型选择(如 Cursor),针对不同任务选用不同模型。复杂架构设计用 Opus/GPT-5o,简单代码补全用更快的模型。
-
理解模型版本差异:当工具升级底层模型时,你之前的配置文件可能需要调整。新模型可能默认就能做好某些事(删掉多余规则),也可能在某些方面出现退化(补充新规则)。
-
反馈循环:你在使用中的偏好和纠正,会通过工具厂商的数据管道间接影响模型的下一次训练。所以,养成给好的回复点赞、差的回复纠正的习惯是有意义的。
六、三层协同:1+1+1 > 3
理解了三层分别怎么工作之后,更重要的问题是:它们如何协同?
Harrison Chase 用了一个很好的类比。我把它延伸一下:
想象你雇了一个新员工(AI Agent):
第三层(模型)= 这个人的学历、知识储备、基础能力
→ 你无法改变——这是招聘时就决定的
第二层(引擎)= 公司的工作流程、协作工具、SOP
→ 由公司(工具厂商)持续优化
第一层(上下文)= 你给他的入职手册 + 日常沟通积累的默契
→ 这是你能直接控制的,也是投入产出比最高的
三层之间的关系:
- 第一层弥补第三层的不足:模型不知道你的项目规范?写进
CLAUDE.md。模型不了解你的架构决策?记录在 Memory 中。 - 第二层放大第一层的效果:Claude Code 的 AutoDream 自动整理你的记忆,Copilot 的 Agentic Memory 自动捕获使用中的模式。
- 第三层是基础:再好的配置也需要一个足够强大的底层模型来理解和执行。
实际的优化顺序建议:
1. 先做第一层(10分钟见效)
→ 创建配置文件,写入项目规范和技术栈
2. 再做第二层(1周见效)
→ 开启/搭建记忆系统,让 AI 开始积累
3. 持续关注第三层(长期收益)
→ 跟进工具和模型的更新,及时调整配置
七、你今天就能做的 5 件事
说了这么多,最后给你一个立刻可以执行的行动清单:
✅ 行动 1:创建你的项目配置文件(5 分钟)
不管你用哪个工具,今天就创建:
- Claude Code 用户 → 运行
/init或手动创建CLAUDE.md - Cursor 用户 → 创建
.cursor/rules/目录,至少写一个global.mdc - Copilot 用户 → 创建
.github/copilot-instructions.md
✅ 行动 2:写下你的「经验教训」(10 分钟)
回想 AI 过去一周犯过的错误,用这个模板记录:
## 经验教训
- [MUST] 数据库查询必须加 tenant_id 过滤
- [NEVER] 不要在 Edge Runtime 中使用 Node.js API
- [IMPORTANT] 金额以"分"存储,展示时除以 100
- [BUG] user 表的 deleted_at 字段有软删除,查询要过滤
✅ 行动 3:开启跨会话记忆(2 分钟)
- Claude Code 用户 → 默认已开启,确认
~/.claude/目录存在 - Cursor 用户 → 搭建 Memory Bank(参考 4.4 节)
- Copilot 用户 → 去 GitHub 设置中开启 Copilot Memory
✅ 行动 4:建立「每次犯错就更新规则」的习惯
这是最重要的一条。把配置文件当成活文档——每次 AI 犯错,就追问自己:"我能写一条什么规则来防止这个错误再次发生?"
✅ 行动 5:如果你的团队用多个工具
创建一个通用的 AGENTS.md 作为基底,然后各工具的专属文件引用它。这样维护一份规则就够了。
八、总结:从「一次性工具」到「持续进化的合作伙伴」
Harrison Chase 的三层框架给了我们一个重要的思维转变:
AI 编程助手不是一个「用完即走」的工具,它是一个可以持续学习、不断进化的合作伙伴。
但前提是——你要给它学习的机会。
大多数人把 AI 编程助手当成一个「高级搜索引擎」:问一个问题,得到一个答案,结束。他们从来不写配置文件,不开启记忆功能,不记录经验教训。
结果就是:每次对话都是从零开始。AI 永远不会变得更懂你。
而当你开始在三个层面都投入一点点时间:
- 花 10 分钟写一份
CLAUDE.md/.cursorrules/copilot-instructions.md - 花 2 分钟开启跨会话记忆
- 养成「AI 犯错就更新规则」的习惯
你会发现,AI 编程助手的生产力提升不是线性的,而是指数级的。
因为它不只是在回答你的问题——它在学习成为你团队的一员。
参考资料
- Harrison Chase,《Continual Learning for AI Agents》, LangChain Blog
- Anthropic, Claude Code Memory 机制文档
- GitHub Blog, "Agentic Memory for GitHub Copilot" Changelog, 2026.01
- Cursor 官方文档, Rules 配置指南
- 多工具记忆对比参考:jimyag.com, heyuan110.com
如果你觉得这篇文章有帮助,欢迎转发给同样在用 AI 编程工具的朋友。
你正在用哪个 AI 编程工具?你配置过它的「学习」能力吗?评论区聊聊。