计算与状态分离:跟着一次改 bug 走一遍

需求:“登录令牌在过期的那一秒还能用,修一下,并跑回归测试。”

下面一步步看:哪些东西在云端、云端在做什么、你的电脑上留着什么。

先澄清一个容易混的点:模型推理本来就在云端(你今天用 Claude Code、Codex 也是调云端模型 API)。这里说的“计算”指的是 Agent Loop 本身:拼上下文、调模型、分发工具调用、记录结果。它今天跑在你的电脑上,文章要把它搬走。

先看全景:三种摆法

① 今天的本地 CLI

Claude Code / Codex CLI / OpenCode 的常见用法
云端只有模型 API
你的电脑 Agent Loop 进程 会话记录文件 仓库 / 凭据 / 工具链
三样东西都在一台机器上。合盖、断网、关终端,Agent 就停了。

② 全搬上云(云端沙箱)

文章 §5.2 提到的第一种常见做法
云端 Agent Loop 会话数据库 沙箱:拉代码、重建环境
你的电脑基本不参与
一直在线,但你没提交的改动、本地凭据、内网服务,沙箱都拿不到,或者同步成本很高。

③ 文章方案:§5.1 + §5.2

计算、状态、执行环境三者分开
云端 Agent Loop(无状态,可随时换) 会话数据库
你的电脑 仓库 / 凭据 / 工具链 轻量守护进程
Loop 在云上一直在线,环境留在原地,工具调用穿过守护进程远程执行。下面演示的就是这一种。

逐步演示(方案 ③)

你网页 / IM / CLI,都只是“发消息、看回复”的窗口

云端 · 计算

跑 Agent Loop 的容器,按需借用,用完即还

云端 · 状态(Session)

数据库里的只追加事件日志,唯一需要长期保存的东西

    你的电脑 · 执行环境

    代码、改动、凭据、依赖都留在这里

    对照:如果是今天的本地 CLI

    也可以用键盘 ← → 切换

    走完一遍,东西都在哪

    云端 · 计算:什么都没留

    • 前后用过 A、B、C 三个实例,都已经回收
    • 它们内存里的东西都能从日志重建,丢了也没关系

    云端 · 状态:完整的事件日志

    • 你的需求、模型每一步的决定
    • 工具结果:读到的代码片段、diff 摘要、测试输出摘要
    • 任务状态:等待设备、已完成

    你的电脑:真正干活的地方

    • 两个文件的改动,没提交,等你 review
    • 凭据、内网依赖、工具链,从来没离开过
    • 测试是在这里真实跑的
    一句话:计算可以随时丢,因为状态存在别处;环境不用搬,因为工具调用可以远程执行。
    §5.1 让 Agent 不再依附某个进程,§5.2 让它不再依附某台机器。

    依据:DeepSeek Harness《Super-agent 设计探索》第 5 节(英文版镜像),以及 Anthropic《Scaling Managed Agents: Decoupling the brain from the hands》中的 wake(sessionId)、getSession(id)、emitEvent(id, event) 接口。这是文章的架构设想,不代表 DeepSeek Harness 或公开原型已经实现;步骤中的事件、文件名和测试数量都是示意。