mnemond 协议

August 11, 2026 · View on GitHub

稳定性:Preview。 本文是 Agency 当前实现遵循的 authority contract, 不是长期兼容承诺。在 Agency 明确宣布稳定里程碑前,协议字段、持久格式、Peer 交互和 Runtime 投影仍可能演进。

本文定义 Mnemon Agency 背后的最小产品契约。它不是纯 Event Sourcing 要求,也不是内置协作模式清单。

目标

mnemond 向短暂的 Agent turn 投影一个有界的本地责任世界,并准入 Agent 提议的后果。它不替 Agent 规划任务、调度工具或同步远端节点状态。

协议只有一个本地循环:

本地 authority -> View -> Intent -> admission -> Event + effect + Receipt
       ^                                                        |
       `----------------------- 下一个 View --------------------'

模型拥有开放的语义选择;本地 authority 拥有身份、可用 handle、边界、 路由、fence、持久化以及后果是否被接受。

这个循环是逻辑循环,不表示一个模型 turn 中可以连续执行多个动作。accepted Receipt 会结束当前受治理的 Host opportunity;下一次合格边界再读取新 View。 有界输入诊断属于控制结果,不是 Receipt。

核心对象

对象含义所有者
View本地世界和当前可用后果的有界投影本地 authority 派生
IntentAgent 从一个精确 View 中选择的有界语义提议Agent
Event本地 admission 接受 Intent 或认证后的远端 candidate 后产生的不可变语义行动本地 authority
Receipt一个精确 operation 的持久 accepted/rejected 结果;重放返回既有结果而不产生第二次后果本地 authority
Handling某个 Principal 仍需考虑的本地持久责任仅本地 authority
Reference带 CAS head、没有 owner、claim 或完成状态的本地持久谱系;active head 指向 Artifact,retracted head 作为 tombstone 保留仅本地 authority
Artifact通过 digest 寻址和验证的不可变内容;Event 只携带引用Artifact store 与本地 authority catalog

HandlingReferenceArtifact 可以被投影进 View,但 View 不是 它们的 canonical storage。更换 view.md 或 JSON 的渲染方式不能改变 admission 结果。

Event 边界

只有当一个已接受行动需要跨 turn、进程、Runtime、Principal 或节点继续 存在,或者其因果关系与结果必须在原 Agent 消失后仍可恢复时,才应形成 Event。

查询、View 渲染、prompt 拼装、索引、缓存、transport ACK、claim 维护和 模型私有推理都不是 Event。

Event 明确分离三类数据:

machine     身份、接受时间、封闭 consequence、解析后的 target
semantic    开放但有界的 kind 与自然语言 payload
evidence    Artifact digest、causation 与 correlation

语义 kind 开放,持久 consequence 封闭。自然语言可以解释或建议行动,但 不能生成身份、authority、路由、完成或持久化结果。

本地责任,而不是 Agent 状态

mnemond 记录 Handling 是否 open/terminal,以及某个 claim 当前是否有效; 它不保存 agent.status = reviewing 或模型所在的 workflow step。claim 只是 短暂占用,过期只释放占用,不会声明责任已经完成。

Agent 从 View 中看到当前 Handling 和相关 note,再自由选择下一个允许的 Intent。新的协作模式应由语义 Event kind 和 guide 表达,而不是在 Core 中 增加 Agent 状态机。

跨节点 handoff

跨节点 handoff 是两个本地责任循环相接,不是把一个 Handling 原子搬到远端:

Node A                                         Node B

View A
  -> Intent(request)
  -> 本地 admission
     + Event(request)
     + Handling A:等待并评估 B
                      |
                      | 有界投递
                      v
                 认证后的 candidate
                   -> 本地 admission
                   -> Handling B:考虑请求
                   -> View B
                   -> Intent(result / decline / unresolved)
                   -> Event + Artifact 引用
                      |
                      v
Node A 收到 candidate
  -> 本地重新准入
  -> View A'
  -> Intent(adopt / rework / decline)
  -> 本地 Receipt,并结算 Handling A

两个节点不共享 canonical Task 或 Handling。因此:

  1. transport delivery 不等于远端 admission;
  2. 远端 admission 不等于业务完成;
  3. 远端 result 不等于本地采纳;
  4. 远端 Event 只有经过接收端本地 admission 才能成为本地事实;
  5. 网络可以至少一次投递,但 operation identity 与 digest 保证语义后果幂等。

Package 权责

internal/agency           不可变协议值与 canonical projection
internal/agency/authority sealed View、Intent binding、admission、Handling/Reference state
internal/agency/artifact  不可变内容字节与 digest 验证
internal/agency/peerlink  可替换的认证传输
internal/agency/client    Runtime 面向的本地 terminal 与 replay journal
internal/agency/attach    Host Hook、guide 和工具投影
internal/daemon           进程组合与生命周期

internal/agency/authority 是唯一持久事实 writer。Runtime adapter 和 transport 只能提供 candidate 或 observation。internal/agency 校验不可变值;解析 View handle、选择持久 consequence 等 policy 必须属于 internal/agency/authority

能力边界

Memory、teamwork、review、negotiation 和 self-evolution 都是建立在此协议 之上的能力。它们可以增加有界 View 投影、语义 Event kind、Agent guide 和 不会创造第二 authority 的确定性 provider。

它们不能让 Core 决定什么知识有价值、哪个 Agent 应赢得争论、Runtime 应该 怎样规划,或模型必须采用哪种协作模式。任何新增 canonical consequence 的 能力都必须作为 authority 修改接受评审,而不能作为普通数据加载。