技术速递|失序则速不达:人工智能时代如何保障高质量开发
AI 带来的是速度,
作者:Gwen Davis,Carolyn Galvin
排版:Alan Wang
人工智能技术能助力团队实现前所未有的开发提速,但与此同时,也可能引发各类漏洞、故障与问题。运用以下策略,既能保持开发效率,又能牢牢把控代码质量。
如果你无法信任自己交付的代码,那么一味追求更快又有什么意义?
我们已经在工作流程中使用 AI 有一段时间了,毋庸置疑,日常开发的效率被大幅提升了。过去需要几个小时完成的任务,如今几分钟就能搞定;有时甚至在你早晨那杯咖啡还没喝完之前,一个完整的功能就已经成形。
但我们也同样体会过速度的另一面:当 AI 在缺乏明确方向和防护机制的情况下被使用时,往往会生成所谓的 AI slop —— 看似能跑、却缺乏上下文的半成品代码拼接在一起,悄无声息地积累着 bug、错误的依赖引用,以及技术债务。
在这个全新的时代,快已经不够了。真正拉开团队差距的,是精准度与质量。
“最优秀的车手并不是单纯跑得最快的人,而是在高速下依然保持平稳和掌控的人。”GitHub 产品副总裁 Marcelo Oliveira 在 GitHub Universe 2025 上表示,“速度和掌控并不是对立的,它们会相互强化。”
那么,如何才能两者兼得?如何在保持高速前进的同时,让代码依然干净、可靠,并始终掌握在自己手中?以下是三项关键策略:
技巧一:把速度与质量视为一个整体,而不是二选一
我们很容易接受那些看起来“很精致”的 AI 生成代码,却忽略其背后潜藏的问题。然而,没有质量保障的速度,并不能真正帮助你更快交付,它只会让风险在未来不断叠加、放大。因此,真正成功的团队和组织,都会在利用 AI 提升开发速度的同时,配套建立清晰而有效的防护机制。
这正是 GitHub Code Quality(目前处于公开预览阶段)所要解决的问题。GitHub Code Quality 是一款由 AI 与 CodeQL 驱动的代码分析工具,能够在你开发的同时,持续发现整个代码库中的可维护性问题、可靠性风险以及技术债务。以下是开始使用它的方式:
- 一键启用
在仓库级别开启后,GitHub 会结合 CodeQL 与基于大语言模型的检测能力,对你的代码进行分析,帮助你清晰了解代码库中的可维护性与可靠性问题。
- 在每一个 Pull Request 中获得自动修复建议
当你创建 Pull Request 时,GitHub Code Quality 会立即标记出未使用的变量、重复的逻辑、潜在的运行时错误等问题。下面是一个示例:这段 Pull Request 中的代码“可以运行”,但还远未达到生产级别的要求。
// fuelCalculator.js
export function calculateFuelUsage(laps, fuelPerLap) {
const lastLap = laps[laps.length - 1]; // unused variable
function totalFuel(laps, fuelPerLap) {
return laps.length * fuelPerLap;
}
// duplicated function
function totalFuel(laps, fuelPerLap) {
return laps.length * fuelPerLap;
}
return totalFuel(laps, fuelPerLap);
GitHub Code Quality 会基于 AI 与 CodeQL 给出改进建议,并提供一键修复功能:
-export function calculateFuelUsage(laps, fuelPerLap) {
- const lastLap = laps[laps.length - 1]; // unused variable
-
- function totalFuel(laps, fuelPerLap) {
- return laps.length * fuelPerLap;
- }
-
- // duplicated function
- function totalFuel(laps, fuelPerLap) {
- return laps.length * fuelPerLap;
- }
-
- return totalFuel(laps, fuelPerLap);
-}
+export function calculateFuelUsage(laps, fuelPerLap) {
+ if (!Array.isArray(laps) || typeof fuelPerLap !== "number") {
+ throw new Error("Invalid input");
+ }
+ return laps.length * fuelPerLap;
+}
无需额外分流、也不会拖慢节奏,只有干净、可靠的代码。
- 设定并执行你的质量底线
通过规则集,你可以阻止未达到团队标准的代码合并。在不依赖评审者意志力、也不牺牲开发效率的前提下,持续保持一致的代码质量。
- 揭示(并修复)遗留的技术债务
AI Findings 页面会高亮显示团队当前正在修改的文件中的问题,帮助你在问题正处于当前关注焦点时顺手修复,减少频繁的上下文切换。
一句话总结:
AI 带来的是速度,GitHub Code Quality 带来的是掌控力。两者结合,让你在无需取舍的情况下,既能跑得更快,又能构建得更好。
了解更多关于 GitHub Code Quality 的信息 👉
技巧二:做驾驶员,而不是乘客
AI 可以快速生成代码,但质量从来不是只靠自动化就能保证的。GitHub 一直相信,真正重要的是为开发者提供写出高质量代码的工具——从 IDE 中的 Copilot,到 Pull Request 里的 GitHub Copilot 代码评审,再到 GitHub Code Quality:它们不仅能让你清楚地看到长期存在的问题和技术债务,还能提供可执行的修复建议,帮助你真正解决这些问题。
这些能力赋予你设定方向、标准和边界条件的主动权。你的意图越清晰,AI 就越能发挥应有的价值。
下面是一个简单但非常有效的提示词框架,可以帮助你做到这一点:
- 说明目标,而不只是动作
把提示词当成是在给另一位工程师下达指令:你给出的信息越明确,最终产出的结果就越好。
不好的提示词:
重构这个文件
更好的提示词:
在不改变现有功能的前提下,对这个文件进行重构,以提升可读性和可维护性,不允许引入任何破坏性变更。
- 明确约束条件
例如:
-
“不引入第三方依赖”
-
“必须向后兼容 v1.7”
-
“遵循现有的命名规范”
- 提供参考上下文
可以链接相关文件、文档、现有测试,或架构设计决策。
- 指定输出形式
是 Pull Request、diff、patch、说明性文字,还是代码块。
借助 GitHub Copilot Coding Agent,你甚至可以分配多步骤任务,例如:
在整个应用中创建一个用于货币格式化的全新辅助函数。
- 必须支持 USD 和 EUR
- 结果保留两位小数并向上取整
- 新增三个单元测试
- 不要修改现有的价格解析器
- 以 Pull Request 的形式提交
请注意,在这个过程中,思考和决策的责任仍然在你,而执行的责任则交给了 Agent。
一句话总结:
AI 负责加速执行,而你的清晰意图——再加上 GitHub 提供的防护机制——才是把这种加速转化为高质量软件的关键。
技巧三:构建思考过程的可见依据,而不只是输出结果
当 AI 承担越来越多的执行性工作时,真正拉开开发者差距的,是你能否清晰地表达自己的决策、取舍以及背后的思考过程。如今,光写出代码已经不够了,你还需要在功能的整个生命周期中,展示自己是如何思考问题、评估方案并推进实现的。
以下是一个可以提升文档信息传达效果的最佳实践:
- 创建一个 Issue,把为什么讲清楚
简要说明问题是什么、怎样才算成功、存在哪些约束条件,以及潜在风险。
- 清晰命名分支,认真提交代码
使用有意义的分支名称和提交信息来阐述你的思考过程,而不只是记录你的按键操作。
- 使用 Copilot 和 Coding Agent 构建功能,同时记录决策
简要说明你为什么选择某种方案,而不是其他方案,以及曾考虑过哪些替代选项。
- 在 Pull Request 中提供信息丰富的上下文
包括为什么要做、做了哪些改动以及考虑过哪些替代方案的简要说明。
例如,不要只写:
添加了深色模式切换功能
可以改为:
- 添加了深色模式切换,以提升无障碍体验并满足用户个性化偏好。
- 为避免引入服务端依赖,选择使用 localStorage 进行状态持久化。
- 将样式改动控制在局部范围内,避免对现有主题产生副作用。
一句话总结:
代码展示的是你做了什么,而文档则展示了其重要性所在。在这个全新的 AI 时代,后者与前者同样关键。
携手向前
归根结底,质量才是一切的基础。AI 的确可以加快工作的节奏,但如果缺乏明确的意图引导,这种速度也可能适得其反。然而,当你将 AI 与清晰的方向、稳固的防护机制以及可见的思考过程结合起来时,就能帮助团队在规模化交付中持续产出更干净、更可靠的代码,并让组织在快速前进的同时,不牺牲最重要的价值。
开始使用 GitHub Copilot >
更多推荐
所有评论(0)