1.1 小王的重复之苦——从裸聊到 Skill 的演进
引言
小王是一个全栈开发者,负责一个 Vue + Python FastAPI 的全栈项目。每天用 AI 编程工具写代码。他的日常是这样的——
早上打开 AI 工具,开始工作。
"帮我部署到生产环境。"
AI 问:"请问你们的部署流程是什么?"
小王心想:这已经是第 37 次解释了。他叹口气,又打了一遍:"先跑测试,再构建,然后部署……"
每天都在重复,每天都在烧 token。
这个问题是怎么来的?
AI 编程工具本质上是"聊天"——每次对话都是独立的,AI 没有记忆。
你和一个实习生合作,每次他来上班都是"第一天"——你要重新告诉他项目用的是什么框架、代码风格是什么、部署怎么做……
这不是实习生的问题,是你没有给他一份"入职手册"。
AI 工具厂商意识到了这个问题,于是发明了项目级指令文件——一份放在项目里的"入职手册",AI 每次启动都自动读取。
各工具的"入职手册"叫什么?
| 工具 | 文件名 | 怎么用 |
|---|---|---|
| Claude Code | CLAUDE.md | 放在项目根目录或 ~/.claude/CLAUDE.md |
| Cursor | .cursorrules | 放在项目根目录 |
| Windsurf | .windsurfrules | 放在项目根目录 |
| VS Code 插件(Cline 等) | .clinerules 或自定义 | 各插件命名不同 |
| Copilot | 自定义 prompt | 在设置中配置 |
名字不同,本质相同——一份 AI 每次会话都会自动加载的项目指令文件。
💡 本课程用 CLAUDE.md 作为代表
Claude Code 的 Skill 系统是最完整的,所以我们用它作为教学示例。但你学到的概念完全适用于其他工具——只需要把 CLAUDE.md 替换成你所用工具的等价物(.cursorrules、.windsurfrules 等)。
四个时代的演进
AI 编程工具的持久化能力,经历了四个阶段的演进。每个阶段都在解决上一个阶段的痛点:
💬 每次从零开始
❌ 重复解释、知识无法积累
📋 写一次,每次加载
❌ 越写越长、全量消耗 token
⌨️ 斜杠命令按需调用
❌ 单文件限制、无法自动触发
🧩 按需加载 + 自动发现 + 目录结构
✅ 渐进式披露,零开销直到调用
(Claude Code Skills 是最完整实现)
每个时代的真实体验
裸聊时代:每天都在重复
小王的项目有 5 个常用操作:部署、代码审查、Issue 修复、运行测试、项目状态查看。
每个操作他都要在聊天中手动描述一遍。AI 没有记忆,每次会话都是白纸一张。
⚠️ 裸聊的代价
假设每个操作平均 100 token 的描述,5 个操作 × 每天解释 3 次 = 1,500 token/天。一个月下来就是 45,000 token 的纯浪费——只是重复同一套话。
项目指令文件时代:终于能记住了
小王把 5 个操作的描述都写进了项目指令文件(Cursor 用户写进 .cursorrules,Claude Code 用户写进 CLAUDE.md)。AI 每次启动都自动读取。
问题来了:这份文件从 50 行膨胀到 300 行。讨论 CSS 样式的时候,也要加载 200 行的部署手册和 API 规范。
❌ 关键洞察
项目指令文件的内容每次会话都全量加载,无论是否需要。 200 行部署手册在讨论 CSS 时也在消耗你的上下文预算——就像你打开一本 1000 页的百科全书查一个词,但整本书都摊在桌上占据了所有空间。
自定义命令时代:按需调用
小王把部署流程提取成自定义命令(Claude Code 用 .claude/commands/deploy.md,Cursor 用自定义 snippet)。项目指令文件恢复到 50 行。
但新问题出现了:
- 命令是扁平的单文件——无法存放模板、脚本、参考文档
- AI 不会自动调用——小王必须记得手动触发
- 无法在隔离环境中运行——长时间任务会污染对话上下文
可复用技能包时代:各取所需,互不干扰
小王把每个领域封装为独立技能包(以 Claude Code 为例):
.claude/skills/
deploy/SKILL.md # 部署流程
review/SKILL.md # 代码审查
fix-issue/SKILL.md # Issue 修复
api-spec/references/ # API 规范(按需加载)
rest.md # REST 规范
graphql.md # GraphQL 规范- 讨论 API 时,AI 自动加载 API 技能包
- 部署时,小王手动
/deploy - 讨论样式时,这些技能包零开销
核心洞察
🔴 核心洞察
Skill 的本质是渐进式披露——不是"给更多信息",而是"在正确的时间展示正确的信息"。
项目指令文件是"始终开着的灯"——照亮一切,但也浪费电。
技能包是"按需打开的手电筒"——需要时照亮,不需要时零消耗。
这个概念适用于所有 AI 编程工具——只是实现方式不同。
本节小结
📌 本节核心要点
- 问题起源:AI 没有记忆,每次会话都是"第一天"
- 解决方案:项目级指令文件——AI 的"入职手册"
- 各工具等价物:CLAUDE.md(Claude Code)、.cursorrules(Cursor)、.windsurfrules(Windsurf)
- 四个时代:裸聊 → 项目指令文件 → 自定义命令 → 可复用技能包
- 核心概念:渐进式披露——在正确的时间展示正确的信息
思考题
- 你现在用的是哪个 AI 编程工具?它的"项目级指令文件"叫什么?
- 你现在和 AI 的协作处于哪个"时代"?有没有还在"裸聊"的常见操作?
- 你的项目指令文件有多长?里面有没有"偶尔才需要"的内容占了大部分?
下一节预告
知道了演进故事,下一节我们更精确地回答:什么时候该写在项目指令文件里,什么时候该用技能包? 这条分界线比你想的更清晰。