AI(人工智能)编程工具已经不只是“帮忙补全几行代码”的助手。用得好,它可以参与需求拆解、技术方案设计、代码生成、单元测试、代码审查和文档维护;用得不好,它也可能生成一堆看似完整、实际难以合入的代码。
Claude Code 的关键价值不在于替开发者写完所有代码,而在于把开发过程中的一部分认知负担转移出去:重复性的代码让 AI 处理,复杂判断仍由人控制。要做到这一点,不能只会输入一句“帮我实现某某功能”,而要把 AI 当成一个需要明确上下文、边界、约束和反馈节奏的协作者。
开发中的三个典型问题
日常开发里的低效率,很多并不是编码速度慢造成的,而是出现在需求理解、上下文切换和协作传递上。
| 问题 | 具体表现 | AI 辅助的切入点 |
|---|---|---|
| 上下文切换成本高 | 开发者在需求、架构、代码、测试之间频繁切换,每切一次都要重新加载业务背景 | 把需求、约束、设计方案外化成结构化上下文,让 AI 帮助维护任务状态 |
| 知识传递效率低 | 项目规范、历史设计、踩坑经验分散在文档和个人经验里,新成员很难快速掌握 | 通过 CLAUDE.md、SKILL 和知识库把团队规范沉淀为可复用规则 |
| 开发流程割裂 | 需求、设计、编码、审查串行传递,等发现问题时已经产生大量返工 | 让 AI 在每个阶段生成中间产物,并通过人工确认控制方向 |
更合理的方式是把 Claude Code 放进开发流程,而不是把它当成一个“代码生成按钮”。
flowchart LR
A[需求输入] --> B[结构化需求]
B --> C[技术方案]
C --> D[模块拆分]
D --> E[代码实现]
E --> F[测试与审查]
F --> G[合入与文档更新]
B -.人工确认.-> C
C -.人工确认.-> D
F -.问题反馈.-> E
这里的重点是“结构化”和“确认节点”。AI 可以快速产出内容,但开发者必须在关键节点做方向判断。
Claude Code 的核心能力应该怎么用
Claude Code 常见的几个能力包括对话流设计、Plan 模式、系统提示词、SKILL、MCP(Model Context Protocol,模型上下文协议)和 SubAgent(子代理)。这些能力不是孤立功能,而是可以组合成一套 AI 辅助开发流程。
对话流设计:让 AI 在正确边界内思考
很多 AI 生成代码质量不稳定,并不是模型能力不足,而是输入太模糊。
比如一句:
帮我实现一个商家信息查询接口。
AI 可能只生成基础的 Controller、Service、Mapper,却不知道这些隐含要求:
- 查询结果需要按当前用户的数据权限过滤;
- 手机号、身份证号等敏感字段需要脱敏;
- 接口需要使用项目已有的权限注解;
- 返回格式必须符合统一响应模型;
- 查询条件要记录操作日志;
- 分页大小需要有限制。
对话流设计的目的,就是把这些隐含条件显式写出来,减少 AI 自由发挥的空间。
一个可复用的任务输入模板可以这样写:
# 任务目标
实现商家信息查询接口,支持按商家 ID、商家名称、商家状态查询。
# 功能边界
要做:
- 分页查询商家信息
- 按当前用户数据权限过滤结果
- 对手机号、身份证号脱敏
- 记录查询操作日志
不做:
- 不实现商家新增、编辑、删除
- 不修改现有商家主表结构
# 必须遵守
- Controller 返回 Result<T>
- 权限校验使用 @Permission
- 参数校验使用 @Valid 和 ValidatorUtil
- DTO 转换使用 ConvertUtil
- 数据访问使用 MyBatis-Plus
# 交付物
- Controller
- Service
- DTO
- Mapper 查询方法
- 单元测试
# 工作方式
先输出接口设计和实现计划,等待确认后再生成代码。
对话流有三个关键原则。
| 原则 | 做法 | 解决的问题 |
|---|---|---|
| 单次聚焦 | 一个对话线程只处理一个功能模块 | 避免多个模块的规则混在一起 |
| 约束明确 | 把“遵循项目规范”改成具体规则 | 减少 AI 猜测 |
| 增量推进 | 先方案,再接口,再核心逻辑,再补测试 | 避免一次生成大量错误代码 |
“遵循项目规范”对 AI 来说太宽泛,效果远不如“接口返回统一使用 Result<T>,错误码从 ErrorCode 中选择,飞书消息必须通过 FeishuClient 发送”。
Plan 模式:把复杂需求拆成可执行模块
复杂需求不能直接丢给 AI 生成代码。比如“实现一个拜访任务系统”,里面可能包含任务创建、审批、日程同步、列表查询、结果提交、导入、统计、通知、状态流转等功能。如果直接生成,很容易出现模块边界混乱、技术选型不一致、状态流转缺失等问题。
Plan 模式适合处理这种大任务。它本质上借鉴了 WBS(Work Breakdown Structure,工作分解结构):先拆模块,再设计方案,再排优先级。
flowchart TD
A[复杂需求] --> B[需求分析]
B --> C[模块拆分]
C --> D[技术方案设计]
D --> E[依赖关系梳理]
E --> F[优先级排序]
F --> G[分阶段实现]
以“拜访任务线上化”为例,可以先拆出这样的模块清单:
| 优先级 | 模块 | 核心职责 | 主要技术点 | 复杂度 |
|---|---|---|---|---|
| P0 | 任务创建 | 创建拜访任务,保存基础信息、拜访对象、参与人员 | MySQL 事务、多表写入 | Medium |
| P0 | 任务详情 | 查询任务详情,聚合商家、人员、拜访对象信息 | MySQL 关联查询 | Low |
| P0 | 任务列表 | 分页查询任务,支持多维筛选 | MySQL 查询,后续可迁移 Elasticsearch | Medium |
| P0 | 拜访结果提交 | 提交拜访记录、上传附件、记录拜访内容 | MySQL、OSS(对象存储服务) | Medium |
| P1 | 任务审批 | 接入飞书审批,支持提交、通过、驳回 | 飞书审批 API(应用程序编程接口)、状态流转 | High |
| P1 | 日程同步 | 审批通过后同步到飞书日历 | 飞书日历 API、异常补偿 | Medium |
| P1 | 任务触达 | 任务开始、结束、上传提醒 | 飞书消息卡片 | Medium |
| P2 | 任务分配 | 批量分配任务给运营人员 | 分配策略、任务负载校验 | High |
| P2 | 任务导入 | Excel 批量导入拜访任务 | 文件解析、数据校验、批量插入 | High |
| P2 | 任务统计 | 按类型、状态统计任务数量 | Elasticsearch 聚合或 MySQL 聚合 | Low |
| P3 | ES 同步 | 将任务数据同步到 Elasticsearch | 事件驱动、批量写入 | Medium |
| P3 | 状态变更 | 定时更新任务状态 | 定时任务、批量更新 | Low |
这个拆分能让 AI 明确每次只实现哪个模块,也能让开发者控制交付顺序。
一个更稳妥的落地节奏是:
| 阶段 | 目标 | 实现模块 |
|---|---|---|
| 阶段一 | 打通基础链路 | 任务创建、任务详情、任务列表 |
| 阶段二 | 补齐生命周期 | 任务审批、日程同步 |
| 阶段三 | 形成业务闭环 | 拜访结果提交、任务触达 |
| 阶段四 | 提升运营效率 | 任务分配、任务导入、任务统计 |
| 阶段五 | 按需优化查询性能 | ES 同步、状态变更 |
Plan 模式的价值不只是让 AI 有计划地工作,也让人可以在“模块边界”和“实现顺序”上提前发现问题。
CLAUDE.md:系统提示词要像护栏,不要像百科全书
CLAUDE.md 可以理解为 Claude Code 的团队规则文件。它告诉 AI 当前项目的技术栈、编码约束、工作方式和禁止事项。
常见错误是把 CLAUDE.md 写得特别长,从架构说明到代码规范全部塞进去。上下文越长,AI 越容易抓不住重点。系统提示词更适合做“护栏”,把高频出错点和硬性规则写清楚。
一个简洁的 CLAUDE.md 可以这样组织:
# Role
你是当前项目的后端开发助手,负责根据既有架构生成可合入代码。
# Hard Rules
- 不要修改未被任务明确要求修改的模块。
- Controller 返回统一使用 Result<T>。
- Service 必须遵循现有分层结构,不要绕过已有领域服务。
- 数据库操作使用 MyBatis-Plus。
- 第三方调用必须复用项目已有 Client,不要重复封装。
- 所有入参必须做非空校验和业务校验。
# Workflow
- 复杂任务先输出方案和文件变更列表,等待确认后再写代码。
- 每完成一个模块,需要说明修改了哪些文件、覆盖了哪些测试。
- 不确定时先提问,不要自行假设业务规则。
系统提示词可以按三类信息维护:
| 模块 | 应该写什么 | 不适合写什么 |
|---|---|---|
| 角色定位 | AI 在项目中的职责,例如后端开发助手、代码审查助手 | 过长的业务背景故事 |
| 硬性约束 | 返回格式、分层架构、权限注解、异常处理、禁止修改范围 | 所有历史设计细节 |
| 工作流程 | 先方案后代码、先确认表结构、生成后说明变更 | 大量与当前任务无关的流程说明 |
更好的做法是让 CLAUDE.md 引导 AI 去查文档,而不是把所有知识复制进去:
遇到分布式事务问题时,参考 docs/distributed-transaction.md。
遇到飞书消息发送问题时,复用 FeishuClient,调用示例参考 docs/feishu-message.md。
这样能降低系统提示词长度,也能让团队知识沉淀在更容易维护的位置。
SKILL:把稳定经验封装成可复用能力
SKILL 适合沉淀高频、稳定、规则明确的开发经验。它不是普通 Prompt 的简单收藏,而是把“某类任务应该怎么做”封装成可重复调用的能力。
适合封装成 SKILL 的场景包括:
| 场景 | SKILL 内容 |
|---|---|
| Elasticsearch 查询接入 | 索引命名、查询 DSL 写法、分页规则、聚合查询模板 |
| Redis 缓存更新 | 缓存 key 规范、过期时间、缓存击穿处理、删除与更新顺序 |
| 分布式锁处理 | 加锁方式、超时时间、异常释放、冲突返回 |
| 乐观锁重试 | 版本号校验、重试次数、失败提示 |
| 飞书消息发送 | 消息卡片模板、重试策略、异常降级 |
比如团队内部已经有统一的 Elasticsearch SDK(Software Development Kit,软件开发工具包),就可以把调用方式、分页规范、异常处理和示例代码封装成 SKILL。以后遇到搜索需求,AI 不需要重新猜测实现方式,而是按团队固定模式生成代码。
MCP:让 AI 连接外部工具和数据源
MCP 解决的是 AI 与外部系统连接的问题。没有 MCP 时,AI 主要依赖对话上下文和静态文件;接入 MCP 后,AI 可以在授权范围内读取文档、创建文档、追加表格数据或调用内部工具。
flowchart LR
A[Claude Code] --> B[MCP Server]
B --> C[需求文档]
B --> D[知识库]
B --> E[多维表格]
B --> F[内部工具]
常见用法有三类:
| 场景 | 工作方式 |
|---|---|
| 读取 PRD | 用户提供 PRD(Product Requirements Document,产品需求文档)链接,AI 通过 MCP 读取内容,再生成技术方案 |
| 创建技术方案 | AI 分析需求后,通过 MCP 在指定知识库目录创建方案文档 |
| 记录效率数据 | AI 将生成代码涉及的文件数、代码行数、模块状态追加到表格,便于跟踪 |
MCP 的边界要控制好。AI 能访问外部系统,不代表它应该拥有任意写权限。对于创建文档、追加记录这类低风险操作,可以适度开放;对于修改生产数据、发布配置、执行高危命令,需要人工确认或直接禁止。
结构化对话:让 AI 真正理解需求
传统“需求一句话,AI 直接写代码”的方式,在简单 CRUD(Create、Read、Update、Delete,增删改查)场景里能用,但一进入复杂业务就容易失控。
问题通常来自三个方面。
| 问题 | 表现 | 示例 |
|---|---|---|
| 语义鸿沟 | 自然语言描述模糊,代码实现需要精确规则 | “接口要安全”可能包含登录校验、权限校验、参数校验、操作日志 |
| 约束衰减 | 对话轮次变多后,AI 忘记早期约束 | 前面要求继承 BaseService,后面生成了独立 Service |
| 目标偏移 | AI 过度关注局部细节,忽视整体业务目标 | 参数命名很规整,但缺少分页、排序、数据权限 |
结构化对话可以分成三个阶段。
flowchart TD
A[需求定义] --> B[边界明确]
B --> C[迭代反馈]
A1[用户故事] --> A
A2[验收标准] --> A
B1[必须遵守] --> B
B2[建议参考] --> B
B3[禁止事项] --> B
C1[分模块实现] --> C
C2[关键节点确认] --> C
C3[持续更新方案] --> C
阶段一:用用户故事和验收标准描述需求
用户故事负责说明“谁在什么场景下需要什么能力”,验收标准负责说明“做到什么程度才算完成”。
【用户故事】
作为商家运营,我需要一个商家信息查询接口,查询结果需要根据我的数据权限进行过滤。
【验收标准】
- 支持按商家 ID、商家名称、商家状态查询。
- 支持分页查询,默认每页 20 条,最大 100 条。
- 查询结果需要根据当前用户的数据范围过滤。
- 商家手机号、身份证号需要脱敏。
- 接口需要权限校验,至少具有“商家查看”权限。
- 查询条件需要记录到操作日志,便于审计。
这种写法比“实现商家查询接口”更容易得到符合业务预期的代码。
阶段二:把技术约束分成“必须遵守”和“建议参考”
不同约束的强度不一样。硬性约束必须执行,参考约束可以帮助 AI 找到项目里的相似实现。
【技术约束】
必须遵守:
- 使用 Spring Boot 标准分层架构。
- 数据库访问使用 MyBatis-Plus。
- Controller 返回 Result<T>。
- 权限校验使用 @Permission。
- 参数校验使用 @Valid 和 ValidatorUtil。
- DTO(Data Transfer Object,数据传输对象)转换使用 ConvertUtil。
- 飞书消息发送必须使用 FeishuClient,不要重复实现。
建议参考:
- 状态流转参考 TaskServiceImpl 的状态机实现。
- 批量处理参考 AssignImportHandler 的异步处理方式。
- 数据权限过滤参考 ScopeServiceImpl 的范围查询逻辑。
禁止事项:
- 不要新增与现有 Client 功能重复的第三方 API 封装。
- 不要修改与当前任务无关的表结构。
- 不要硬编码 API Key、租户 ID 等敏感配置。
把约束拆清楚后,AI 更容易判断哪些规则不能突破,哪些代码可以借鉴。
阶段三:用迭代反馈控制生成节奏
一次性让 AI 生成 Controller、Service、Mapper、数据库脚本、单元测试,很容易等到最后才发现方向错了。更稳的方式是让 AI 在关键节点暂停。
sequenceDiagram
participant D as 开发者
participant A as Claude Code
D->>A: 输入用户故事、验收标准、技术约束
A-->>D: 输出模块拆分和实现计划
D->>A: 确认计划,要求先设计表结构
A-->>D: 输出表结构和索引
D->>A: 调整索引,确认继续
A-->>D: 生成 Service 核心逻辑
D->>A: 审查业务逻辑,反馈问题
A-->>D: 修改实现并补充测试
D->>A: 确认后生成 Controller
关键确认点通常包括:
| 确认点 | 为什么要停 |
|---|---|
| 数据库表结构 | 表设计错了,后面所有代码都会受影响 |
| 模块接口 | 接口边界错了,模块间调用会混乱 |
| 核心业务逻辑 | 业务流转错了,补再多测试也没用 |
| 第三方集成方式 | 重复封装或参数映射错误会造成后期维护成本 |
| 单元测试覆盖范围 | 只测正常流程会漏掉大量边界问题 |
子代理协作:把 AI 从单助手变成小团队
单个 AI 助手处理简单任务没有问题,但复杂项目往往需要不同角色协作:有人负责方案设计,有人负责编码,有人负责审查,有人负责前端页面配置。Claude Code 的 SubAgent 模式可以模拟这种分工。
更推荐“中间产物驱动”的协作方式。所有子代理围绕同一份技术方案文档工作,而不是让多个代理自由对话。
flowchart TD
A[协调者] --> B[技术方案架构师]
B --> C[技术方案文档]
C --> D[代码实现专家]
D --> E[代码与测试]
E --> F[代码审查专家]
F --> G{是否通过}
G -- 否 --> D
G -- 是 --> H[更新技术方案状态]
C --> I[前端页面生成器]
I --> J[页面配置]
技术方案文档是单一事实来源,通常包含:
- 需求背景;
- 模块拆分;
- 数据模型;
- 接口定义;
- 外部依赖;
- 实现状态;
- 责任角色;
- 审查结论;
- 待解决问题。
四类常见子代理角色
| 子代理 | 主要职责 | 输出物 |
|---|---|---|
| 技术方案架构师 | 需求拆解、模块划分、技术选型、接口设计、依赖梳理 | 技术方案文档、模块清单、接口草案 |
| 代码实现专家 | 按方案生成代码、补充单元测试、修复审查问题 | 代码、测试用例、变更说明 |
| 代码审查专家 | 检查架构合规性、代码规范、潜在缺陷、性能风险 | 审查意见、修改建议 |
| 前端页面生成器 | 根据接口生成列表页、表单页、详情页等配置 | 页面配置、权限配置、交互说明 |
这种分工的价值在于:每个代理只关注自己擅长的部分,减少通用 AI 在复杂任务中“什么都做一点、但都不够稳”的问题。
为什么要用技术方案文档做中间产物
如果让多个子代理直接互相沟通,代理数量一多,沟通链路会迅速变复杂。假设有 n 个代理,理论上的双向沟通关系接近:
n * (n - 1) / 2
4 个代理就有 6 条沟通关系,6 个代理就有 15 条。每条链路都可能产生信息不一致。
中间产物驱动的方式把协作压缩到一份文档上:
flowchart LR
A[子代理 A] --> D[技术方案文档]
B[子代理 B] --> D
C[子代理 C] --> D
E[子代理 D] --> D
好处很直接:
- 信息有唯一来源;
- 变更历史可追踪;
- 人工评审更方便;
- 新加入的开发者可以快速理解当前状态。
子代理协作的风险和处理方式
| 风险 | 表现 | 处理方式 |
|---|---|---|
| 上下文不同步 | 方案更新后,某个子代理仍按旧规则生成代码 | 每次方案变更后明确标记版本,并要求代理读取最新文档 |
| 责任边界模糊 | 跨模块问题不知道由哪个代理处理 | 在模块清单中增加责任角色字段 |
| 流程过于僵硬 | 特殊需求被标准流程卡住 | 常规任务走标准流程,特殊任务人工介入 |
| 错误被放大 | 架构方案错了,后续实现和审查都建立在错误基础上 | 技术方案阶段必须人工评审,尤其是数据模型和状态流转 |
| 审查流于形式 | 审查代理只给泛泛建议 | 审查清单必须具体到权限、事务、异常、幂等、日志、测试 |
代码审查子代理不应该只说“代码结构清晰”。更有用的审查提示应该要求它检查具体项:
请从以下维度审查代码:
- 是否符合技术方案中的模块边界;
- 是否错误修改了无关文件;
- 是否缺少权限校验;
- 是否缺少参数校验;
- 是否存在事务边界问题;
- 是否处理了重复提交和幂等;
- 是否复用现有 Client;
- 是否补充了失败场景测试;
- 是否存在空指针风险;
- 是否记录必要操作日志。
人和 AI 如何分工
AI 编程落地时,最重要的不是“让 AI 写多少代码”,而是“哪些事情交给 AI,哪些事情必须由人负责”。
| 工作类型 | 更适合谁主导 | 原因 |
|---|---|---|
| 基础 CRUD、DTO、Mapper、简单单元测试 | AI 主导 | 规则明确、重复性高 |
| API 文档、变更说明、测试数据构造 | AI 主导 | 格式固定,人工校正成本低 |
| 技术方案初稿、模块拆分、代码审查 | 人机协作 | AI 能快速产出草稿,人需要判断合理性 |
| 复杂业务规则、架构决策、质量门禁 | 人类主导 | 需要理解业务权衡、风险和长期维护成本 |
| 生产发布、数据修复、安全配置 | 人类主导 | 风险高,必须有明确责任人 |
开发者要对 AI 生成的代码负责。AI 可以参与实现,但不能承担线上质量责任。
上下文管理的实用方法
Claude Code 的输出质量很大程度取决于上下文管理。上下文越混乱,生成结果越不稳定。
为不同模块创建独立对话线程
不要在同一个对话里同时实现任务分配、审批、统计和导入。更合适的方式是一个模块一个线程,每个线程只保留与当前模块相关的信息。
visit-task-create-thread
visit-task-approval-thread
visit-task-statistics-thread
visit-task-import-thread
把关键决策写进外部文档
复杂项目不要只依赖聊天历史。数据库设计、接口定义、状态机、异常码、第三方集成方式都应该写入外部文档,然后在对话中引用。
数据库设计参考 docs/visit-task-db.md。
任务状态机参考 docs/visit-task-state-machine.md。
飞书审批接入方式参考 docs/feishu-approval.md。
在阶段切换时重复关键约束
AI 在长对话里容易发生约束衰减。进入新阶段时,可以简短重申硬性规则。
现在开始实现任务审批模块。请继续遵守:
1. 飞书审批必须通过 FeishuApprovalClient;
2. 状态流转必须符合 visit-task-state-machine.md;
3. 所有写操作需要记录操作日志;
4. 不要修改任务创建模块的已确认接口。
用状态标记跟踪进度
技术方案文档里可以维护模块状态:
| 状态 | 含义 |
|---|---|
| pending | 未开始 |
| designing | 设计中 |
| implemented | 已实现 |
| reviewed | 已审查 |
| verified | 已验证 |
| blocked | 被阻塞 |
状态标记能减少“这个模块到底做到哪一步了”的沟通成本。
质量控制:AI 生成代码必须经过门禁
AI 生成代码后,质量控制要比人工编码更明确。原因很简单:AI 很擅长生成看起来完整的代码,但它不一定理解项目里的隐性约束。
一套可执行的质量门禁可以这样设计:
flowchart LR
A[AI 生成代码] --> B[静态检查]
B --> C[单元测试]
C --> D[集成测试]
D --> E[代码审查]
E --> F[人工确认]
F --> G[合入]
各层门禁关注点不同:
| 门禁 | 关注内容 |
|---|---|
| 静态检查 | 编译错误、格式、依赖、未使用代码 |
| 单元测试 | 核心逻辑、边界条件、异常分支 |
| 集成测试 | 数据库、缓存、第三方 API、消息通知 |
| 代码审查 | 架构边界、事务、幂等、权限、日志、安全 |
| 人工确认 | 业务规则是否正确,风险是否可接受 |
还可以维护一个“AI 常见错误清单”,每次发现问题就反向更新提示词和审查清单。
| 常见错误 | 约束补充 |
|---|---|
| 忘记空指针校验 | 所有外部入参和查询结果必须判空 |
| 重复封装第三方 Client | 第三方调用必须先搜索现有 Client |
| 忘记分布式锁释放 | 加锁必须使用 try-finally 或统一锁工具 |
| 没有处理幂等 | 创建、分配、审批回调必须设计幂等键 |
| 只生成正常流程测试 | 单元测试必须覆盖失败分支和边界条件 |
AI 编程的边界
Claude Code 能降低重复劳动,但不能替代工程判断。几个边界需要提前认识清楚。
| 局限 | 具体表现 | 应对方式 |
|---|---|---|
| 创造性不足 | 倾向于基于已有模式组合,很难主动提出突破性架构 | 让 AI 提供备选方案,人负责最终设计 |
| 深层上下文理解有限 | 对核心系统的隐性依赖、历史包袱理解不完整 | 核心模块必须由熟悉业务的人审查 |
| 责任边界容易模糊 | AI 生成代码出问题时不能追责给工具 | 代码合入责任归属开发者 |
| 领域知识更新滞后 | 内部系统最新规则不在模型知识里 | 建立知识库更新机制,并让 AI 引用最新文档 |
| 容易自信地产生错误 | 输出格式完整,但细节可能不符合真实项目 | 通过测试、审查和人工确认兜底 |
AI 编程不是“少做审查”,而是要把审查做得更清晰。
可直接落地的工作流
把上面的内容组合起来,可以形成一套比较稳的 Claude Code 使用流程:
flowchart TD
A[输入 PRD 或需求描述] --> B[结构化需求]
B --> C[生成技术方案]
C --> D{人工评审方案}
D -- 不通过 --> C
D -- 通过 --> E[模块拆分与排期]
E --> F[选择单个模块]
F --> G[生成接口与表结构]
G --> H{人工确认}
H -- 不通过 --> G
H -- 通过 --> I[生成核心代码]
I --> J[生成测试]
J --> K[代码审查]
K --> L{是否通过}
L -- 不通过 --> I
L -- 通过 --> M[更新技术方案状态]
M --> N{是否还有模块}
N -- 是 --> F
N -- 否 --> O[整体回归与合入]
配套的输入资产包括:
| 资产 | 作用 |
|---|---|
CLAUDE.md | 提供项目级硬性约束 |
| 技术方案文档 | 维护模块拆分、接口设计、实现状态 |
| SKILL | 复用高频开发模式 |
| MCP | 连接文档、知识库、表格和内部工具 |
| 审查清单 | 控制 AI 生成代码质量 |
| 错误案例库 | 持续修正提示词和流程 |
开发者的新职责
AI 编程时代,开发者的核心能力会从“亲手写出每一行代码”逐渐转向“定义问题、拆解任务、约束 AI、审查质量、承担结果”。
更具体地说,开发者需要掌握这些能力:
- 把模糊需求改写成用户故事和验收标准;
- 把复杂系统拆成边界清晰的模块;
- 用明确约束限制 AI 的自由发挥;
- 通过中间产物控制协作过程;
- 用测试和审查识别 AI 代码中的隐藏问题;
- 把团队经验沉淀成
CLAUDE.md、SKILL 和知识库。
Claude Code 可以成为研发流程里的加速器,但前提是流程本身足够清晰。没有边界的需求、没有确认节点的生成、没有质量门禁的合入,只会把问题从“人写得慢”变成“AI 错得快”。
真正可持续的 AI 辅助开发,不是让 AI 替人做决定,而是让 AI 在明确规则下承担标准化工作,让人把精力放在业务判断、架构权衡和质量控制上。