← Back to list

100 万用户、6 个月、context 压缩 500 倍:多 Agent 架构真正的瓶颈不是模型,是让它持续修正自己的能力

大多数团队以为,把 AI 塞进产品 = 一个 prompt + 一个 API。

BeeOS · 2026-06-07 14:42 · 0 claps · 17.2 min read
Open on Medium ↗
Wiki topics: AGT · AI Agents

100 万用户、6 个月、context 压缩 500 倍:多 Agent 架构真正的瓶颈不是模型,是让它持续修正自己的能力

大多数团队以为,把 AI 塞进产品 = 一个 prompt + 一个 API。

Rippling 在 6 个月内把 AI 铺到全线产品、服务 100 万用户之后,得出了一个相反的结论:模型不是瓶颈。Context engineering 才是。Eval 不是锦上添花。它是系统能持续运行的前提。

如果你正在把 AI agent 嵌入一个已经跑着的复杂产品 — — 尤其是那种数据模型跨度大、权限边界多、写操作不能随便放行的产品 — — 那你大概率已经被同一类问题折磨过。context 太大塞不进窗口 — — 但更糟的是塞进去了,agent 分不清 payroll 域和 spend 域里同名的 “balance”。tool call 多了之后 agent 开始幻觉实体的 ID — — 不是胡编,而是把 A 公司的 workspace_token 传给了 B 公司的查询接口。每次改 prompt 都像在修一个你不知道会崩哪里的漏水管道,因为改了一处 reasoning 逻辑,可能影响三条不同的 tool chain。

Rippling 的产品横跨 HR、IT、Payroll、财务和全球运营 — — 这不是五个独立的产品线,而是一个统一平台上互相纠缠的数据世界。底层数据模型有数千张表、几十万个字段、大量跨域同名的实体。”balance” 到底是健康储蓄账户余额、信用卡额度、还是承包商付款账户?同一个词,三个域,三个完全不同的含义。更致命的是,这些域不是静态的 — — Rippling 连接了 Salesforce、Carta、GitHub 等外部平台,entity 的语义在跨系统边界时又会发生变化。

把一个 LLM 直接扔进这个数据模型里做问答,不是”效果不好” — — 是根本不可行。你不可能把几千张表的 schema 全塞进 context window,即使能塞进去,LLM 也分不清同名实体在不同域里的区别。

这就是为什么 Rippling AI 的架构值得仔细看。它不是在模型层赢了,而是在 context 治理、多 agent 分工、和自我修复 eval 闭环这三个层面做出了一套可复制的系统。

适合谁读? 正在把 AI agent 嵌入已有复杂产品的工程师和产品负责人、被 context window 和 eval 稳定性折磨的团队、想知道”多 agent 架构在生产环境到底长什么样”的人。

读完这篇文章,你应该能带走三个判断:

  1. 为什么 Rippling 把 context 从全量压缩 100–500 倍,并且这不是一个 prompt 技巧 — — 是三层 context 治理基础设施;
  2. supervisor + 3 类子 agent 怎么在一个数据模型横跨 HR/IT/Payroll/财务的产品里做到”每个 agent 只看到自己该看的东西”;
  3. BeeOS 如何把 context 裁剪、写操作收敛、eval 闭环这三件事从”团队自己搭”变成 runtime 内置能力 — — 让 agent 系统不只是能跑,而是能持续修正自己。

零、案例事实:谁在什么条件下跑出了什么结果?

根据 LangChain 发布的 Rippling 案例研究(How Rippling Went AI-Native Across Every Product in 6 Months with Deep Agents and LangSmith,2026 年 6 月 1 日),这是一次真实的跨域 AI 系统落地:

  • 维度: 上线时间 — 数字: 6 个月(从启动到全产品线 AI-Native)
  • 维度: 用户规模 — 数字: 100 万+ 全球用户
  • 维度: 数据模型 — 数字: 数千张表、几十万个字段,跨 HR/IT/Payroll/财务/全球运营
  • 维度: Agent 架构 — 数字: 1 个 supervisor + 5~7 个专业子 agent
  • 维度: Context 压缩 — 数字: 100–500 倍(通过动态 skill 注入 + 重排序)
  • 维度: Eval 规模 — 数字: 300–400 个集成测试查询,每日多次生产环境持续评估
  • 维度: 部署门禁 — 数字: ~10 个 deploy-blocking eval,任何通过才能上线
  • 维度: 写操作隔离 — 数字: Action agent 用沙箱化代码执行,LLM 不直接操作数据

