概览
HALO 全称 Harness for Always-On Loop Oversight,即持续在线闭环监督工具。它是一个诊断工具,评估持续在线助手的闭环完整性。HALO 沿用论文 Always-On Personal Intelligence(持续在线个人智能)的框架:持续在线助手运行一个持续闭环,由感知、记忆和行动三个功能模块组成,模块之间由六条有向的耦合通路相连。助手根据自己的运行经验修订工作方式时,自演化就扩展了这个闭环。依赖结果反馈的自演化需要一条五步的证据链:记录、结果、归因、修订和后续使用。持续闭环一页定义了这些术语。
使用 HALO 的三种方式
Section titled “使用 HALO 的三种方式”| 只读模式 | 运行模式 | 插件 | |
|---|---|---|---|
| 考察对象 | 系统的论文、文档和代码 | 系统已公开的代码,在固定输入上运行 | 正在运行的智能体,通过它记录的步骤 |
| 回答的问题 | 来源是否报告了每条通路和每个证据步骤? | 切断一条通路或一个步骤,输出会不会改变? | 智能体做过的事里出现了哪些通路和步骤? |
| 需要什么 | 来源材料 | 代码,以及把代码接入 HALO 的适配器 | 一个 MCP 连接 |
| 能否用于产品 | 可以,依据产品文档 | 只有代码已公开时才行 | 可以,在产品运行时 |
只读模式和运行模式是论文中的两种模式。插件是第三种方式,本文档主要介绍它。插件把 HALO 接到一个已经在运行的智能体上,例如一个 ChatGPT dot 或 Grok Bot,不需要访问智能体的代码。
为什么这样设计
Section titled “为什么这样设计”测试个人智能体会遇到两个问题。
- 很多智能体是黑盒。 产品很少公开代码,所以只能从外部、端到端地判断它的内部。
- 测试会改变被测的对象。 个人智能体会保存关于用户的状态。每一条测试输入都会进入它的记忆,可能改变它之后的行为,而状态持久性本身就是要测的性质之一。所以,在用户自己的智能体上做 A/B 测试,会改变这个智能体,也会影响用户之后的使用。
因此,HALO 的三种方式对智能体的干预程度各不相同:
| 是否干预智能体 | 能说明什么 | |
|---|---|---|
| 只读模式 | 完全不碰 | 来源材料说智能体做了什么 |
| 插件 | 不干预,只记录日常使用 | 智能体做过什么,但说明不了原因 |
| 运行模式 | 干预,但只在副本上 | 某条通路或某个证据步骤是否会改变输出 |
运行模式从不干预用户正在依赖的那个智能体。对于公开的代码,它在沙盒里运行一份副本。对于闭源产品,它需要一个单独的测试身份,做法见运行模式。测试身份没有这个用户的任何历史,所以它测的是机制,测不到智能体对这个用户学到了什么。这部分只能观察,也就是插件要做的事。
是协议,不是服务
Section titled “是协议,不是服务”没有哪个服务能接入所有个人智能体,而许多重要的智能体是闭源产品或设备。所以 HALO 被设计成一套共享的协议,由这些智能体的厂商和使用者自己接入。它分三部分:
- 事件。 六类步骤:observe、remember、recall、act、outcome 和 revise,每一步都写明它用到了哪些更早的步骤。事件模型给出了定义。
- 接入方式。 智能体可以通过 MCP 或普通 HTTP 记录自己的步骤,也可以由执行每一步的代码直接写入同样的事件。已经在记录自身步骤的系统,比如用 OpenTelemetry(一种通用的运行记录格式)或智能体钩子(每走一步时自动运行的脚本)留下记录的系统,也可以把这些记录转换成 HALO 事件,厂商就不必再记一遍。HALO 目前还不能做这种转换。哪种智能体适合哪种方式,见接入协议。
- 报告。 和论文表格相同的各行:六条通路、五个证据步骤和一个等级。
谁来接入 HALO,决定了证据有多强。
| 谁 | 把 HALO 接到 | 证据 |
|---|---|---|
| 设备或产品厂商 | 自己的系统,从执行每一步的代码接入 | 最强:每一步都由执行它的代码记录,厂商还能在自己系统的副本上做测试 |
| 开发者 | 自己开发的智能体,或通过 MCP、插件接入自己在用的产品 | 智能体对自身步骤的记录,可以用只读模式对照产品文档核实 |
| 研究者 | 同时接入许多系统 | 每个系统都得到同样术语的报告 |
对使用智能体的人来说,报告能说明:智能体保存了什么,它改变了自己的哪些做法,以及这些改动有没有经过使用者的同意。
厂商和开发者是否真的需要它,可以低成本地检验:把一个正在使用的系统的记录,比如 OpenClaw 或 Hermes Agent 的钩子记录,转换成 HALO 事件,看报告能不能指出一个原本没人注意到的问题。
插件如何工作
Section titled “插件如何工作”插件是一个 MCP 服务器。智能体连接插件后,在闭环中每走一步,就调用一个对应的工具:接收新内容时调用 halo_observe,存取记忆时调用 halo_remember 和 halo_recall,采取行动或决定保持沉默时调用 halo_act,得知一次行动的效果时调用 halo_outcome,改变自己的工作方式时调用 halo_revise。每次调用都写明新的一步用到了哪些更早的步骤。
HALO 把这些步骤保存在你机器上的账本里,再从步骤之间的引用读出闭环。halo_report 用与论文表格相同的术语返回结果:六条通路、五个证据步骤,以及轨迹(智能体记录下的全部步骤)支持的最高等级。插件架构逐一介绍各个部分。
报告能说明什么
Section titled “报告能说明什么”步骤由智能体自己记录,所以报告显示的是智能体自称做过的事,以及这些步骤之间如何引用。HALO 检查的是引用,而不是这些步骤是否真的发生过。没有出现的通路或步骤会报告为“未观察到”,从不报告为“不存在”。等级是下界,实际等级可能更高。轨迹能说明什么一页对此有详细说明。