RT-05-002 Artifact、ResultSink与Agent循环实现证据
免费工具到真实文件、产品候选回执与新进程恢复;持久Agent及Studio逐工具检查点验收范围
记录日期:2026-10-15。本轮按已批准计划推进Runtime的Artifact/ResultSink,并同步优化独立AgentEngine和现有Studio v1循环。已用免费本地工具打通工具Job→真实文件保存→产品候选/inbox回执→新进程恢复。模型调用、供应生成POST、Platform Operation与资金写入均为零。
本页记录实现与测试事实;工作包及GO只在开发清单登记,完整产品验收仍按验收标准。它不替代真实LLM、Studio Runtime接线或生产发布证据。
代码与版本边界
| 范围 | 本轮交付 |
|---|---|
| Runtime | 私有仓库Oceanway-AI/oceanway-runtime,增量分支feat/artifact-delivery-agent-loop,基于基础feat/runtime-foundation;本轮提交b5128c7b2cb71f9fa84a0b4b6f9e6bbf61737a03,增量PR #2以基础分支为base;基础审查为PR #1 |
| 制品/合同 | @oceanway/runtime-client、@oceanway/runtime-server为0.2.0;中性合同仍为oceanway.runtime.v1,工具结果明确为oceanway.tool-result.v2。Planner端口已改为持久dispatch/recover合同,不能用旧无状态next接口冒充恢复 |
| 数据库 | schema v1→v3:v2新增Artifact/Delivery,v3新增Agent控制/步骤;v1 SQL/checksum及既有Job输入、指纹和结果保持不变,拒绝不兼容checksum与降级 |
| Studio | 基线c621a2024ca0c73fafc4144882b75b9f942dd4d5上提交d4f0232e11165f78b9137bd13698a4766d23e499,8个循环/校验及测试文件;PR #41按显式review/runtime-studio-baseline-20261015审查,避免将既有24个历史commit混入main差异 |
| 权威 | Runtime只写自己的schema;Studio v1继续原schema/Writer/工具结果合同。未启动Runtime消费者领取旧Studio任务;Platform无代码修改 |
源码与输入hash、验证回执在Runtime仓docs/verification/,首批历史见foundation证据。已有Studio 57个、文档站14个未提交文件按原SHA保留,未纳入本轮实现或干净候选验收。
免费完整流程与故障恢复
- 合成文档快照经免费文本工具产生共同Job;direct版本不创建Session/AgentRun,Agent版本用脚本Planner驱动同一Job合同。
- Artifact按Job与输出序号固定身份。LocalAssetPort实际写文件,核对UTF-8长度/SHA-256、稳定asset与原字节;保存回执丢失只恢复原文件,不再执行工具。
- ResultSink将同一Artifact送入fixture产品。产品以自己的Pool、schema、事务和inbox提交候选/回执,不依赖Runtime内部表或跨边界事务;目标对象/版本、scope、asset/hash和重复命令均核对。
- 产品提交后丢响应,随后启动全新Node进程、重建端口与数据库连接恢复。验证仍为一个Job/Attempt、一个物理asset、一个候选、一张原Delivery回执;重复/乱序重放保持原身份。
- 原文没有被候选覆盖,
adopted=false。保存、投递和领域采纳分别记录;Agent完成门槛检查原工具结果及所需Artifact,产品候选可用另由Delivery回执确认。
Runtime与fixture产品位于同一隔离数据库的不同schema,使用独立Pool和事务。这证明事务边界与inbox去重协议,不登记物理分库、真实产品授权、服务离线或跨地区故障恢复通过。LocalAssetPort是开发/fixture适配器,Studio现有local/S3 provider尚未迁入。
Agent循环本轮改变
| 层次 | 已实现行为 |
|---|---|
| 独立Runtime Agent | 冻结工具策略/schema与上下文;每次advance最多一个Planner边界。工具受理即持久返回accepted,queued/running/UNKNOWN及待保存均waiting;完整原Artifact核实后才交saved observation |
| Planner恢复 | stable callId/requestFingerprint、发送屏障与租约围栏;丢响应只recover原调用,未知不重新dispatch。脚本Planner也用PG存原决定,重复dispatch会使测试失败 |
| 完成门槛 | 明确final decision、requiredTools及真实Job/完整Artifact核对;伪造/遗漏/跨Job产物、异意图重复callId和步数耗尽不能冒充完成。明确工具失败可用新callId修正 |
| Worker | 冻结注册定义与handler;执行Agent所属Job前再次核对冻结策略中的工具/schema/Artifact要求,漂移不得执行;校验不能在受理后归一化成另一执行意图。模糊副作用异常保留UNKNOWN,替换Worker不再次领取;基础设施错误不伪装成参数错误 |
| Studio现有v1 | 每个工具完成立即保存有序observation前缀,重启只恢复未完成后缀;校验不完整/重复callId、禁止改写/缩短已存前缀,保持原saved:true含义 |
| Studio授权/停止 | 每个新工具前重新检查本地Run与Platform授权。前一个工具期间stop或403/404/409阻止下一个新工具;已在途媒体仍只恢复原操作,未签发recover-only空操作不当作saved;历史batch中本地工具、无效参数或前一原单等待造成的检查点缺口,不阻挡后续已提交媒体恢复,也不跨缺口提交observation |
设计采用OpenAI模型/工具循环、可恢复运行结果、LangGraph持久检查点与中断重入语义中的相关模式:等待不同于final,observation逐步持久化,副作用各自持有稳定身份与回执,真实适配器只选一个历史管理方。没有新增相应框架依赖;模式与全平台接入关系见Agent设计。
本机验收回执
| 验证 | 本轮结果与口径 |
|---|---|
| Runtime真实PostgreSQL | 49项通过、0跳过:17项原核心、1项增量迁移、10项Artifact、14项Agent、7项免费完整流程/回归 |
| Runtime制品 | 构建、类型、格式与依赖审计通过;源码/client依赖边界、独立tarball宿主JS加载、严格TS与无Node全局浏览器合同编译通过;1项旧指纹测试/固定向量保持 |
| Studio干净候选 | 最终干净提交178项PostgreSQL、18项相关纯单元测试通过(engine为31项);128项本地TCP协议回归在首个循环加固提交f6b39a6通过,后续补授权及原批次恢复,未改TCP协议;typegen/typecheck、全仓lint与format通过;独立production build通过;完整单测2889通过、195条件跳过(额外PG/外部integration未开启),本轮178项实库另验 |
| 隔离与副作用 | 使用随机fixture数据库与受限账号,测试结束清理;不读取产品数据库/.env,不提交真实模型/供应/资金请求 |
Studio测试在从提交构建的干净临时目录执行,未借用原有57个dirty文件。Node 22/24及Studio完整Quality状态以关联PR的当前提交checks为准,本页本机回执不冒充远端通过。既有边界告警不计为本轮新增失败;本轮只启动后端隔离栈,未启动完整UI/真实供应,因此没有完成浏览器桌面/移动全矩阵或真实收费供应验收,不能将上述后端子集写成整站发布通过。
未覆盖与下一批接线
真实Planner/Platform原调用适配器、最小固定Workflow及人工检查点、薄SDK/Panel、Studio真实ContextResolver/ResultSink与全页/Canvas双入口、旧记录兼容读取/Writer交接、物理分库/独立API/Worker、生产存储/大文件、真实第二领域消费者均仍待交付。脚本Planner验证控制与恢复协议,不验真实LLM推理质量。
当前回退是关闭新包/fixture,不存在需回放的生产迁移;原Studio队列、供应Operation和恢复器保持原Writer。下一批顺序沿实现计划,正式切换仍须迁移Gate。
远端门禁与基线差异
Runtime b5128c7 的push和PR合成提交Node 22/24四项验证均已通过;回执见PR #2 checks。
Studio d4f0232 的Quality运行38712964125未通过:web停在依赖审计(braces),仓内旧docs停在Next/sharp/source-map依赖审计,security的全历史扫描命中3项generic-api-key,官方gitleaks 8.30.1以--redact=100复现;均来自本轮之前的提交,仍待独立处理。依赖与锁文件均未被本轮8文件修改;本页不将失败门禁或其后远端跳过的整站单测、构建、浏览器E2E写成远端通过;上表本机完整单测和构建另外具名登记。独立文档站是operations/oceanway-docs,与Studio仓内旧docs不是同一制品。