以上数据来自 LangChain 官方案例页(链接),未提供绝对金额和完整实验周期细节。

一、Context Engineering:不是”能不能塞下”,而是”能不能不乱”

Rippling AI 的核心技术挑战不是模型选择 — — 是 context。

数千张表、几十万个字段、跨域同名实体 — — 如果你把 schema chunks 直接喂给 LLM,结果不是慢,是。同名字段在不同上下文中语义完全不同,”balance” 在 payroll 域和 spend 域是两个东西。LLM 不能靠自己区分这些 — — 它需要一个外部系统帮它先把上下文剪裁对。

Rippling 的解法是三层 context 治理:

第一层:动态 skill 注入。 用户提问后,系统先用 Rippling 自有的语义层识别当前域(payroll?devices?ATS?spend?),然后注入该域专属的 skill — — 不是把所有 schema 都塞进去。midleware 在 agent 调用工具之前做重排序,把不相关的实体剪掉。这一步把 context 从”全量”压缩了 100 到 500 倍。

第二层:REPL 变量存储。 这是 Rippling 团队最锋利的一个观察。他们发现 LLM 在跨 tool call 传递长字母数字 ID(比如 employee_id、workspace_token)时,会频繁出现幻觉 — — 不是完全编造,而是把相似的 ID 搞混。解法:在 agent 执行步骤之间维护一个运行时变量表(REPL),agent 引用的是命名变量而非裸字符串。变量绑定由系统保证,LLM 只负责语义层。

第三层:沙箱化代码执行。 Action agent(写操作)不直接让 LLM 操控数据。LLM 负责”要做什么”(reasoning),但”怎么格式化”(deterministic code)在沙箱里跑。比如客户端上传的 CSV — — 里面可能是各种格式的员工数据、薪资调整、部门变更 — — 先由沙箱代码标准化成 Rippling 内部 API 期望的格式,再执行写入。这一步把 LLM 的不确定性收束在 reasoning 层,不让它侵入数据层。

为什么这一步不能省?因为数据格式错误比 reasoning 错误更难发现。LLM 如果把 “2026–01–15” 写成 “01/15/2026”,Rippling 的内部 API 可能静默接受但解析成错误的日期 — — 这个 bug 不会在 eval 里触发明显的失败告警,但它会导致员工入职日期偏移、薪资计算错误。沙箱代码把格式转换变成确定性操作,让 LLM 专注在它擅长的事上:理解”这条 CSV 里是什么数据、应该映射到哪些字段”。

这三层合在一起,本质上是在 LLM 和 Rippling 的数据世界之间建立了一个context 治理层。它不靠 prompt engineering 去”说服” LLM 不乱,而是靠系统设计去确保 LLM 没机会乱。

这里有一个容易被忽略的深层逻辑:这三层不是并列的 — — 它们有先后顺序。先确定域(skill 注入)→ 再注入上下文(REPL 变量绑定)→ 最后才执行(沙箱代码)。这个顺序本身就是治理层级。如果先执行再确定域,那 LLM 已经在错误的 context 里做出了一次不可撤回的 tool call — — 问题不是”回答错了”,而是”已经改错数据了”。

二、多 Agent 分工:不是你”告诉”agent 做什么,而是每个 agent 只看自己能管的那块

Rippling AI 的 agent 架构是 supervisor + 专业化子 agent。这个选择不是架构审美 — — 是被 context 逼出来的。

如果只用一个 agent 处理所有问题,这个 agent 需要一个能同时理解 HR、IT、Payroll、财务四个域的工具集。工具集越大,context 越重,tool selection 越容易出错。而且单一 agent 的写操作权限边界极其模糊 — — 它要么能写所有东西(危险),要么不能写任何东西(无用)。

这个选择不是架构审美 — — 是被 context 逼出来的。

