Harness Engineering:3 人 5 月 100 万行代码的真相与工程实践
发表于:2026-03-30 |
字数统计: 2.3k | 阅读时长: 8分钟 | 阅读量:

Hello 大家好呀,我是计算机魔术师。

凌晨三点的 Git 统计,以及那个荒诞的 100 万

凌晨三点,当你还在为某个 NullPointerException 秃头,或者在 Slack 里和产品经理为了一个像素的偏移反复拉扯时,在大洋彼岸的某个服务器里,Git 的提交计数器正在疯狂跳动。

程序员反应图:对方不想和你说话并向你扔了一个需求

这一改,边界就开始漂了

这不是什么 DDoS 攻击,也不是哪个实习生不小心把 node_modules 提交进了仓库,而是 Harness 团队的三个工程师,正在用一种近乎“暴力”的方式重塑软件工程。

5 个月,3 个人,100 万行代码。这个数字像一块巨大的板砖,拍在每一个还在坚持“纯手工打磨”的程序员脸上。

这件事为什么和你有关系?因为我们正处于一个极其尴尬的交界点:你还在纠结变量命名是用 user_list 还是 users,而有人已经开始用 AI 开着“代码复印机”批量生产系统了。

程序员系列表情:据说换成这个发型,面试通过率很高

这个追问,像没打算让我活着出去

如果代码的产出成本正在无限趋近于零,那么我们过去二十年积累的“写代码”经验,可能正迅速贬值为一种昂贵的业余爱好。

这 100 万行代码里,究竟藏着通往未来的钥匙,还是仅仅堆起了一座不可维护的屎山?

程序员反应图:不同时间段的程序员们

看到这个行数,我的 IDE 已经开始冒烟了

为什么是现在:Harness Engineering 的暴力美学

1. 从“手工作坊”到“自动化流水线”的范式转移

传统的软件开发本质上是“手工作坊”。哪怕你用着最先进的 IntelliJ,写着最优雅的 Rust,你依然是在一针一线地缝补逻辑。

在这种范式下,100 万行代码意味着成千上万个工时,意味着庞大的沟通成本和不可避免的人为错误。

但 Harness 提出的 Harness Engineering 概念,试图把这种“缝补”变成“铸造”。

AI 在这里不再是一个帮你写注释的副驾驶(Copilot),而是一个被装进了“工程外骨骼”里的重型操作员。

Harness Engineering 的核心在于:不再直接编写代码,而是编写“生成代码的约束”。这就像工业革命时期,人们不再学习如何手工织布,而是学习如何设计和维护织布机。

当 1 行 Prompt 经过精密的工程约束,能换回 1000 行高质量的样板代码时,传统的研发效能度量衡就彻底崩塌了。

2. 杠杆效应:1 行 Prompt 换 1000 行样板代码

这种暴力产出的背后是极致的模板化消灭。在 Harness 的实践中,大量的 CRUD、API 胶水代码、单元测试桩都被抽象成了可预测的模式。

程序员系列表情:666

这一把,终于像样了

AI 代理(Agent)介入了开发回路,它们不是在“猜”你想写什么,而是在既定的工程框架内“填充”逻辑。

这种杠杆效应让 3 个工程师变成了 3 个“工厂经理”。他们负责定义接口契约、业务边界和安全准则,剩下的体力活全部交给 AI。

面对明显不属于自己的锅时强硬拒绝的表情

这锅先别急着往我头上扣

这种感觉就像你以前在用勺子挖隧道,现在你开上了一台盾构机。爽是爽了,但你得确保盾构机的方向没偏,否则你挖出来的可能不是隧道,而是直通地心的坑。

大佬系列表情:我说自己菜和大佬说自己菜

这哪是写代码,这是在开复印机啊

拆开讲透:3 个人如何撑起一座“代码摩天大楼”

1. 模块化的极致:把系统拆成 AI 听得懂的零件

为什么你用 ChatGPT 写个稍微复杂的项目就翻车?因为 AI 的上下文窗口是有极限的,它的“脑容量”装不下你的整个单体架构。Harness 成功的关键在于极致的模块化。

他们把系统拆成了无数个微小的、自包含的零件,每个零件的逻辑复杂度都控制在 AI 能够完美理解的范围内。

这就涉及到了 接口契约(Contract-First) 的决定性作用。在 AI 协作中,人与 AI、AI 与 AI 之间的沟通不再靠文档,而是靠强类型的 Schema。

只要契约一定,AI 就能在不理解全局的情况下,精准地完成局部实现。这就像乐高积木,只要接口标准统一,你不需要知道整座城堡的设计图,也能拼好一个窗户。

