JOTO
Contact us
← AI 智库
大语言模型

别再给每个Agent塞一个Sandbox:下一代Agent架构正在重写

2026 年 10 月 14 日

文章指出当前主流Agent架构将整个Agent封装在Sandbox中导致扩展僵化,提出应解耦Agent Runtime与执行环境:Runtime作为长期稳定服务仅负责状态计算与动作推导,Sandbox降级为按需调用的临时计算资源。系统通过Gateway、Bridge、Queue、PostgreSQL和Sandbox Service等分层组件实现职责分离,强调状态持久化优先、声明式操作、幂等性及严格执行顺序。

Agent架构演进示意图

别再给每个Agent塞一个Sandbox:下一代Agent架构正在重写

过去一年,Agent 领域里最常见的一种架构,是把整个 Agent 放进一个 Sandbox 里运行。

Agent 的上下文、文件系统、Shell、工具,甚至整个执行循环,都待在一个隔离环境里。

这很自然。

因为早期很多 Agent,本来就是从“本地 Coding Agent”演化出来的。

Claude Code、Codex CLI 这类产品,本质上都是一个安装在电脑上的程序,它能访问本机文件、Shell 和工具。

当我们想把它搬到云上时,最直接的办法就是:

给每个 Agent 一个云端 Sandbox。

于是,Agent 的扩展问题看起来就变成了:

怎么扩更多 Sandbox。

但作者在连续做了两个产品之后,逐渐意识到:

这可能是在扩展错误的东西。

真正需要扩展的,不是 Sandbox 本身,而是一个能够长期运行、可以恢复、可以跨设备、可以独立调度资源的 Agent 系统。

这篇文章讲的,就是作者从“Agent 住在 Sandbox 里”,一步步走向“Sandbox 只是 Agent 临时调用的一种资源”的过程。

一、最早的思路:一个 Agent,对应一个 Sandbox

作者最开始做云端 Agent 时,目标非常直接:

把 Agent 扩起来。

当时,他已经长期使用本地 Coding Agent。

在这种模式下,Agent 就像一个程序,住在某台电脑里。

它周围就是这台电脑的:

  • 文件。
  • Shell。
  • 工具。
  • 网络环境。

Manus 关于 Context Engineering 的文章,让“云端版 Agent”这件事变得很具体:

把 Agent 放进一个虚拟机 Sandbox。

Sandbox 的文件系统就成为可以保存和恢复的上下文。

因此,在作者的第一个产品 Anoma 里,他采取了最直接的路线:

把本地 Agent Loop 原封不动搬进 E2B。

这时,Sandbox 就成了 Agent 能力的最小单位。

要扩 Agent,就扩 Sandbox。

看上去很合理。

但很快,问题就出现了。

二、Sandbox 扩容,并没有真正消除复杂性

使用 E2B,并不意味着你就不再需要管理 Sandbox。

用户越多,仍然意味着:

  • 要创建更多 Sandbox。
  • 要决定哪些 Sandbox 可以复用。
  • 要回收空闲 Sandbox。
  • 还要受 Sandbox 提供商生命周期规则的限制。

与此同时,很多状态又被留在 Sandbox 里。

比如:

  • 会话历史。
  • 执行 Trace。
  • 临时文件。

如果要排查问题,就必须进入持有用户私有数据的环境。

而 API Key 又不能安全地直接放进 Sandbox。

于是,你还需要额外建一个 Gateway,专门代理模型请求。

慢慢地,你会发现一个趋势:

为了让 Sandbox 里的 Agent 更好用,你不断把职责从 Sandbox 里搬出去。

于是系统逐渐变成三层:

  • 第一层,是 Sandbox 里的完整 Agent。
  • 第二层,是外部控制平面,负责 Sandbox 生命周期、容量管理和模型流量。
  • 第三层,是真正面向用户的产品界面。

问题在于:

虽然外面多了一层控制平面,但每个 Sandbox 里依然装着一整套 Agent。

所以产品要扩容时,本质上还是在扩“Agent + Sandbox”的完整捆绑单元。

三、第二个产品,让问题变得更清楚

到 2026 年 2 月,作者已经意识到,这个架构需要重做。

他的第二个产品 Tetral,不再只是一个固定界面的应用。

目标变成了:

做一个通用 Agent SDK。

开发者可以把云端 Agent 嵌入自己的产品,而不用自己写 Agent Loop,也不用自己维护底层基础设施。

一旦目标从“一个应用”变成“一个 Agent 平台”,Sandbox 作为扩展单位的问题就更加明显。

作者考虑过两种路线。

第一种是 Kubernetes。

Kubernetes 很适合运行稳定服务。

但频繁创建和销毁 Sandbox 的场景,与传统 Pod 生命周期并不完全匹配。

当 Sandbox 高频创建、释放时,调度和 Pod 生命周期本身就会成为瓶颈。

第二种是自己用 EC2、Firecracker 和控制平面构建 microVM 系统。

这当然可以做。

但结果就是:

你正在自己造一家 Sandbox 提供商。

而且即使造完,Agent 的容量仍然被“你能提供多少台计算机”所限制。

无论走哪条路,Sandbox 调度依然是一个独立的基础设施问题。

这时作者意识到:

Agent 和 Sandbox 的扩展曲线,本来就不是一回事。

Agent Runtime 是稳定的、共享的。

它可以承载很多不同任务。

而 Sandbox 是隔离的、突发的、一次性的。

如果把这两者绑在一起扩容,就会让系统天然变重。

所以他决定把它们拆开。

四、关键转变:Computer 是 Agent 调用的资源,不是 Agent 居住的地方

这是整篇文章最核心的观点之一:

一台计算机,应该是 Agent 调用的一种资源,而不是 Agent 所在的地方。

拆开之后:

Agent Runtime 变成一个长期稳定的服务。

Sandbox 则只是多个外部资源之一。

和它并列的还有:

  • 模型。
  • 记忆。
  • 文件。
  • 凭证。
  • 工具。

Linux、Windows、macOS,也不再代表不同种类的 Agent。

它们只是不同形式的“计算机资源”。

Agent 需要执行 Shell 或文件系统操作时,再调用对应计算环境。

没有需要时,就不必从一开始就给每个会话配一台完整 Sandbox。

这一步改变了整个系统的边界。

接下来的问题就变成:

Agent Runtime 到底应该负责什么?哪些职责应该被移到外面?

五、重新定义 Runtime:它只负责“计算下一步”

作者对 Agent Runtime 的定义非常明确。

Runtime 是一个持续运行的程序。

它负责解释模型输出,并让 Agent 能够受控地访问:

  • 模型。
  • 网络。
  • 文件。
  • 工具。
  • 子 Agent。
  • 外部世界。

Claude Code 和 Codex 本地其实已经很像 Runtime。

但在云上,如果 Runtime 想成为真正可以替换、可以扩展的计算单元,就必须满足一个条件:

Agent 的身份、状态和资源不能只存在 Runtime 进程里。

否则 Runtime 一死,Agent 就跟着死。

因此,所有具有不同生命周期、不同所有权、不同扩展模式的职责,都应该被移到 Runtime 外部。

作者把系统拆成了几个独立部分。

Gateway:负责模型提供商和外部连接

Runtime 不应该自己处理:

  • OpenAI、Anthropic 等不同 Provider 的协议差异。
  • API Key。
  • OAuth Token。
  • 长连接。
  • 流式响应协议。

这些内容并不决定 Agent 下一步应该做什么。

所以它们被移到 Gateway。

Gateway 负责把不同 Provider 的请求统一成一种标准接口。

而且 Gateway 本身不保存 Agent 会话状态。

这样模型流量就可以独立扩容。

PostgreSQL:成为真正的状态源

Runtime Pod 随时可能被替换。

所以用户输入、执行进度、工具结果,都必须脱离 Runtime 存活。

作者把 PostgreSQL 作为系统的最终事实来源。

但 Runtime 并不直接操作数据库。

因为如果 Runtime 直接读写数据库,就会和:

  • 数据库 Schema。
  • 事务。
  • 顺序。
  • 所有权。
  • 重试协议。

深度耦合。

于是中间又增加了 Bridge。

Bridge:负责状态边界和事务

Bridge 负责:

  • 确认某个 Runtime 是否仍然拥有某个 Session。
  • 检查执行顺序。
  • 提交状态变化。
  • 返回提交结果。

Runtime 只声明:

“我下一步想做什么。”

Bridge 决定:

“这个动作现在是否有效,是否可以提交。”

Queue:负责可靠投递

仅仅保存状态还不够。

一个用户输入被接受以后,还必须确保它最终会被某个 Runtime 消费。

所以 Queue 负责:

  • 任务顺序。
  • 租约。
  • 重试。
  • 取消。
  • 死信。

换句话说:

数据库解决“事实有没有保存”。

Queue 解决“这件事最终有没有被送到正确的执行者”。

Sandbox Service:负责计算机生命周期

Sandbox 也被从 Runtime 中拿出来。

Runtime 不再负责创建、销毁、恢复 Sandbox。

它只声明:

“这个 Thread 现在需要做一个计算机操作。”

Sandbox Service 再负责:

  • 是否复用已有机器。
  • 是否启动。
  • 是否新建。
  • 是否替换。
  • 以及真正执行命令。

Public API 和 Event Stream:负责产品接口

用户请求由 Public API 接收。

外部客户端需要看的状态更新,则通过 Event Stream 暴露。

这两个部分都不真正执行 Agent。

它们只是 Agent 系统的产品接口。

六、当所有外围职责都拆出去之后,Runtime 只剩下一件事

最后,Runtime 真正保留下来的,就是:

对 Session 和 Thread 进行计算。

作者定义了三个层次。

Workspace:长期资源空间

Workspace 保存一些长期存在的资源。

