总体概览
Multi-Agent Life Cycle Runtime 是一个面向长期存在 Agent 的运行时设计。它关注 Agent 在时间、故障、资源、安全和协作约束下如何持续存在,而不是只关注一次推理能否产生正确回答。
Engine 提供生命环境,Agent 产生生命行为。
一句话定义
Agent 是拥有稳定身份、目标、状态、能力、记忆和行为闭环的自主实体;Runtime 是让这些实体能够安全、连续、可观察地运行和协作的生命基础设施。
问题边界
本项目要解决的问题
一个长期存在的 Agent 至少需要回答以下问题:
- 身份:不同进程、容器或模型实例如何被识别为同一个 Agent?
- 时间:任务结束、进程退出和 Agent 终止之间有什么区别?
- 状态:哪些状态必须持久化,哪些状态只能短暂存在?
- 恢复:失败后从哪里继续,如何避免重复执行外部副作用?
- 记忆:哪些经历值得保存,何时检索,何时遗忘?
- 环境:观测从何而来,可信度如何表示,世界模型如何更新?
- 协作:多个 Agent 如何发现彼此、授权、通信、分工和处理冲突?
- 演化:什么证据足以改变长期策略,失败时如何回退?
- 治理:谁可以创建、暂停、升级或终止 Agent,如何审计?
本项目当前不解决的问题
为避免范围失控,当前设计不预设:
- 某个特定大模型、Agent 框架、向量数据库或消息队列;
- 通用人工智能的意识、人格或伦理地位判定;
- 所有场景通用的组织结构或收益函数;
- 绕过人类授权的自主权限扩张;
- 未经验证的在线自修改代码;
- 已经生产可用的实现承诺。
这些非目标不是永久排除项,而是说明它们不能先于核心契约决定系统结构。
核心对象
Agent
Agent 是一个具有连续身份的自主执行实体。最小构成包括:
| 要素 | 回答的问题 | 典型内容 |
|---|---|---|
| Identity | 我是谁? | agent_id、角色、使命、所有者、身份版本 |
| Goals | 我要完成什么? | 目标、优先级、来源、期限、停止条件 |
| State | 我现在处于什么状态? | 生命周期、任务、关系、资源占用、健康状态 |
| Memory | 我经历和学会了什么? | 工作、情景、语义、程序性和自我记忆 |
| Capabilities | 我能做什么? | 模型、工具、技能、权限、已验证表现 |
| Self Model | 我如何理解自己? | 能力边界、失败模式、置信度、成长历史 |
| Behavior Loop | 我如何行动? | 观察、理解、决策、行动、评估、反思 |
稳定身份不意味着所有内部状态永远不变。身份连续性来自可追溯的版本链、明确的变更原因和可恢复的核心状态。
Runtime / Engine
Runtime 管理 Agent 存在所需的公共机制:
- 创建、初始化、激活、休眠、唤醒、恢复和终止;
- 时间、事件、任务、优先级和资源调度;
- 心跳、租约、健康检查和失联判定;
- 快照、检查点、版本迁移和审计;
- 消息投递、事件广播、寻址和访问控制;
- 外部工具、数据和服务的受控接入;
- 故障检测、隔离、回滚和人工接管;
- 指标、日志、追踪和因果关联。
Environment
Environment 是 Agent 之外、能够产生观测或承受行动结果的一切:用户、API、文件、数据库、业务系统、硬件、其他 Agent 和时间事件。
环境不能直接修改 Agent 的核心状态。所有输入应先形成带来源、时间和可信度的观测;所有输出应先经过权限、预算和副作用检查。
World Model
World Model 是 Agent 对环境的可更新解释,至少表达:
- 实体:用户、服务、资源、Agent、任务;
- 关系:所有权、依赖、信任、协作、冲突;
- 状态:已知值、时间、来源和置信度;
- 事件:发生了什么、因果候选、影响范围;
- 预测:可能发生什么以及不确定性。
世界模型不是“事实本身”。它必须允许过期、冲突、修正和来源追踪。
Agent 与 Runtime 的责任边界
| 责任 | Agent | Runtime |
|---|---|---|
| 解释目标与价值取舍 | 负责 | 提供约束和审计,不代替判断 |
| 生命周期状态转换 | 提出意图、执行状态内行为 | 校验并提交转换 |
| 任务计划与决策 | 负责 | 提供调度、超时和资源边界 |
| 记忆内容选择 | 产生候选、评价意义 | 提供存储、索引、权限和保留策略 |
| 工具调用 | 选择动作和参数 | 校验权限、预算、幂等性并执行 |
| 故障处理 | 提供领域诊断和替代策略 | 检测基础设施故障、编排恢复 |
| 策略演化 | 产生假设和候选变更 | 执行验证、版本、发布和回滚门禁 |
| 安全与审计 | 遵守策略、解释意图 | 强制策略并保存不可抵赖记录 |
边界原则是:Agent 决定“为什么”和“做什么”,Runtime 约束“何时、以什么权限、使用多少资源、如何可靠地做”。
核心运行闭环
环境事件
|
v
观测采集 -> 来源校验 -> 世界模型更新
|
v
目标选择 -> 计划 -> 动作授权 -> 执行
|
v
结果观测 -> 评估 -> 记忆候选 -> 反思
|
+--------+--------+
| |
继续行动 演化候选
|
实验 -> 验证 -> 发布/拒绝
每个箭头都代表一个需要定义输入、输出、失败语义和审计信息的边界,而不是单纯的函数调用。
五项核心能力及其关系
持续运行
持续运行不等于进程永不退出。它意味着 Agent 的身份和必要状态可以跨进程、主机、版本和休眠周期延续。
故障恢复
恢复不等于无限重试。系统必须先判断失败类型、动作是否产生副作用、状态是否一致,再选择重试、补偿、回滚、转移、隔离或人工接管。
环境认知
认知来自观测,但观测可能迟到、冲突或错误。世界模型必须保留来源、时间和置信度,不能把所有输入直接当成事实。
自我认知
自我模型让 Agent 知道自己具备哪些已验证能力、哪些权限、哪些常见失败模式以及何时应请求帮助。它不能只依赖模型自述。
受控演化
演化是对长期行为的版本化变更。候选变更必须经过离线评估、隔离实验、回归验证和发布门禁,且保留回滚路径。
五项能力构成一个闭环:环境认知产生经验,自我认知解释表现,恢复机制处理失败,演化机制验证改进,持续运行保存结果。
关键不变量
无论采用什么框架和基础设施,后续实现都必须维护以下不变量:
- 一个
agent_id在同一时刻最多有一个获得有效写租约的活动实例。 - 生命周期转换必须由可追踪事件触发,禁止无记录地跨状态修改。
- 外部副作用必须拥有唯一操作标识,并定义幂等、查询或补偿策略。
- 快照必须声明模式版本、逻辑版本和恢复点,恢复过程必须验证兼容性。
- 记忆必须保留来源和可见范围;共享不能突破原始数据的授权边界。
- 演化候选不能直接覆盖稳定版本,必须经过验证和可回滚发布。
Terminated是不可逆的逻辑状态;需要恢复时应创建新的身份版本或新 Agent。
这些不变量会在核心契约中收敛为可测试条款。
设计状态与证据等级
为了避免把愿景写成现实,文档中的内容分为三类:
- 仓库事实:当前文件、脚本和部署配置可以直接验证,例如 VitePress 构建命令。
- 设计约束:后续实现必须满足的边界和不变量,例如状态转换需要事件记录。
- 候选方案:需要在实现或原型中验证的接口、字段和算法。
当前所有 Runtime 行为都属于设计约束或候选方案,尚没有运行代码证明其有效性。
推荐阅读顺序
第一次阅读建议继续到Agent 生命周期。准备实现时,先阅读核心契约和工程路线图,不要直接从数据库或框架选型开始。