原文链接:https://x.com/ishaansehgal/status/2065129901427130678?s=12 作者简介:Ishaan Sehgal 是 Omnara 联合创始人,正在构建 AI Agent 的控制中心与托管基础设施;此前曾在 Microsoft 从事 AI 基础设施工作,并有 Roblox 的机器学习相关经历。 玩过《上古卷轴》或《艾尔登法环》的人,不妨先想一个问题:一个投入了上百小时培养的游戏角色,究竟是什么? 它不是游戏引擎,不是主机,也不是手柄。真正承载这个角色的,是存档。 即使主机损坏,只要云端存档还在,换一台设备后,玩家仍然可以回到原来的进度。角色的连续性并不依附于某台机器,而是存在于那份可持久化、可恢复的状态记录中。 AI Agent 正在来到类似的分水岭。 人们经常把 Agent 理解为大模型、运行时,或者当前正在执行任务的循环。这些组件当然重要,但它们更像游戏引擎和主机,而不是角色本身。 如果日志被正确设计,仅凭这份记录,就应该能够恢复 Agent 的状态并继续执行。 一旦具备这种能力,Agent 系统的可靠性、扩展性、分叉实验、迁移和协作方式都会随之改变。 01 · IDENTITY 如果说“日志就是 Agent”,首先需要明确这里的日志是什么。 它不是传统意义上为了排障而附加的文本文件,而是 Agent 完整的事件历史,包括: • 用户输入 • 模型输出 • 工具调用请求 • 工具执行结果 • 权限审批、暂停和恢复等控制事件 • Agent 工作过程中产生的其他有效状态变化 这些事件按照发生顺序追加写入,形成一份不可随意覆写的历史记录。 除此之外,日志还需要关联当前会话采用的定义,例如系统提示词、工具描述和技能配置。由于这些信息通常不会在每一轮交互中变化,更适合将其视为带版本的会话配置。 模型、运行时和工具本身并不保存 Agent 的身份。它们只是解释和推进状态的组件:读取持久化历史,执行下一步动作,再把新的事件写回日志。 因此,理论上可以启动一个全新的执行器,把同一份日志交给它,它就能重建 Agent 所处的位置并从中继续。运行进程可以消失,但 Agent 不会因此消失。 02 · SOURCE OF TRUTH 一旦把 Agent 定义为日志,系统中的其他组件就容易理解得多:它们无非是在读取日志、追加日志,或者根据日志生成某种视图。 • 模型读取经过整理的上下文视图,并生成下一步动作; • 工具执行器接收工具调用,完成后把结果写入日志; • 前端读取日志,渲染出会话时间线; • 链路追踪系统读取日志,生成调用 Trace; • 审计系统读取日志,重建任务全过程。 这与数据库系统的思路很接近。表、索引、缓存和物化视图都可以看作底层变更历史的不同投影。同样,Agent 的对话界面、上下文窗口和可观测视图,也都可以是会话日志的投影。 一个简化后的执行过程可以表示为: 这里的关键不是循环本身,而是每次循环只临时获得执行权。执行器读取日志、推进一步、持久化结果,然后就可以释放控制权。 只要每一次有意义的状态变化都被可靠记录,任何执行器都能够接手会话。由此可以构建幂等、容错,并且不依赖单个工作进程存活的 Agent 运行机制。 03 · CONTEXT Agent 的日志可以持续增长,但模型上下文窗口始终有限。系统不可能在每次推理时都把完整原始历史提交给模型,因此必须进行上下文压缩。 问题是:如果压缩会用摘要代替早期内容,是否意味着“日志就是 Agent”这个判断并不成立? 恰恰相反。摘要是一种有损表达,它无法完整保存此前的状态,只是为了特定模型调用而生成的视图。 只要原始日志仍然存在,系统就能根据不同模型、任务和上下文预算重新生成新的视图。如果丢弃原始历史,只保留压缩后的摘要,就等于永久丢失了 Agent 的一部分。 一种更清晰的处理方式,是把上下文压缩视为一次有损分叉:保留旧日志,将摘要作为新日志的起点继续运行,而不是让摘要取代原始事实。 04 · BOUNDARY 这里存在一个重要边界:Agent 会修改日志之外的外部状态。 例如,它可能编辑文件、创建 GitHub Issue、发送邮件或调用第三方服务。即使会话可以回放,已经发送的邮件也不会自动撤回,外部文件也可能在此期间被其他人修改。 因此,日志不会让现实世界变得完全确定,也不会令所有动作都可逆。 日志真正保证的是:系统能够忠实保存 Agent 当时看到了什么、做了什么,以及执行到了哪里。它恢复的是 Agent 的内部连续性,而不是把整个外部世界恢复到过去。 游戏存档同样不会保存完整的游戏引擎和世界地图,它只保存让玩家角色重新进入世界所需的特定状态。当外部环境已经变化时,恢复后的 Agent 需要重新观察环境,再更新自己的认知。 这也意味着,可靠的 Agent 平台除了事件日志,还应认真处理工具调用的幂等性、外部副作用标识、重试策略和一致性边界。 05 · CAPABILITIES 把日志作为 Agent 的持久化本体,会自然带来一系列系统属性。它们不是彼此独立的附加功能,而是同一个架构前提的不同结果。 如果 Agent 在等待用户授权时进程突然退出,恢复后不应丢失这个等待状态。 当权限请求本身已经作为事件写入日志,新工作进程就可以重建现场,继续等待用户决定。崩溃的是执行器,而不是 Agent。 许多 Agent 框架采用“一个进程对应一个 Agent”的方式,使 Agent 与具体机器绑定。 如果状态存在日志中,一个工作进程就能轮流推进大量 Agent;需要扩容时,只需增加能够消费会话任务的工作进程。系统不再依赖粘性会话,也不必在机器之间迁移内存状态。 日志可以从任意历史节点创建分支。 同一个任务可以在不同分支中分别使用 Claude、GPT 或本地 Qwen,也可以配置不同工具、沙箱和执行策略,再比较各分支的结果。 由此,Agent 的多路径探索不再只是提示词层面的技巧,而可以成为底层运行时的结构化能力。 分享 Agent 不应只是把对话复制到聊天软件中。那更像是发送一张数据库截图,而不是共享可继续操作的数据。 如果日志就是 Agent,真正的共享意味着授予他人访问一份持久化历史的权限,使其能够检查、恢复或继续推进该 Agent。 如果 Agent 的身份被封装在某家模型厂商的私有状态中,更换提供商就会非常困难。 当日志承载连续性时,迁移主要变成适配器问题。不同模型可能需要不同的上下文投影方式,但这属于工程适配,而不是 Agent 身份的迁移。 06 · ARCHITECTURE 目前不少 Agent 框架仍把日志视为运行过程中的副产品。 一些工具只是把对话写入本机 JSONL 文件,另一些则把状态放在本地 SQLite 中;如果写入失败、文件损坏或运行机器消失,会话历史就可能无法完整恢复。还有一些系统把状态拆散在多个运行对象中,导致完整因果链难以重建。 这些方案的问题不是“日志格式不够漂亮”,而是日志没有成为系统的事实源。 07 · OWNERSHIP 如果日志承载着 Agent 的连续性,那么日志所有权就是 Agent 所有权。 长期来看,最深层的厂商锁定未必来自模型、API 或工具。模型可以更换,API 可以封装,工具也能适配,但如果某个平台掌握着 Agent 唯一完整且持久的历史记录,迁移将变得极其困难。 导出一份对话文本并不一定等于导出了 Agent。Agent 不只是最终答案,还包括产生答案的路径依赖历史:它接收过哪些信息、调用过哪些工具、经历过哪些决策,以及每个中间产物是如何形成的。 随着大模型厂商逐渐提供托管式 Agent、记忆、沙箱、上下文压缩和后台执行服务,团队需要认真回答几个问题: • Agent 的完整日志存放在哪里? • 谁能够读取和查询这些日志? • 数据遵循怎样的保留与删除策略? • 日志能否完整导出、回放、分叉和迁移? • 导出的究竟是完整事件历史,还是平台生成的某种有限投影? 托管基础设施本身并不是问题,它对大多数团队都很有价值。真正重要的是,使用者需要清楚自己是否仍然掌握 Agent 的可迁移连续性。 08 ·Guance 如果日志承载着 Agent 的连续性,那么观测云所有权就是 Agent 所有权。如何定义一个 Agent
当日志成为系统核心