比如:

  • 文件。
  • Memory。
  • 代码仓库。
  • 凭证。
  • Agent Version。

Session:一个持续任务

Session 代表一个完整的 Agent 工作过程。

它包含:

  • 所使用的 Agent Version。
  • 资源配置。
  • 历史。
  • 生命周期。

Thread:Session 内的一条独立执行路径

每个 Session 一开始有一个 Root Thread。

如果 Agent 创建 Subagent,就会出现 Child Thread。

每个 Thread 都有自己独立的执行顺序和上下文。

这样,Session 可以同时拥有多条执行路径。

七、Reducer:真正决定“下一步做什么”的核心

对于每个 Thread,系统都会重建当前状态。

然后把状态交给一个纯粹的 Reducer。

Reducer 不访问数据库。

不调用网络。

不直接执行工具。

它只做一件事:

根据当前状态,推导下一步有效动作。

这个动作可能是:

  • 调用模型。
  • 调用工具。
  • 等待更多输入。
  • 结束任务。

也就是说,Runtime Pod 本质上只是一个“可替换的计算宿主”。

它可以同时让多个 Session 和 Thread 保持热状态。

但它并不真正拥有这些 Session。

如果 Runtime Pod 消失,系统只需要在另一台 Pod 上重新加载状态,然后继续计算。

这就是“Durable Agent Work”的基础。

八、关键原则:先记录,再执行

如果 Runtime 随时可以消失,就会出现一个非常危险的问题:

假设一个操作已经发出,但 Runtime 在中途挂了。

新的 Runtime 接手以后,怎么知道:

  • 这个动作从来没开始?
  • 正在执行?
  • 还是已经执行完,只是结果还没记录?

如果靠猜,很容易出现两种错误:

  • 要么漏执行。
  • 要么把一个具有外部副作用的操作执行两次。

所以作者采用了类似 Write-Ahead Log 的原则:

任何会推进 Agent 状态、或者制造外部副作用的动作,都必须先被记录,再真正执行。

比如:

准备调用模型。

先提交一条“即将调用模型”的声明。

Bridge 确认并写入数据库。

然后 Runtime 才能真正向 Gateway 发请求。

工具调用也是一样。

先记录:

Agent 想调用什么工具。

只有记录成功后,Sandbox Service 或其他外部服务才会真正执行。

这样,Runtime 即使中途消失,新的 Runtime 也可以从已提交的事实中恢复。

它不需要恢复原来的进程。

它只需要恢复:

这个 Agent 已经正式走到哪一步。

九、为什么需要稳定身份和幂等性?

每一个声明都有稳定 ID。

这个 ID 本质上就是幂等键。

如果 Runtime 因为网络问题没有收到确认,它可以重新提交同一个声明。

Bridge 会发现:

  • 这不是一个新动作。
  • 而是已经存在的动作。

于是返回之前保存的结果。

这样就避免了重复创建状态和重复执行。

如果有人试图用同一个 ID 提交不同内容,系统则直接拒绝。

这让“恢复”从模糊猜测,变成基于已提交记录的确定过程。

十、Session Log 不只是聊天记录

作者强调:

Session Log 不是简单的 Conversation History。

它是一个完整的逻辑执行记录。

里面包括:

  • 用户输入。
  • 模型请求边界。
  • 工具调用。
  • 工具结果。
  • 中断。
  • 结束。

每个 Thread 都保持自己的顺序。

Session 级别则有一个统一事件序列。

同时,系统还维护一份专门给模型加载的 Context Projection。

也就是说:

执行历史和模型上下文不是一回事。

模型为了节约上下文,可能只加载压缩后的 Summary。

但原始执行记录仍然完整保留。

这很重要。

因为过去发生的历史,未来还可以变成可搜索的上下文。

而不是要求一份 Summary 永远承载整个过去。

十一、可靠投递:保存了,不等于已经送达

即使 Agent 状态已经持久化,还有一个问题:

如果用户发来消息时,没有 Runtime Pod 可用怎么办?

作者采用类似 Outbox 的方式。

当消息被接受时,同一个数据库事务里会同时创建:

  • 输入记录。
  • Inbox 记录。
  • Queue Job。

只要这次事务成功,Public API 就可以告诉客户端:

请求已经接受。

至于什么时候真正送到 Runtime,可以异步完成。

如果通知丢失,也没关系。

因为 Queue Job 仍然在 PostgreSQL 里。

后续 Polling 仍然可以发现。

系统不依赖一次性的通知来保证消息存在。

十二、为什么同一个 Thread 仍然要严格按顺序?

对同一个上下文而言,后面的输入不能随便超车。

如果一个消息仍在投递或者重试,普通后续消息就不能绕过去。

否则同一个 Agent Context 会出现顺序错乱。

但是其他 Thread 可以继续并行。

所以这里就出现了 Agent 系统非常核心的一个设计原则:

同一条上下文严格有序,不同执行路径尽可能并行。

中断则作为特殊消息处理。

它不能被普通消息堵住。

