Featured image of post 当 AI 能写 80% 的代码,剩下 20% 是什么?

当 AI 能写 80% 的代码,剩下 20% 是什么?

当 AI 能写 80% 的代码,剩下 20% 是什么?本文从 Vibe Coding 的翻车讲起,用三个真实场景拆解"上下文工程"这个新概念——AI 的能力边界,本质上是你构建上下文的能力边界。

当 AI 能写 80% 的代码,剩下 20% 是什么?

当 AI 能写 80% 的代码,剩下 20% 决定你值多少钱。

一、一个让人愣住的瞬间

用 AI 写代码的人,大概都有过这样的时刻:

一个功能模块,搁以前至少得写一天——定义接口、写解析逻辑、处理异常、补单元测试。现在呢?描述一下需求和数据格式,AI 噼里啪啦就生成了。review 一遍,改几个边界 case,提交。

然后你愣住了。

我刚才干了啥?我"编程"了吗?

仔细回想,做的工作是:描述需求 → 审查代码 → 修修补补。写代码的主力是 AI,开发者更像是一个"代码质检员"。

这个问题像一根刺一样扎在脑子里:当 AI 能写 80% 的代码,剩下 20% 是什么?我到底是开发者,还是 Prompt 工程师?

二、Vibe Coding 的狂欢与翻车

2025 年初,Andrej Karpathy(前 Tesla AI 总监)提出了一个概念叫 “Vibe Coding”——不看代码细节,凭感觉让 AI 写,能跑就行。

这个概念迅速流行。一时间,人人都可以用 AI 写 App,不会编程的人也能"做产品"了。社交媒体上到处是"我用 AI 一天做了个完整应用"的帖子。

然后翻车开始来了。

有数据显示,7% 的 vibe-coded 应用带着裸奔的数据库上线了。不是 AI 写得不好,是使用者根本不知道什么叫"安全"。他们能描述功能,但描述不了约束。

Karpathy 自己后来也修正了路线,提出了一个演进框架:

Vibe Coding → Context Engineering → Agentic Engineering
凭感觉写     → 精心设计上下文     → 让 AI 自主完成任务

大多数人还停留在第一阶段。而真正的价值,在第二阶段。

三、三个绕不开的场景

场景一:代码风格——没给规范,怪谁?

刚开始用 AI 写代码的时候,很多人都会犯同一个错误:直接开干。

结果呢?生成的代码风格跟团队规范完全对不上——错误处理方式不对、日志格式不对、命名约定不对。第一反应是:这 AI 也不行啊。

后来学乖了。把团队的 .cursorrules 配好,把代码规范文档喂进去,再贴几段项目里现有的代码作为示例。

输出立刻对味了。

AI 不是不懂你的风格,是你没告诉它。 这就像带新员工——你不培训就指望人家按你的规矩来,可能吗?

场景二:性能问题——能搞定,但费 Token

代码跑起来了,但性能不达标。把日志、profiling 输出、相关代码一股脑丢给 AI。

AI 确实能给出分析方向,但过程往往是这样的:

  1. 给了一段日志 → AI 说可能是锁竞争
  2. 补充了锁相关的代码 → AI 改口说可能是 GC 压力
  3. 又给了 GC 日志 → AI 说可能是内存分配模式有问题
  4. 来回好几轮……最后自己看了火焰图,一把定位到根源

Token 烧了一堆,结论是:AI 有定位能力,但效率取决于上下文的完整度。给少了它猜,给多了它准。

问题是,“给多少算够"这件事,本身就是个技术活。

场景三:业务理解——代码里藏着的隐形逻辑

让 AI 写一段数据校验逻辑,它写得又快又漂亮。但一跑,业务方说不对。

为什么?因为那段校验逻辑里藏着业务规则:某个字段在特定条件下才能为空、某个状态流转只能单向、某个阈值会随季节调整……这些规则不在技术文档里,在业务方的脑子里。

AI 不知道这些潜规则,它只能按照你给的需求字面意思写。代码逻辑里暗藏业务逻辑,业务理解不到位,写出来的代码就是不能用。

你得一条一条纠正。但有趣的是,纠正一次之后,它就能跟着对了——前提是上下文窗口还装得下。

四、一个新概念:上下文工程

这三个场景有个共同点:AI 的输出质量,取决于你给它的输入质量。

这不是什么新道理——计算机科学早就有句话叫 “Garbage In, Garbage Out”。但在 AI 编程时代,这句话有了新的含义。

