dbaplus社群

Harness Engineering:你敢让AI写真正“出事会炸”的后端系统吗?

引言

当 AI Coding 的聚光灯几乎全部打在前端和客户端——生成一个页面、写一个 App......的时候,一个重要的问题却似乎被回避了:AI 能在真正"出事会炸"的后端系统里写代码吗?

腾讯CDN LEGO项目就是这样一个系统。100万行核心代码、300万行深度改造的第三方库,服务亿级用户,承担流量调度、协议解析、安全防护、缓存加速等关键职责。它面对的不是确定性的输入输出,而是不可控的客户端、不可控的源站、多协议、多配置、公网全量攻击面——这些因素维度的叠加不是简单相加,而是乘积式的复杂度爆炸,理论组合路径高达 13,824 × N 种。在这样的复杂的系统里让 AI 写代码,一行失误就可能是一场全网事故。

但正因为难,才值得做。 我们系统性地探索了 AI Coding 在高风险后端场景的落地路径:一方面,用 AI 零人工代码实现了一个 Rust 版 Nonstop 代理框架,以此探测 AI 编码的能力边界与行为特性;另一方面,在超大规模 C++ LEGO项目中构建了 Harness Engineering 五层架构和多模型对抗式CR,为 AI 产出的每一行代码建立从生成到上线的完整质量屏障。本文不仅是一份将 AI Coding 引入腾讯CDN核心框架的实战记录,更是一条从"AI 能写"到"AI 写了敢用" 的完整工程路径。

一、背景与挑战

1、项目规模与复杂性

LEGO系统作为腾讯CDN的核心接入层,承载着腾讯几乎所有CDN和EdgeOne业务流量的大型分布式系统,对可靠性、可用性、安全性的要求极高:

  • 代码规模:核心代码超过100万行,采用多线程全异步非阻塞架构设计,要求开发人员对异步编程、并发控制、资源管理等技术领域有深入的理解;

  • 第三方依赖:深度改造第三方库超过300万行(包括OpenSSL、QUIC、LUA、JavaScript等),进一步增加了系统的复杂度;

  • 服务规模:每天处理的请求量以万亿计,服务于腾讯CDN的亿级用户,任何性能问题、稳定性问题或安全漏洞都可能被迅速放大。

2、开发和运营痛点

LEGO最大的挑战就是面对不可控的客户端和不可控的源站。

Image

1)不可控因素众多

  • 客户端:浏览器、App、爬虫、攻击工具,涵盖数十亿设备和数百种实现;

  • 源站:客户自建、云存储、第三方API,涉及数百万域名和各种行为;

  • 协议支持:HTTP/1.1、HTTP/2、HTTP/3/QUIC、WebSocket、TLS等多协议并存。

2)异步编程复杂

  • Future/Promise链路长,涉及多个异步操作的串联和组合;

  • Lambda生命周期管理容易出错,可能导致内存泄漏、悬垂指针、资源竞争等严重问题;

  • 多线程并发场景下的状态同步和资源竞争处理困难。

3)容错度低

  • 第一跳位置,无状态设计,流式处理方式;

  • 一旦某个请求的处理出现错误,很难有恢复的机会;

  • 任何错误都可能直接暴露给用户,直接影响用户体验。

4)协议安全要求高

  • HTTP RFC协议合规性要求确保LEGO对HTTP协议的实现符合标准;

  • 缓存安全机制防止恶意用户利用缓存机制发起攻击;

  • 注入攻击防护需要识别和拦截各种注入攻击,包括SQL注入、XSS攻击等。

5)维度组合复杂性

维度

数量

说明

请求协议

3种

HTTP/1.1, HTTP/2, HTTP/3

回源协议

2种

HTTP/1.1, HTTP/2

TLS版本

4种

不同版本的TLS协议

缓存状态

4种

不同的缓存策略

域名配置

百万种

不同客户的域名配置

脚本逻辑

4种

不同的脚本处理逻辑

安全规则

4种

不同的安全策略

源站行为

5种

不同源站的响应行为

客户端行为

3种

不同客户端的请求模式

