Skip to content

RFC: 从源头收敛 JEV 库与类型化协议 #186

Closed

Description

@M09Ic

RFC: 从源头收敛 JEV 库与类型化协议

本 RFC 对应 #186。基线为 master 5f06ddd09a2d0540bb64be65cf9e153cbac668b9,实现以一个 PR 完成。首个版本尚未发布,直接采用最终结构;不引入库版本号、兼容层、迁移工具或旧格式恢复流程。

要解决的问题

Typed Claim 已由 #170 收敛。剩余重复来自候选和已发布程序的两套集合、把备份文件当成归档来源、把资格与 manifest 编码为协议里的 JSON 字符串,以及可执行内容和来源元数据混在同一类型中。

最终结构

{"claims":{},"reflexes":{}}
  • Claim 继续使用 Provider 的统一类型:type、context、有序 options。库记录为 {claim, task},直接组合,不再为扁平字段维护自定义序列化。
  • Program 只包含执行定义与资格。Reflex 在其外保存 Claim 归属、依赖摘要、archived 和 archive_reason。Program 是内容值,不是第三个库集合。
  • Claim 内容与 Program 各自生成内容 ID。来源任务、成员归属和归档不进入可执行内容摘要,不维护为兼容旧摘要而设的投影。
  • 库只保存已发布程序和它们的归档定义。没有持久化 candidate、阻塞原因字段或候选恢复/晋升入口。
  • 失败、取消或等待证据的源码与诊断保留在 Generation 记录和审计日志中。新的实际证据可以再次触发编译,不受候选状态门控。
  • 替换成功时原定义在同一库内归档;保存失败则内存和原发布结果均不改变。归档不参与执行、编译覆盖或已发布数量限制,也不再扫描/生成备份库。

编译入口与验证

编译器只接收 JSON 产物或 null。源码必须是 js: 同步函数,并由产物声明 when、decide、参数 schema 和效果步骤;去掉裸源码、代码围栏和旧 suite 的读取路径,以及缺失入口描述的补造逻辑。所有效果都要求显式步骤与 occurrence,不再按 API 版本区别处理。

示例 arguments 只供本次回放,发布时去除。现有源码、参数、原生契约、效果身份、完整回放、入口报告与独立语义检查继续执行;缺少真实证据不能发布。原生工具的契约版本代表工具行为,独立于已删除的库存储版本概念。

Loader 严格检查最终结构、内容 ID、Claim 引用与容量。未知字段、损坏内容或无资格草稿直接报错,不重写文件。当前契约已变化的已发布定义在同库归档。限制为 32 个 Claim、16 个已发布程序、2 MiB 总库大小;归档同样受总字节限制。所有写入继续先同步落盘、再原子替换、最后发布内存。

协议与 Web

  • 资格统一使用生成的 ReflexQualification,运行、持久化和协议快照共享同一类型。
  • ReflexDefinition 直接携带 qualification、steps、parameters_schema、archived、archive_reason。删除 qualification_json、manifest_json、api_version、blocker 以及候选集合。
  • UI 直接读取类型化字段,展示已发布程序、归档原因、实际机制检查和未覆盖分支。
  • 事件保留发生时的完整定义快照,后续库变化不改变历史执行的解释。
  • 测试数据和编译提示词同步采用当前结构,删除版本化测试命名与候选发布分支。

验收

  • 编译失败、取消和等待证据不会持久化草稿,诊断仍可查阅。
  • 未通过资格的程序不能发布;替换保存失败保留原发布结果与 Claim。
  • 归档不改变 Program ID 或源摘要,不参与执行/覆盖,重新发布不能绕过数量上限。
  • 旧字段、候选集合、错误 ID 和缺失 Claim 引用被严格拒绝。
  • 类型化快照保留资格、步骤、参数和归档事实,快照修改不影响当前库。
  • 默认与完整能力构建的 JEV 测试、Provider/Guardrail/Web 服务回归、生产 profile 编译复用链路、前端构建和 JEV 界面测试通过。

