我们重新定义为3个时代:
代码弱预测时代 --> 代码强预测时代 --> 代码智能交互时代
1. 代码弱预测时代(2010-2018)
基于统计的马尔可夫链模型
早期工具通过马尔可夫链预测代码片段,本质是文本概率匹配(如预测 if 后的)。但仅支持相对固定简单的前后匹配格式、无上下文感知,错误率高。
深度学习的初步渗透(2018)
Kite 以基于 “机器学习” 的代码建议引起轰动。基于RNN深度学习算法来预测代码,同时,微软在 VsCode 和 Visual Studio IDE 中发布了 Intellicode,它能提供上下文感知建议,优先考虑最可能的建议。通过GitHub开源项目训练,实现跨文件类型建议。微软最终推出了“单行预测”。单行代码预测意味着根据上下文预测下一行逻辑代码。
2. 代码强预测时代(2019-2022)
单行补全 → 多行补全
Tabnine(2019)是第一个集成 GPT - 2 进行代码补全的代码编辑器,为未来的 AI 代码编辑器奠定了基础。它实现了首个真正的语言无关多行代码补全。
块级补全的革命
直到 OpenAI Codex 模型发布,才出现了基于用户输入和上下文感知代码生成或理解用户意图的块级代码补全,如生成整个函数或方法。OpenAI Codex 为 Github Copilot 提供支持,具有较高的准确性。
中间填充(FIM)技术
早期的自动补全模型只能从左到右 “追加”,不能考虑后缀的上下文。OpenAI 引入的 “中间填充”(Fill in the Middle,FIM)技术解决了这个问题,实现了双向感知,即理解光标前后的内容。Codeium 是第一个在其扩展中集成 FIM 的,Github Copilot 也在 2023 年 5 月开始大规模支持。
3. 代码智能交互时代(2023-至今)
CHAT GPT
你可以和这个聊天机器人交谈,它可以解释你的整个代码块。<span style="font-family: mp-quote, " pingfang="" sc",="" system-ui,="" -apple-system,="" blinkmacsystemfont,="" "helvetica="" neue",="" "hiragino="" sans="" gb",="" "microsoft="" yahei="" ui",="" yahei",="" arial,="" sans-serif;"="">如果你给它提供足够好的提示和相关的上下文,它可以提供准确的代码。
到了 2023 年 3 月,Open AI发布了 GPT-4 模型,它在代码生成方面非常出色。Copilot 集成了 GPT-3.5/GPT-4 用于聊天问答。
2023 年 7 月之后,Meta发布了 Llama-2,这导致了开源本地大语言模型的爆发。
AI code-editors
很长一段时间的工作模式是在 chat GPT(Plus)中转储代码,编写像样的提示,然后将代码复制粘贴回我们的编辑器。它也要求你找到正确的粘贴位置,导致开发者使用ChatGPT辅助编程时,常常要在聊天窗口和编辑器之间反复横跳。
另一个缺点是 “上下文切换” 的问题,GPT3.5/4 的推出为各种 AI 编辑器开辟了市场空间。主要以插件和IDE的形式,为开发人员提供更好的体验,解决了以下问题:
1.消除聊天平台和编辑器之间的上下文切换;
2.从 LLM 输出实现直接代码编辑;
3.找出更有效地为 LLM 提供上下文的方法;
4.代码库索引 / 更好的上下文感知以提供给 LLM。
例如:
Cursor(2023):Cursor 的自动补全是目前最先进的,它交互创新点在于 “下一步行动预测” 模型,能预测开发者的下一步动作,例如,变量重命名时会建议多行重构,为函数签名或部分代码写注释时会适当建议补全。
IDE Agentic自主代理
这种模式需要像 Claude 3.5 Sonnet 这样具有强大代码能力的模型才有可能“代理”—— 用简单的语言来说,指的是模型能够自己找出、计划和主动执行子任务来完成你的主要任务的能力。
更具体地说,模型可以计划子任务、做一些事情、了解中间状态、查看中间上下文、调整其执行过程并完成最终用户任务。例如Windsurf Cascade 和 Composer Agent mode。
二、自动编码的5级人机交互
在自动驾驶领域,汽车的智能等级越低,可控程度就越高,但精力投入相对会更多。AI 辅助编码也是如此,不同智能等级需要在可控程度和编程速度之间进行权衡。不同的智能等级代表了不同的控制程度和自动化水平,但也不是说脱离了人的控制就是最好的,因为这也是关于控制程度与信任程度的平衡。
代理工具的本质是通过让渡控制权换取效率提升,但这也意味着错误和意外风险不断提升。个人而言,我仍更倾向于使用前四档的编辑器工具而非编码代理。
什么时候选择“上路”
我们都想过和AI交互普通人或许可以取代程序员编码,但事实上和我们的预期相反,AI 工具对有经验的开发者的帮助比对初学者更大。
——难道 AI 不应该使编码更加大众化吗?
应该,但也需要了解相关的工程知识,至少你的提示词能力可以覆盖工程的全生命周期。因此你需要意识到代码中发生了什么,否则调试会很痛苦。工程最后的 30%往往需要工程知识,未来或许是20% ,再未来或许是10%。
所以我们建议至少学习你正在从事的任何工作的基础知识,以便更好地进行提示或者叫“控制车辆”。学习基础知识意味着你能够将未知的未知转化为已知的未知,同时,这样也能获得更多信心。
使用 AI 辅助编码的注意事项:
常见陷阱和考虑因素:使用代理工具可能会快速完成任务,但遇到问题时可能难以调试,此时切换到二档、三档很有效,应提高对代码的理解以更好地提示或手动解决问题。AI 辅助编码可能很快,但也可能在最后阶段变慢,需要了解代码中发生的事情以避免痛苦的调试。
避免牛角尖编程:遇到问题时可以休息一下,从更广泛的角度思考,与语言模型或队友讨论替代方法。
学习基础知识:如果对某个领域不熟悉,至少学习基础知识以便更好地提示,将未知的未知转化为已知的未知。
三、AI编码的下一个阶段重心是软件质量工程
质量是软件工程的第二曲线
当生产力突破某个临界点后,质量保障能力将成为新的技术制高点。未来的软件工程图景中,开发者更像驾驶员:AI引擎提供强大推力,而质量工程是确保安全抵达目的地的导航系统。在这个新时代,最抢手的不是最快写出代码的人,而是最能确保代码可靠性的"软件质量架构师"。
开发流程的重构 --> 增援未来计划
从"量产时代"到"精工时代"
我们正站在新拐点上:AI编码工具带来的生产力爆发,正在倒逼软件质量工程体系的重构。就像工业革命初期蒸汽机大规模普及后,催生了现代质量管理体系,AI编程的"野蛮生长"阶段之后,必然迎来质量管控的全面升级。
传统流程: 需求分析 → 设计 → 编码 → 测试 → 部署
AI时代流程:需求建模 → AI生成代码方案 → 验证测试 → 部署
我们应该提前关注新时代“软件质量工程体系的重构”
最后一道信任门禁现在就需要加速建设 --> 代码安全检测
人们需要一个可信验证,解决信心不足问题
AI生成代码的三大质量陷阱:
1.幻觉代码:生成能通过编译但逻辑错误的代码
2.安全漏洞:17%的AI生成代码包含已知漏洞(如未校验的SQL输入),需依赖SAST工具二次扫描。
3.架构腐蚀:AI辅助项目架构复杂度平均增加37%
我们无法完全解释人工智能思想的涌现,所以我们需要对抗测试AI安全的可解释性,鲁棒性。
我们无法确定AI机器人是否会失控,所以我们需要能控制强制关闭。
我们无法保证未来海量软件的使用安全,所以未来的所有软件都应该有RegTech(监管科技)去做可信门禁把关。
当然安全不应该放在最后,我们也需要将安全左移,建立可信代码流水线。
例如:
可信代码流水线:
•AI审查流水线
结语
我们可以看到的历史趋势是,现在好的创新是模型架构的创新、交互模式的创新、工作流程的更新。
应用创新企业我们认为应该关注自己适合的赛道并深耕,我们的视野应该更多在工作流程上的更新、交互模式的创新,而不是去补齐当前模型能力的不足,重心过度放在RAG(知识库检索)、联网搜索、Temperature温度调整、多模型交叉验证、后处理过滤、推理机优化COT技术的某项当前能力不足的优化上,而是把重心放在包括但不限于以上各项技术的整合上。
AI编码革命正以摩尔定律般的速度重塑软件工程范式,从马尔可夫链的机械式预测到Transformer的语义理解,开发者与AI的关系已从单向指令升级为双向对话。当代码生成效率达到临界点时,质量工程将成为新的关键锚点——未来的技术制高点将不再是单纯追求生成速度,而是构建可信代码:通过静态分析、形式化验证与AI审查流水线的三重防线,在保留创新活力的同时遏制技术债务。这也要求开发者从「工人」转为「质量架构师」来驾驭AI生产力,在智能时代关注软件之美,未来软件质量工程是工艺的回归 。
作者介绍
谢朝海,博士,副研究员。曾任党的十七大、十九大优秀支撑团队队长,2008北京奥运会、2010广州亚运会、2011深圳大运会网络安全保卫工作组成员。国家863、242课题核心骨干,等保1.0/2.0标准编制核心成员,“金盾工程”验收测试评估组成员。海云安公司创始人。