6)用户敏感度高

  • 对延迟极其敏感;

  • 状态码和网络波动会直接被用户感知;

  • 服务质量的要求更加严格。

正如文章开头就提及的项目复杂度理论组合路径高达 13,824 × N 种。在这样的系统里用 AI 写代码,一旦放任,风险极高。所以LEGO团队的答案是:不是"用 AI",而是"驾驭 AI"——这就是 Harness Engineering 的起点。

二、 行业现状与能力验证nonstop项目

1、AI Coding 的冲击已经到来

 AI Coding的行业案例正在密集出现,预示着AI 已能参与真实的大规模工程。

Image

这些行业案例的输出结果虽然亮眼,但适不适合超大规模同时充满不确定性的后端系统,能在多大程度上解决我们生产环境中的实际问题,还是需要我们亲自实践。

2、20 天AI实现Rust零人工代码开发nonstop项目

所以,我们用20 天实现AI Rust零人工代码开发nonstop代理框架项目,探测 AI 编码的能力边界与行为特性,同时也给我们提供了许多实操经验。

nonstop项目是一个面向复杂生产环境的现代代理系统,设计目标是提供高性能、高可用、高安全的代理服务。与传统的代理服务不同,nonstop 在设计之初就将 AI Coding 作为核心开发方法,旨在验证 AI 在系统级编程中的能力。

其核心特性:

  • 功能全面:支持L4/L7代理,满足不同场景的代理需求;

  • 协议先进:支持HTTP/3和QUIC协议,提供更快、更可靠的数据传输体验;

  • 安全防护:内置WAF(Web应用防火墙)纵深防御机制,识别和拦截各种Web攻击;

  • 边缘计算:集成V8 JavaScript引擎,支持JS Workers边缘计算能力;

  • 部署便捷:单二进制部署,支持零停机热加载,运维简单灵活。

nonstop的设计理念是"永不停服",意味着系统的可用性是第一优先级。通过精心设计的架构和容错机制,nonstop能够在各种异常情况下保持服务可用,不会因为单点故障或配置变更而中断服务。这种设计理念与CDN业务的高可用要求高度契合。

nonstop 项目成果数据:

1)在 20 天内由 1 人 + AI 开发团队完成,交付规模:

Image

2)产品能力: 支持 L4/L7 代理、HTTP/3 QUIC、内置 WAF 纵深防御、V8 JS Workers 边缘计算,单二进制部署,零停机热加载。实测:42,052 QPS / 5000 并发 0 错误 / P50 延迟 1.1ms / 6 层纵深防御。

完成nonstop项目后,我们有惊喜更有疑问。惊喜的是AI能力确实很强,但同时也发现了很多问题:尤其是LEGO这样百万行级、高可靠的 C++ 系统,能不能"放心用",会不会翻车? 也是 Harness Engineering要解决的核心命题。

三、核心问题:AI Coding在大型项目里为什么容易翻车?

尽管nonstop让我们探测出 AI 编码的能力边界与行为特性,但在实际应用AI Coding的过程中,我们也发现了许多问题和挑战。

1、AI Coding的常见问题
Image
2、AI Coding的问题根因分析

在项目实际应用AI Coding的过程中,我们也发现了许多问题。基于57个真实案例,我们深入分析提炼出13类典型问题和5大根因,建立了系统化的问题认知框架,以及相应的预防和应对机制。

问题清单:这些问题在我们的实际项目中反复出现,建立问题清单有助于我们在使用AI Coding时提前识别和规避这些风险。

序号

问题类型

严重程度

来源

1

异步语义误用(blocking send in tokio)

Critical

nonstop

2

幻觉(调用/配置不存在的 API)

High

两项目

3

改不全(insert 无 cleanup)

High

两项目

4

配置与实现脱节

High

nonstop

5

安全盲区(时序攻击/SSRF/JWT)

Critical

nonstop

6

测试 Flaky(平台差异)

Medium

nonstop

7

内存泄漏(DashMap 只增不减)

Critical

nonstop

8

协议实现不完整

Critical

nonstop

9

底层未读就改上层

High

LEGO

10

源码分析替代实测

High

LEGO

11