如果只用一个 agent 处理所有问题,这个 agent 需要一个能同时理解 HR、IT、Payroll、财务四个域的工具集。工具集越大,context 越重,tool selection 越容易出错。而且单一 agent 的写操作权限边界极其模糊 — — 它要么能写所有东西(危险),要么不能写任何东西(无用)。更隐蔽的问题是:单一 agent 出 bug 时,你没有故障域的概念。是读数据出了问题,还是写数据出了问题?还是 RAG 检索到了一个错误的政策文档?你不知道 — — 所有行为都在同一个 agent 的 trace 里混在一起。

Rippling 把这些能力拆成了三类子 agent:

Supervisor Agent(主管 Agent)
  ├── Read Agent     → 查询结构化数据(HR/Payroll/IT/财务 + Salesforce/Carta/GitHub)
  ├── RAG Agent      → 检索非结构化内容(帮助文档、公司手册、HR 政策)
  └── Action Agent   → 执行写操作(批量上传、职级标准化、新员工预填充)

Supervisor 不干具体活。它只做一件事:分析用户意图 → 调度正确的子 agent。用户问”我的 balance 是多少”,supervisor 先判断这属于哪个域(health savings?credit card?contractor payment?),然后把任务路由给对应的 Read Agent。

这个 supervisor 模式的关键价值不是”分工” — — 你用 if-else 也能分工。关键价值在于 supervisor 的 reasoning 是 traceable 的。当系统出错,你能沿着 trace 看到 supervisor 把”balance”解析成了哪个域、为什么、然后确认是 supervisor 的路由判断错了还是子 agent 的查询结果错了。没有这个 trace,多 agent 系统在生产环境就是黑盒 — — 你知道出错了,但不知道错在哪一步。

还有一个细节:用户界面不只是文本框。Rippling AI 的回复里,结构化数据渲染成可排序、可筛选的表格;多选澄清以选择 UI 出现;action 确认有独立的交互模式。这意味着 agent 的输出不是一段文字 — — 它是结构化的 payload,前端根据 payload 类型选择渲染方式。这个设计让 agent 的输出变成可消费的 API response,而不是”你看着办”的自然语言。

这里有一个容易被忽略的设计选择:每个子 agent 的工具集是独立裁剪的。

Read Agent 只能读 — — 它的 tool set 里没有写操作入口。Action Agent 能写,但写操作先经过沙箱代码执行,再经过内部 API 校验。RAG Agent 只能检索 — — 它碰不到结构化数据。这个”最小权限”的设计,不是安全部门的 checklist,而是让多 agent 系统能稳定运行的前提条件。当一个 agent 的行为出问题,你能确定故障域是哪个 agent — — 而不是在一条巨型 prompt 链里大海捞针。

三、Eval 不是”测一下”,而是系统的自我修复能力

Rippling 的 eval 体系很容易被误读成”他们有很好的测试”。但真正值得拆解的不是”跑了很多测试”,而是eval 和 agent 之间形成了一个闭环

先看四层 eval 管线:

Offline eval           → 本地 mock,每次 commit 自动跑
Post-merge integration → 300–400 个查询,在完整 sandbox 中用真实 API
Deploy-blocking        → ~10 个关键场景,不通过就不能上线
Continuous eval        → 每日多次,在生产数据上持续跑

这四层不是”测试金字塔”的翻版。关键在于:当 continuous eval 发现线上 regression,系统不是发一个告警等人修 — — 它用 agent 来分析失败、提出修复方案、重跑 eval 验证改善、然后生成 PR 等人审。

这就是 Rippling 团队说的 semi-automated self-healing loop:

线上失败 trace → agent 分析失败原因 → 提出修复方案 → 重跑 eval → 确认改善 → 生成 PR → 人工审查合入

“人工审查合入”这一步至关重要 — — 它说明这套系统不是全自动修 bug(那会引入新的风险),而是把修复的探索成本从人转移到 agent,把审批权留在人手里。

这个设计的深层含义:eval 不只是质量的度量,它是 agent 系统自我意识的基础设施。 没有 eval,你的 agent 不知道自己错了。有了 eval + self-healing loop,agent 能从错误中学习 — — 不是”模型的权重更新了”,而是”系统的行为被修正了”。

