Damnatiox
DOCUMENT / published

Tool Registry、Permission Gate、Session Store 与 Compaction

Tool Registry、Permission Gate、Session Store 与 Compaction 1. Tool Registry Registry 管理工具元数据、版本、handler 和 capability。它需要支持: 名称冲突检测; 按会话、角色、平台选择可见工具; provider schema 转换; 工具搜索与延迟加载; 禁用或降级不可用工具; 版本和 deprecation; 统一 metrics 与

Agent Harness 2026/8/243 分钟阅读
# Agent# Agent Engineering# Agent Harness

Tool Registry、Permission Gate、Session Store 与 Compaction

1. Tool Registry

Registry 管理工具元数据、版本、handler 和 capability。它需要支持:

  • 名称冲突检测;
  • 按会话、角色、平台选择可见工具;
  • provider schema 转换;
  • 工具搜索与延迟加载;
  • 禁用或降级不可用工具;
  • 版本和 deprecation;
  • 统一 metrics 与 hooks。

Registry 决定“系统拥有什么”,Router 决定“本轮暴露什么”。

2. Permission Gate

Permission Gate 应位于工具解析之后、handler 之前。输入使用规范化参数,输出包含 allow/deny/ask、规则 ID、范围和过期时间。确认结果只覆盖精确动作,不能模糊扩展到未来所有参数。

3. Session Store

推荐层级:

Text
Thread: 用户可持续对话 Run: 一次目标执行 Turn: 一次模型决策 ToolCall / ToolResult

存储:

  • 当前目标和状态;
  • 消息与摘要版本;
  • tool call/result;
  • EvidenceItem;
  • 权限确认;
  • checkpoint;
  • usage、成本和错误。

并发更新使用乐观锁、版本号或事务,避免子任务覆盖主任务状态。

4. Context Compaction

Compaction 的输入是旧上下文与结构化状态,输出不是普通聊天摘要,而是下一阶段可执行的 checkpoint。必须保留:

  • 当前目标和成功标准;
  • 已完成/未完成任务;
  • 关键决策及理由;
  • 已产生的副作用;
  • 失败尝试与禁止重复动作;
  • 证据 ID 和外部存储定位;
  • 当前权限与预算。

5. 组合不变量

  • Registry 暴露的工具必须经过 Permission Gate;
  • Permission 决策与实际执行参数一致;
  • ToolResult 在 session 提交后才对后续 turn 可见;
  • Compaction 不丢失未决确认和 tool call 配对;
  • 恢复后先核对外部状态,再继续;
  • Trace 能关联 thread/run/turn/call。

6. 测试

  • 工具热加载时会话是否使用正确版本;
  • Permission 确认后参数被修改是否重新确认;
  • 并发 tool result 是否丢失;
  • Compaction 前后成功条件是否一致;
  • 崩溃恢复是否重复写操作;
  • 旧 trace 能否用对应 schema 解码。