Cloudflare 工程主管的 Claude Code 工作流:先研究,再规划,最后才写代码
摘要
Boris Tane 分享了他使用 Claude Code 的核心原则:永远不要让 Claude 在你审批计划之前就开始写代码。这套研究-规划-标注-实现的工作流,值得每个用 AI 编程的人借鉴。
Boris Tane 是 Cloudflare 的工程主管,之前创办了 Serverless 可观测性平台 Baselime(2024 年被 Cloudflare 收购)。他最近分享了自己使用 Claude Code 的完整工作流,核心只有一条纪律:
永远不要让 Claude 在你审批计划之前就开始写代码。
这句话听起来简单,但它背后是一套完整的方法论 - 把"思考"和"打字"严格分开。
第一步:研究
每个重要任务都从深度阅读开始。不是让 Claude 扫一眼代码就动手,而是要求它把相关代码彻底读透,然后把发现写进 Markdown 文件。
Boris 特别强调用词的重要性。像"deeply""intricacies""go through everything"这些词不是修辞,而是信号 - 告诉 Claude 浅层阅读不够。不加这些信号,Claude 会倾向于浏览文档然后跳过关键细节。
为什么要写进文件而不是口头总结?因为写下来的东西可以被审查。这防止了最昂贵的失败模式:代码本身能跑,但和周围系统不兼容 - 忽略了缓存层的函数、不遵守 ORM 约定的迁移、重复造轮子的逻辑。
第二步:规划
研究完成后,让 Claude 在单独的 Markdown 文件里写详细的实现计划,包括代码片段、要修改的文件路径、权衡考虑。
Boris 用自定义 Markdown 文件而不是 Claude Code 内置的 plan mode,理由很实际 - 自己控制文件格式,而且文件是持久化的,不会随会话消失。
一个很有价值的技巧:如果你知道某个开源项目有类似的好实现,把那段代码一起给 Claude 做参考。有了具体参考,Claude 的输出质量会明显优于从零设计。
核心环节:标注循环
这是整个工作流里最有区分度的部分。
Claude 写完计划后,Boris 会在编辑器里打开这个 Markdown 文件,直接在计划里加批注 - 指出错误假设、否决某些方案、补充领域知识。比如:
- "用 drizzle:generate 做迁移,不要写原始 SQL"
- "不对 - 这里应该用 PATCH,不是 PUT"
- "这部分整个删掉,我们不需要缓存"
- "visibility 字段应该放在 list 上,不是 item 上"
然后把文件扔回给 Claude:"我加了批注,逐条处理,更新计划。先不要实现。"
这个循环会重复 1 到 6 次。"先不要实现"这句话是安全阀 - 防止 Claude 在计划没确认之前就开始写代码。
为什么这样做比在聊天里来回对话好?因为 Markdown 文件是人和 AI 之间的共享可变状态。批注精确指向问题位置并给出修正,不需要在聊天记录里翻来翻去回忆之前做了什么决定。
三轮标注下来,一个通用的计划就能变成完全贴合现有系统的方案。Claude 擅长理解代码和提出方案,但它不了解产品优先级、用户痛点、团队的工程偏好 - 标注就是注入这些判断的渠道。
第三步:实现
计划确认后,Boris 用一条标准化的指令启动实现:
"全部实现。每完成一个任务或阶段就在计划文档里标记完成。完成之前不要停下来。不要加多余的注释或 jsdoc,不要用 any 或 unknown 类型。持续运行类型检查,确保没有引入新问题。"
这条指令编码了几个关键原则:按计划执行所有内容,不要挑挑拣拣;以计划文档为进度的唯一来源;不要中途暂停等确认;保持代码干净;通过持续类型检查尽早发现问题。
实现阶段应该是机械的、无聊的。 创造性的工作在标注循环里已经完成了。计划对了,执行就是直线前进。
实现过程中的反馈
进入实现阶段后,人的角色变成简短的纠偏。提示变成一句话:
- "你没实现
deduplicateByTitle函数。" - "你把设置页面建在了主应用里,应该在管理后台,移过去。"
前端工作最需要迭代。看着浏览器快速给反馈:"宽一点""还是被裁了""有 2px 的间隙"。
如果方向错了,不要打补丁 - 直接 revert 重来:"我回滚了所有改动。现在我只要把列表视图做得更简洁。"
一个长会话搞定
Boris 倾向于在一个连续会话里完成研究、规划和实现,而不是拆成多个对话。到了实现阶段,Claude 已经通过整个会话 - 研究、标注循环、吸收领域修正 - 建立了足够的理解。
计划文档在 context window 压缩后依然完整保留,这意味着你随时可以用它来校正方向。
一句话总结
深度阅读,写计划,标注计划直到它对了,然后让 Claude 一口气执行完,过程中持续检查类型。
没有魔法提示词,没有精心设计的 system prompt,没有花哨的 hack - 只是把思考和打字严格分开。研究防止无知的改动,计划防止错误的改动,标注注入人的判断,实现指令确保不间断地执行。
这套方法论的本质很朴素:AI 做它擅长的(理解代码、生成代码),人做人擅长的(判断优先级、把控方向、注入领域知识)。两者配合的界面就是那个 Markdown 文件。
相关文章
2026年5月25日
Andrej Karpathy 的一条推,炸出来一个 149K Stars 的 Agent Skill
一月底 Karpathy 在 X 上的一条随手推三天内被高频转发,社区配套写的一份 `CLAUDE.md`(`multica-ai/andrej-karpathy-skills`)3 个月攒下 149K stars、28 天霸占 GitHub trending 第一。把 Karpathy 给 LLM 总结的 3 个老毛病和这份仓库的 4 条规则对着拆,看怎么贴进项目根目录、看哪几个信号判断它真的生效。
2026年3月31日
Claude Code Hooks 实战:自动化你的开发流程
Hooks 是 Claude Code 的隐藏杀器。在 AI 执行操作的前后插入自定义逻辑,实现真正的开发流程自动化。
2026年5月15日
a16z观点:SaaS 的入口正在从数据库挪到推理层
a16z 这周发了一篇观点文章 - From System of Record to System of Intelligence。同一天 Notion 把工作区改造成 AI agent hub。两件事放一起看,是 SaaS 产品形态的一次方向调整 - 入口正在从“我帮你把数据存好”挪到“我帮你拉所有上下文做事”。
最近一封 · Sample
【AI早读 0526】Addy Osmani 提出「你才是编排税」,Hugging Face 重新区分 Model / Scaffolding / Harness / Agent
“Addy Osmani 用 Python GIL 比喻揭穿多 agent 并发的真正瓶颈 - 是开发者本人;Hugging Face 发出官方词汇表,把 Model / Scaffolding / Harness / Agent 这四个被混用的概念锚定下来;Google DeepMind 的 Nicholas Kang 与 Michael Aaron 分享大规模 agent 评估的工程化做法;Bounded Autonomy 把「自由意志 vs 确定性」落到 harness 工程里;Simon Willison 发布 datasette 1.0a30 的可扩展 Jump 菜单 + datasette-agent 联动。”
—— william
来信
里面装的是
- 新文章 — 写完一篇就寄一封,不攒货
- 这周读到的、看到的、好用的工具
- 正在折腾的实验,附带翻车记录
约莫 1–2 周一封 · 随时退订
合作伙伴
CompeteMap — 英国及爱尔兰学生竞赛一站式搜索
数学、编程、科学、写作等各类竞赛信息汇总,支持按年龄和科目筛选,再也不错过报名截止日。