跳到正文

SDK / Platform 边界与重建基线 ​

日期:2026-10-15。状态:已确认的交付与职责边界;公共接口签名和新实现尚未交付。

旧业务代码已经清除。项目先形成 agentloom-sdk 和 agentloom-platform 两份独立交付物,继续共用当前仓库,是否拆仓库另行决定。当前目录不保留旧实现的兼容代码。

1. 两份交付物 ​

范围SDKPlatform
用户、空间、权限、应用 CRUD不包含负责
草稿、发布、配置版本选择不包含负责,并保存恢复时使用的原配置
Agent 与 Workflow 构造接收执行配置、节点绑定和依赖,构造可执行程序将用户配置解析成 SDK 参数
模型调用接口、供应商适配、流式响应处理凭据、模型目录和配置管理
Skill、Tool、MCP、Hook加载与执行协议、资源访问范围、事件与调用处理上传/导入、配置、资源目录和应用授权
执行Loop、轻量 Agent 引擎、Workflow 引擎、预算、并行和调用接收请求、鉴权、安排运行机器、调用 SDK
上下文与检查点管理轮次与角色上下文、保存现场、恢复、执行权保护提供存储依赖及会话/Run 关联,展示运行状态
文件与沙箱使用工作空间及沙箱适配器,执行路径范围控制分配应用文件根、准备挂载、管理资源生命周期

唯一业务依赖方向为 Platform → SDK。SDK 不导入平台模块,不回查平台应用、发布记录或用户,不要求 user_id、space_id 或 AgentRelease。独立开发者可以直接使用 SDK。

SDK 可以读写执行所需的持久存储,但通过注入的存储协议访问;这不等于依赖平台业务数据库。内存实现可用于最小示例,进程故障恢复需要可持久读取的存储。

2. 构造与调用 ​

平台先读取应用配置、选择版本并完成权限检查,再准备模型客户端、能力资源、Prompt、策略、存储和工作空间,最后构造 SDK Agent。SDK 不负责解析平台发布 ID。

时机输入
构造可执行对象已解析的行为/图配置、模型与能力、执行策略、存储和环境依赖
发起一次执行用户输入、会话标识、稳定 Run 标识
故障后重新构造原 Run 的执行配置、同一持久存储和环境范围、原 Run 标识

配置可以直接传值;文件、Skill、历史消息和检查点可通过已注入的路径、加载器或存储接口按需读取,不要求一次全部加载进内存。

new Agent 创建进程内对象,不等于创建新 Run,也不在构造函数里偷偷开始业务执行。对象的固定配置与每次运行的上下文、预算、进度必须分离。

3. 发布与恢复配置的责任 ​

发布、配置版本和恢复时选择哪份配置全部归调用者;平台场景由 Platform 负责,独立 SDK 场景由集成方负责。

SDK 不维护平台配置版本指纹,不比较应用发布版本,不在恢复时自行选择最新版。调用者必须传回该 Run 对应的配置。检查点自己的数据格式和执行协议校验仍属于 SDK 的存储/恢复契约,与平台发布管理区分。

旧 SD-3 / ID-1 中 AgentRelease、OwnerRef.space_id、发布绑定 hash、平台表外键等混合字段不能直接成为 SDK 必填字段;保留的领域和事务方案需要按此边界重新划分。

4. 恢复属于 SDK ​

平台用相同构造和执行入口交回原 Run;SDK 判断该 Run 的状态并处理:

执行现场SDK 行为
尚未建立初始化本次执行
未完成且允许接管取得执行权,从可靠保存点恢复
仍由有效实例执行不启动第二个执行者,不直接抢占
已进入终态返回已有结果或终态错误,不重新执行

同一 Session 的新提问创建新 Run。机器故障后继续原请求沿用原 Run;重复进入执行入口不重复追加原始输入。补充说明使用输入接收协议,不能靠重复 invoke 隐式追加。

平台负责故障检测和机器调度,不需要查询各 Executor 的 Loop 位置、拼接上下文、判断汇合条件或重写恢复算法。只有相同的 Session 标识不足以恢复一次执行,必须关联具体 Run。

Plan–Executor 的恢复 ​

保存 Planner 和各次 Executor 调用的私有上下文、执行阶段、调用结果、批次/汇合关系、剩余额度及截止时间。

例如 Planner 已委派 A、B、C,A/C 已完成并保存,B 正在第三次 Loop。恢复时复用 A/C 结果,接回 B 原任务和上下文;B 完成后全批交给原 Planner 继续下一次 Loop。不会把所有 Executor 历史塞回 Planner 重新规划,也不从计划文本猜测执行位置。

已保存的工具结果只需继续消费;未完成的模型输出不能当作完整决策;外部调用已发出而结果未保存时属于结果可能不确定的情况,不能宣称检查点提供外部副作用恰好一次保证。SDK 恢复的是可靠保存的状态,不是 Python 栈或模型生成到一半的 token 位置。

业务失败后是否调整计划由 Planner 决定。进程重建本身不触发全新规划,也不重新分配总预算。

内外层的交接 ​

轻量 AgentGraphEngine 与通用 WorkflowEngine 均归 SDK,分别保存各自状态,经统一检查点协议和父子调用关联恢复。Workflow 的 AgentNode 必须接回原 Agent 调用,不在恢复时另起根 Run。

内层 Plan 的 Planner 和 Executor 是同一 Agent 图内的角色任务;同类型两次委派产生两个私有上下文的 NodeTask。普通 Tool/MCP 调用是 Operation,不因此新建图实例。外层调用完整 Agent 才通过 AgentNode 进入对应内层图范围。

5. 当前仓库清理范围 ​

已移除旧前端、后端、Runtime、图模块、工具 SDK、配套业务测试、数据库迁移、部署脚本和产品依赖清单,同时删除旧 API、数据库、Hook、工作区、Embedding 与运维使用说明。

保留产品设计约定、领域/检查点/事件等设计草案及文档站。Git 历史从本次重建基线重新开始。本地 .env、用户未提交的 Agent/Skill 示例、私有文件不纳入源码删除或 Git 提交;原 Demo 的本地 hosting 元数据移至被 Git 忽略的 work/rebuild-preserved/。测试服务器和数据库未在本次操作中变更。

新目录只是结构,不表示 SDK 或平台已经实现。旧 SD-3 / ID-1 的详细字段、接口和 Schema 仍需按新边界调整,不作为当前可执行 SDK 的契约。其他设计草案与本文冲突时,以本文已确认的交付边界为准。

6. 重建顺序与验收 ​

  1. 明确 SDK 公共构造/执行接口、角色与能力配置、Run 和恢复端口;平台身份和发布数据留在调用方。
  2. 实现 ReAct、Plan–Executor 最小闭环与持久恢复,独立于平台测试;再实现 Workflow 内核适配和 AgentNode 交接。外层设计必须覆盖,不能用空实现宣称兼容 LangGraph。
  3. 交付三个可独立运行的示例:ReAct 的模型—工具循环;Plan 的委派、上下文隔离与汇合;Workflow 的状态、能力节点与完整 Agent 组合。
  4. 对原 Run 的跨进程恢复、已保存结果不重做、重复输入不追加、有效 owner 不被抢占和预算不重置做确定性验收。模拟模型与真实模型分别报告。
  5. Platform 仅通过 SDK 公共接口装配执行,再建设管理端、API 与新部署流程;不能通过导入 SDK 私有实现补全公开接口的缺口。

验收底线:移走整个 Platform 后,SDK 及三个示例仍可独立运行。当前尚未满足该运行验收条件;本次只完成旧源码清理和重建结构。