1. 这份手册到底在讲什么
Anthropic 把内部用了很久的一套 AI 原生软件开发方法公开了,名字叫The AI-Native SDLC Playbook。SDLC 就是软件开发生命周期,从需求到设计、编码、测试、部署、运维这一整条链路。这份手册的核心主张很直接:把 AI 当成团队里的一个正式成员,而不是一个偶尔用用的辅助工具。
我第一时间把这份手册通读了一遍,又结合自己这两年用 Claude Code 做项目的实际经验对照着看,发现它讲的很多东西确实踩中了痛点。比如很多人用 AI 写代码,就是打开对话框问一句“帮我写个函数”,然后复制粘贴,这种用法效率提升有限,而且代码质量参差不齐。手册里提出的做法是:让 AI 参与到需求澄清、方案设计、代码审查、测试用例生成、文档维护的每一个环节,并且给 AI 提供足够的上下文,让它理解整个项目的结构和约束。
这份手册适合谁看?我认为三类人最需要:一是正在带团队的技术负责人,需要一套可落地的流程来规范 AI 的使用;二是独立开发者或小团队,想用 AI 把产出效率拉满;三是刚接触 AI 编程工具的新手,想少走弯路,直接学一套被验证过的方法论。不管你用的是 Claude Code、还是其他 AI 编程助手,这套思路都是通用的。
接下来我会把手册里的核心内容拆开,结合我自己的实操经验,把每一步怎么做、为什么这么做、容易踩什么坑,都讲清楚。
2. AI 原生开发的核心思路拆解
2.1 从“AI 辅助”到“AI 原生”的本质区别
很多人对 AI 编程的理解还停留在“辅助”层面:我写代码,AI 帮我补全;我遇到 bug,AI 帮我看看。这种模式下,AI 是一个被动的工具,你问它才答,你不问它就不动。
AI 原生的思路完全不一样。它要求你把 AI 当成一个主动的协作者,在项目启动阶段就让 AI 介入,让它参与需求分析、架构设计、任务拆解。手册里有一个很关键的观点:AI 的输出质量,取决于你给它的上下文质量。你只给它一个函数名,它只能猜;你把整个项目的目录结构、依赖关系、编码规范、业务背景都告诉它,它给出的方案就完全不一样。
我自己的做法是,每个新项目开始的时候,先花半小时写一份CLAUDE.md文件放在项目根目录,里面包含:项目是做什么的、技术栈是什么、目录结构说明、代码风格要求、常用的命令、已知的约束条件。这份文件就是 AI 的“入职培训材料”,它每次读到这个文件,就能快速进入状态,不用我反复解释。
2.2 为什么选择“手册”而不是“工具教程”
市面上大部分 AI 编程的内容都是工具教程:怎么安装、怎么配置、怎么调用 API。这些内容有用,但解决不了根本问题。工具会变,今天用 Claude Code,明天可能换别的,但开发流程和方法论是相对稳定的。
Anthropic 公开这份手册,本质上是在输出一套“怎么和 AI 一起干活”的规范。它不绑定具体工具,而是定义了一套协作模式。比如它强调“小步提交、频繁审查”,这个原则不管你用什么 AI 工具都适用。再比如它建议“让 AI 先写测试再写实现”,这也是通用的工程实践,只是 AI 让这个实践变得更容易执行了。
我踩过的一个坑是:一开始用 AI 写代码,总想让它一次生成一大坨,结果出来的东西看着能跑,但结构混乱,改起来特别费劲。后来我改成让 AI 一次只做一件事,做完我审查一遍,确认没问题再继续下一步。虽然看起来慢了,但整体返工率大幅下降,最终反而更快。
2.3 手册里最值得关注的三个原则
我把手册里反复强调的原则归纳成三条,这三条是我认为最核心的:
第一条:上下文优先。在让 AI 做任何事之前,先确保它掌握了足够的信息。这包括项目背景、代码规范、当前任务的目标、相关的历史决策。手册里甚至建议把架构决策记录(ADR)也纳入 AI 的上下文,这样 AI 在做新决策时能参考过去的经验。
第二条:人在回路。AI 可以生成代码、可以提方案,但最终的决策权和审查责任在人。手册明确说,不要让 AI 直接合并代码到主分支,必须经过人工审查。这不是不信任 AI,而是因为 AI 缺乏对业务上下文和长期影响的判断力。
第三条:迭代而非一次性。不要指望 AI 一次就给出完美方案。正确的做法是:先让 AI 出一个初稿,然后你给反馈,它修改,你再反馈,它再改。这个循环越快,最终质量越高。手册里把这叫做“对话式开发”,我觉得很贴切。
3. 核心环节的实操要点
3.1 项目初始化:把 AI 拉进项目的第一天
项目初始化阶段,很多人觉得没什么可做的,建个仓库、装个依赖就完了。但在 AI 原生开发里,这个阶段至关重要,因为你要在这里建立 AI 的工作环境。
具体怎么做?我总结了一个清单:
- 创建
CLAUDE.md或类似的上下文文件,写明项目概述、技术栈、目录结构、编码规范、常用命令。 - 如果项目有特殊的业务逻辑,写一份简短的业务背景说明,让 AI 理解“为什么做这个”。
- 配置好 AI 工具的权限,比如允许它读哪些目录、执行哪些命令。Claude Code 默认会请求权限,你可以提前配置好白名单,减少打断。
- 建立一个
docs/目录,把需求文档、设计文档、API 文档都放进去,方便 AI 检索。
我自己的习惯是在CLAUDE.md里加一段“常见任务”说明,比如“如果要添加新的 API 端点,参考src/routes/下的现有文件;如果要修改数据库 schema,先更新migrations/目录”。这样 AI 在接到任务时,知道去哪里找参考,不用我每次都说。
注意:上下文文件不要写得太长,控制在 500 行以内。太长了 AI 处理起来慢,而且重点不突出。把最关键的约束和规范放前面,细节可以放到单独的文档里,让 AI 按需读取。
3.2 需求阶段:让 AI 帮你把模糊需求变清晰
需求阶段最大的问题是“需求不明确”。产品经理说“我要一个用户管理功能”,这句话背后有无数种实现方式。传统做法是开会讨论、写 PRD,但在 AI 原生开发里,你可以让 AI 帮你做需求澄清。
具体操作:把原始需求丢给 AI,让它列出所有它不确定的点。比如你输入“实现一个用户管理功能”,AI 可能会问:用户需要注册吗?需要邮箱验证吗?需要角色权限吗?需要支持第三方登录吗?这些问题就是你需要和产品经理确认的。
我实测下来,这个做法特别有效。以前我要反复和产品沟通好几轮才能把需求定下来,现在让 AI 先过一遍,它提出的问题往往比我想到的还全面。我把 AI 的问题整理成一份清单,直接发给产品经理,一轮就能把大部分模糊点确认掉。
手册里还提到一个技巧:让 AI 把需求转写成用户故事和验收标准。比如“作为一个新用户,我可以通过邮箱注册账号,注册后收到验证邮件,点击验证链接后账号激活”。这种格式比干巴巴的功能描述清晰得多,而且可以直接作为测试用例的基础。
3.3 设计阶段:AI 做方案,人做决策
设计阶段是 AI 最能发挥价值的地方之一。你可以让 AI 针对同一个需求给出多个技术方案,然后对比它们的优缺点。
我的做法是:把需求描述和项目上下文一起给 AI,让它输出 2-3 个方案,每个方案包括技术选型、架构图(文字描述)、关键流程、潜在风险。然后我拿着这些方案去和团队讨论,最终拍板。
这里有一个关键点:不要让 AI 直接决定用哪个方案。AI 可以帮你分析利弊,但它不了解团队的技能储备、历史包袱、业务优先级。比如 AI 可能推荐用某个新技术,但团队没人会,学习成本太高,这时候你就得选一个更稳妥的方案。
手册里建议把设计决策记录下来,形成 ADR(架构决策记录)。我现在的做法是,每次做完设计决策,让 AI 帮我生成一份 ADR 草稿,我修改后提交到仓库。这样后续 AI 在做相关决策时,可以读取这些 ADR,保持一致性。
3.4 编码阶段:小步快跑,频繁审查
编码阶段是大家最熟悉的环节,但 AI 原生开发的做法和传统方式有很大不同。
传统方式:我写代码,遇到问题查文档、搜 Stack Overflow。AI 原生方式:我描述任务,AI 生成代码,我审查,给反馈,AI 修改,循环直到满意。
这里的关键是任务拆解。不要把一个大功能整个丢给 AI,而是拆成小任务。比如“实现用户注册”可以拆成:定义数据模型、写数据库迁移、实现注册接口、写单元测试、写集成测试。每个小任务单独让 AI 做,做完审查,确认没问题再进入下一个。
我自己的经验是,每个小任务的代码量控制在 200 行以内。超过这个量,AI 容易出错,审查也费劲。如果任务确实大,就继续拆。
审查的时候,我重点关注几个方面:逻辑是否正确、边界条件是否处理、错误处理是否完善、是否有安全隐患、是否符合项目规范。AI 生成的代码经常在边界条件上出问题,比如空值处理、并发场景、超时重试,这些都需要人工补上。
提示:让 AI 在生成代码的同时生成对应的测试用例。我通常会让 AI 先写测试,再写实现,这样能确保代码是可测试的,而且测试用例本身就是一种需求文档。
3.5 测试阶段:AI 是测试用例的生产力工具
测试阶段,AI 能帮你做很多事:生成单元测试、生成集成测试、生成边界测试用例、分析测试覆盖率、甚至帮你写测试数据。
我的做法是:每完成一个模块,让 AI 分析代码,找出所有可能的分支和边界条件,然后生成对应的测试用例。AI 在这方面比人细心,它不会漏掉那些“看起来不可能发生”的情况。
但要注意,AI 生成的测试用例需要审查。有些测试是无效的,比如断言写得太宽松,或者测试逻辑本身有 bug。我一般会跑一遍测试,看看覆盖率报告,然后针对没覆盖到的分支手动补测试。
手册里还提到一个做法:让 AI 根据需求文档生成验收测试。这些测试从用户视角出发,验证功能是否满足需求。我觉得这个做法很好,因为它把需求和测试直接关联起来了,需求变了,测试也跟着变。
3.6 部署与运维:AI 帮你写脚本、查日志
部署和运维阶段,AI 也能帮上忙。比如写 CI/CD 配置、写部署脚本、分析日志、排查线上问题。
我经常用的一个场景是:线上出了 bug,我把错误日志和相关的代码片段一起给 AI,让它分析可能的原因。AI 有时候能给出很准的猜测,比如“这个空指针可能是因为上游服务返回了空数组”。当然,最终还是要人去验证,但 AI 能大幅缩短排查时间。
另一个场景是写运维脚本。比如“写一个脚本,每天凌晨清理 7 天前的日志文件”,AI 几秒钟就能生成,我审查一下就能用。这种小工具以前要花半小时写,现在几分钟搞定。
4. 常见问题与排查技巧实录
4.1 AI 生成的代码跑不起来怎么办
这是最常见的问题。AI 生成的代码看着没问题,一跑就报错。我的排查思路是:
- 先看错误信息,把完整的错误堆栈给 AI,让它分析。
- 检查依赖版本,AI 可能用了某个库的新 API,但你项目里装的是旧版本。
- 检查环境变量和配置,AI 不知道你的本地环境,可能假设了一些不存在的配置。
- 检查文件路径,AI 可能引用了不存在的文件。
我遇到最多的情况是依赖版本不匹配。解决办法是在CLAUDE.md里写明项目用的依赖版本,让 AI 生成代码时参考。
4.2 AI 总是忘记之前的约定怎么办
AI 没有长期记忆,每次对话都是新的开始。如果你发现 AI 总是忘记项目规范,比如命名风格、目录结构,那说明你的上下文文件没写好。
解决办法:把重要的约定写在CLAUDE.md里,并且放在显眼的位置。如果某个约定特别重要,可以在每次对话开始时重复一遍。另外,Claude Code 支持在对话中引用文件,你可以直接说“参考CLAUDE.md里的规范”。
4.3 AI 生成的代码风格和项目不一致
这个问题很常见。AI 有它自己的“默认风格”,比如用双引号还是单引号、用 tab 还是空格、函数命名用驼峰还是下划线。如果项目有 ESLint 或 Prettier 配置,让 AI 读取这些配置文件,它就会遵循。
我的做法是在CLAUDE.md里写明:“代码风格遵循项目根目录的.eslintrc和.prettierrc配置”。然后让 AI 在生成代码后自动运行格式化命令。Claude Code 可以执行命令,你可以让它生成代码后跑一下npm run lint --fix。
4.4 AI 给出的方案太复杂怎么办
AI 有时候会过度设计,给你一个特别复杂的方案。比如你只是要加一个简单的缓存,它给你搞了一套分布式缓存架构。
遇到这种情况,直接告诉 AI:“这个方案太复杂了,给我一个更简单的”。AI 会调整。你也可以在上下文文件里写明项目的设计原则,比如“优先简单方案,避免过度设计”。
4.5 常见问题速查表
| 问题现象 | 可能原因 | 解决办法 |
|---|---|---|
| 代码跑不起来 | 依赖版本不匹配 | 在上下文中写明依赖版本 |
| AI 忘记约定 | 上下文文件缺失或不清晰 | 完善CLAUDE.md,重要约定放前面 |
| 代码风格不一致 | 未读取项目配置文件 | 让 AI 读取 ESLint/Prettier 配置 |
| 方案过于复杂 | AI 默认倾向过度设计 | 明确要求简单方案,写明设计原则 |
| 测试用例无效 | AI 生成的断言太宽松 | 人工审查测试用例,补充边界测试 |
| 上下文丢失 | 对话太长,超出窗口 | 开启新对话,重新加载上下文文件 |
4.6 几个我踩过的坑
第一个坑:不要让 AI 同时做太多事。我曾经让 AI 一次性实现三个功能,结果它把代码混在一起,改起来特别痛苦。后来我改成一次只做一个功能,做完提交,再做下一个。
第二个坑:不要跳过审查。有一次我赶时间,AI 生成的代码没仔细看就提交了,结果线上出了 bug。后来我定了个规矩:AI 生成的代码必须逐行审查,不确定的地方就让它解释。
第三个坑:不要忽视测试。AI 生成的代码有时候逻辑是对的,但边界条件没处理。比如一个除法函数,AI 没处理除数为零的情况。后来我养成了习惯,让 AI 生成代码后,专门问一句“这个函数有哪些边界条件需要处理”。
5. 工具链与工作流配置
5.1 Claude Code 的安装与基础配置
Claude Code 是 Anthropic 推出的命令行 AI 编程工具,可以直接在终端里和 AI 对话,让它读写文件、执行命令。安装方式很简单,官方文档有详细说明。我重点讲几个配置上的经验。
安装完成后,第一件事是配置权限。Claude Code 默认会请求权限才能执行命令或修改文件,你可以通过配置文件设置白名单,减少打断。比如允许它读取项目目录、运行测试命令、执行 git 操作。
第二件事是创建CLAUDE.md。这个文件放在项目根目录,Claude Code 启动时会自动读取。我前面已经讲过怎么写,这里补充一点:你可以用@符号引用其他文件,比如@docs/architecture.md,这样 AI 就知道去哪里找详细信息。
第三件事是配置快捷键和别名。我习惯把claude命令设一个短别名,比如c,这样启动更快。另外,Claude Code 支持在对话中按Ctrl+C中断,按Ctrl+D退出,这些快捷键用熟了效率很高。
5.2 把 AI 集成到 Git 工作流
AI 原生开发里,Git 工作流也需要调整。我的做法是:
- 每个小任务开一个分支,AI 生成的代码提交到这个分支。
- 提交信息让 AI 生成,格式遵循 Conventional Commits,比如
feat: add user registration endpoint。 - 合并前必须经过人工审查,审查通过后再合并到主分支。
- 如果 AI 生成的代码有问题,直接在分支上修改,不要在主分支上改。
这样做的好处是,AI 的每一次产出都有记录,出了问题可以追溯。而且分支隔离让主分支保持稳定,不会因为 AI 的失误影响整个项目。
5.3 上下文管理的最佳实践
上下文管理是 AI 原生开发的核心技能。我的经验是:
- 分层管理:项目级上下文放在
CLAUDE.md,模块级上下文放在各目录的README.md,任务级上下文在对话中提供。 - 按需加载:不要一次性把所有文档都塞给 AI,而是让它按需读取。比如你说“参考
docs/api.md里的接口定义”,AI 就会去读那个文件。 - 定期更新:项目在演进,上下文文件也要跟着更新。我一般每周花 10 分钟检查一下
CLAUDE.md,把过时的内容删掉,把新的约定加进去。 - 版本控制:上下文文件也要提交到 Git,这样团队成员可以共享,而且能看到变更历史。
5.4 团队协作中的 AI 使用规范
如果是团队使用,需要制定一些规范,避免混乱。我建议至少明确以下几点:
- 哪些任务可以用 AI 做,哪些必须人工完成。比如核心业务逻辑建议人工写,AI 辅助审查;样板代码、测试用例可以 AI 生成。
- AI 生成的代码必须经过审查才能合并,审查人和生成人不能是同一个人。
- 上下文文件由专人维护,定期更新,团队成员都可以提建议。
- 定期复盘 AI 的使用效果,哪些地方提效明显,哪些地方问题多,持续优化流程。
6. 从手册到落地:我的实操建议
6.1 先从小项目试点
如果你刚开始尝试 AI 原生开发,不要一上来就在核心项目上搞。先找一个小项目,或者一个大项目里的非核心模块,试点这套流程。跑通之后再逐步推广。
我自己的做法是,先在一个内部工具项目上试了一个月,把流程跑顺了,才用到正式项目上。试点期间踩的坑,都是宝贵的经验。
6.2 建立自己的提示词库
用 AI 久了,你会发现某些提示词特别有效。比如“先写测试再写实现”、“给出三个方案并对比”、“解释这段代码的逻辑”。把这些提示词整理成一个库,下次直接复用。
我的提示词库分几类:需求澄清类、方案设计类、代码生成类、代码审查类、测试生成类、问题排查类。每类下面有几个常用的提示词模板,用的时候稍微改一下就行。
6.3 定期回顾和优化
AI 原生开发不是一劳永逸的,需要持续优化。我每个月会花半小时回顾一下:这个月 AI 帮我做了哪些事、哪些做得好、哪些做得不好、流程上有什么可以改进的。
比如我发现 AI 在生成数据库迁移脚本时经常出错,后来我就在上下文文件里加了一段“数据库迁移规范”,明确要求 AI 参考现有的迁移文件格式,之后出错率就降下来了。
6.4 保持学习,但不要追新
AI 领域变化很快,新工具、新方法层出不穷。我的态度是:保持关注,但不要盲目追新。先把一套流程用熟,用出效果,再考虑引入新东西。
Anthropic 这份手册的价值在于,它提供了一套经过验证的方法论。你不需要完全照搬,但可以把它作为起点,结合自己的实际情况调整。我用了两个月,逐步把手册里的做法融入到日常开发中,现在 AI 已经成了我团队里不可或缺的一员。
最后分享一个小心得:把 AI 当成一个聪明但需要指导的新人。你给它的信息越充分、指导越具体,它的产出就越好。不要指望它读心,也不要因为它偶尔犯错就放弃。磨合一段时间,你会发现自己已经离不开这种工作方式了。