AI 的笨是可知的,小弟的笨是不可知的

匿名投稿:《AI 的笨是可知的,小弟的笨是不可知的》

来自一位大厂朋友的经验分享,谈他在用 AI 辅助写代码的感受:

我们的 AI 写码之旅

我们的挑战:

  1. 编程语言:Rust,可以说是“专门为 AI 负优化”的语言。

  2. 产品:特殊设计的操作系统,几乎没有任何现成的参考。

  3. 自研的第三方库,包括 RPC、异步调用等,大部分库只有我们自己在用。

我们经历了几次迭代,目前还没有为 Rust 专门调优 LLM。

初始阶段

  1. 使用通用的代码补全与生成模型做 tab 补全。

  2. 使用通用的 Chat 模型进行跨文件代码生成、解释以及生成单元测试等。

这个阶段整体表现不佳。只有 tab 补全在一些简单情况下偶尔能有用。由于 LLM 对我们的系统一无所知,一旦遇到特定领域内容,LLM 就会开始“瞎猜”。

第二阶段

我们把项目代码放进去对 LLM 进行微调。

在这一阶段,LLM 勉强理解了一些系统相关的内容,能生成部分相关代码,但准确性依然不高,尤其在我们逐步废弃一些旧组件、引入新组件的过程中,LLM 容易混淆。毕竟当前文件里旧组件的使用频率可能比新组件更高。

简单的单元测试和基础的 setup 代码,LLM 能生成一些,但通常还是需要人工改动;复杂的部分几乎没戏,尤其是 setup,AI 往往“乱来”。

但好的一面是,代码解释的效果好了很多。总结下来就是:它能省下一部分工作量,但离省下全部还有很大差距。

一个明显的好处是,我减少了和初级开发沟通的次数。有些设计,只要我把分割做得足够清晰,给出合适的提示,AI 就能完成个七七八八。

之前的工作流是:我设计、分割,自己搞定难点,把简单的、重复的工作交给小弟,或者写好 demo 再分配任务。

现在的工作流是:我设计、分割,难的部分自己搞定,剩下的交给 AI。说实话,有时候感觉更累了 😂

但至少,AI 的“笨”是可以预见的,而小弟的“笨”却难以预料。

举个例子,有一次我把 demo 都写好了,调试通过,只需要小弟加两个测试就能交付。结果小弟愣是“搞”了一个月... [捂脸]