十三、模型 API Key 不应该进入 Runtime,更不应该进入 Sandbox

作者对凭证边界非常重视。

Runtime 发起模型请求时,请求里不包含 API Key 或 OAuth Token。

Gateway 会验证:

  • 这个 Runtime Pod 的 Kubernetes 身份。
  • 它当前是否仍然拥有目标 Session 和 Thread。

然后再由 Gateway 加载该 Session 选择的凭证。

如果凭证缺失、被撤销、已归档或无法解密,请求应该直接失败。

不能悄悄回退到其他凭证。

OAuth 刷新也发生在 Gateway。

新的 Token 只会被注入外部 Provider 请求。

明文凭证不会进入:

  • Runtime。
  • Bridge。
  • Session Log。
  • Sandbox。

这就把“Agent 能使用某个能力”和“Agent 实际持有密钥”彻底分开。

十四、MCP 工具也应该采用相同的边界

MCP 同样如此。

Runtime 可以看到:

  • 工具名称。
  • 描述。
  • 输入 Schema。

但看不到:

  • Server Credential。
  • 连接细节。

真正调用 MCP Tool 时:

Runtime 先声明它想调用哪个工具。

Connector 再验证权限、注入凭证、执行请求。

结果先经过 Bridge。

最后才能进入 Agent Context。

整个系统的理念是一致的:

Runtime 声明需要什么能力。

真正持有连接和凭证的是外部服务。

十五、Computer 只是资源,而且应该按需分配

很多能力根本不需要完整电脑。

比如:

  • 调用模型。
  • Web 请求。
  • MCP。
  • Memory 操作。

真正需要执行环境的,主要是:

  • Shell。
  • 文件系统。

所以 Computer 不应该在 Session 创建时就默认分配。

而应该在第一次真的需要时再分配。

这就是 Lazy Allocation。

如果已经有兼容的 Computer 正在运行,就复用。

否则 Sandbox Service 可以:

  • 启动。
  • 创建。
  • 替换。
  • 准备文件。
  • 注入必要状态。
  • 然后再执行命令。

多个同时到来的操作,如果都需要同一个冷启动 Computer,也可以共享同一次激活过程。

而不是重复启动多个环境。

十六、Sandbox 甚至未必永远是最合适的 Computer 实现

当前 Tetral 会给一个 Session 懒加载一个 Daytona Computer。

但作者强调:

这只是当前实现,不是最终抽象。

未来可能出现不同类型的执行资源。

比如:

  • 普通文件访问,可能只需要虚拟文件系统。
  • 一个很小的隔离任务,只需要轻量容器。
  • 强隔离的不可信代码,需要 Sandbox。
  • 平台相关任务,则可能必须运行在 Linux、macOS 或 Windows 上。

所以真正的抽象应该是:

Agent 请求一种计算资源。

而不是:

每个 Agent 天生绑定一个 Sandbox。

十七、Agent 真正需要扩展的是两个维度

让 Computer 可以独立调度,并不能让同一条上下文同时向两个方向推进。

因为两个并发模型请求如果读取完全相同的边界,就会产生互相竞争的“下一状态”。

所以真正的并行需要独立执行路径。

Tetral 把扩展分成两个维度。

维度一:Thread

一个任务内部,可以创建多个 Child Thread。

每个 Thread 有独立上下文和执行路径。

这适合:

  • 主 Agent 继续工作时,让 Subagent 并行检查实现。
  • 不同调查方向同时推进。
  • 一条分支做审计,另一条做设计。

维度二:Session

不同完整任务之间,则使用不同 Session。

比如:

  • 代码实现。
  • 文档。
  • 安全审计。
  • 知识维护。

它们可能需要完全不同的:

  • 根 Agent。
  • 上下文。
  • Agent Version。
  • 凭证。
  • 生命周期。

但这些 Session 仍然可以共享同一个 Workspace 里的长期资源。

所以作者总结:

Thread 用来扩同一个任务里的并行路径。

Session 用来扩不同任务。

十八、Subagent 不应该只是“进程里的一个对象”

如果 Child Agent 只存在内存里,会出现两个典型问题:

  • Runtime 挂了之后,Child Agent 消失。
  • 请求响应丢失后,可能重复创建 Child Agent。

所以创建 Child Agent 也必须遵守同一个持久化原则。

先把 Spawn 操作提交。

同一个事务里完成:

  • 创建 Child Thread。
  • 建立 Parent-Child 关系。
  • 保存初始 Context。
  • 保存 Instruction。
  • 创建 Inbox。
  • 创建 Delivery Job。

只有这些都提交成功,主 Agent 才真正得到 Child Thread ID。

如果重试同一个 Spawn,系统会返回同一个 Child Thread,而不是重复创建。

Parent 和 Child 之后仍然是两个独立上下文。

Parent 后续收到的新消息,不会自动进入 Child。

Child 也不能直接改 Parent Context。

它们之间所有通信,都必须重新通过有序投递。

十九、权限隔离和授权,是两个完全不同的问题

