Aklman · Library

10 / 第十章

写码 · 跑通一次循环.

如果你完全不碰代码,这章可以跳过 —— 单拎出来就是为了让你跳得干净。碰的话:这一章你写一份真的 CLAUDE.md,然后用「先写验收标准、再让它实现、最后自己读 diff」跑通一次完整循环。

MD海报

如果你完全不碰代码,这一章可以跳过 —— 把它单独拎出来,就是为了让你能干净地跳过,不必为一项用不上的能力分心。跳之前扫一眼第四节:那里有三件不写码的人也用得上的事。

I

碰代码的活,分四个地方放.

你要做的去哪做为什么
问清一个概念、推敲一段思路网页 chat一问一答,不碰文件
要一个能跑、能改的小东西Artifact(第 7 章)现做现改,不进仓库
在真实仓库里跨文件改、要跑测试Claude Code读仓库、改文件、跑命令、提 commit
把 Claude 接进你自己的程序API(另一条账,第 11 章)程序化调用,按 token 计费
Claude Code 不是编辑器里的自动补全,是一个会读你整个仓库、自己跑命令的 agent:读代码库、改文件、跑命令,再看结果、自己调整,直到把一件事做完。1注 1Claude Code Docs · Overview —— Claude Code 是 agent 化编码工具:读代码库、改文件、跑命令,再评估并调整;在终端、IDE、桌面、浏览器里都能跑,共用同一套引擎与 CLAUDE.md。截至 2026-08。它跑在终端、IDE、桌面与浏览器里,共用同一套引擎与同一份 CLAUDE.md。1注 1Claude Code Docs · Overview —— Claude Code 是 agent 化编码工具:读代码库、改文件、跑命令,再评估并调整;在终端、IDE、桌面、浏览器里都能跑,共用同一套引擎与 CLAUDE.md。截至 2026-08。你的工作从「逐行写」变成「定义任务、审查结果」。 一件很多人不知道的事:Pro 就包含 Claude Code,用的是订阅额度,不需要另开 API 账户。2注 2Anthropic · Claude 套餐与价格 —— Claude Code 列在 Pro 及以上各档的功能内(Free 不含),用的是订阅额度,不需要另开 API 账户。截至 2026-08。它常被当成开发者专属的付费工具,其实你那份 $20 的 Pro 就能跑。代价是它吃额度 —— 重活比闲聊更快撞到限额,这一项会在第 11 章那本账里冒尖。

II

动手:写一份真的 CLAUDE.md.

CLAUDE.md 是放在项目根目录的一份 markdown,它每开一个新会话都先读。它替你回答那些你本来每次都要重新交代的问题。 下面这份可以直接抄,把尖括号里的换成你项目的。它刻意短 —— 第一版写长了没人维护,而过期的 CLAUDE.md 比没有更糟。
CLAUDE.md
# <项目名>
 
<一句话:这个项目是什么,给谁用。>
 
## Running it
 
- Install: `<npm ci>`
- Dev server: `<npm run dev>` (port `<3000>`)
- Env vars live in `.env.local`; see `.env.example`. Never read or
  write real secrets — ask me and I'll set them.
 
## Verifying a change (run these before saying you're done)
 
- Tests: `<npm test>`
- Lint: `<npm run lint>`
- Types: `<npx tsc --noEmit>`
- Build: `<npm run build>`
 
If any of these fail, fix the cause — do not skip the check and do not
use flags that bypass it.
 
## Off-limits
 
- `<src/generated/>` is generated; edit the generator, not the output.
- `<migrations/>` — never edit an existing migration; add a new one.
- Never force-push, never `git commit --no-verify`, never delete a
  file I didn't ask you to delete.
 
## Conventions
 
- <TypeScript strict; no new dependencies unless I approve them.>
- <Match the surrounding file's style rather than the project average.>
- Commit messages: `<type>(<scope>): <subject>`.
 
## How I want you to work
 
- Read the relevant files before changing them. Don't conclude about
  code you haven't opened.
- Make only the change I asked for. No drive-by refactors.
- When you're done, show evidence: the command you ran and its output.
  Not "it works".

五段:这是什么、怎么跑、怎么验、别碰哪儿、我的偏好。第三段最重要 —— 没有那几条命令,它只能靠猜,也没法交证据。

01

先填「怎么验」那一段,别的都可以后补

测试、lint、typecheck、构建四条命令写进去。这四行是全文的重心 —— 它们把「它说做完了」变成「它能证明做完了」,而这正是整章的验收标准。
02

写清禁区,用具体路径

「小心点」没用,「migrations/ 里的现有文件一个都别改,要改加新的」有用。禁区那段是唯一一段值得你反复更新的 —— 每次它动错一个地方,就往这段加一行。
03

放进项目根目录,开一个新会话验一次

开一个新会话,只问一句「这个项目怎么跑起来、怎么验证一个改动」。它答不上来,就是这份文件没写清 —— 这一问比读十遍自己写的文档管用。

III

动手:跑通一次循环.

顺序是先写验收标准、再让它实现、最后自己读 diff。这三步的顺序比每一步本身更重要。
01

挑一个跨 3 个以上文件的小改动

太小的(改个文案)显不出差别,太大的(重构整个模块)第一次容易失控。跨三个文件、有明确对错的那种最合适 —— 比如修一个你已经知道复现步骤的 bug。
02

先让它写一个会失败的测试

这是整章最值钱的一步。先有一个能复现问题、现在会红的测试,验收标准就从「你觉得对不对」变成「这条测试红转绿了没有」。官方把「给它一个能自己跑的检查」称作最高杠杆,就是这个意思。
03

贴护栏,让它去改

用下面那段护栏开场。然后别盯着它一行行看 —— 你要审的是结果,不是过程;盯着看只会让你忍不住替它写。
04

