Self-Improving 是一套让对话式 AI 在长期使用中逐步积累项目经验的学习系统。它的核心思路是:把交互中出现的纠正、失败、发现和偏好,沉淀为项目内的结构化文件,并在后续对话开始时重新读取,从而形成跨会话的持续改进。
用途
Self-Improving 用于解决 AI 在不同会话中重复犯错、遗忘项目约定、忽略用户偏好的问题。通过把“硬获得的经验”写入项目目录,Agent 可以在下一次对话中直接遵循这些经验,而不必依赖用户反复提醒。它面向的是长期迭代、存在大量项目特有规则的编程协作场景。
何时记录学习
当以下任一情况发生时,应记录一条学习:
- 用户纠正你——例如“不,用 X 而不是 Y”“不要那样做”“那是错的”。
- 出现意外失败——构建错误、测试失败或运行时崩溃,暴露出某个项目特有的坑。
- 发现非显而易见的模式——代码库中存在任何地方都没有记录的约定。
- 用户表达偏好——“我偏好 X”“这个项目里总是做 Y”“永远不要用 Z”。
不应记录的情况:通用编程知识(你本来就知道)、CLAUDE.md 或项目文档中已经记录的内容、一次性的琐碎修复。
如何记录
在项目根目录创建 .learnings/ 目录,并在其中创建 Markdown 文件。文件命名格式为 YYYY-MM-DD-简短描述.md,例如 .learnings/2026-03-20-use-pnpm-not-npm.md。
每个学习文件遵循以下格式:
# Use pnpm, not npm
**Context**: Ran `npm install` and got lockfile conflicts.
**Correction**: This project uses pnpm exclusively. The `pnpm-lock.yaml` is the source of truth.
**Rule**: Always use `pnpm` for install, add, and run commands. Never use `npm` or `yarn`.
保持简短,3-5 行即可。一个学习一个文件。
如何读取学习
每次对话开始时,检查 .learnings/ 是否存在。如果存在,在开始工作前读取其中的所有文件。这些是之前会话中艰难获得的经验,应当尊重它们。
目录结构示例:
.learnings/
├── 2026-03-18-api-auth-requires-bearer.md
├── 2026-03-19-tests-need-env-setup.md
└── 2026-03-20-use-pnpm-not-npm.md
反模式
- 不要创建重复的学习——先检查已有文件。
- 不要记录与 CLAUDE.md 冲突的学习——CLAUDE.md 优先。
- 不要用琐碎条目刷屏——质量重于数量。
- 除非用户明确纠正某条学习,否则不要修改已有学习。
适用场景
Self-Improving 适用于跨多次会话、需要保留项目特有经验的 AI 编程协作,尤其是项目存在未文档化的约定、用户有明确且稳定的偏好、或容易出现重复性错误的场景。
限制
资料未提供关于支持平台、模型、具体收费、价格或与特定工具的集成方式等信息。