BeeOS 落点:百万人级别 agent 系统的三个治理维度

Rippling 的案例暴露了一个多 agent 系统进入生产后会遇到的三个核心张力。BeeOS 围绕这三个张力给出了协议层方案。

张力一:Context 裁剪应该在哪一层发生?

Rippling 的 100–500 倍 context 压缩在 middleware 层实现。BeeOS 的做法是把同一层逻辑推到 MCP 协议入口。

MCP(接入面):在 BeeOS 里,每个 agent 实例不是拿到全套工具列表。tools/list 的返回结果按 agent 角色裁剪——ReadAgent 只看到读查询类工具,ActionAgent 看到的写类工具背后挂了 bak_ 权限门。这比 middleware 更进一步:不是在 LLM 拿到工具之后靠 prompt 告诉它”别乱用”,而是在工具分发之前就剪掉了它不该看到的东西。

A2A(协作面):Context 治理不只发生在 agent 内部。Rippling 的 supervisor 需要把任务描述路由给子 agent — — 这个路由动作本身就是 context 的传递。如果 supervisor 把所有上下文一股脑推给子 agent,那三层治理白做了。BeeOS A2A 的 JSON-RPC task 格式自带 input/output schema,子 agent 只收到任务边界内需要的信息,而非全量透传。

张力二:写操作怎么做到”能执行,但不会乱执行”?

Rippling 用沙箱代码执行来隔离 LLM 和数据操作。BeeOS 在更大的范围上做了同一件事:不是禁止写操作,而是让写操作可见、可审批、可回滚。

  • Agent 角色: DataReaderbak_ scope: bak_readonly — 允许: 查询跨域结构化数据 — 拒绝: 修改任何字段
  • Agent 角色: DocRetrieverbak_ scope: bak_docs_read — 允许: 检索帮助文档和手册 — 拒绝: 修改文档内容
  • Agent 角色: ActionExecutorbak_ scope: bak_write_ops — 允许: 执行写操作(经沙箱代码) — 拒绝: 直接 SQL/API 裸写
  • Agent 角色: EvalRunnerbak_ scope: bak_eval — 允许: 触发 eval、读取结果 — 拒绝: 修改 eval 配置
  • Agent 角色: PRGeneratorbak_ scope: bak_code_review — 允许: 生成修复 PR — 拒绝: 合并 PR(需人工审批)

关键不在权限表本身。关键在于 **bak_ 是 runtime 层级的权限收束,不依赖 agent 的 prompt compliance**。ActionExecutor 想改某个字段?它必须穿过 bak_write_ops 这个 gate——gate 的判断逻辑在 BeeOS 的 control plane 里,不在 agent 的 prompt 里。

张力三:Self-healing 怎么从”一个团队的做法”变成”runtime 内置能力”?

Rippling 的 self-healing loop 依赖 LangSmith 的 trace API — — 有人写了一个 agent 来分析 trace、有人写了一个 agent 来跑 eval、有人写了一条 CI 管线来把这些串起来。这是一套定制的工程系统。

BeeOS 的观点是:deploy → monitor → eval → self-heal → rollback 应该是 runtime 内置的 cycle,不是每个团队各自搭的脚手架。

OpenAPI 提供 deploy/invoke/terminate 生命周期 — — 每一次 deploy 自动触发 eval gate,不通过的不上线。生产环境中 continuous eval 发现 regression 时,runtime 能触发 rollback 到上一个已知良好的 agent 版本,而不是等人工处理。Self-healing 从”团队文化”变成了”平台保证”。

这个三入口分工可以这样看:

A2A(协作面)
  supervisor → ReadAgent / RAGAgent / ActionAgent 的任务路由
  JSON-RPC task + input/output schema 实现最小 context 透传
MCP(接入面)
  按角色裁剪 tools/list → ReadAgent 看不到写工具
  bak_ gate 在 tools/call 路径拦截越权操作
OpenAPI(控制面)
  deploy → eval gate(不通过不上线)
  monitor → regression detect → rollback(runtime 内置)

为什么这些不是 LangChain 能单独做的事

