跳转到内容
EN

事件模型

每调用一次记录工具,就保存一个事件。一个事件要么属于闭环中的某个模块,要么是对智能体自身机制的一次修订。

工具 类型 模块 智能体在这些时候记录
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 时间戳和客户端名称。

  • 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。
  • 修订写明促成它的结果,之后的行动写明它所遵循的修订。