把凭证放在 Gateway 外面,只解决了一半问题。

它解决的是:

Agent 有没有资格访问某种能力。

但没有解决:

这一次具体操作,到底可不可以执行。

这是两个概念。

Credential Isolation 是能力访问边界。

Authorization 是动作批准边界。

比如:

一个 Agent 拥有 GitHub Token。

不代表它提出的每一个 GitHub 操作都应该被允许。

所以真正的授权决策,必须发生在执行前。

而且应该放在 Agent 自己之外。

因为:

不能让提出操作的 Agent,同时成为自己操作是否安全的最终裁判。

二十、为什么授权必须发生在外部边界?

作者引用 OpenAI 在 Hugging Face 上发生过的事件来说明:

Agent 自己识别“这件事是否危险”,和系统真正阻止危险操作,是两回事。

这并不意味着加一个 LLM Reviewer 就一定能防止事故。

真正重要的是:

任何 Tool Call 在影响外部世界之前,都必须跨过一道独立授权边界。

Tetral 设计了 approve_for_me 模式。

当模型提出一个高风险工具调用时:

Runtime 不会直接执行。

而是先进入 Tool Gate。

Gate 根据:

  • 当前 Session 的 Approval Mode。
  • Tool Catalog。
  • 这类工具的 Policy。

判断是否必须经过独立审核。

这时,操作还只是一个“提案”。

还没有真正成为可执行 Tool Call。

二十一、Reviewer 也不能和主 Agent 混在一起

审核本身会作为一个独立 Thread 运行。

Reviewer 会看到:

  • 待执行动作。
  • 相关上下文。
  • 主 Agent 当前输出。
  • 同一轮里其他 Tool Call。
  • 实际 Policy。

但这些内容都只是“证据”。

不是指令。

这点非常重要。

因为:

  • 文件。
  • 网页。
  • Tool Result。
  • 甚至主 Agent 的输出。

都可能包含 Prompt Injection。

所以平台自己的 Reviewer Policy 必须和被审核内容分离。

Reviewer 最终只返回:

  • 风险等级。
  • 上下文里是否存在用户授权。
  • 允许或拒绝。
  • 原因。

如果输出格式异常,应该视为审核失败。

而不是默认允许。

二十二、Reviewer 的意见,也不能直接变成权限

Reviewer 给出 allow,并不等于操作立刻可以执行。

这个判断先要被 Bridge 写入 PostgreSQL。

只有记录成功后,Runtime 才能再次运行 Tool Gate。

这一次,Gate 会拿到已经提交的审核结果。

然后再决定:

  • 允许。
  • 拒绝。
  • 或升级到用户审批。

只有这次二次 Gate 判断通过以后,真正的 Tool Use 才会被提交。

提交之后,执行任务才允许进入 Queue。

也就是说:

审核结果本身不是权限。

被系统正式记录并重新验证后的结果,才是权限。

作者把这个边界设计得非常保守。

如果 Runtime 在“提案已经产生,但授权尚未完成”时崩溃,那么这个提案不会在恢复后自动继续执行。

宁可牺牲这一步的恢复能力,也不能让一个失去上下文的孤儿授权继续生效。

二十三、下一代扩展问题,不再只是“多跑几个 Agent”

当 Agent 工作能够跨越单一进程、单一计算机之后,扩展问题就彻底变了。

扩的已经不只是 Runtime 容量。

还包括:

  • Agent 身份。
  • 授权。
  • 历史。
  • 资源。
  • 工具。
  • 凭证。
  • 外部副作用。
  • 执行环境。

这些东西都要随着 Agent 工作量一起扩。

所以系统真正要解决的,是:

如何让身份、状态、执行和资源彼此独立,但仍然保持连续性和可控性。

Tetral 的设计是:

Agent 在 Sandbox 外。

Credential 在 Agent 和 Sandbox 之外。

Computer 只是临时资源。

这样:

执行可以失败。

Runtime 可以替换。

Computer 可以更换。

身份和历史仍然不丢。

二十四、Agent 需要成为一个真正“可寻址的参与者”

当 Agent Identity 被从某个具体客户端或电脑里拿出来之后,Agent 就可以跨界面持续存在。

同一个 Agent 可以出现在:

  • Terminal。
  • 浏览器。
  • 手机。
  • GitHub。
  • 团队产品。

关闭某个客户端,并不会结束 Agent Session。

也不会把 Agent 从一台电脑“迁移”到另一台。

因为真正连续的是:

有序的 Session History。

Identity 还带来责任链。

某个外部操作可以追溯到:

  • 哪个 Agent Version。
  • 哪个 Session。
  • 哪个 Thread。
  • 哪条 Policy。
  • 哪次 Review。

用户或组织仍然承担最终责任。

但 Agent 本身开始成为一个可以识别、可以追踪的行动主体。

作者举了几个类似趋势:

RoboBun 让 GitHub 上的工作归因到公开 Agent Identity。

Raft 把具名、带状态的 Agent 放在同一个多 Agent Workspace。