大文件编辑损坏

Medium

nonstop

12

环境盲区

Medium

LEGO

13

不会说"我不知道"

最高

LEGO

针对上述分析,AI Coding 在大型项目中的常见问题主要源于:

  • 不会说"我不知道":这是最高风险——AI 会用自信的语气输出错误结论,反而降低人的审查意愿;

  • 幻觉:编造函数签名、编造 RFC 章节号、编造百分比数据;

  • 改不全:局部修改,遗忘全局影响(insert 了却没有 cleanup);

  • 模式匹配代替验证:代码相似就推断行为相同,跳过实测;

  • 缺乏环境意识:不区分容器/宿主机,不查配置直接猜。

根本原因:AI 缺乏"不确定性意识"和"全局视野"。所以,接下来我们需要针对性地解决这两个问题。

四、LEGO AI Coding实践:Harness Engineering架构

基于上面的系统性分析研究和项目工程实战,我们已确认LEGO的项目是可以由AI来写,但LEGO项目存在一定复杂度和风险。所以,我们希望不是"用 AI",而是"驾驭 AI"——这也是我们 Harness Engineering 的实践的起点。

1、Harness Engineering 的核心理念

首先我们梳理出一个理念:将 AI 尽量 harness 在单个模块、单个文件、单个函数内实现。

核心是:上下文、约束和反馈。

LEGOHarness Engineering 不是简单地"给 AI 加规则",而是构建一套系统——让 AI在有边界、有约束、有反馈的环境中持续、可靠、高质量地交付代码。

2、LEGO Harness Engineering五层架构设计

基于这个核心思想,我们设计了LEGO Harness Engineering五层架构。这五层架构围绕"上下文、约束和反馈"三大核心要素构建,形成了一个完整的闭环系统。

各层职责:

Image

工程体系才是核心资产,而不是某个模型或 prompt。Skill 每天在更新,大模型在进化,但工程体系的价值持续积累。

五、三大实践抓手

1、LEGO上下文建设---消除 AI 的"记忆偏差"

1)让AI“理解”项目和需求

LEGO 构建了四层递进的上下文体系,从项目宪法到领域专家知识,覆盖了 AI 在 CDN 和 EO 项目中工作所需的全部知识。

Image

①Agent.md(项目宪法):项目结构即上下文,架构模式即约束,内联反馈注释;

②安全纪律:用"反例免疫"替代"正面说教",每条规则都有错误写法和正确写法,用错误示例教 AI "什么是错的";

③领域知识(可复用模式库):CR 检查清单来自真实问题且经过 A/B 验证,涵盖 CR 检查模式、编码模式库、并发设计模式;

④专业 Skill:覆盖友商实现、协议 RFC、开源代码等领域知识。

AI 训练数据中的 RFC 可能已经过时(如 RFC 7230/7231 已被 9110/9112 取代),引用时还可能混淆章节号。LEGO 的解法:将 38,068 行 RFC 原文固化在本地,AI 通过直接读取而非"回忆"来引用协议标准。

2)建立多竞品调研和协议安全 Agent团队

在AI Coding过程中,上下文信息的质量至关重要。为了让AI做出正确的技术决策,我们需要为它提供充分的上下文信息。为此,我们建立了竞品调研Agent团队,负责为AI提供业界最佳实践和竞品实现的信息。

技术决策三问:

  • RFC怎么说?(标准规范)

  • 业界怎么做?(最佳实践)

  • LEGO有什么差别?(定制化需求)

传统做法的局限性:

人类工程师花1-2天读RFC文档;花1天翻阅Nginx源码;花几天对比竞品实现;然后才能编写技术方案,整个流程耗时且容易遗漏关键信息。

LEGO的解决方案:组建Agent团队,实现自动化、结构化、并行化调研。

  • 竞品调研Agent团队架构

Image
  • 协议安全测试Agent团队

Image

知识工程进化:通过三个维度的持续迭代提升Agent能力。

维度

内容

作用

运营数据

实际生产环境的问题反馈和经验积累

了解真实的安全攻击场景和手法

专家思维

资深工程师的经验法则和最佳实践