真实模型验收使用实际服务及独立业务 oracle;模拟推理测试和 UI 回放不能代替真实执行结论。

进一步收敛

  • Claim 生成、事件和界面统一使用完整的 {"claims":[...]} 对象;删除数组、围栏及空值的补偿解析。
  • 编译与语义评审共享一份实际轨迹,系统及此前用户约束保留一次;报告使用已校验的 evidence/path 引用。验证器直接消费结构化回放结果,完整修复诊断不再逐边界复制给语义评审,也不再序列化后自行反解。
  • 原生契约直接使用宿主快照,删除没有独立约束的转发类型与缓存开关。
  • 删除 Guardrail off→auto、record 错误策略回退、--init 重写、gogo 输出参数重写、Harness 旧环境变量回退、无实际声明使用的配置字段迁移回调及数据库版本专用迁移建议。外部依赖协议与当前产品配置边界继续按其实际契约处理。
  • 真实事件覆盖时间线、类型化资格和库面板;修复手机端库列表溢出导致的详情重叠。

实现与验证状态

实现及补充清理位于 PR #187:#187 。PR 已于 2026-10-25 合并至 master,合并提交 5ab5d6c8d2f646d9137bb9d2c4dfb7f77498adfe;本 issue 保持关闭。

默认与完整能力 JEV 测试、生产 AIScan profile 回归、Guardrail/配置/CLI/gogo/IOA/Web 回归、架构检查、vet、golangci-lint(0 issues)、前端构建通过;JEV Playwright 共 86 项通过,包含两项真实执行证据的界面验收。

使用用户指定网关的 deepseek-flash、真实 TypeSafe JEV 和 Chromium,从空库完成 Shadow DOM 客户保存、两次加购后结算的冷/热 Off/Auto 验证。最新代码重载其真实生成的库后,两场景正式热任务均完整接管,分别执行 6、8 次原生操作,主模型工具调用为 0,源码不变。重载的 Shadow DOM 额外预检有一次参数交接回退,未计为完整接管。

报销及提交后恢复未通过接管验收。已修复实际暴露的评审证据重复问题,同一真实轨迹离线输入降至 57,418 bytes;完整实测轮次业务正确,但普通模型生成复合命令,契约拒绝回放,未发布 Reflex。明确原生等待方式后的最后一轮仍未收敛到记录的原生调用,已主动中止并保留失败证据。没有放宽回放、效果契约或语义验证来制造成功。

生产组件的 Playwright 检查回放真实 AOP 事件与库;没有通过完整生产 Web 界面提交这些任务。尚不声称报销、弹窗、跨源 frame、文件传输、拖放或全程 token/费用节省已通过验证。失败、中断及缺失用量均保留,详细范围与复现命令见 docs/jev.md。

合并前补齐节点重载回归中的已移除 Guardrail off 测试输入,改用当前支持的 auto/safe,提交 99bd1d4e;节点、配置和 Guardrail race 测试通过。合并后的远端 CI 仍在运行。

Activity

  1. changed the title [-]RFC: 以 Claim / Reflex 收敛 JEV 库模型与 DTO[/-] [+]RFC: 收敛 JEV 库状态与 typed DTO(基于 claim/2)[/+] on Oct 24, 2026
  2. changed the title [-]RFC: 收敛 JEV 库状态与 typed DTO(基于 claim/2)[/-] [+]RFC: 从源头收敛 JEV 库与类型化协议[/+] on Oct 24, 2026
  3. M09Ic commented on Oct 24, 2026

    @M09Ic
    ContributorAuthor

    实现已完成,代码与最终 RFC 已统一。PR:#187

    已移除持久化 candidate、版本分支、兼容/迁移/备份恢复路径;采用单一库与编译产物结构,资格与协议字段统一类型。

    后端回归、生产 profile、架构检查、vet、golangci-lint、前端构建及 84 项 JEV 界面测试通过。缺少凭证,真实模型验收未运行。

    按请求关闭 #186,PR #187 保持开放供评审,尚未合并。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions