Skip to content

1.1 小王的重复之苦——从裸聊到 Skill 的演进

引言

小王是一个全栈开发者,负责一个 Vue + Python FastAPI 的全栈项目。每天用 AI 编程工具写代码。他的日常是这样的——

早上打开 AI 工具,开始工作。

"帮我部署到生产环境。"

AI 问:"请问你们的部署流程是什么?"

小王心想:这已经是第 37 次解释了。他叹口气,又打了一遍:"先跑测试,再构建,然后部署……"

每天都在重复,每天都在烧 token。


这个问题是怎么来的?

AI 编程工具本质上是"聊天"——每次对话都是独立的,AI 没有记忆。

你和一个实习生合作,每次他来上班都是"第一天"——你要重新告诉他项目用的是什么框架、代码风格是什么、部署怎么做……

这不是实习生的问题,是你没有给他一份"入职手册"。

AI 工具厂商意识到了这个问题,于是发明了项目级指令文件——一份放在项目里的"入职手册",AI 每次启动都自动读取。


各工具的"入职手册"叫什么?

工具文件名怎么用
Claude CodeCLAUDE.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 编程工具的持久化能力,经历了四个阶段的演进。每个阶段都在解决上一个阶段的痛点:

1裸聊时代最早

💬 每次从零开始

❌ 重复解释、知识无法积累

2项目指令文件时代2025

📋 写一次,每次加载

❌ 越写越长、全量消耗 token

3自定义命令时代2025

⌨️ 斜杠命令按需调用

❌ 单文件限制、无法自动触发

4可复用技能包时代2025.09

🧩 按需加载 + 自动发现 + 目录结构

✅ 渐进式披露,零开销直到调用

(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 规范。

上下文窗口(项目指令文件时代)
系统提示 (~500 token)
项目指令文件 (~6000 token) ← 全量加载!
其中 4000 token 是你现在不需要的
对话历史 (剩余空间: 极少)

❌ 关键洞察

项目指令文件的内容每次会话都全量加载,无论是否需要。 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
  • 讨论样式时,这些技能包零开销
上下文窗口(技能包时代)
系统提示 (~500 token)
项目指令文件 (~1000 token) ← 精简!
技能包描述 (~300 token) ← 仅目录!
对话历史 (大量剩余空间)

核心洞察

🔴 核心洞察

Skill 的本质是渐进式披露——不是"给更多信息",而是"在正确的时间展示正确的信息"。

项目指令文件是"始终开着的灯"——照亮一切,但也浪费电。

技能包是"按需打开的手电筒"——需要时照亮,不需要时零消耗。

这个概念适用于所有 AI 编程工具——只是实现方式不同。


本节小结

📌 本节核心要点

  • 问题起源:AI 没有记忆,每次会话都是"第一天"
  • 解决方案:项目级指令文件——AI 的"入职手册"
  • 各工具等价物:CLAUDE.md(Claude Code)、.cursorrules(Cursor)、.windsurfrules(Windsurf)
  • 四个时代:裸聊 → 项目指令文件 → 自定义命令 → 可复用技能包
  • 核心概念:渐进式披露——在正确的时间展示正确的信息

思考题

  1. 你现在用的是哪个 AI 编程工具?它的"项目级指令文件"叫什么?
  2. 你现在和 AI 的协作处于哪个"时代"?有没有还在"裸聊"的常见操作?
  3. 你的项目指令文件有多长?里面有没有"偶尔才需要"的内容占了大部分?

下一节预告

知道了演进故事,下一节我们更精确地回答:什么时候该写在项目指令文件里,什么时候该用技能包? 这条分界线比你想的更清晰。

下一节:项目指令文件膨胀——什么时候该拆分