要证据,然后自己读 diff

它说做完了,你要的是那条命令的输出。看完输出再读 diff —— 记下哪一步它明显比你快、哪一步你还是得自己改。这条分工就是你之后该不该开终端的依据。
提示词Claude Code 起手护栏
动手前先读相关文件,没读过的代码不要下结论。
只做我要求的改动,别顺手重构、别加没要的抽象。
不可逆的动作(删文件 / force-push / 对外发消息)先问我;别用 --no-verify 这类绕过检查的捷径。
做完给我证据:跑了哪些命令、输出是什么,而不是一句「我搞定了」。
任务:<把任务贴这里>。验收标准:<哪条测试要从红变绿 / 什么行为要变>
动手前先读 src/auth/session.ts 和它的测试,没读过的代码不要下结论。
只把这个登录超时的 bug 修掉,别顺手把整个 session 模块重构、别加没要的缓存层。
不可逆的动作(删 migration 文件 / force-push 到 main / 给 Slack 发上线通知)先问我;别用 --no-verify 这类绕过检查的捷径。
做完给我证据:跑了 npm test 之后的输出贴上来,而不是一句「我搞定了」。
任务:修复并发登录时 session 提前过期的问题。验收标准:tests/auth/session.concurrent.test.ts 从红变绿,其余测试不许变红。
越是放手让它自己跑,越要先给护栏。4注 4Claude API Docs · Prompting best practices —— 给它护栏:不可逆动作先确认、别用 --no-verify 等破坏性捷径;代码评审要它「全报别过滤」;先读文件防幻觉、只做被要求的防过度工程。截至 2026-08。上面那段里最容易被删掉、也最不该删的是最后一句 —— 「给我证据,不是断言」。官方把「给它一个能自己跑的检查」称作最高杠杆:能自己验的活,你才敢真走开;验不了的,diff 还得你一行行看。5注 5Claude Code Docs · Best practices —— 最高杠杆是「给它一个能自己跑的检查」,让它交证据(测试输出 / 命令 / 截图)而不是交断言。截至 2026-08。 让它做代码评审时,要反过来说一句:
提示词Claude Code · 评审模板
评审这个 <diff / PR / 这几个文件>,别改代码,只给意见。
先读相关文件和它依赖的地方,没读过的别评。
全列出来、别替我过滤:按「会出错 / 安全 / 可简化」分类,每条标 文件:行 + 一句为什么。
能复现的问题给复现步骤;拿不准的也写上,标「拿不准」。
最后一句:这个改动能不能合,还缺什么。
评审这个 PR(登录超时的修复),别改代码,只给意见。
先读 src/auth/session.ts 和调用它的地方,没读过的别评。
全列出来、别替我过滤:按「会出错 / 安全 / 可简化」分类,每条标 文件:行 + 一句为什么。
能复现的问题给复现步骤;拿不准的也写上,标「拿不准」。
最后一句:这个改动能不能合,还缺什么(比如缺一个并发场景的测试)。
那句「全报、别替我过滤」是刻意的。你随口说一句「保守点、只报严重的」,它真会把查到的小 bug 咽回去不报 —— 宁可多报几条你再筛,也别让它默默吞掉一个真 bug。4注 4Claude API Docs · Prompting best practices —— 给它护栏:不可逆动作先确认、别用 --no-verify 等破坏性捷径;代码评审要它「全报别过滤」;先读文件防幻觉、只做被要求的防过度工程。截至 2026-08。

IV

不写码,也用得上的三件事.

一个装了三百张扫描件、命名乱七八糟的文件夹,按「年份-供应商-金额」重命名并分文件夹。给它护栏那句「不可逆动作先问我」,并且先让它把改名计划打印出来给你看,确认无误再执行。这件事 Cowork 也能做(第 8 章),区别是终端里你能先看到完整的计划。
改一个你不太懂的配置文件(nginx、CI 的 yaml、某个工具的 toml),让它先解释每一行现在在做什么、再改。这一栏的价值不在改,在那句「先解释」—— 你会发现自己维护了两年的配置里,有三行谁也不知道是干嘛的。
「把这个 CSV 按某列拆成十二个文件」这种活,让它写一个一次性脚本跑掉,比在 Excel 里点二十分钟快。关键在于要它把脚本留下来 —— 下次同样的活,你只要改一个参数。这就是把一次性劳动变成一件资产。

都不需要你会编程,只需要你会用终端敲一条命令 —— 或者干脆让它替你敲。共同点:都是「一堆文件上的重复操作」。

V

边界:什么时候别开终端.

没有验收标准的活
「让这段代码更好一点」在终端里最容易变成一场漫无目的的长会话。它最强的是「有明确验收标准」的活 —— 定不出标准,先回网页 chat 把标准想清楚。
你读不懂的 diff
它把瓶颈从打字挪到了读 diff。你审 diff 的速度就是你的速度 —— 如果那段代码你根本读不懂,交给它做只是把风险往后推了一步。
先别急着上自动化
再往上它能更自动:hooks 在它动作前后跑命令、subagents 并行做一件大任务的不同部分、background agents 让你一屏盯几个会话。3注 3Anthropic · Enabling Claude Code to work more autonomously —— 后台 agent、子 agent 与 hooks,让一次会话并行推进多件事。但对个人用户,先把单会话用顺就够 —— 这些值不值得碰,看你的活是不是真能拆开并行。
Agent SDK 是另一回事
再往外的 Agent SDK 是给你自己搭定制 agent 的,那是开发者地界,这本书不展开。

VI

收束 · 本章验收.

终端里它做得快, 但 diff 还得你看.

It's fast in the terminal, but the diff is still yours to read.

Aklman Library

讨论

讨论.

评论区初始化中…