提供常见的安全漏洞模式和编码规范

行业规则

协议安全和网络安全领域的通用规则和标准

提供权威的安全知识来源

协议安全测试Agent专注于安全防护的深度验证,确保每个协议实现都符合安全标准和防护要求。

最终主 Agent 同步分析 LEGO 源码,交叉验证,将原本需要3 人/天的调研压缩至1天。

2、约束

核心原则:用结构化约束替代语言化期望,让 AI"不敢"犯错。

三层约束架构:

  • Layer 1:权限安全基座;

  • Layer 2:代码规则即编译器;

  • Layer 3:流程约束——测试不可跳过(功能实现 → 单元测试 → 代码审查,严格阻塞顺序)。

Task: 功能实现└─ blocks: [单元测试]   ← 测试 Task 被功能 Task 阻塞
Task: 单元测试├─ blockedBy: [功能实现]│  ← 功能完成后才能写测试├─ blocks: [代码审查]│  ← 测试完成后才能审查
Task: 代码审查└─ blockedBy: [功能实现, 单元测试]   ← 两个都完成才能审查

五条核心约束(每条约束都来自真实踩坑):

序号

约束

踩坑来源

1

单项目调研:每次只调研一个竞品

多竞品混合分析时 C 和 C++ 代码模式互相干扰

2

严禁网络操作

AI 联网搜索时返回的竞品信息可能过时或不准确

3

本地不存在则跳过

无源码时 AI 用训练数据编造了"源码分析"

4

不修改 lego_server 代码

职责隔离:调研 Agent 不能有副作用

5

严格搜索范围

防止 Agent 在系统目录或 LEGO 目录中搜索污染分析结果

明确的约束比模糊的期望更有效:

方式

示例

效果

❌ 期望

"写高质量的代码"

AI 理解模糊,输出不稳定

✅ 约束

"禁止裸 new,必须 unique_ptr"

AI 100% 遵循

❌ 期望

"注意并发安全"

AI 可能遗漏

✅ 约束

"热路径禁止全局 mutex,用 per-thread 或分片锁"

AI 生成时自动规避

❌ 期望

"记得写测试"

8 个 Agent 忘了测试

✅ 约束

TaskList 中测试 Task 阻塞后续流程

不可能跳过

约束还延伸至多模型多 Agent 对抗式 CR,通过并行独立审查,cr_manager 汇总出 cr_report.md,实现交叉验证,解决单模型的知识盲区、注意力盲区和确认偏差三大问题。

3、反馈

1)从需求到研发测试的全AI自动化流水线

核心理念:反馈速度决定进化速度,实时反馈能让输出质量翻 2-3 倍。

一条命令驱动的 9 阶段全自动流水线:

Image

LEGO 建立了三条并行的反馈通道:

  • 通道 1:自动采集(Hook)

  • 通道 2:踩坑日志(Pitfall Journal)

  • 通道 3::**.md 内联反馈

踩坑 → 规则 → Skill 的进化闭环:

真实踩坑 (PIT-001: mmap 检查 nullptr)    ↓安全规则 (R2: 系统调用返回值)    ↓CR 检查清单 (review-patterns.md)    ↓A/B 实验验证效果    ├→ 确认有效 → 保留    └→ 效果有限 → 标注"通用知识可覆盖"

实际案例:

  • PIT-001 (mmap nullptr→SIGSEGV) → 写入 R2 规则 → AI 自动使用 MAP_FAILED;

  • 问题 9 (未读底层就改上层) → Pattern #8 → A/B 验证显著 → 保留;

  • 问题 23 (无源码时编造分析) → 更新 competitor-researcher Skill。

2)多模型多Agent对抗式CR

单模型CR的三个盲区:

盲区类型

表现

根因

知识盲区

每个模型的训练数据不同,对特定框架/模式的理解有差异

更懂Seastar异步模式和系统调用约定

注意力盲区

大diff下模型会"聚焦"于某些区域而忽略其他

上下文窗口有限,500+行diff时后半部分审查质量下降

确认偏差

单模型发现一个问题后,倾向于沿同一方向继续找

发现了内存安全问题后,可能忽略配置兼容性问题