Claude Tag 给 Slack Channel 一个异步 Claude,并允许团队把工作并行委派给多个 Claude。

这些产品界面不同。

但它们有共同变化:

Agent 不再只是藏在用户账号背后的“自动补全能力”。

它开始变成一个可寻址的参与者。

二十五、身份最终会和“有限授权”绑定在一起

当 Agent 有独立身份以后,就可以给它受限权限。

比如:

  • 创建账号。
  • 拿到 API Token。
  • 购买域名。
  • 部署服务。
  • 申请一个只对特定商家和特定金额有效的付款凭证。

重点是:

Agent 并不需要看到真实信用卡信息。

用户或组织仍然是 Principal,也就是最终授权主体。

Agent 只获得:

  • 有限的。
  • 可追踪的。
  • 可撤销的授权。

这才是 Agent 真正进入长期生产环境所需要的身份模型。

二十六、CLI 不应该承担所有云端能力

作者认为,CLI 很适合那些天然绑定某台操作系统、某个仓库、某个编译器或调试器的任务。

但很多事情根本不应该因为“Agent 要做”就先启动一台电脑。

比如:

  • 读一个 Issue。
  • 发一条消息。
  • 调用一个 SaaS API。

这些能力更适合通过 MCP 暴露。

Connector 负责带上 Session Credential。

Runtime 的 Tool Gate 负责策略和审批。

因此,作者预期未来:

CLI 继续负责 Computer-native Work。

MCP 则成为 Cloud-native Capability 的主要接口。

二十七、多 Agent 不等于协作更有效

文章后面讨论了另一个很重要的问题:

Agent 数量增加,并不自动意味着系统会更好。

很多多 Agent 系统只是:

  • 更多 Agent。
  • 更多 Token。
  • 更多消息。
  • 更多噪声。

甚至共享 Coding Swarm 越大,最终真正能合并的工作比例反而更低。

Tetral 的一个核心下注是:

先对抗式评审,再合并。

也就是说:

在工作进入共享 Workspace 之前,其他 Agent 必须主动挑战它的结论和证据。

不是简单“同意”。

而是去找:

  • 哪里错了。
  • 证据是否足够。
  • 结论是否站得住。

最后再由人类决定是否接受。

二十八、真正应该共享的,不是 Conversation,而是 Accepted Artifact

作者对比了两种多 Agent 协作结构。

第一种是 Conversation-centered。

多个 Agent 在一个共享 Channel 里聊天。

但每个 Agent 的 Working Memory 会逐渐分叉。

消息可以帮助协调。

但并不会形成真正稳定的共同认知。

第二种是 Artifact-centered。

每个 Session 都从同一个已经接受的 Workspace Version 出发。

然后独立探索。

产出 Proposal。

互相 Review。

再经过 Human Review。

最后只有真正被接受的结果,才会 Merge 进入下一个 Workspace Version。

作者的观点是:

聊天可以协调工作。

只有被正式接纳的 Artifact,才应该改变未来 Agent 所共同信任的事实。

这和软件工程非常像。

讨论可以很多。

但真正进入主干的,只有经过审核的 Commit。

二十九、为什么这对未来评测和训练也很重要?

如果每一次 Agent 行为都有完整轨迹,那么这些轨迹就可以反过来变成 Eval Data。

比如:

  • 被拒绝的 Tool Call。
  • 被 Reviewer 推翻的判断。
  • 验证失败。
  • 人工修正。

这些都能告诉我们:

模型具体在哪里做错了。

同一个任务使用不同 Agent Version 执行,还可以比较不同模型真实行为差异。

这样,真实部署轨迹就可以成为未来:

  • 评测。
  • 对齐。
  • 训练。

的重要数据。

当然,前提是:

Provenance,也就是来源链条仍然完整。

私有数据被清理。

人类判断明确标记了什么是成功、什么是失败。

作者强调:

训练可以减少危险提案。

但真实外部副作用仍然不能只依赖模型“学会安全”。

它仍然需要:

  • 确定性 Policy。
  • 验证。
  • 内容检查。
  • 分类器。
  • 独立 Review。
  • 组织规则。
  • 必要时人工升级。

三十、真正的下一代扩展瓶颈,会不断向外围移动

模型能力越强,外围系统承受的压力越大。

Agent 工作时间越长,并行路径越多,就会产生更多:

  • Runtime Transition。
  • 测试。
  • Computer。
  • 文件。
  • 网络请求。
  • Session Trace。
  • 外部副作用。

最终,最短板的那个系统,就会成为新的扩展瓶颈。

这也是整篇文章标题里的:

The Next Scaling Problem。

问题不再只是模型推理能扩多少。

而是 Agent 系统周围所有基础设施,能不能跟上。

三十一、甚至编译器和工具链,都可能先成为瓶颈

文章提到一个很容易被忽略的事实。

Agent 写代码的速度上去之后:

  • Edit。
  • Build。
  • Test。