Rippling 的架构依赖 Deep Agents 做 reasoning loop,依赖 LangSmith 做 trace 和 eval。这是一个强大的工具栈。但把视角拉高一点,你看到的是一个模式:

每个 agent 系统在生产环境都需要一套”框架外的治理层”。

LangChain 负责你怎么写 agent。但它不负责: — agent 之间的任务传递格式是否标准化(A2A 做的事) — agent 看到的工具集是否按角色裁剪(MCP 做的事) — agent 的部署、监控、回滚是否自动化(OpenAPI 做的事)

这些是 runtime 的能力,不是 framework 的能力。Rippling 团队自己搭了 context 治理层、eval 闭环、self-healing loop — — 但这不是”LangChain 让 Rippling 成功了”,而是”Rippling 在 LangChain 之上盖了一层 runtime 治理”。

BeeOS 的观点是:这层 runtime 治理不应该每个团队从头搭一遍。它应该是可复用的平台能力。

结尾:三个问题

Rippling 的案例不只是一个”大公司用 AI 的故事”。它摆在面上的问题是这些:

1. 你的 agent 系统的 context 裁剪在哪一层做?是在 middleware 里拼 prompt、
   还是在协议入口就剪掉了不该看到的东西?
2. 写操作的权限边界是依赖 agent 的 prompt compliance,
   还是有一个不依赖 agent 自觉的 runtime gate?
3. 你的 eval 体系能不能从"人发现问题"进化成"系统发现并修正问题"?
   如果不能——不是因为缺人,而是因为 eval 没有和 deploy/rollback 形成一个闭环。

如果这三个问题还没有答案,你的 agent 系统可能已经跑起来了,但它离”能持续运行”还有一段距离。

Rippling 的 6 个月不是奇迹 — — 它是一套可拆解、可复制的工程决策链。真正值得学走的不是”他们用了 Deep Agents + LangSmith”,而是:把 context 治理放在模型选择之前、用 agent 角色切分权限而不是用 prompt 约束、让 eval 闭环取代人工盯盘。这三件事,用任何工具栈都能做。区别是你在 framework 层重新发明它,还是在一个设计上就把它当一等公民的 runtime 上直接用它。

参考与延伸阅读

BeeOS:docs.beeos.ai · openapi.beeos.ai · a2a.beeos.ai · mcp.beeos.ai


메타데이터
post_id
04ef24af2d78
slug
100-万用户-6-个月-context-压缩-500-倍-多-agent-架构真正的瓶颈不是模型-是让它持续修正自己的能力-04ef24af2d78
url
https://medium.com/@beeos-ai/100-%E4%B8%87%E7%94%A8%E6%88%B7-6-%E4%B8%AA%E6%9C%88-context-%E5%8E%8B%E7%BC%A9-500-%E5%80%8D-%E5%A4%9A-agent-%E6%9E%B6%E6%9E%84%E7%9C%9F%E6%AD%A3%E7%9A%84%E7%93%B6%E9%A2%88%E4%B8%8D%E6%98%AF%E6%A8%A1%E5%9E%8B-%E6%98%AF%E8%AE%A9%E5%AE%83%E6%8C%81%E7%BB%AD%E4%BF%AE%E6%AD%A3%E8%87%AA%E5%B7%B1%E7%9A%84%E8%83%BD%E5%8A%9B-04ef24af2d78
canonical_url
https://medium.com/@beeos-ai/100-%E4%B8%87%E7%94%A8%E6%88%B7-6-%E4%B8%AA%E6%9C%88-context-%E5%8E%8B%E7%BC%A9-500-%E5%80%8D-%E5%A4%9A-agent-%E6%9E%B6%E6%9E%84%E7%9C%9F%E6%AD%A3%E7%9A%84%E7%93%B6%E9%A2%88%E4%B8%8D%E6%98%AF%E6%A8%A1%E5%9E%8B-%E6%98%AF%E8%AE%A9%E5%AE%83%E6%8C%81%E7%BB%AD%E4%BF%AE%E6%AD%A3%E8%87%AA%E5%B7%B1%E7%9A%84%E8%83%BD%E5%8A%9B-04ef24af2d78
author_url
https://medium.com/@beeos-ai
status
ok
fetched_at
2026-06-17 10:21:25