2. 自动化治理:如果代码会自我繁殖,谁来做绝育?

当代码以每天数千行的速度增长时,传统的 Code Review 已经失效了。你让一个资深架构师每天看 5000 行 AI 生成的代码,他大概率会在第三天选择辞职去送外卖。

因此,Harness 必须建立一套基于语义分析的自动化治理流水线。

⚠️ 踩坑提醒:千万不要迷信 AI 生成的“逻辑闭环”。AI 最擅长写出那种看起来天衣无缝、实则在极端边界条件下会瞬间爆炸的代码。

你需要的是一套“捕鼠器”——自动化的静态分析工具、覆盖率极高的契约测试,以及 AI 驱动的“审稿代理”。用 AI 来监督 AI,是目前唯一的解法。

# 一个典型的工程约束定义示例
constraints:
  api_style: restful
  security_check: mandatory
  test_coverage_min: 95%
  error_handling: centralized_logger
  forbidden_patterns:
    - "eval()"
    - "hardcoded_secrets"

程序员反应图:程序员00050 写代码没见这么积极 整天在群里瞎比比

Review 这 100 万行,可能需要我活到 200 岁

繁荣下的阴影:100 万行代码的维护代价

1. 认知负荷:人类大脑的 7±2 瓶颈

心理学有个著名的 7±2 原则,说的是人类短时记忆能处理的信息块数量。即便有 AI 帮忙,这 100 万行代码最终还是得由那 3 个人负责。

当系统出现一个跨模块的诡异 Bug 时,这 3 个人真的能在大脑里复现那座“代码摩天大楼”的结构吗?

这种“知识碎片化”是极其致命的。代码生成得太快,人类理解的速度跟不上,结果就是系统中充满了“代码坟墓”——那些运行良好但没人敢动、没人理解逻辑的黑盒。

长期来看,这可能会导致一种新型的“技术债”:不是因为代码写得烂,而是因为代码太多了,多到超出了人类的认知带宽。

2. 性能与冗余:AI 并不在乎你的内存条

AI 写代码有个坏习惯:它喜欢堆砌。为了完成一个简单的功能,它可能会引入三个不必要的库,写出五层嵌套的逻辑。在 Harness 的百万行代码中,冗余逻辑的占比是一个绕不开的话题。

AI 并不在乎你的服务器需要多大的内存,它只在乎能不能快速闭环逻辑。

在真实案例中,我们发现 AI 生成的代码往往存在过度设计。一个简单的配置读取,它能给你整出一套观察者模式加策略工厂。

这种“逻辑肥胖症”在初期不明显,但当百万行规模的系统跑起来时,那些微小的性能损耗会累积成巨大的延迟。这时候,你还是得拎着手术刀,手动去切除那些 AI 留下的“赘肉”。

上线前双手合十祈祷永无 BUG 的表情

别动!这行代码虽然没用,但它是整个系统的承重墙

写在最后:别做代码的搬运工,做代码的驯兽师

Harness 的这 100 万行代码,其实是给所有程序员敲响的一记警钟。它告诉我们,“产出代码”这件事正在失去价值,而“约束代码”的能力正在成为核心竞争力

未来的顶级工程师,不再是那个能手写红黑树的人,而是那个能设计出一套完美的工程约束系统,让 AI 在里面乖乖干活的人。

我的判断是:代码通胀不可避免,未来的软件工程将变成一种“驯兽”的过程。你手里的 AI 是一头力大无穷但缺乏常识的猛兽,你的任务不是替它拉车,而是给它套上缰绳,修好路基。

如果代码行数不再值钱,我们该如何衡量一个工程师的价值?是看他解决问题的维度,还是看他控制复杂度的手腕?

那么,如果明天你的老板要求你用 3 个人维护 100 万行代码,你第一反应是提离职,还是开始寻找你的“外骨骼”?欢迎在评论区聊聊你的看法。

参考文献

  • Harness.io: "The 1 Million Lines Project" Case Study

  • DORA Research Program: "2024 State of DevOps Report"

  • OpenAI: "Best Practices for Code Generation with LLMs"


如果你想继续追更,欢迎在公众号 计算机魔术师 找到我。后续的新稿、精选合集和阶段性复盘,会优先在那里做串联。

上一篇:
别再只盯着向量数据库了:三层记忆架构才是 AI 后端面试的“涨薪分水岭”
下一篇:
Agent 的「骚扰」工程:从失控到自愈的 Reflection Pattern 实战

分享到这些地方