重生之我在 Vibe Coding 时代当程序员:第四课,让 CC 接手一个项目

6 阅读11分钟

重生之我在 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 的回答是一条完整的链路:

  1. window 上监听 keydown,事件触发时拿到 e.keyCode = 68
  2. document.querySelector('div[data-key="68"]') 选中 D 这个按键 DOM
  3. 给它加上 .playing 类,CSS 同步触发 transform: scale(1.1) 和黄色发光阴影
  4. 用同样的 data-key="68" 选中对应的 <audio> 元素
  5. audio.currentTime 重置为 0,调用 audio.play() 发出鼓声
  6. 按键过渡动画结束时,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 帮你组织输入。

接手一个项目的标准流程

把这节课的几个动作串起来,就是一套接手项目的标准流程:

  1. 信任文件夹:给 cc 授权进入项目目录
  2. 沉淀项目文档:有 CLAUDE.md 就读,没有就跑 /init 让 cc 自己生成
  3. 让 cc 给你讲项目:挑一条关键链路(一次点击、一个请求、一个交互),让 cc 把入口、流程、核心代码完整讲一遍——理解的不是 cc,是你
  4. 规划再动手:要改功能就用 /plan,先确认方案再写代码,必要时让 cc 当产品顾问、开发同事和调试搭子

这套流程的核心思路是:先理解,再规划,再执行

听起来像废话,但你想想以前是怎么干的:看一眼代码 → 觉得自己懂了 → 直接动手 → 改了一半发现影响了别的模块 → 回退 → 重新理解。本来想省的时间,反而被来回返工花掉了。

Vibe Coding 时代,AI 替我们做了"读完所有代码"这件最费时的事,cc 比我们任何一个程序员都更有耐心地把整个项目通读一遍。那我们要做的是什么?是把"理解-规划-执行"这套流程跑得更稳,而不是急着写代码。

这节课我学到了什么

  1. AI 从助手变成员工,权限管理变成了关键问题。 信任文件夹不是一个琐碎的弹窗,而是"最小权限 + 安全边界"原则的具象化。把 cc 当员工,你就懂这个授权动作为什么必要——员工进门得有钥匙,但钥匙只开你授权的那扇门。
  2. 接手项目第一件事是读文档,不是写代码。 CLAUDE.md 是项目的"交接文档",/init 是让 cc 自己生成这份文档的指令。项目知识第一次有了一个可以沉淀的地方,而不是只活在前一任程序员的脑子里。
  3. cc 不只用 NLP 帮你"开发项目",也帮你"理解项目"。 让它以"按下 D 键"这种具体入口为锚点,把整条链路讲给你听——讲解员、产品顾问、开发同事、调试搭子,它能在一个 session 里轮着扮演。读懂老代码这件事,第一次不需要你独自啃了。
  4. Plan Mode 把 Prompt Engineering 的门槛降到了零。 第一课要我们手动组织 Goal / Input / Output,Plan Mode 把这件事变成了一问一答。AI 替你把 Prompt 拼好,你只需要回答它问的问题。
  5. 接手项目的标准流程:信任 → /init → 让 cc 讲项目 → /plan → 写代码。 核心是"先理解,再规划,再执行"。Vibe Coding 时代不是省略思考,而是把思考的形式从"自己读代码、自己写代码"变成"和 AI 对齐理解、再对齐方案"。
  6. 从写 Prompt、到搭工具链、再到接手项目,AI 在不断往真实工作走。 第一课讲怎么和 AI 沟通,第二课讲 AI 本质上是什么,第三课讲怎么把 Claude Code 这套 Agent 跑起来,这节课讲怎么把它派进一个有别人代码的项目里干活。每一步都离"AI 当员工"更近了一步。

从这节课开始,我对"用 AI 写代码"的理解又下了一层:它不再是"我让 AI 帮我写一段代码",而是"我雇佣一个员工,把项目交给它,然后定期对齐进度"。代码是结果,对齐是过程,员工是 cc。

下一课,继续往下挖。

本文思考来自吴恩达 DeepLearning.ai 课程:AI for Everyone