基于Claude构建AI自动化开发工作流:从Bug修复到功能实现
1. 项目概述当AI不只是助手而是你的初级开发伙伴最近在跟几个技术团队的朋友聊天大家不约而同地提到一个现象现在写代码尤其是处理那些重复性高、模式固定的任务时已经离不开AI辅助了。但大多数人的用法还停留在“问答式”——遇到问题把错误日志扔给Claude或者ChatGPT让它给个修复建议或者写个函数草稿。这当然很有用但它本质上还是个“超级搜索引擎”或“高级代码提示器”。我一直在想能不能更进一步让Claude这类大模型AI从一个被动的“应答者”变成一个主动的、能理解上下文并执行完整任务的“初级开发伙伴”。这就是“Automating Bug Fixes and Feature Development with Claude Code”这个项目想探索的核心。它不是一个现成的工具而是一套方法论、一个工作流的设计思路目标是利用Claude Code或类似具备代码理解和生成能力的AI的能力自动化处理两类最耗时的开发工作修复已知模式的Bug和开发小型、定义清晰的功能。想象一下这个场景你的测试套件跑完了报告里列出了5个失败的用例。其中3个是“空指针异常”错误堆栈指向了用户信息查询模块。传统的做法是你开发者打开IDE定位到那几行代码分析为什么对象可能为null然后加上判空逻辑。现在我们可以尝试让Claude来做这件事把测试报告、相关模块的代码上下文、以及项目编码规范一起喂给它让它分析问题根源生成修复代码甚至自动提交一个Pull Request供你审核。这不仅仅是“写代码”而是完成了“定位问题-分析原因-生成解决方案-产出代码变更”这一整个闭环。这个项目的价值在于它将开发者的角色从“执行者”部分解放出来转向“设计者”和“审核者”。你可以把更多精力放在架构设计、复杂逻辑和创造性工作上而把那些有明确模式、重复性高的编码任务委托给AI。当然这绝不意味着开发者可以被替代。恰恰相反它要求开发者具备更清晰的架构思维、更严谨的代码审查能力以及最重要的——设计出能让AI可靠工作的“流水线”和“规则”。接下来我就结合自己的实践拆解一下如何搭建这样一个自动化工作流。2. 核心思路构建一个“AI可理解”的自动化流水线要让AI可靠地自动化修复Bug或开发功能最关键的一步不是找到一个“最聪明”的模型而是为它设计一个高度结构化、信息完备、约束明确的执行环境。你不能只是对它说“修一下这个bug”这就像让一个实习生去解决一个只有一句话描述的生产问题结果大概率是灾难性的。我们必须把任务拆解成AI能一步步跟随的指令并提供所有必要的上下文。2.1 任务拆解与上下文供给给AI一张“全景地图”一个有效的自动化任务应该包含以下几个核心部分清晰的任务目标不能用模糊的自然语言。对于Bug修复目标应该是“使XX测试用例通过”或“消除XX异常”。对于功能开发目标应该是“在XX模块中新增一个API端点满足OpenAPI规范YYY”。目标越具体、可验证越好。完整的代码上下文AI不能只看到出错的那一行。你需要提供相关文件出错文件本身以及它直接引用的关键类、函数所在的文件。项目结构简单的目录树让AI知道文件之间的位置关系。关键依赖如果修复涉及特定的库或框架比如Spring的Autowired React的useState需要指明其版本或通用用法。项目规范与约束这是确保生成代码能直接融入项目的关键。代码风格是PEP 8、Google Java Style还是自定义规则可以附上.eslintrc、.prettierrc或checkstyle.xml的配置片段。架构模式项目是否采用MVC、DDD、Clean Architecture新增代码应该放在哪个层Controller, Service, Repository安全与合规要求例如所有数据库查询必须使用参数化绑定以防止SQL注入所有用户输入必须经过验证。可验证的验收条件除了主任务目标还应提供更细化的检查点。对于Bug修复“修复后的代码不应引入新的SuppressWarnings注解”。对于功能开发“新增的API必须包含输入验证和完整的错误响应HTTP 400/500”。最好能提供相关的单元测试或集成测试代码让AI理解“成功”的标准。在实际操作中我会把这些信息整理成一个结构化的“任务工单”Task Ticket通常是一个Markdown文件。这个文件就是AI的“工作说明书”。## 自动化任务工单修复用户查询空指针异常 **目标**修复 UserService.getUserProfile(Long userId) 方法中可能引发的 NullPointerException使 UserServiceTest.testGetUserProfile_NotFound 测试用例通过。 **上下文代码** - 主文件src/main/java/com/example/service/UserService.java (见附件) - 相关文件src/main/java/com/example/repository/UserRepository.java - 测试文件src/test/java/com/example/service/UserServiceTest.java **项目规范** - 语言Java 17 - 框架Spring Boot 3.x - 代码风格遵循项目根目录下的 checkstyle.xml。 - 重要约束Service层方法必须对Repository返回的Optional进行安全处理不能直接.get()。优先使用orElseThrow(() - new EntityNotFoundException(...))。 **验收条件** 1. UserServiceTest 中的所有测试用例包括新增的必须通过。 2. 修复后的代码不应降低现有代码的测试覆盖率可通过JaCoCo报告验证。 3. 不允许使用 if (obj ! null) 的简单判空必须利用 Optional 的API进行函数式处理。 **操作指令** 1. 分析提供的代码和测试失败信息定位 NullPointerException 的根本原因。 2. 根据项目规范生成修复代码。 3. 将修复后的完整 UserService.java 文件内容输出。注意上下文不是越多越好。提供整个项目代码会让AI困惑且消耗大量Token。精准提供相关模块的代码是控制成本和提高准确率的关键。我通常会先用grep或IDE的“查找引用”功能确定问题的影响范围。2.2 工具链集成从“生成代码”到“自动执行”仅仅生成代码还不够我们需要把它集成到开发工作流中。理想的状态是CI/CD流水线中的测试失败能自动触发一个AI修复任务或者项目管理工具如Jira中的某个低复杂度任务能自动生成代码草稿。这通常需要结合以下工具脚本引擎使用Python/Node.js/Shell脚本作为粘合剂。它的作用是1从测试报告或任务系统中提取信息2组装上文所述的“任务工单”3调用Claude API4解析AI的返回结果代码块5将生成的代码写回源文件或创建补丁。版本控制钩子或CI插件例如在Git的pre-commit钩子中让AI检查代码风格并自动修复简单的格式问题或者在GitHub Actions中配置一个Job当PR中某些标签如auto-fix被添加时自动请求AI进行代码审查和建议。安全沙箱非常重要绝对不要让AI生成的代码直接运行在生产环境或你的主开发机上。应该在一个隔离的Docker容器或沙箱环境中先运行单元测试和静态代码扫描SonarQube, CodeQL验证通过后再以“建议”的形式如创建一个新的Git分支或PR呈现给开发者。我的本地实验流程通常是本地测试失败 - 运行一个自定义脚本 - 脚本调用Claude API并生成patch.diff文件 - 我手动审核这个patch - 应用并提交。虽然多了审核步骤但定位和修复代码的时间从几分钟缩短到了几十秒。3. 实操详解分场景构建自动化工作流理论说再多不如实际动手。下面我以两个最常见的场景为例展示具体的实现步骤和脚本片段。我会使用claude-api一个非官方的Python SDK示例和curl作为与Claude API交互的方式。请确保你已获得相应的API密钥并了解使用条款。3.1 场景一自动化修复单元测试失败这是最直接的应用。假设我们有一个Python项目使用pytest。第一步捕获测试失败信息我们首先需要让脚本能运行测试并捕获详细的失败信息。#!/bin/bash # run_tests_and_capture.sh # 运行pytest输出详细的报告到JSON文件 pytest --tbshort -q --json-report --json-report-filetest_report.json 21 | tee test_output.log # 检查是否有测试失败 if [ $? -ne 0 ]; then echo 测试失败准备分析... # 提取第一个失败测试的详细信息这里简化处理实际可以解析JSON FAILED_TEST$(grep -A 5 FAILURES test_output.log | head -10) echo $FAILED_TEST failed_test.log # 触发AI修复脚本 python ai_fix_runner.py --log failed_test.log --report test_report.json else echo 所有测试通过。 fi第二步组装上下文并调用AI这是核心脚本ai_fix_runner.py的部分内容。# ai_fix_runner.py import json import subprocess import sys import os from pathlib import Path # 假设使用anthropic官方库或requests import anthropic def read_test_context(failed_test_log_path, json_report_path): 读取测试失败日志和JSON报告提取关键信息 context {} with open(failed_test_log_path, r) as f: context[failure_log] f.read() with open(json_report_path, r) as f: report json.load(f) # 简化找到第一个失败用例的节点名和文件位置 for test in report.get(tests, []): if test.get(outcome) failed: context[failed_test_name] test.get(nodeid) context[file] test.get(location)[0] # 文件路径 context[line] test.get(location)[1] break # 读取失败测试所在的源文件内容 if context.get(file): with open(context[file], r) as f: context[source_code] f.read() # 读取测试文件内容 test_file context[failed_test_name].split(::)[0] if os.path.exists(test_file): with open(test_file, r) as f: context[test_code] f.read() return context def build_ai_prompt(context): 构建给Claude的提示词 prompt f你是一个资深的Python开发助手。请帮助修复以下单元测试失败的问题。 项目是一个标准的Python项目使用pytest。请严格遵守PEP 8风格。 **失败的测试信息** 测试名称{context.get(failed_test_name)} 失败日志{context.get(failure_log, )}**相关源代码**文件{context.get(file)} python {context.get(source_code, )}相关的测试代码{context.get(test_code, )}你的任务分析测试失败的根本原因。提供修复方案并解释原因。直接输出修复后的完整源代码文件内容仅代码块不要额外解释。请确保修复只针对已发现的问题不要改动其他无关部分。请开始你的分析和修复 return promptdef call_claude_for_fix(prompt, api_key): 调用Claude API client anthropic.Anthropic(api_keyapi_key) message client.messages.create( modelclaude-3-5-sonnet-20241022, # 使用适合代码的模型 max_tokens4000, temperature0.1, # 低温度确保代码确定性高 messages[ {role: user, content: prompt} ] ) return message.content[0].textdef extract_code_block(response): 从AI回复中提取python ...代码块 import re pattern rpython\n(.*?)\n matches re.findall(pattern, response, re.DOTALL) return matches[0] if matches else Nonedef main(): api_key os.environ.get(CLAUDE_API_KEY) if not api_key: print(错误请设置 CLAUDE_API_KEY 环境变量) sys.exit(1)# 读取上下文这里简化了参数解析 context read_test_context(failed_test.log, test_report.json) prompt build_ai_prompt(context) print(正在请求AI分析...) response call_claude_for_fix(prompt, api_key) print(AI回复接收完毕。) fixed_code extract_code_block(response) if fixed_code: backup_file context[file] .bak Path(backup_file).write_text(Path(context[file]).read_text()) Path(context[file]).write_text(fixed_code) print(f已备份原文件至 {backup_file}) print(f已应用AI生成的修复到 {context[file]}) print(请务必人工审查修改后的代码) else: print(无法从AI回复中提取有效代码块。) print(AI回复内容) print(response[:500]) # 打印前500字符用于调试ifname main: main()**第三步人工审查与迭代** 脚本运行后会直接覆盖源文件建议先备份。**你必须做一次严格的人工代码审查**检查 1. AI是否理解了问题的本质 2. 修复方案是否合理有没有引入副作用比如破坏了其他功能 3. 生成的代码是否符合项目规范 审查通过后可以再次运行测试确认问题已解决。如果未解决可以将新的错误信息连同AI的修复代码一起作为新的上下文再次提交给AI进行迭代优化。 **实操心得**对于简单的语法错误、逻辑遗漏如忘记处理边界条件、或标准库/框架的固定用法错误这个流程的准确率非常高能达到90%以上。但对于涉及复杂业务逻辑或深层架构问题的BugAI可能只能提供线索或部分代码仍需开发者主导分析。 ### 3.2 场景二自动化开发小型功能如CRUD API端点 这个场景更复杂需要AI理解更多的项目上下文和架构约定。我们以在一个Spring Boot项目中添加一个简单的“获取产品评论列表”的API为例。 **第一步创建详细的功能规格说明书** 这次我们的“任务工单”需要更详细。 yaml # feature_spec.yaml feature: “获取产品评论列表API” description: 为产品Product添加获取其下所有评论Review的API端点。 requirements: - 端点: GET /api/products/{productId}/reviews - 权限: 公开访问暂不要求认证 - 查询参数: - page: 页码 (可选默认0) - size: 每页大小 (可选默认20) - sort: 排序字段如 createdAt,desc (可选) - 响应: 分页格式遵循项目现有的 PageResponseReviewDTO 结构。 - 数据源: 数据库表 reviews通过JPA ReviewRepository 访问。 - 关联关系: Review 实体中有关联字段 product (ManyToOne 指向 Product)。 project_context: tech_stack: - Java 17 - Spring Boot 3.1.x - Spring Data JPA - MapStruct (用于Entity-DTO转换) project_structure: - com.example.controller: REST控制器 - com.example.service: 业务逻辑层 - com.example.repository: 数据访问层 - com.example.dto: 数据传输对象 - com.example.mapper: 对象映射接口 conventions: - 控制器方法需添加 Operation (Swagger) 和 RestController 注解。 - 服务层使用 Service 注解事务管理在服务层。 - 使用 Pageable 对象接收分页参数。 - DTO命名以 DTO 结尾Mapper接口命名以 Mapper 结尾。 relevant_files: - src/main/java/com/example/controller/ProductController.java (现有产品相关API) - src/main/java/com/example/service/ProductService.java - src/main/java/com/example/dto/ReviewDTO.java - src/main/java/com/example/mapper/ReviewMapper.java - src/main/java/com/example/repository/ReviewRepository.java第二步编写脚本组装提示词并生成代码这个脚本会更复杂它需要读取多个文件作为上下文。# ai_feature_dev.py import yaml import os import glob from pathlib import Path def load_spec(spec_path): with open(spec_path, r) as f: return yaml.safe_load(f) def read_project_files(file_paths): 读取项目相关文件内容 context {} for fp in file_paths: # 支持通配符 for actual_fp in glob.glob(fp, recursiveTrue): if os.path.isfile(actual_fp): key os.path.relpath(actual_fp) with open(actual_fp, r) as f: context[key] f.read() return context def build_feature_prompt(spec, file_contexts): prompt_parts [] prompt_parts.append(你是一个经验丰富的Spring Boot开发者。请根据以下功能规格和项目上下文生成实现该功能所需的全部代码。) prompt_parts.append(\n## 功能规格) prompt_parts.append(yaml.dump(spec, default_flow_styleFalse)) prompt_parts.append(\n## 现有项目相关代码供参考格式和风格) for file_path, content in file_contexts.items(): prompt_parts.append(f\n### 文件{file_path}) prompt_parts.append(fjava\n{content[:1000]}\n) # 限制长度避免token超限 prompt_parts.append( ## 你的任务 请生成以下文件的完整代码。请严格遵循项目中已有的模式、命名约定和架构分层。 需要生成或修改的文件可能包括 1. ProductController.java 中新增一个方法。 2. ProductService.java 中新增一个服务方法。 3. 可能需要在 ReviewRepository.java 中添加查询方法如果现有方法不满足分页查询条件。 4. 确保 ReviewDTO 和 ReviewMapper 能支持此API的返回。 **输出格式要求** 对于每个需要生成或修改的文件请以以下格式输出--- FILE: src/main/java/com/example/controller/ProductController.java --- [完整的文件内容包含新增的方法] --- END FILE ---如果文件是新增的请注明。如果是在现有文件上添加请输出该文件的完整新内容。 请开始生成代码) return \n.join(prompt_parts) # ... (call_claude_for_fix 函数与之前类似但模型可能需要更大的上下文如claude-3-5-sonnet) # ... (extract_code_blocks 函数需要解析新的格式将每个文件内容写回) def main(): spec load_spec(feature_spec.yaml) file_paths spec[project_context][relevant_files] file_contexts read_project_files(file_paths) prompt build_feature_prompt(spec, file_contexts) # 保存prompt以供调试 with open(generated_prompt.txt, w) as f: f.write(prompt) print(f提示词已构建长度约 {len(prompt)} 字符。) # 调用AI API此处省略与场景一类似 # response call_claude_for_fix(prompt, api_key) # 解析并写入文件... print(请手动将 generated_prompt.txt 内容提交给Claude如通过Web界面以获取生成的代码。) if __name__ __main__: main()第三步集成与验证由于生成的是多个文件的代码甚至可能修改现有文件操作需要更谨慎。代码生成运行脚本得到AI生成的代码块。创建特性分支在Git中创建一个新分支例如feature/ai-add-product-reviews-api。应用更改使用脚本或手动将AI生成的代码写入对应文件。对于修改现有文件务必使用diff工具进行仔细的三方比较原文件、AI生成文件、合并后文件确保没有意外删除或更改无关代码。编译与测试运行mvn compile或gradle build确保没有编译错误。然后运行相关的单元测试和集成测试。人工深度审查这是最关键的一步。审查重点架构一致性新增的代码是否放在了正确的层依赖注入是否正确安全性API端点是否公开了不应公开的数据输入参数是否做了验证性能分页查询是否使用了高效的数据库查询如避免N1问题符合规范注解、日志、异常处理是否符合项目既定模式迭代优化将审查发现的问题如“这里应该用Transactional(readOnlytrue)”作为新的指令反馈给AI进行迭代修改。注意事项自动化功能开发的成功率高度依赖于“任务工单”的详细程度和项目本身的规范性。在一个结构清晰、模式统一例如严格遵循Controller-Service-Repository分层的项目中AI可以表现得像一个熟练的初级开发者。但在一个架构混乱、风格各异的遗留系统中效果会大打折扣甚至可能“帮倒忙”。因此这个工作流更适合在那些你非常熟悉、且代码规范良好的项目中应用。4. 避坑指南与效能提升技巧在实际将这套工作流集成到团队日常开发中时我踩过不少坑也总结出一些能大幅提升效率和成功率的心得。4.1 常见问题与排查清单当你发现AI生成的代码不工作、不符合预期或者整个流程跑不通时可以按以下清单排查问题现象可能原因排查与解决思路AI生成的代码完全跑题或胡乱编造不存在的类/方法。1. 提供的上下文不足或错误。2. 提示词Prompt过于模糊。3. 模型上下文长度超限尾部重要信息被截断。1.检查上下文确认提供给AI的代码片段是否包含了所有必要的依赖和类定义。对于功能开发务必提供关键的接口如Repository, Service接口定义。2.精炼Prompt使用“角色扮演清晰指令输出格式”三段式。开头明确AI的角色“你是一个精通Spring Boot的Java专家”中间给明确定义最后严格规定输出格式。3.管理Token估算提示词长度。如果太长优先压缩无关紧要的代码如getter/setter或分多次调用先让AI设计接口再实现具体类。代码能编译但逻辑错误测试不通过。AI对业务逻辑的理解有偏差或未能正确处理边界条件。1.提供更具体的验收条件在Prompt中明确写出“必须处理空列表的情况”、“当productId不存在时返回404状态码”等。2.提供测试用例作为规范直接把期望通过的单元测试代码给AI看这是最精确的规格说明。3.迭代调试不要期望一次成功。将第一次生成的代码和失败的测试结果一起作为新的输入再次提交给AI让它基于反馈进行修正。生成的代码风格与项目严重不符。未在Prompt中明确项目代码规范。1.提供代码片段作为范例在上下文中加入几段项目中的典型代码例如一个标准的Controller、Service类这比文字描述规范更有效。2.引用静态分析配置直接告诉AI“请遵循项目根目录下的.editorconfig和checkstyle.xml规则”。3.使用Post-processing脚本生成代码后自动运行项目的格式化工具如spotlessApply、black、prettier进行标准化。自动化流程在CI/CD中不稳定时而成功时而失败。1. API调用有速率限制或偶尔超时。2. 测试环境或依赖的不确定性。3. AI模型输出存在随机性即使temperature0.1。1.增加重试和退避机制在调用API的脚本中对网络错误和特定API错误码如429实现指数退避重试。2.固化环境确保运行AI脚本的CI Runner环境一致所有依赖版本锁定。3.降低随机性除了设置低temperature还可以在Prompt中要求“生成最直接、最常规的解决方案”。对于关键任务可以调用多次选择出现频率最高的代码模式但成本高。4.设定超时和熔断为AI调用任务设置严格的超时时间如30秒超时则自动失败标记为需人工处理。担心AI生成的代码有安全漏洞或法律风险。AI可能从训练数据中复制了不安全的代码模式或受版权保护的代码。1.强制人工审查这是不可逾越的红线。任何AI生成的代码在合并到主分支前必须经过至少一名开发者的实质性审查。2.集成安全扫描在AI生成代码的CI流水线中必须加入静态应用安全测试SAST工具如SonarQube、CodeQL、Semgrep等扫描通过后才进入人工审查环节。3.明确责任在团队内明确代码审查者对合并的代码负最终责任AI只是辅助工具。4.2 提升自动化效能的实战技巧建立“黄金上下文”库将项目中那些最典型、最规范的模块代码例如一个完美的REST控制器、一个标准的服务层类、一个包含复杂查询的Repository保存为模板文件。每次构建Prompt时将这些模板作为“范例上下文”注入能极大地引导AI生成符合项目风格的代码。分而治之链式调用不要试图用一个超长的Prompt让AI完成一个复杂功能的所有事情。将其拆解成链式任务第一步让AI根据需求输出一个技术设计方案包括需要修改/创建哪些文件每个文件的大致职责。第二步针对每个需要创建的新文件如一个新的DTO让AI生成。第三步针对每个需要修改的现有文件提供该文件的完整当前代码并明确指出在何处如“在getUserById方法后”插入新代码让AI生成该文件的完整新版本。 这样每一步的上下文更清晰准确率更高也便于分步审查。利用“函数调用”或“结构化输出”如果使用的AI API支持如OpenAI的GPT-4o的JSON模式或Anthropic Claude的Tool Use可以定义输出Schema。例如让AI以特定JSON格式返回代码变更列表每个变更包含file_path、actioncreate/update、code字段。这样你的脚本可以更可靠地解析结果避免从自然语言中正则提取代码块可能出现的错误。成本控制与缓存AI API调用是按Token收费的。对于常见的、重复的Bug模式如空指针、资源未关闭可以在第一次成功修复后将“问题模式”和“修复方案”保存到一个本地知识库中。下次遇到类似问题时脚本可以先在本地知识库中匹配匹配成功则直接应用方案匹配失败再调用AI。这能显著降低长期成本。度量与反馈循环记录每次AI自动化任务的数据任务类型、输入Token数、输出Token数、是否成功、人工审查后修改了多少。定期分析这些数据你会发现哪些类型的任务AI擅长如简单的数据校验、样板代码生成哪些不擅长如涉及复杂状态机或算法优化的任务。据此不断调整自动化范围把AI用在刀刃上。5. 边界与展望当前能做什么不能做什么经过一段时间的实践我对这项技术的边界有了更清晰的认识。它不是一个“银弹”而是一个强大的“杠杆”能放大开发者的效率但无法替代开发者的核心判断力。当前做得好的高成功率场景修复语法和编译错误几乎是100%成功。根据错误堆栈修复简单的运行时异常如空指针、数组越界、类型转换错误成功率很高。实现设计模式清晰的代码如根据接口生成实现类、实现模板方法、编写简单的工厂类。生成样板代码和重复结构如DTO、Mapper、Repository接口、基本的CRUD控制器和服务层。代码重构与现代化例如将旧的Java循环改为Stream API为方法添加缺失的注解。编写单元测试给定一个函数和描述生成覆盖主要路径的测试用例。当前有挑战或需要深度介入的低成功率场景涉及复杂业务规则和领域知识的功能AI无法理解你业务中“用户积分在促销期间双倍计算但封顶100分”这样的复杂规则除非你在Prompt里事无巨细地写清楚。性能优化和算法设计AI可以给出常见的优化建议如使用索引、避免N1查询但对于需要深刻理解数据特性和访问模式的深度优化仍需专家介入。架构决策是否应该引入一个新的微服务这个模块应该用事件驱动还是直接调用AI可以列出利弊但无法为你做出负责任的决策。调试偶发性和与环境相关的Bug那些“只在生产环境周五晚上出现”的问题AI缺乏必要的日志、监控和系统状态上下文无能为力。未来的演进方向 我认为下一步的关键是“工具智能化”而非“人工智能化”。未来的IDE插件或CLI工具会深度集成这些AI能力使其变得更加情境感知Context-Aware。例如在IDE中右键点击一个测试失败信息直接出现“用AI诊断并修复”的选项IDE自动收集当前文件、相关文件、堆栈信息并发送给AI。代码审查时AI不仅能指出问题还能直接生成一个修复建议的补丁一键应用到本地分支。编写新功能时AI能根据项目已有的类似模块自动生成符合规范的骨架代码并填充你需要实现的TODO注释。要实现这些需要AI模型对单个项目的代码库有更深入、更长期的学习微调或RAG也需要开发工具提供更丰富的API来暴露上下文。这将是开发者体验的一次重大升级。最后我想强调的是拥抱这类自动化工具的心态很重要。不要把它看作对手而是看作一个不知疲倦、记忆力超群、但缺乏常识和责任的初级搭档。你的角色从“码农”变成了“领航员”和“质检员”。你需要为它绘制精确的地图清晰的Prompt和上下文在它完成任务后进行严格的验收代码审查并为最终结果负责。当你习惯了这种协作模式你会发现你花在创造性设计和解决真正复杂问题上的时间变多了。