对抗式CR的核心思想:

  • 模型A独立审查 → 发现问题集{a1, a2, a3};

  • 模型B独立审查 → 发现问题集{b1, b2, a2};

  • 模型C独立审查 → 发现问题集{c1, a1, b1}。

交叉验证:

  • a2被A和B同时发现 → 高置信度;

  • a1被A和C同时发现 → 高置信度;

  • b1被B和C同时发现 → 高置信度;

  • a3只有A发现 → 需要在交叉轮中验证;

  • c1只有C发现 → 需要在交叉轮中验证。

对抗式CR的架构和流程:

  • 模型并行独立审查;

  • 汇总问题并交叉验证;

  • 对争议问题进行辩论式讨论(同意/反对/维持);

  • 全员无新发现时自动收敛。

对抗式CR与业界对比分析:

维度

GitHub Copilot CR

OpenAI Codex Review

LEGO对抗式CR

模型数

1

1-2

3

执行方式

串行单次

串行两次

并行+交叉迭代

交互方式

静态扫描

静态扫描

辩论式(同意/反对/维持)

收敛机制

无(一次性)

固定轮数

全员无新发现自动收敛

容错

失败则无结果

失败则无结果

部分模型失败仍可产出

审查标准

通用

通用

项目定制P0-P3+review-patterns

LEGO的对抗式CR通过多模型并行审查和交叉验证,能够发现更深层的问题;通过辩论式讨论,能够更深入地理解问题的本质;通过自动收敛机制,能够在保证质量的同时提高效率。

六、LEGO-Harness Engineering实践案例

确定了3个抓手之后,我们快速进入整体的工程落地中,这里具体分享具体实践案例。

1、案例:cpuinfos读写竞争修复

背景:发现cpuinfos存在多线程读写竞争问题,需要修复以确保系统稳定性

Image

实践过程:

  • 通过对抗式CR快速定位问题根源;

  • AI生成修复方案和测试用例;

  • 自动化验证修复效果。

成果:

  • AI 系统性对比三种方案(ReadWriteLock / atomic<shared_ptr> / 双缓冲+atomic 索引);

  • 成功修复了读写竞争问题;

  • 最终采用零性能开销方案,开发时间从 5 天压缩至 1 天;

  • 但暴露出方案未考虑线程初始化的问题,非最优解,需要后续优化。

2、阶段性收益~效率提升20%

通过Harness Engineering的实践,LEGO项目在初期就获得了显著收益,综合效率提升20%。也稍做解释,虽然在局部环节(比如调研、开发)的提速幅度远不止于此可能达数倍,但 AI 的执行结果仍需人工 Review,同时对研发同学尤其是新人也需要时间成本熟悉学习这套体系——将 Review 成本与学习曲线一并纳入后,最终综合提升约为 20%。

Image

维度

提升幅度

竞品调研 

3 人天 → 1 天(~3x) 

方案设计

2-3 人天 → 1 天(~2x) 

协议安全测试

3-5 人天 → 1 天(~4x)

代码审查

等待 1-3 天 → 30 分钟

cpplint 通过率

>95%

CVE 防护覆盖

100%

知识资产方面:86,422 行代码、31 个 Skill、34 条踩坑规则、4 竞品并行调研,3组A/B实验 持续积累。

七、先行性差异化探索和挑战

当前,LEGO已经进入了"落地 + 量化验证 + 持续迭代"的成熟阶段。在这一过程中,我们进行了大量的先行性探索:

  • 模型能力边界:深入了解AI在不同场景下的能力局限;

  • 效果评测:建立量化的效果评估体系;

  • 最佳实践沉淀:将成功经验固化到流程中。

与业界实践的差异化对比:

维度

业界典型水平

LEGO实践

LEGO的差异化

规则验证

改了harness跑benchmark

单变量A/B实验

知道哪条规则有用

多模型对抗CR

两模型串行review

三模型并行+交叉迭代+自动收敛

更深的缺陷发现

问题归因

散点经验分享

34问题×5根因×代码对比

系统性知识库

跨会话上下文

prompt caching/文件记忆