只要会话仍有待处理工作: 临时取得该会话的执行权 从持久化日志重建当前状态 调用模型生成下一步动作 将模型响应追加到日志 如果模型请求调用工具: 记录“工具调用开始” 在对应环境中执行工具 将工具结果追加到日志 进入下一轮 否则结束本轮处理
上下文压缩不等于日志
日志并不包含整个外部世界
由这一设计自然产生的能力
1. 可靠性
2. 可扩展性
3. 分叉
4. 多人协作
5. 跨模型与跨平台迁移
不要再把日志当作二等公民
谁拥有日志,谁就拥有 Agent
只要有观测云一个就够
存在哪?使用自研存算分离数据库 GuanceDB 3.0 统一存储。PB 级生产规模,支持百万级 QPS 持续写入。动态 Schema,零 ETL 百万级 High-Cardinality Tags 任意写入。列式存储 + Zstd 10:1 压缩。一种存储,一个真相:Log、Metric、Trace、Profiling、RUM、Security 全部进入统一数据库。
谁能读? 你的团队。DQL 多模查询语言统一检索指标、日志、链路。开启流式聚合引擎自动学习查询习惯,按最小时间分片预聚合,Offload 80% 以上高频查询负载,复杂聚合场景查询性能跃升 30 倍,百亿数据秒级查询。100% 开放兼容 OpenTelemetry / PromQL。
保留多久? 你定规则。自定义天数长期留存,从 3 天到 360 天按需配置,企业版支持独立冷热存储策略。审计时无需迁移,直接查询。
能带走吗? 完整事件流可导出、可回放、可分叉。通过数据转发规则,原始事件序列可转存至外部存储或消息队列。
用观测云,让智能体真正属于你。
