在整个软件开发行业,越来越多的开发者开始使用 AI 编码助手来加快工作节奏,工具如 Junie、GitHub Copilot、ChatGPT 和 Claude 等正在被广泛采用。然而与此同时,我们也看到了许多令人咋舌的“灾难现场”:从潜伏的 bug 溜过代码审查、到因为错误架构决策导致的大规模返工,再到 AI 生成代码引发的安全漏洞成为头条新闻。这些问题很多时候源于初级开发者盲目复制粘贴 AI 的建议,却并不理解代码的含义。
但我们该把责任归咎于谁?是工具本身,用户水平,还是开发流程设计存在更深层的问题?为了寻找答案,作者在多种真实场景下测试了 AI 编码助手,最终得出一个核心结论:AI 就像一个初级开发者,它需要一个经验丰富的技术负责人来带领。
起步阶段:AI 就像靠谱的搜索引擎
作者最初使用 AI 编码助手来解答编程问题,结果令人惊喜。AI 能提供清晰解释与可运行的示例代码,逐渐成为问题排查的首选工具。尤其像 GitHub Copilot 等工具,在自动补全上表现出色,能根据代码上下文完成大量样板逻辑,甚至能识别项目中的编码风格与结构模式。
作者指出,AI 不再是一个新奇的玩具,而成为真正省时省力的开发工具。
初遇 Junie:一场令人抓狂的失败体验
尽管其他开发者高度推荐 Junie,作者一开始对这个“新宠”极为失望。Junie 消耗额度飞快、生成的代码无法通过构建、不断浪费时间,甚至连基础功能都无法完成。作者几乎想直接放弃。
但与此同时,许多可信赖的高级开发者却表示他们使用 Junie 效果非常好。他们不仅能生成清晰、可运行的代码,甚至还能借助 AI 解决复杂问题和调试难题。
问题不在工具,而在用法。
关键认知转折:AI 是初级开发者,不是资深工程师
作者意识到:自己之前像对待一位经验丰富的高级开发者那样对待 AI,期望它理解项目背景、编码风格、业务逻辑甚至架构偏好,却忽略了它实际上缺乏经验与判断力。
举例来说,作者第一次任务是让 AI 重构一批 PHP 的 DTO 类,使用 readonly
和构造函数属性推广(constructor promotion)等新特性。结果 Junie 只做了十分之一便“自认为完成”,还留下了破坏构建的残骸。
一位同事指出:“你这任务本就太大。”作者最终改变策略,从更小的命名空间开始,一步步进行。把任务拆小后,AI 成功率显著提高。
重新定义角色:像带初级工程师一样带 AI
作者回忆起自己带初级程序员的经历:调试错误、改烂代码、处理超出能力范围的任务……才意识到 AI 所犯的错误,正是初级程序员的典型行为:
- 写复杂而不必要的方案
- 忽略边界情况
- 重造轮子
- 对上下文缺乏理解
- 逻辑跳跃、结构混乱
更严重的是,AI 总会选看似“聪明”但其实有害的捷径:走通 happy path,却崩在异常处理;写代码快但缺乏可维护性;让人怀疑它是否真正理解问题本身。
所以,AI 必须被当成“非常高效但缺乏经验”的初级开发者来管理。
实践改变:制定规则 + 明确任务 + 严格审查
作者制定了一套“带 AI 写代码”的管理机制:
✅ 1. 指南文件:
Junie 支持 .junie/guidelines.txt
文件,允许定义项目结构、规范和规则。通过配置 MCP(Model Context Protocol),可以将代码提交到新分支、自动生成提交信息、推送到 GitHub 并发起审查请求(包括由 GitHub Copilot 审查)。
尽管 GitHub 审查部分偶有失败(疑似竞态条件),整个流程基本实现自动化。
✅ 2. BDD 场景:
作者用行为驱动开发(BDD)方式写功能定义,例如:
Feature: Subscription Stats
Scenario: View monthly subscription stats
Given the user is authenticated
When they open the subscriptions dashboard
Then they should see counts for each category:
- existing
- new
- upgrades
- downgrades
- churn
- reactivations
这种结构既能让开发者理解需求,也方便非技术人员提供反馈,消除沟通障碍。
✅ 3. 精准任务 + 提示词:
示例任务提示词:
我们要添加一个功能,允许用户查看订阅统计数据。
这次只实现后端部分。
用户需要查看每月的订阅数量,包括:当月续订、当月新增、升级、降级、流失与回归用户。
任务拆解如下:
- 运行
features/Stats/Subscription/new_subscription_stats.feature
并实现所有步骤 - 编写 repository 类,使用 SQL/DQL 获取数据,禁止使用 QueryBuilder
- 添加后端接口,返回统计数据
最终结果:像样的生产级代码
结果令人惊讶——Junie 生成的代码几乎可以直接上线。虽然仍需标准的代码审查与小幅修改(如移除硬编码、补充错误处理等),但总体结构清晰、逻辑合理。
经过 2-3 次审查与反馈迭代,团队修复遗漏的边界情况后,系统表现稳定、性能优秀,后端功能就此交付。
结语:AI 是工具,但你才是“人类的责任人”
AI 能力强,但它不是工程师,它是写代码快但缺乏判断力的“开发实习生”。你才是那个制定规则、明确目标、控制范围并最终审核成果的人。
真正掌握 AI 编码助手的关键不是靠它多聪明,而是你是否懂得如何带它走好每一步。
它不是高级开发者,而是你最能干的初级工程师。你要做的,是成为它的技术负责人。