KkedayoungAgent engineering / projects

Project 02 / Embeddable agent runtime

M-Agent

0.5.1 · Durable Run

M-Agent 是面向 Python 应用开发者的 Agent 运行库,负责模型调用、工具执行和运行状态的保存。应用通过 Python API 创建、启动和恢复一次执行,也可以按需接入会话、上下文处理、模型路由与评估。业务逻辑和服务部署由应用负责。

查看公开仓库
M-Agent 的四层公共 API:Core 负责执行,Adapter 实现外部接入,Companion 提供会话等组合能力,Testing 检查运行行为
四层公共 API:执行核心、外部适配、上层组合与测试。Core 不反向依赖其余三层。
要解决的问题

一次 Agent 任务可能包含多次模型和工具调用。进程崩溃后,全部重跑会重复调用模型,也可能重复修改外部数据;只看日志又难以确定该从哪里继续。恢复需要区分已保存的完整结果、尚未完成的步骤,以及必须由应用核实的外部操作。

正在构建的能力
  • 用 Checkpoint 保存可复用的完整步骤结果
  • 恢复时沿用同一 Run 身份与原定义版本
  • 按工具影响类型、重试策略和预算处理重试
  • 通过 WAITING 与处置接口交由应用确认
  • 用租约和版本检查限制并发推进与冲突写入
  • 按需组合会话、上下文、运行前路由与独立评估
我的工作

我设计并实现了 Run 生命周期、持久化存储、跨进程恢复和应用处置接口,并将模型与存储适配、会话与评估、故障测试分别组织为独立模块。设计取舍、实现细节和测试中发现的限制都记录在项目文章中。

01

工作架构

当前公开的系统边界;随项目演进持续修订。 深入了解 →

0.2 Durable Run(已发布)

建立 Run 生命周期和 SQLite 持久化,加入定义版本、工具影响分类、有界重试与 WAITING 处置。

0.3 Runtime Baseline(已发布)

整理四层公共 API,明确模型能力声明与存储内容保护接口,并加入安装发行物后的恢复检查。

0.4 Session 与 Context(已发布)

加入会话存储和上下文预算检查;语义压缩作为独立模型步骤,保留自己的调用与恢复记录。

0.5 路由与 Eval(已发布)

加入运行前模型选择、独立评估和基线比较。已经创建的 Run 仍沿用原模型绑定。

0.5.1 存储修复

修复多个 Run 共用 SQLite 时,上下文与压缩步骤 ID 冲突的问题,并说明旧数据库的迁移条件。

03

实验与验证

深入了解 →
检查点前后如何恢复

在 Checkpoint 写入前后分别终止进程,对比新进程是否复用完整结果、重新读取上下文或再次调用模型。

外部操作是否重复

已有测试覆盖 Step / Attempt 仍为 RUNNING 的崩溃窗口:恢复进入 WAITING,应用核实后确认结果,不再次调用工具。

已知的恢复限制

源码解析附有反例:Tool Step 已为 SUCCEEDED、Checkpoint 尚未提交时崩溃,恢复可能重复执行非幂等工具。已有 WAITING 测试不能证明所有崩溃窗口都安全。

真实模型接口验证

Chat Completions 与 Responses 需要针对具体端点、凭证和能力组合单独检查。离线测试与源码阅读不能代替真实端点验证。

验证范围

区分离线契约(CONTRACT)、安装环境(HOST)、模型端点(PROVIDER)和实际部署(FIELD)。本页概述已有材料,不代表本次重跑了上游测试或完成生产验收。