这些传统软件工具链的吞吐也会被推到极限。

作者举了两个例子。

Bun 从 Zig 转向 Rust,其中一个原因就是为了降低内存、提高吞吐,并解决稳定性和内存安全问题。

TypeScript 开始原生 Go 实现,也是因为原来的实现已经无法很好扩展到最大的代码库。

早期版本速度大约提升 10 倍,同时显著降低内存。

在作者自己的开发服务器上:

Tetral 某些集成路径跑一次要 7—8 分钟。

完整验证一次要约半小时。

这说明:

未来限制 Agent 开发速度的,未必先是模型。

也可能是:

  • 编译。
  • 测试。
  • 验证。
  • 传统开发基础设施。

三十二、Sandbox 本身也会成为独立扩展问题

Sandbox 和稳定服务的负载形态完全不同。

它们经常是:

  • 短生命周期。
  • 突发创建。
  • 暂停。
  • 恢复。
  • 释放。
  • 回收。

这意味着系统不仅要关心启动速度,还要关心:

  • 批量创建速度。
  • 挂载资源速度。
  • Resume 延迟。
  • 高频调度。
  • 控制面并发。

当规模上去以后,传统服务编排体系不一定是最优解。

作者因此认为:

完整 Sandbox 不应该成为每一种操作的默认边界。

简单文件访问也许只需要虚拟文件系统。

不可信代码才需要强隔离。

平台相关工作才需要对应操作系统。

真正的问题不是:

“能同时跑多少 Sandbox?”

而是:

有多少工作真的必须经过完整 Computer?

三十三、未来也许需要比 Sandbox 更轻的计算原语

Actor System 提供了另一个方向。

它们可以做到:

  • 轻量。
  • 可寻址。
  • 可以睡眠。
  • 可以唤醒。
  • 不需要每次都准备一整台电脑。

这种模式未来怎么映射到:

  • Session。
  • Thread。
  • Resource Worker。

作者还没有给出最终答案。

但至少有一个结论已经很明确:

完整 Sandbox,不应该是所有 Agent 操作的默认执行边界。

三十四、执行环境可以消失,但产出必须留下

一个 Disposable Environment 真正有价值的前提是:

它死了以后,工作结果仍然存在。

这又带出新的资源边界:

  • Storage。
  • Session Event。
  • Tool Result。
  • 日志。

都要进入有序的 Session History。

而:

  • 代码。
  • 文档。
  • Build Artifact。

则必须回到:

  • 代码仓库。
  • 对象存储。
  • Workspace File。

只有这样,下一个执行环境才能继续接上。

Agent 可以是临时计算。

但工作成果不能是临时的。

三十五、Agent 系统最终可能比“模型 API”更像产品本体

文章最后提到一个很有意思的变化。

过去模型配置里,人们最关心:

  • temperature。
  • top_k。
  • top_p。

但在 Claude Opus 4.6 之后,这些参数正在被弱化。

新的 Agent Interface 更强调:

  • Effort。
  • Tools。
  • Skills。
  • MCP Server。
  • Context。
  • Policy。
  • Orchestration。

也就是说:

未来真正需要配置的,可能不再只是一个“模型”。

而是一个包含模型在内的完整 Agent System。

模型只是其中一个组成部分。

三十六、Tetral 现在仍然只是 Alpha

作者对当前系统状态非常坦诚。

Tetral 目前只是运行在个人 k3s Cluster 上的 Alpha。

并不是已经验证过的大规模生产云平台。

目前还有很多问题没有解决。

比如:

  • Runtime Placement 还没有真正考虑容量。
  • Backpressure 还没有把入口控制、Queue 压力和扩缩容完整联动起来。
  • 多节点长期恢复能力还没有被充分验证。
  • Runtime 发布新版本时,还无法优雅 Drain,正在执行的 Turn 可能会中断。

这些问题都指向下一步工作。

未来需要:

  • 按 Runtime 容量分配 Session。
  • 支持跨节点恢复。
  • 让 Queue 压力直接控制接入和 Worker 数量。
  • 加快 Computer 激活和挂载。
  • 提供更轻量的文件访问。
  • 支持自托管 Provider。
  • 让一个 Agent 同时协调多台 Computer。
  • 小型部署还应该能够把多个逻辑服务合并到更少进程。
  • 而大型生产部署则能够把它们分别扩容。

三十七、最终方向:Agent-native Cloud

作者最后给 Tetral 定义的产品方向是:

Hosted Agent System Service。

也就是说:

产品团队只需要定义:

  • 工具。
  • Reviewer。
  • Thread Policy。
  • 资源。
  • 模型。
  • 产品界面。

而不需要从头重建:

  • 会话连续性。
  • 身份。
  • 授权。
  • 恢复。
  • 资源调度。

底层系统应该自动提供这些能力。

同一套 Agent Cloud 还应该支持:

  • 更安全的外部执行。
  • 跨多个客户端、多个计算机的产品。
  • 完整的 Session Evidence。
  • 事后分析。
  • Eval。
  • 未来训练。

