事件模型
每调用一次记录工具,就保存一个事件。一个事件要么属于闭环中的某个模块,要么是对智能体自身机制的一次修订。
| 工具 | 类型 | 模块 | 智能体在这些时候记录 |
|---|---|---|---|
halo_observe |
observe | 感知 | 接收新内容:一条用户消息、一个网页、一次传感器读数、一个工具结果 |
halo_outcome |
outcome | 感知 | 得知自己之前某次行动的效果:一条回复、一个评分、一次驳回、一次纠正、一个结果 |
halo_remember |
remember | 记忆 | 为之后的交互保存某样东西:一个事实、一个偏好、一条关于自己做过什么的记录 |
halo_recall |
recall | 记忆 | 查找之前保存的东西 |
halo_act |
act | 行动 | 为用户做某件事,或决定保持沉默 |
halo_revise |
revise | 无 | 改变自己的工作方式:一个之后会重复使用的提示词、规则、技能或策略 |
| 字段 | 适用于 | 含义 |
|---|---|---|
summary |
全部 | 用几个词说明发生了什么。不要写入机密、密码或原始个人数据。 |
uses |
全部 | 这一步依据的更早事件的编号,例如 ["e3", "e7"]。 |
session |
全部 | 一次对话或一次唤醒的标签,其中每一步都用同一个标签。 |
agent |
全部 | 智能体的名字。留空时,先用服务器的 --agent 值,没有的话再用客户端发来的名字。 |
trigger |
act | 如果用户要求或事先设置了这次行动,就填 request。用户请求或定时安排的一次运行中的每一步也都算在内,即使具体怎么做由智能体选择。只有当用户的请求或定时安排都没有启动它,而是智能体在两次请求之间自己决定行动还是保持沉默时,才填 self。 |
form |
act | silence(沉默)、communication(沟通)、preparation(准备)或 execution(执行)。 |
about |
outcome | 这个结果所涉及的那次更早的 act 事件的编号。 |
target |
revise | 改了什么:提示词、规则、技能或策略。 |
made_by |
revise | 智能体自己作出的改动填 agent,由用户或开发者写下的改动填 user。 |
governance |
revise | 用户批准过的填 approved,没有超出用户所设限制的填 bounded,其他情况填 none。 |
HALO 会为每个事件加上编号(e1、e2 等)、UTC 时间戳和客户端名称。
HALO 检查的规则
Section titled “HALO 检查的规则”uses中的每个编号都必须是同一智能体更早的事件。编号在所有智能体之间全局唯一,但一个智能体不能引用另一个智能体的事件。about必须是这个智能体自己的某个act事件的编号。summary不能为空。
违反规则的调用不会被保存。回复会说明需要改什么,例如 unknown event id(s) e42 for agent 'demo'; call halo_trace to see the ids of your earlier events。
HALO 读取的是 uses 中的引用,所以引用应当写明这一步实际依据了什么。
- 行动写明它的决策用到的观察和记忆。
- 记忆写明它保存的是什么:一次观察、一次行动或一个结果。
- 如果是一次更早的行动促使智能体去观察,例如去检查发出的消息是否送达,观察就写明那次行动。这条引用就是通路 A→S。
- 如果一条记忆影响了智能体要找什么,或影响了它如何理解输入,观察就写明这条记忆。这条引用就是 M→S。
- 修订写明促成它的结果,之后的行动写明它所遵循的修订。