Martin Fowler 的团队在 2026 年初写了一篇文章叫 “Context Engineering for Coding Agents”,给出了一个精辟的定义:

“Context engineering is curating what the model sees so that you get a better result.” (上下文工程就是精心策划模型看到的东西,以获得更好的结果)

他们把上下文分成了两类:

  • Instructions:告诉 AI 做什么——“写一个 E2E 测试”
  • Guidance:告诉 AI 遵循什么——“测试要相互独立,不要共享状态”

我之前代码风格不对,本质是缺了 Guidance。Bug 定位低效,是 Instructions 里的信息密度不够。业务理解差,是上下文窗口的物理限制。

场景问题根源解法
代码风格不对没给规范约束.cursorrules + 代码示例
Bug 定位低效上下文不完整一次性给足日志 + 代码 + 复现步骤
业务理解差窗口装不下分层喂知识,先给架构再给细节

核心观点:AI 的能力边界,本质上是你构建上下文的能力边界。

五、放大器效应:为什么资深开发者用 AI 更香

这里有一个很容易被忽视的点:AI 对不同水平的开发者,放大倍率是不一样的。

新手 + AI = 1 × 2 = 2
资深 + AI = 10 × 2 = 20

新手不知道该问什么、该检查什么、该约束什么。他们给 AI 的上下文是模糊的、不完整的,所以 AI 的输出也是平庸的。

资深开发者知道:这个模块的边界条件是什么、这个并发场景的坑在哪里、这个客户的合规要求有哪些。他们给 AI 的上下文是精准的、结构化的,所以 AI 的输出也是高质量的。

AI 是放大器,不是替代品。它放大你已有的能力,但没法凭空给你能力。

这也解释了一个现象:很多人用 AI 写代码,觉得"也没多厉害啊”。不是 AI 不厉害,是你给它的上下文不厉害。

六、一个前瞻:AI 友好的代码库

Martin Fowler 的文章里还提到了一个概念:AI-friendly codebase design

意思是:你的代码本身就是给 AI 的"文档"。命名清晰、模块化、有好的注释——这些本来就是好实践,现在多了一个理由:

让 AI 更好地理解你的代码。

想想看,当你把一段代码丢给 AI,如果这段代码命名模糊、逻辑混乱、没有注释,AI 能做的就是"猜"。但如果你的代码自解释、模块边界清晰、有完善的类型定义,AI 就能精准地理解你的意图。

这是一个正向循环:

好代码 → AI 理解更准 → AI 生成更高质量的代码 → 代码库更好

反过来也成立:

烂代码 → AI 理解偏差 → AI 生成更烂的代码 → 代码库更烂

AI 会加速你的代码库演进方向——无论是向上还是向下。

七、所以,我们到底是什么?

回到开头的问题:我到底是开发者,还是 Prompt 工程师?

我觉得这个问法本身就错了。正确的问法是:你是在写 Prompt,还是在做上下文工程?

  • Prompt 工程师:琢磨怎么写提示词让 AI 听话
  • 上下文工程师:设计 AI 的认知环境,让它能精准输出

区别在于,Prompt 是一次性的,上下文是系统性的。

一个好的上下文工程师,需要:

  • 架构能力:知道系统该怎么拆,模块边界在哪
  • 业务理解:知道需求背后的真正意图
  • 代码审美:能看出 AI 生成的代码哪里不对劲
  • 调试直觉:AI 搞不定的 bug,你能搞定

这些恰恰是资深开发者的核心资产。AI 没有让这些资产贬值,反而让它们更值钱了。

Andrej Karpathy 的演进路线还在继续:

Vibe Coding → Context Engineering → Agentic Engineering
凭感觉写     → 精心设计上下文     → 让 AI 自主完成任务

我们现在处在第二阶段。而能做好 Context Engineering 的人,才有资格进入第三阶段。


写在最后:

“Prompt 工程师"不是贬义词,但只会写 Prompt 的开发者是。

真正的技能不是写 Prompt,而是构建一个让 AI 能精准输出的"认知环境”。这需要架构能力、业务理解、代码审美——这些都是时间和经验换来的,AI 给不了你。

所以下次有人问你是干嘛的,别说"我写 Prompt 的"。

说"我是上下文工程师"。


参考:

© 2016-2026 Yison. All rights reserved.
使用 Hugo 构建
主题 StackJimmy 设计