TAPD目录结构化存储

多Agent共享上下文

测试闭环

生成→运行

生成→运行→覆盖率→补全→收敛

完整闭环

反馈时效

事后回顾(天/周级)

实时Hook+当天日志+永久规则

三时间尺度覆盖

同时我们也发现一些问题:

  • 误报率 36%:9 个代码问题中真实 P0 仅 1 个;

  • 文档爆炸:8 个需求生成 99 个文件,人难以全部确认;

  • AI 的"自信"会传染:格式工整的文档反而降低审查意愿;

  • 团队能力退化风险:AI 用多了,工程师的专业和文档能力可能下滑。

这些都是在 Harness Engineering实践中需要持续应对的真实挑战。

八、AI Coding时代--后台开发的角色演变和团队建设思考

在AI Coding时代,后台开发工程师的角色正在发生深刻变化:

Image
1、角色的重新定义

过去我们熟悉的职能边界正在松动。

  • 初级开发:不再只是敲代码的执行者,而是进化为能够驾驭 AI 写代码的操作员,掌握 Skill 与 Prompt 成为新的基础技能;

  • 高级开发:升维为 Harness 工程师,核心工作是设计 AI 的约束、上下文与规则,让 AI 在可控轨道上高效运转;

  • 架构师:重心从系统设计转向人机协作架构,真正的判断力体现在"哪些交给 AI、哪些必须人来把控";

  • 测试和安全工程师:分别演变为 AI 质量工程师与 AI 安全专家,前者设计测试闭环以验证 AI 输出,后者构建 AI 安全测试 Skill 并纳入计算安全性考量。

这一切变化背后,有一个不变的核心能力:抽象思维——知道什么该让 AI 做、如何验证 AI 做得对不对。这是工程师在 AI 时代真正的不可替代性所在。

2、能力转型的四个维度

角色演变的背后,是工程能力体系的系统性重构:

  • 写代码 → 写约束:让 AI 遵循正确规则写出正确代码,比自己手写更关键;

  • 解决问题 → 防止问题:从 Bug 中提炼规则和 Skill,构建验证防护机制,将经验转化为护城河;

  • 个人深度 → 知识表达:把个人积累的经验转化为 AI 可消费的格式(Skill 规则 RFC),实现知识的乘数效应;

  • 全栈开发 → 人机协作:核心决策变为——哪些任务交给 AI、哪些人来兜底、结果如何验证。

3、团队建设的渐进路径

团队的 AI 能力建设不能一蹴而就,而应遵循会用 → 会建 → 会进化的三段节奏:

  • 第 1-2 月(会用):推动全员掌握 /start 全流程、对抗式 Code Review 和 14 条安全规则,打牢使用基础;

  • 第 2-4 月(会建):骨干成员开始编写团队专属 Skill,通过 A/B 实验验证效果,建立 Skill 共享机制,形成团队智慧沉淀;

  • 第 4-12 月(会进化):迈向 Harness 自动化,推动跨团队知识共享,持续追踪 AI 使用效果,构建自我迭代的 AI 协作飞轮。

4、实践态度的三重奏

面对 AI Coding,团队需要在三种态度之间保持清醒的平衡:

  • 小心——人类必须审核每一行 AI 生成的代码,不能盲目信任;

  • 大力——主动选择高频场景深度使用,不能浅尝辄止;

  • 拥抱——积极布道推广,让 AI 能力成为团队文化的一部分。

而无论工具如何演进,永远要掌握底层原理——这是工程师在人机协作时代保持判断力与掌控感的终极压舱石。

结语

工程体系才重要。

AI Coding 不是"让 AI 替你写代码",而是重新定义人与 AI 协作的工程范式。LEGO Harness Engineering 的价值不在于某次效率提升的数字,而在于:每一个踩坑变成规则,每一条规则内化进 Skill,每一个 Skill 让下一个人少走弯路——这是一套可持续进化的工程体系。

作者丨lancelotluo
来源丨公众号:腾讯技术工程(ID:Tencent_TEG)
dbaplus社群欢迎广大技术人员投稿,投稿邮箱:[email protected]
Image
Image