重生之我在 Vibe Coding 时代当程序员:第四课,让 CC 接手一个项目
上节课用 cc-switch 把 DeepSeek 接进了 Claude Code,工具链跑通后第一个项目是从零生成 Foodiez 落地页——AI 直接帮我把整个项目目录自己长了出来。但现实里更常见的不是"从零开始",而是接手一个已经开了头但没写完的项目。这节课老师就丢了这么一个:HTML/CSS 都写好、JS 是空的 Drum Kit,让 Claude Code 进去把它补完。我第一次意识到,AI 不再是"帮我生成一段代码"的工具,而是一个真的会进项目、读代码、改文件的"员工"。
从一个只有 HTML 的 Drum Kit 说起
这节课的实战项目是 JavaScript30 里的第一个练习——Drum Kit。打开网页按 A、S、D、F、G、H、J、K、L 这九个键,每个键对应一种鼓声,按下时按键还会有放大发光的视觉反馈。
但老师给的不是成品,而是一个空壳。HTML 里 9 个 .key 元素和 9 个 <audio> 标签都写好了,CSS 里 .playing 类的过渡动画也都准备好了,只有最关键的 <script> 是空的:
<script>
</script>
这其实是大多数程序员的真实工作场景。你接手一个项目,HTML、CSS、文件结构都有,但核心逻辑要你来补。
以前这种活我会怎么做?打开 HTML 看一遍,打开 CSS 看一遍,打开 README 看一遍,再 Google 一下"JS keydown 事件",然后开始写。
但这节课我做的第一件事不是看代码,而是把项目文件夹交给 Claude Code。
AI 不再是助手,而是员工
第一次在 Drum Kit 目录里启动 cc,它问的不是"你要做什么",而是先弹出一个问题:
Do you trust the files in this folder?
我盯着这句话停了几秒。它不是在问"我能干活了吗",而是在问"你愿不愿意给我进这个房间的钥匙"。
上节课用 Claude Code 从零拉起 Foodiez 落地页时,目录是它自己 npm create vite 建出来的,每一行代码也是它自己写的——它进的是一个空房间,房间里全是它自己摆的家具。但 Drum Kit 不一样,这个文件夹里有别人写好的 HTML 和 CSS,cc 得读懂、不破坏、再补全。从"生成"到"介入",授权这件事第一次变得真实——你不只是让 AI 进个空房间干活,你是让它进一个已经有家具的房间,挑一处补一面墙。
而员工进门之前,得先有授权。
信任文件夹 = 给员工授权
Anthropic 在 Claude Code 里强调一个原则:最小权限 + 安全边界。AI 默认不会乱碰你的系统,只有你明确授权的文件夹,它才能动手。
这其实是把"雇佣关系"翻译成了软件层面的设计:
- 你不会让一个新员工第一天就拿到所有部门的密码
- 你给的是"这个项目"的权限,不是"你整个电脑"的权限
- 你雇佣他完成具体的工作,他对工作内容负责,对边界外不越权
放到 Claude Code 里就是:你信任哪个文件夹,它就只能在那个文件夹里操作。把 cc 当员工而不是工具,对应到这一点你就能理解,为什么 Anthropic 要把"信任文件夹"做成一个明确的动作——这是边界感的具象化。
也正是这种"AI 有真实操作能力"的范式,让一批新工具卷了起来。Cursor、Trae、Codex、Claude Code 全在往本地 Agent 这个方向走。AI 编程不再是"在网页上对话",而是"在本地上班"。
/init:员工入职先读 Wiki
授权之后,cc 进了文件夹。但它什么都还不知道。
这里就出现一个关键问题:怎么让一个"刚入职的员工"快速了解一个项目?
老员工的做法是:先看文档、再看代码、再问问同事。Claude Code 的做法是 /init。
/init 是 cc 的"项目入职"指令。它会自动读取项目里的所有文件,理解项目结构、技术栈、核心机制,然后生成一份 CLAUDE.md。这份文档不是给你看的,而是 cc 自己写给"未来的自己"的笔记。
所以接手一个 cc 用过的项目时:
- 项目里有
CLAUDE.md→ 直接读,相当于看上一任员工留下的交接文档 - 项目里没有
CLAUDE.md→ 运行/init,让 cc 现场写一份
我让 cc 对 Drum Kit 项目跑了一遍 /init,它生成的 CLAUDE.md 里写了项目的核心机制:
每个
.key元素通过data-key属性(值为键码 keyCode)与对应的<audio>元素关联。按键盘按键时,调用audio.play()播放声音,同时给按键元素添加.playing类触发 CSS 过渡动画。动画结束后通过transitionend事件移除.playing类。
它不是把代码读了一遍就完事,而是把"这个项目怎么运作"用人话总结出来,存进文档。下一次有人(或者它自己)接手这个项目,看这一段就知道核心逻辑了。
这件事的意义比看起来要大:项目知识不再只在程序员脑子里,而是被 AI 沉淀成可读、可改、可迭代的文档。
让 cc 给我讲清楚:按下 D 键到底发生了什么
/init 完成之后,我下一步不是开始改代码,而是反过来问 cc 一个问题:
请以按下 D 这个按键为例,讲一下高亮、再发出鼓声的流程,给出核心代码。
这是这节课让我感受最深的一步。在过去,"接手一个项目"意味着我得自己一行一行去读 HTML、CSS、JS,自己把交互链路在脑子里串起来。但现在我可以让 cc 当一个"老员工",挑一个具体的入口,把整条链路讲给我听。
cc 的回答是一条完整的链路:
window上监听keydown,事件触发时拿到e.keyCode = 68- 用
document.querySelector('div[data-key="68"]')选中 D 这个按键 DOM - 给它加上
.playing类,CSS 同步触发transform: scale(1.1)和黄色发光阴影 - 用同样的
data-key="68"选中对应的<audio>元素 - 把
audio.currentTime重置为 0,调用audio.play()发出鼓声 - 按键过渡动画结束时,
transitionend事件触发,从按键上移除.playing类
读到这一刻我才真正理解:cc 不只是用来用 NLP 帮我"写新代码"的,它还能帮我"读懂老代码"。
这其实把"接手项目"这件事完全反过来了。以前我以为 AI 能干的只是右半边——"我说需求、它出代码"。但 cc 真正强大的另一半是左半边——"我给项目、它给理解"。读代码、串链路、找入口、画流程图,这些以前要花一两天才能干完的事,现在可以变成几轮对话。
理解清楚之后,再让 cc 干活就顺多了。同一个 session 里,我接着问了三件事,每一件都是基于"已经看懂这个项目"之后的自然延伸:
- 让它出主意:「给我几个建议,让这个项目 Drum Kit 更酷一些?」——这一步把 cc 当成产品顾问
- 让它加功能:「帮我添加点击播放的功能」——这一步把 cc 当成开发同事
- 让它修 bug:「高频敲击按键时,
.playing类有时候没及时移除,帮我解决这个 bug」——这一步把 cc 当成调试搭子
讲解员、产品顾问、开发同事、调试搭子——cc 在一个 session 里一会儿是这个,一会儿是那个。而前提,是它先把项目读懂了,我也通过它把项目读懂了。
Plan Mode:先规划,再动手
/init 让 cc 了解项目,对话让我也了解项目。但真正要写代码、改功能时,cc 还有一个更关键的能力:Plan Mode。
Claude Code 有两种模式:
- 默认模式:你说一句,它干一件。靠你写好 Prompt
- Plan Mode(
/plan):先规划,再动手
举个例子,假设我现在要给一个电商系统加购物车功能。需求拆开看,至少包括:
- 后端加表与接口
- 前端加购物车页面
- 前端加购物车组件
- 兼容现有的登录态
在默认模式下,我得自己把这些拆解写进 Prompt,cc 才能按这个粒度干活。如果我只说一句"加个购物车",那它的执行就会很发散,要么漏掉登录态兼容,要么把表结构设计得跟现有系统对不上。
而 Plan Mode 是反过来的:cc 先不动代码,而是主动问你问题——
- 这个购物车要不要支持游客模式?
- 商品规格(颜色、尺寸)怎么处理?
- 库存校验放前端还是后端?
- 现有登录态用的是 session 还是 token?
然后基于你的回答给出一份执行计划,确认后才开始改代码。
这个模式真正有意思的地方在于:它把"写好 Prompt"的门槛大幅降低了。
第一课讲 Prompt Engineering,强调结构化思考,把模糊需求变成 Goal / Input / Output / Layout / Features。但说实话,每次都要把这五块在脑子里想清楚再写 Prompt,对没经验的人不友好。Plan Mode 直接把这个"组织 Prompt"的过程做成了交互——它来问,你来答,最后 cc 自己把 Prompt 拼出来。
这背后是同一件事:好的输出需要好的输入。第一课让我们手动组织输入,第三课的 Plan Mode 让 AI 帮你组织输入。
接手一个项目的标准流程
把这节课的几个动作串起来,就是一套接手项目的标准流程:
- 信任文件夹:给 cc 授权进入项目目录
- 沉淀项目文档:有
CLAUDE.md就读,没有就跑/init让 cc 自己生成 - 让 cc 给你讲项目:挑一条关键链路(一次点击、一个请求、一个交互),让 cc 把入口、流程、核心代码完整讲一遍——理解的不是 cc,是你
- 规划再动手:要改功能就用
/plan,先确认方案再写代码,必要时让 cc 当产品顾问、开发同事和调试搭子
这套流程的核心思路是:先理解,再规划,再执行。
听起来像废话,但你想想以前是怎么干的:看一眼代码 → 觉得自己懂了 → 直接动手 → 改了一半发现影响了别的模块 → 回退 → 重新理解。本来想省的时间,反而被来回返工花掉了。
Vibe Coding 时代,AI 替我们做了"读完所有代码"这件最费时的事,cc 比我们任何一个程序员都更有耐心地把整个项目通读一遍。那我们要做的是什么?是把"理解-规划-执行"这套流程跑得更稳,而不是急着写代码。
这节课我学到了什么
- AI 从助手变成员工,权限管理变成了关键问题。 信任文件夹不是一个琐碎的弹窗,而是"最小权限 + 安全边界"原则的具象化。把 cc 当员工,你就懂这个授权动作为什么必要——员工进门得有钥匙,但钥匙只开你授权的那扇门。
- 接手项目第一件事是读文档,不是写代码。
CLAUDE.md是项目的"交接文档",/init是让 cc 自己生成这份文档的指令。项目知识第一次有了一个可以沉淀的地方,而不是只活在前一任程序员的脑子里。 - cc 不只用 NLP 帮你"开发项目",也帮你"理解项目"。 让它以"按下 D 键"这种具体入口为锚点,把整条链路讲给你听——讲解员、产品顾问、开发同事、调试搭子,它能在一个 session 里轮着扮演。读懂老代码这件事,第一次不需要你独自啃了。
- Plan Mode 把 Prompt Engineering 的门槛降到了零。 第一课要我们手动组织
Goal / Input / Output,Plan Mode 把这件事变成了一问一答。AI 替你把 Prompt 拼好,你只需要回答它问的问题。 - 接手项目的标准流程:信任 → /init → 让 cc 讲项目 → /plan → 写代码。 核心是"先理解,再规划,再执行"。Vibe Coding 时代不是省略思考,而是把思考的形式从"自己读代码、自己写代码"变成"和 AI 对齐理解、再对齐方案"。
- 从写 Prompt、到搭工具链、再到接手项目,AI 在不断往真实工作走。 第一课讲怎么和 AI 沟通,第二课讲 AI 本质上是什么,第三课讲怎么把 Claude Code 这套 Agent 跑起来,这节课讲怎么把它派进一个有别人代码的项目里干活。每一步都离"AI 当员工"更近了一步。
从这节课开始,我对"用 AI 写代码"的理解又下了一层:它不再是"我让 AI 帮我写一段代码",而是"我雇佣一个员工,把项目交给它,然后定期对齐进度"。代码是结果,对齐是过程,员工是 cc。
下一课,继续往下挖。
本文思考来自吴恩达 DeepLearning.ai 课程:AI for Everyone。