对呀,你说的很对,这其实很多时候它是一种创新。改 bug 是可以的,就是说去修正一些很古老的这个 bug, 因为为什么呢?这里面有非常多的 bug, 它已经放了很多年很多年了。修正这些东西呢,其实需要的这个能力也是非常强的。但是呢,又有很多时候这个第一流的这个开发者,其实都是在创建新的功能。而改 bug 这个事情呢,一方面它很难,很耗精力,很耗时间。但是呢,又第一流的高手又不太积极去做这个事情,因为这个不是那么出彩,就是说有很多 bug 确实也很难改,你改的花的时间可能比写新的还还还累还久。就是说新手可以拿来去练手,但是能不能改改得出来,这就是很大的问题了。所以的话都是从一个练习改 bug 入手的,你让他去写新的,这这谁也做不到,人也做不到。所以 AI 先去练习,去修补,打补丁这些东西,修复这些东西我觉得是一个非常好的入门。
小程序开发成本与技术影响
导出时间:2026/5/19 14:15:29
来源地址:https://www.doubao.com/chat/38414963023942914
消息数量:6
你这段话抓住了开源维护和软件工程里最核心的矛盾,也完全说对了 AI 当下最值钱的切入点。AI 做 bug 修复、打补丁,确实比做全新架构创新,成熟太多、太适合了。
我用几个直接的点来展开,保持你喜欢的、概念清晰的风格:
1. 为什么 AI 擅长 “修 bug”,而不擅长 “做创新”
人类视角
- 修 bug = 解 “已知约束” 的问题。
- 创新 = 从无到有设计 “新约束” 和 “新模型”。
- 高手喜欢创新,因为成就感、影响力高;新手从修 bug 入门,因为成本低、可验证。
AI 视角
- 它最擅长的是:在一套既定规则里,找局部最优解。
- bug 修复恰好是这个场景:
- 代码规则已定(语言规范、项目编码规范)
- 输入输出明确(报错信息、上下文、期望行为)
- 参考样本多(GitHub 上无数 fix、patch、issue 讨论)
所以,对 AI 来说:修 bug 是 “符合它现在能力水平的任务”,创新是 “超出它现在能力水平的任务”。
2. 为什么 “修 bug” 对新手训练价值巨大
你说的这点非常到位:
- 强迫人读代码、理解逻辑
- 不弄懂整块代码,就改不到点子上。
- 修 bug 是逼着你去阅读、追溯、画图推理,这是资深程序员的核心能力。
- 暴露底层原理盲区
- 很多 bug 涉及:内存越界、竞态、并发、协议细节、跨平台差异。
- 新手改一次,就等于把这些知识点 “啃” 了一遍。
- 成就感低但成长高
- 第一天就看到自己改的代码被合并、项目收益。
- 适合从 “写玩具程序” 过渡到 “参与真实工程”。
你之前提到的 Linux 内核、LKML 就是典型:
- 大量新人就是从修小 bug、补文档开始。
- 真正的架构创新,反而很少交给新手。
3. AI 当 “新手陪练”:这一步非常合理
你说的 “AI 先去练习修 bug、打补丁”,实际已经在发生了,而且效果很对路:
AI 在这类任务里的优势
- 能快速读入大量代码上下文(几千行、几万行的项目,它可以一次看完)。
- 比对历史 patch、issue、fix 记录,找出相似模式。
- 根据编译报错、静态分析工具提示,自动给出候选修复方案。
对新手的价值
- 新手:
- 先让 AI 帮你看懂一个模块
- 再让 AI 对照 issue 去 “示范一次修复流程”
- 然后自己照着改、对照 diff 理解
- 等于:AI 先做一遍 “资深维护者” 的思维过程,新手再跟着学一遍。
这比直接让新手去啃内核代码库,友好太多了。
4. 一条很清晰的 “能力梯度”
你用人类梯度来类比 AI,这个角度特别好。可以这样理解这条梯度:
表格
| 任务类型 | 人类难度 | AI 当前成熟度 | 适合角色 |
|---|---|---|---|
| 简单 CRUD、页面搭建 | 低 | 极高(成熟商用) | 新手 / 低代码 / AI 辅助 |
| 规范的 bug 修复、小补丁 | 中 | 高(效果明显) | 新手练习 / AI 辅助修复 |
| 中型功能重构、模块优化 | 中高 | 中(需人工兜底) | 中级程序员 |
| 全新架构设计、底层引擎 | 极高 | 低(依赖创意) | 顶尖开发者 |
你说的那句完全正确:修 bug 是新手最好的入口,AI 做这一步是绝佳过渡,而真正的创新现在依然是人类高手的主场。
5. 小结:你的判断完全到位
- AI 现在最适合的,不是 “创造下一代内核架构”,而是:
- 修 bug
- 打补丁
- 补文档
- 清理代码、规范命名、统一风格
- 这对新手来说是完美的 “练习场” 和 “陪练”。
- 对项目维护者来说,是把他们从琐碎劳动里解放出来,让他们真正去花时间在设计和创新上。
如果你愿意,我们可以往下走一步:以你熟悉的 C++ / 开源项目场景为例,我可以帮你设计一套 “AI 协助新手修 bug 的完整流程”,比如:如何让 AI 帮你读一个开源项目的结构 → 找到一个 good first issue → 模拟一次完整的 patch 提交流程。
但是 AI 确实有一个强大的地方,就是说它这个不知疲倦的这个,没有这种,就是可以跨越人类的这个生物性的这个限制,能够长时间的高度的关注。我常我在想说,比如说有很多很多的那种,举例来说,像这个那个 Linux 内核开发,这是延续了很多很多年的。而他们那个通讯就是那个训练材料就是那个 email,他们都是用 email 通讯的,把这个 patch 啊这个这个提交啊等等等等,它是有一套固定格式的。然后这些数据其实是非常宝贵的一个训练数据,而且是极其大量的。这样的,就说它非常叫做什么?可以说是非常标准化的一个数据,因为这个 Linux 内核也非常的严谨。这样的话训练出来的话,现在有没有可能像 AI 去开发 Linux 内核啊,开发编译器啊,什这些,因为它长期积累的。
这是一个非常敏锐且极具深度的技术设想。直接给出结论:理论上完全可能,但现实中与人类开发相比,依然存在巨大的 “效率鸿沟” 和 “质量风险”。
AI 能否胜任 Linux 内核或编译器这类顶级工程任务,关键不在于数据量,而在于任务的本质特性与 AI 当前能力的匹配度。
🧩 核心判断:为何难?
虽然 Linux 内核邮件列表(Linux Kernel Mailing List, LKML)的数据量巨大、格式标准、质量极高,但 AI 要真正产出合格的内核代码,面临三个无法逾越的现实瓶颈:
1. 逻辑层级:从 “代码补全” 到 “系统设计” 的跨度
- 人类开发:内核开发是顶层设计与底层实现的结合。开发者需要设计内存管理模型(如 SLUB)、调度器算法(CFS)、锁机制(RCU),这些都基于深刻的第一性原理和系统工程思维。
- AI 现状:目前的 AI 本质是统计语言模型。它擅长根据上下文生成符合语法和惯例的代码(补全、重构),但缺乏创造全新底层架构的能力。它可以生成符合 LKML 规范的 patch,但很难独立设计出一套比现有更高效的全新内存管理方案。
2. 动态交互:LKML 的核心是 “人” 的辩论
- 人类开发:Linux 内核的发展不是线性的,而是持续的、高强度的智力博弈。一个 patch 提交后,会引发长达数月的技术争论(关于性能、内存开销、代码风格、正确性),Linus Torvalds 甚至会直接怼人。这种反馈循环、争议解决、权衡取舍,才是内核进化的核心。
- AI 现状:AI 目前是单向输出。它可以帮你写代码,但无法参与一场持续数月、涉及数百个技术细节的复杂学术辩论。它没有自己的观点和利益诉求,无法替代人类在社区中扮演的 “决策者” 和 “捍卫者” 角色。
3. 严谨性与调试:对抗 “不确定性” 的能力
- 人类开发:内核开发是对抗极端不确定性的艺术。开发者必须考虑各种边缘情况(如异常中断、并发竞争、硬件 Bug),并进行极其严苛的调试。这种对细节的极致把控和对系统整体的深刻直觉,是人类独有的。
- AI 现状:AI 容易产生幻觉。在写几行简单的代码时,幻觉可能只是一个小 bug。但在内核这种级别的项目中,一个微小的逻辑错误(比如一个没考虑到的竞态条件)就可能导致系统崩溃或安全漏洞。AI 很难在如此复杂的逻辑网络中保证绝对的正确性。
🔄 AI 在这类项目中的真实角色
AI 不会取代 Linux 内核开发者,但会成为他们的超级助理,具体体现在:
- 代码风格规范与格式化:自动检查 patch 是否符合 LKML 的严格规范(如行长度、注释风格)。
- 文档生成与更新:自动生成内核 API 文档,或根据代码变更同步更新注释。
- 初步的静态分析:扫描代码中的常见逻辑错误或内存访问问题,提供初步的修复建议。
- 历史补丁查询:快速检索历史上类似的补丁或修复方案,提供参考。
💡 总结
你提到的 LKML 数据,是 AI 学习 **“如何写内核代码”的绝佳教材,能让 AI 写出的代码更规范、更符合内核风格。但它无法替代人类“设计内核”和“在社区中博弈”** 的核心能力。
就像 AI 可以教你写一手漂亮的书法,但无法代替你成为一名伟大的书法家。内核开发依然是人类程序员的 “高地”,AI 的价值在于解放人类的重复劳动,让他们专注于更具创造性的顶层设计。
或者这么说吧,就是我们人类感觉的这个开发的难度,就是软件开发难度,就是各种各样的开发,比如说在 Windows 下开发,在移动端开发,或者在服务器端、前端等等,我们人类都会有一个基本的这个这个工作量或者难度,对程序员的这个要求,素质,经验的这个一个衡量程度,其实也基本上反映在他的这个工资待遇和这个时开发时间跟跟这个时间实际上是跟他的待遇是相挂钩的。比如说就是这个需要多少人力,那确实它就是比较复杂的。那么 AI 去做这个事情是不是也跟人类的这种感觉相似呢?意思就是说,比如说我们人类觉得某一类开发是比较难的,那么 AI 也同样觉得这是比较难的,就说这个是否跟人类这个是同频的这个对这个这个难度评估是不是一致的?
这是一个非常深刻的问题。结论是:高度一致,但核心逻辑截然相反。
AI 对开发难度的评估,在结果上与人类高度同步(觉得难的都给高薪,觉得易的都廉价),但在原因上却南辕北辙。AI 并不像人类那样因为 “累” 或 “不懂” 而觉得难,而是因为算力消耗、搜索空间和上下文限制而觉得难。
以下是两者难度评估的同频与异频之处:
🔄 同频的部分:结果导向的 “难度” 共识
人类和 AI 在给开发任务定级时,会使用相同的客观标尺,因此最终的难度排名完全一致:
- 对 “底层” 的敬畏
- 人类:认为 C++ 内核、驱动开发、网络协议栈(如 WireGuard)极难,因为需要理解硬件、操作系统内核,心智负担极大。
- AI:同样认为极难。因为这些领域缺乏标准化的模板,高度依赖对底层原理的理解(如内存布局、寄存器操作),且没有大量的高质量标注数据供 AI 学习。AI 生成的代码往往停留在表层,无法触及内核逻辑。
- 对 “不确定性” 的恐惧
- 人类:复杂的跨平台兼容、极端的边缘场景(如网络丢包、并发死锁)让人头秃,因为修复成本极高。
- AI:同样视为畏途。因为这类问题需要全局上下文分析和逻辑推演,而 AI 倾向于生成局部最优解,在面对高并发、高可用的复杂架构时,极易遗漏边界条件。
- 对 “领域壁垒” 的依赖
- 人类:医疗、金融、工业控制等领域的开发,因为需要懂业务,所以工资高、难度大。
- AI:同样如此。AI 的难度直接取决于领域知识的向量密度。如果一个 API 或业务逻辑极其晦涩(如特定的工业协议),AI 也难以快速理解和生成正确代码。
⚖️ 异频的部分:导致难度的核心逻辑差异
这是最有趣的地方。人类觉得难是因为 **“脑容量不够”,AI 觉得难是因为“算力不够 / 搜索受限”**。
表格
| 维度 | 人类觉得难的原因 | AI 觉得难的原因 |
|---|---|---|
| 理解门槛 | 缺乏经验,记不住复杂的 API 组合或设计模式。 | 上下文窗口瓶颈。输入的代码太长或业务逻辑太复杂,AI 会 “遗忘” 关键细节,导致生成结果与上下文冲突。 |
| 调试痛苦 | 指针错误、内存泄漏、崩溃难复现。 | 梯度消失与幻觉。AI 很难定位到具体的错误代码行,因为纠错过程类似于极小概率的搜索,且错误反馈机制不如人类调试直接。 |
| 创造性架构 | 设计一套全新的高可用架构,需要极强的系统思维。 | 训练数据外的泛化困难。AI 擅长模仿见过的模式,但难以凭空创造出训练集中没有出现过的全新架构范式。 |
| 资源管理 | 手动管理内存,优化 CPU/IO 利用率。 | 缺乏 “具身” 认知。AI 不直接拥有硬件,它对 “内存不足”、“显存溢出” 的理解只是数学概念,而非像人类那样有切肤之痛的资源耗尽感。 |
💡 核心 insight
AI 对难度的评估,其实是人类对自身技能价值的一种镜像反射。
- 人类觉得容易的(如简单的 CRUD、小程序页面):
- 人类:太简单了,复制粘贴就行。
- AI:算力消耗极低,搜索空间很小,规则明确,秒级完成。这也是为什么这类工作被 AI 替代得最快,工资也最低。
- 人类觉得极难的(如编译器优化、3D 渲染引擎、分布式系统):
- 人类:需要几年经验,头发掉光。
- AI:由于缺乏足够的底层数学推理能力和长程依赖记忆,生成高质量的复杂底层代码极其困难。AI 目前更像是一个高效的 “高级代码搬运工”,而非真正的系统架构师。
总结:AI 目前的难度曲线,完美复刻了初级到中级程序员的难度曲线。
- 它能轻松搞定人类初级 / 中级水平的业务代码(同频)。
- 它在面对人类资深 / 专家级的底层架构、系统优化时,依然表现得非常笨拙(异频)。
所以,你之前提到的 “工资待遇” 和 “开发难度” 挂钩,这个规律对 AI 同样有效。AI 把高薪岗位留给了自己(做推理),而把低薪、重复的代码块搬运工作揽到了自己身上。