案例2 · 用 Claude Code CLI 生成 Express 接口并自动自测
本节目标
- 体验 L3 Agent 自主"读仓库 + 改多文件 + 跑命令"
- 得到一个带测试的 Express 接口
- 理解 Agent 模式下"你该把哪些事交给它、哪些自己把"
场景:在空目录里让 Agent 生成一个 GET /api/todos 与 POST /api/todos 的 Express 服务,并自带测试。
给 Agent 的目标(不是步骤):
在当前目录初始化一个最小 Express 服务:
- GET /api/todos 返回内存中的待办列表
- POST /api/todos body={text} 新增一条,返回创建结果
- 用 Node 内置 test runner 写 2 个测试覆盖上述接口
- 跑通 npm test 后再告诉我怎么 npm startAgent 会自主做的事:npm init、npm i express、写 app.js、写 test.js、npm test。你要做的:先看它改了哪些文件、再跑测试确认。
一个最小可运行产物(节选):
// app.js(由 Agent 生成,可直接 node app.js 启动)
const express = require('express')
const app = express()
app.use(express.json())
const todos = []
app.get('/api/todos', (req, res) => res.json(todos))
app.post('/api/todos', (req, res) => {
const item = { id: todos.length + 1, text: req.body.text }
todos.push(item); res.status(201).json(item)
})
app.listen(3000, () => console.log('on :3000'))运行方式:npm init -y && npm i express && node app.js,另开终端 curl localhost:3000/api/todos。
名词解释
- L3 Agent 模式:你给"目标",AI 自主规划步骤、读写多文件、执行命令。适合从零搭建,但务必审阅它的改动。
- 内置 test runner(Node):Node 18+ 自带
node --test,无需额外框架即可写测试,适合让 Agent 顺手补测试。 - 内存存储(In-memory):数据存在进程变量里,重启即丢。仅用于演示/原型;真实服务要接数据库。
课后练习
- 用 L3 Agent 生成服务后,你第一件该做的事是什么?
- 答案:用
git diff或文件列表看清它新建/改了哪些文件,确认没有越界改动,再跑测试。
- 答案:用
- 这个例子的
todos用内存数组,上线会有什么问题?- 答案:进程重启数据全丢、多实例不共享、无并发保护;生产须换数据库(如 SQLite/Postgres)并加持久化。
总结
这个案例展示了 Vibe Coding 最"爽"的形态:L3 Agent 接管了从初始化到自测的全流程,你只给了"目标"而非"步骤"。但爽的背后是责任转移——Agent 自主改多文件,你不能再假装"代码都是我写的所以我知道它干嘛"。我的铁律是:Agent 跑完,第一件事永远是 git diff 看清它动了什么,再跑测试确认行为。很多人被 Agent "自动搞定"的丝滑迷惑,直接上线,结果踩到它自作主张加的依赖或改坏的配置。记住,自主度越高,审阅的权重越大。把"搭建交给它、把关留给你",L3 才是杠杆;把"搭建和把关都交给它",L3 就是地雷。