分析
分析只读取事件的类型和事件之间的引用。它的代码在 halo/mcp/analysis.py 中,不调用任何模型,所以同一条轨迹总是得到同一份报告。
当模块 Y 的一个事件在 uses 中写明了模块 X 的一个事件,通路 X→Y 就算已观察到。同一模块内部的引用不算通路,例如一个 recall 引用了一个 remember。修订不属于任何模块,所以指向修订和从修订出发的引用也都不算通路。
| 事件类型 | 它用到的事件类型 | 显示的通路 |
|---|---|---|
| act | observe 或 outcome | S→A |
| remember | observe 或 outcome | S→M |
| act | remember 或 recall | M→A |
| observe 或 outcome | act | A→S |
| observe 或 outcome | remember 或 recall | M→S |
| remember | act | A→M |
只有 remember 事件才会接收进入记忆的通路,因为 S→M 和 A→M 传递的是记忆要保存的信息。一个用到观察的 recall,是由输入引发的一次查找。它的结果到达行动时算作 M→A,论文对回答时的检索也是这样计算的。
| 步骤 | 何时算已观察到 |
|---|---|
| 记录 | 一个 remember 事件用到了一个 act 事件 |
| 结果 | 一个 remember 事件用到了一个 outcome 事件,也就是结果被保存了下来 |
| 归因 | 一个 outcome 在 about 中写明了它对应的行动,并且之后的 act 或 revise 直接或经由其他事件用到了这个结果 |
| 修订 | 一个 revise 事件带有 made_by: agent |
| 后续使用 | 之后的一个 act 直接或经由其他事件用到了这次修订 |
报告还会寻找一条连通的链:一次行动,一个关于它的结果,一次用到这个结果的修订,以及之后一次用到这次修订的行动。在论文的只读模式中,40 项已审阅工作里只有三项写明了全部五个步骤。
| 等级 | 本级自身的条件 |
|---|---|
| L1 | 某个事件直接或经由其他事件,用到了较早会话中的一个 remember 事件 |
| L2 | 这样的事件是 act、observe 或 outcome |
| L3 | 某个 act 的 trigger 为 self |
| L4 | 观察到归因,并且观察到 A→S 或 A→M |
| L5 | 一次带有 made_by: agent、governance 为 approved 或 bounded 的修订,被之后的行动用到 |
最终给出的等级,是满足以下要求的最高一级:它自己的条件成立,它下面每一级的条件也都成立。L0 只需要一个事件。
如何读证据列
Section titled “如何读证据列”| 写法 | 含义 |
|---|---|
e3→e5 |
事件 e5 用到了事件 e3 |
e5⇠e7→e9 |
结果 e7 针对的是行动 e5,并且 e9 用到了 e7 |
e9 |
事件本身,例如一次修订 |
每个单元格最多列出三个例子。halo_trace 会列出全部事件及其引用。