用智能体建一个大系统,难的不是写代码,而是在没有哪个会话看得到全貌的时候,让长程工作保持正确、让长程记忆保持有用。这篇导读概括 HotelByte 在这件事上的判断,以及它们为什么对造智能体的人同样重要。

这是我们第一版《AI 原生工程操作系统》(WP27)的新版:围绕两套 harness 重写,并像评估模型一样衡量。

TL;DR: HotelByte 在建一个 B2B 酒店分销平台,拿一家酒店批发商的需求清单来衡量它:14 个模块、792 项需求,这个范围的外部报价上亿元人民币;但清单只是标尺,平台要服务的是清单之外更多种类的旅游业务。建它的团队不到 5 名工程师,靠的是多家厂商的编码智能体:8 个仓库共 161 万行自有代码,其中 40% 是测试。这样的落地都跑在两套 harness 上:每个编码智能体内部的智能体 harness,是我们租来的;智能体在其中干活的工作 harness,是我们自己拥有、用自己犯过的错训出来的。白皮书讲我们在工作 harness 上做了哪些判断,像衡量模型一样衡量它(包括一个用我们自己的修 bug 任务搭成、预先登记的基准),并说明其中哪些判断能迁移到智能体那一侧。

为什么这件事对酒店分销很重要

酒店分销最怕“看起来是对的”。供应商 API 会漂移,价格几分钟就过期,预订、取消和支付规则很容易被改坏。很多问题只能从日志、数据库状态和发布状态里找答案,代码里看不出来。一个跑得快却在这些地方出错的智能体,就是财务风险。

五个判断:一条推出下一条

1. 工作 harness 自己拥有;模型和智能体 harness 租来用。 租来的这两层每隔几周就会变强,不需要我们做什么;给某个模型的短板打的补丁会越来越不值钱。我们自己拥有的,是智能体在其中干活的那套环境。否决的做法: 自己造编码智能体或评审机器人。

2. 判据要长得比吞吐快。 在这个尺度上,只有不依赖智能体自己的检查,才能决定它能声称什么;而我们的检查一直在加速:第二季度每天新增 47 个测试函数,第三季度 61 个,此后 180 个;测试在新增 Go 代码里的占比从 35% 升到 55%。否决的做法: 相信智能体自己说的“已修复”。

3. 长程任务是一串短的、可检查的步骤,状态放在模型之外。 清单里的一项需求,先变成设计,再变成 issue、PR、带着理由的提交,最后是带着证据的回执;只有两道机器检查在一个具名提交上都通过,才允许说“完成”,之后任何新提交都会让它作废。可以很多个智能体同时调研,但每个仓库只能有一个负责合并。卡住的智能体先换策略再求助:连续三轮没有进展,就退回调查阶段,并被要求拿出两条新思路;这样升满四级,才带着证据去找具名的人。否决的做法: 靠长会话把计划装在上下文里。

4. 两种记忆都开着;仓库的那一种是预算。 一个智能体学到的东西,留在它自己的记忆里;每个智能体都必须知道的东西,放在仓库里,任何厂商的智能体都读得懂,而且只有写明理由才能增长。否决的做法: 让某一家厂商的记忆成为组织的记录,以及为了中立把智能体的记忆关掉。

5. 按可逆性分级授权,而不是按信任分级。 智能体在每个风险级别都动手干活;只有不可逆的那一步等具名的人批准,生产自治有写进代码的数字门槛。否决的做法: 每一步都审批,审批会变成条件反射。

证据一览

  HotelByte
范围 以需求清单 14 个模块、792 项为标尺,外部报价上亿元人民币;清单之外还有租户、价格监控、顾问 CRM、会员忠诚度和智能体入口
系统 8 个仓库共 161 万行自有代码,不含生成代码,其中 40% 是测试:Go 后端源代码 57.9 万行、测试 47.8 万行,Web 前端 39.5 万行;23 个供应商适配器在生产上运行
判据 每天新增测试函数 47 → 61 → 180 个(第二季度、第三季度、此后)
历史 2025-05-04 以来提交 9,545 次;2025 年 7 月以来后端合并 3,637 个 PR
速度 一个 30 天的窗口里,10 个公司仓库共合并 2,069 个 PR
指令层消融 预先登记的消融,20 个私有修 bug 任务:所有检查都在,去掉整个指令层,20 个结果里 19 个不变,所以每个会话要加载的内容可以薄
成本 被测量的那台 Mac 上,每个合并 PR 2,600 万到 1.69 亿 token

如果你造的是智能体

两套 harness 遵循同一组规律,所以我们的判断里有五条能直接用在智能体 harness 上:按约定读工作 harness,并记下哪些指令左右了这次运行;把状态写到组织存放它的地方,自己的记忆留给那个人和那次会话;永远不要给自己打分,把“假报完成”和解决率并列来报;按可逆性提问,并写明你会先采用的默认做法;让客户能在他们自己的历史任务上,带和不带他们的工作 harness 来跑你。我们开源的旅行智能体 GoTry 就是按这组规律造的:模型负责访谈,决定交给代码,并写明每个被否决的选项卡在哪条约束上;每个数字都带来源标签,由代码贴上,不由模型写;证据未知或过期的结论一律拦下;预订和支付的写操作封在工具面之外。

两个故事

  • 计划了六个月,测量用了五十八个小时。 酒店匹配器的九个已知缺口,从 4 月起就躺在计划里。一次复盘改为先把旧评分器量一遍之后,一个 21 个特征的模型在约 58 小时里替换了它;在 286,542 条带标注列表上回放,无需人工就能映射的酒店占比从 67% 升到 90%,精确率也更高。自动映射仍然关闭,直到它通过写明的上线门槛。
  • 先测量大模型,再让它做决定。 语言模型仲裁器的第一版提示词,有 14.9% 的时候把不同的酒店判成同一家,所以让它只在影子模式运行的那道门守住了。换了第二版提示词和另一个模型之后,它有把握的判断变得可靠,但整体一致率仍在 84% 左右,所以它还在等真实的复核数据。

给你的团队的五个问题

  1. 如果明天换掉模型和编码智能体,你的系统里还有哪些部分是你自己的?
  2. 开启一项任务的会话不在了,这项任务的状态放在哪里?
  3. 智能体说“完成”的时候,能不能说出它验证的是哪个提交?
  4. 你的智能体学到的教训,有哪些只存在某一家厂商的记忆里?
  5. 你有没有在智能体不可能见过的任务上,量过你给它的指令和技能到底改变了什么?

怎么读完整白皮书

  • 第 1–3 节: 用速率看问题;两套 harness,什么是租来的、什么是训出来的;规模,以及支撑它的判据。
  • 第 4–5 节: 长程任务、状态,以及两种记忆。
  • 第 6–8 节: 复盘;我们怎样评估工作 harness(包括对指令层预先登记的消融实验);两套 harness 共同遵循的规律,以及能迁移的经验。
  • 第 9–12 节: 权限与数据、决策故事、和业界对照,以及落地手册。