Files
memabra/docs/EXECUTION_AND_PERSISTENCE.md
2026-04-15 11:06:05 +08:00

2.6 KiB
Raw Permalink Blame History

Execution and Persistence

目标

给 memabra 补上两块真正让系统“落地”的骨头:

  • execution让路由决策进入可执行动作层
  • persistence让 trajectory 和 memory record 能落到磁盘

当前实现

execution.py

提供:

  • ActionResult
  • MemoryExecutor
  • SkillExecutor
  • ToolExecutor (原 MockToolExecutor现已升级为可接真实后端
  • ExecutionEngine
  • ToolBackend 协议(支持 params 传参)
  • LocalFunctionToolAdapter — 将工具映射到本地 Python 函数
  • SubprocessToolAdapter — 将工具映射到 shell 命令
  • ToolRegistry — 按 tool_id 注册、查找和执行工具

当前行为:

  • inject_memory 会产出 memory_injected 事件,并在有 memory store 时标记 last_used_at
  • load_skill 会产出 skill_loaded 事件
  • call_tool 会通过 ToolBackend 协议调用真实后端,产出 tool_calledtool_result 事件
  • RouteDecision 现在携带 selected_payloads,可以将候选参数经由 ToolExecutor 传递给后端
  • 其他 decision_type 先走 noop

这一步的意义是: memabra 第一次有了 execution stage而不是只有 policy stage。 并且 tool 层现在可以接入真实的本地函数或子进程后端,不再是纯 mock。

persistence.py

提供:

  • PersistenceStore

当前能力:

  • 保存 trajectory 到 artifacts/trajectories/
  • 读取 trajectory
  • 列出 trajectory 文件
  • 保存 memory record 到 artifacts/memories/
  • 读取 memory record
  • 列出 memory 文件

这意味着 prototype artifacts 已经不再只是内存态漂浮物。

runner writeback integration

runner 现在支持:

  • 挂 execution engine
  • 挂 persistence store
  • 挂 memory store
  • 执行后扩展 execution events
  • 可选把 trajectory 落盘
  • 对 memory inject 决策进行基本 writeback / mark_used

当前闭环

现在的最小系统流程已经变成: 任务 -> retrieval -> router -> execution -> trajectory -> validation -> persistence -> replay

这就真正有点 agent runtime 的味儿了。

当前限制

  • tool 执行还是 mock 的 已升级为可插拔式真实后端
  • skill 执行只是事件层,不是真加载技能
  • writeback 逻辑还很粗糙
  • persistence 目前是 JSON 文件,没有索引层

下一步建议

  1. 做真实 ToolExecutor / SkillExecutor adapter 协议 tool adapter 已完成
  2. 做真实 SkillExecutor adapter从文件系统加载 skill payload
  3. 把 persistence 接到 replay 默认数据源
  4. 给 runner 增加 outcome / reward 的真实更新逻辑
  5. 做 richer telemetry 和失败事件归因