三十八、实现会变,但三个核心下注不会变

作者认为,未来真正落地以后,很多具体技术实现一定会改变。

有些服务可能合并。

Runtime 可能不再使用 Bun。

Storage 可能拆开。

Queue、Bridge 甚至 Kubernetes 拓扑都可能被替换。

但有三个核心判断不会变。

第一,Agent 是 Cloud Native 的。

它不应该天然属于某台本地电脑。

第二,需要扩展的是整个 Agent System,而不只是模型。

真正的瓶颈会在身份、状态、执行、工具、存储、安全和资源之间不断迁移。

第三,Runtime 应该继续以 Agent 的计算为中心,而外围系统负责保存连续性和控制。

Runtime 负责:

  • 现在下一步该做什么。

系统负责:

  • 你是谁。
  • 你做到哪一步。
  • 你能访问什么。
  • 你的历史是什么。
  • 你的动作是否被允许。

最后:下一代 Agent 的核心问题,已经从“模型够不够强”转向“系统能不能承载它”

这篇文章真正想表达的,并不是:

“Sandbox 不好。”

Sandbox 依然非常重要。

问题在于:

不应该让 Sandbox 同时承担 Agent 的身份、状态、运行时和生命周期。

如果 Agent 要从一个一次性工具,变成一个可以跨设备、跨环境、持续存在的“数字工作者”,那么系统就必须把这些东西拆开:

  • 计算。
  • 状态。
  • 身份。
  • 凭证。
  • 授权。
  • 历史。
  • 资源。
  • 工具。
  • 外部副作用。

模型只是其中一个组件。

Sandbox 也只是其中一种资源。

真正需要扩展的,是这整个 Agent System。

这就是作者所说的:

The Next Scaling Problem。

过去的问题是:

一个模型能不能完成任务。

现在的问题开始变成:

当模型越来越能干时,我们有没有一套足够可靠的系统,让它长期、并行、安全地工作。

Tetral 目前已经以 MIT License 开源。

作者希望产品开发者、基础设施工程师、安全研究者和模型提供商一起挑战它的边界,构建新的 Runtime、接入新的资源,并探索当前系统还没有预料到的产品形态。

这套架构是否最终正确,还需要真实负载验证。

但至少,它把问题重新定义清楚了:

真正的下一代 Agent Cloud,不应该是一堆装着 Agent 的 Sandbox。

而应该是一套以 Agent 为中心、让所有计算资源围绕它动态组织的云系统。

Tetral 架构示意图

JOTO 企业落地观察

  • 企业部署时,若仍将Sandbox视为Agent的默认宿主,会陷入基础设施扩容陷阱——每次扩容实际是在复制整套运行时环境,而非聚焦于任务调度能力。本文提出的Runtime-Sandbox解耦模式,使企业可独立伸缩计算资源(如按需启动Sandbox)与任务编排层(如Session/Thread管理),降低云资源闲置率与运维复杂度。
  • 智能体工程中,将模型调用、工具执行等动作统一为‘先持久化声明、再触发执行’的两阶段流程,要求所有外部副作用操作必须经Bridge确认写入数据库后才生效。这对企业构建高可靠Agent系统意味着:必须将状态变更逻辑从Runtime中剥离,由专用服务保障事务边界与重试语义,避免因进程崩溃导致状态不一致或重复执行。
  • RAG知识工程需区分执行历史与模型上下文。文中Session Log作为完整逻辑执行记录被持久化,而模型加载的Context Projection仅为压缩摘要。这对企业知识库建设的启示是:原始交互轨迹本身即高价值结构化数据源,应独立存储并支持回溯检索,而非仅依赖人工设计的Summary模板,从而支撑更动态、可演进的知识提取与推理链构建。
  • AI安全治理的关键在于凭证边界的物理隔离。模型API Key与MCP工具凭证全程不进入Runtime或Sandbox,仅由Gateway或Connector在权限校验后临时注入请求流。这意味着企业需在架构设计初期就明确划分‘能力声明层’与‘凭证执行层’,禁止任何运行时组件直接持有密钥,从根本上阻断凭证泄露面与越权调用路径。

立即咨询 JOTO

JOTO 提供覆盖企业智能体规划与搭建、AI 平台私有化部署、RAG 知识工程、AI 安全治理、FDE 驻场共创及持续运营优化的全周期 AI 落地服务,帮助企业把验证中的 AI 能力转化为安全、可控、可持续迭代的生产力。 联系 JOTO 获取 AI 落地咨询

想把这些做法用到你的业务里?

留下你的场景和痛点,我们帮你判断从哪一步开始。

联系我们
Contact Us

Start your enterprise AI rollout

Tell us your industry, team, and current pain points. We'll get back to you within one business day to help you decide what to tackle first, what data to prepare, and which platform fits.

WeChat
Scan to add us for a 1:1 chat
JOTO WeChat consultation QR code

Tell us what you need

Once we receive your details, we'll be in touch within one business day.