Skip to content

录制 schema 3 与传输层回放(发布前,RFC-0041) #270

Open

Description

@cunninghamcard-bit

状态(2026-10-25)

核对基线:master 5743a40a,#268 头 b1b33b69。维护者 2026-10-18 已定:schema 3 迁移是 #268 之后、发布之前的单独 PR(https://github.com/arcships/aimux/pull/268#issuecomment-6246454434)。原跟踪项 #167 已于 2026-10-12 关闭,本 issue 接替。

现状

  • 录制仍是 schema 2:aimux-core/src/recording.rs:39 RECORDING_SCHEMA = 2,读取接受 1 和 2(:49)。登记为 RFC-0039 G-b / D12。
  • 回放在模型层:aimux-replay 按 ProviderRecord 用 rebuild_provider 重建 provider;没有 HTTP / WebSocket / 下载的传输层回放,replay.capabilities、credential.create 返回 UnsupportedFunctionality(G-c)。
  • 绑定里旧的离线 MockReplayModel 构造器没有替代(G-k)。

清单(第几步指 RFC-0048 §10)

  • 第 0 步:RFC-0048 合入(RFC-0048: 录制 schema 3 与传输回放 #325)。
  • 第 1–2 步:RFC-0044 C3(Fetch 观察点、DiagnosticScope),C5、C6(aimux-devtools)。见 包拆分与 provider 重构:RFC-0044、RFC-0046 实施进度 #328。
  • 第 3 步:录制写 schema 3,读取时做结构校验,删除 schema 1/2 的读取路径,加 UnsupportedRecordingSchema 错误;ReplaySet;删除 ProviderRecord、record_provider、MockReplayModel、MockDecisionReplayModel、rebuild_provider;Web 录制导入导出改 schema 3;RFC-0041 §4.1 加修订行(outcome 部分包 Captured、not-applicable、不写 ws_sessions、传输错误不存文字);对齐文档 §4.3 的 modelRef、modelCalls。
  • 第 3 步:现有 fixture 按 RFC-0048 §10 的去向表处理(两个 master_*_recordings.jsonl 删除,Jev 录制按 Q4 (b) 转换并补上叶子 Fetch 加的 content-type、user-agent,DTO 向量重写)。
  • 第 4 步:传输层回放 ReplaySession / ReplayFetch、离线组装与各包 ExchangePolicy、Exact(RFC-0041 §7 的匹配视图)与 Sequential、回放错误码(RFC-0041);replay.session、replay.offlineModel、replay.offline(可选 input)、replay.capabilities;aimux-replay 与 Web 的 mock 模式;Jev 录制用 Exact 回放的测试。与第 3 步分开(Q5 已定)。
  • 文档冲突已定:删除 rebuild_provider,live 回放改用结构化的 target.modelRef(RFC-0048 §3、§4.3)。
  • 离线回放不需要真实 key(RFC-0040 验收 A04)。
  • 绑定提供离线 mock 文本回放的替代入口,关闭 G-k。
  • 第 5 步:关闭 RFC-0039 D12、G-b、G-k;G-c 改为只剩 credential.create(replay.capabilities 已实现);更新对齐文档 §9.1。

关联:#179(replay 子命令依赖本项)。

Activity

  1. cunninghamcard-bit commented on Oct 20, 2026

    @cunninghamcard-bit
    ContributorAuthor

    设计已提为 RFC-0048(录制 schema 3 与传输回放),实施计划在 RFC 的 §10。顺序如下:

    顺序 PR 内容 依赖
    0 RFC-0048、RFC-0044 维护者接受 —
    1 RFC-0044 C3 Fetch 观察点与 DiagnosticScope,provider-utils 不再读录制上下文 RFC-0044
    2 调用观测 RFC,然后 RFC-0044 C5、C6 调用层事件接口;新建 aimux-devtools 1
    3 schema 3 写入侧 schema 3 类型与读取规则,观察者写 schema 3;删除 schema 1/2 读取、ProviderRecord、MockReplayModel、rebuild_provider;ops 与生成物同步改 2
    4 传输回放 ReplaySet / ReplaySession、create_offline_provider、replay.offline、replay.capabilities;CLI 与 Web 的 mock 模式;依赖回放的 provider 测试移到 ops 集成测试并改用回放 transport(RFC-0048 §7) 3
    5 文档登记 关闭 RFC-0039 D12、G-b、G-c、G-k 4
    6 发版 首个写 schema 3 的发布冻结新增必需字段 5

    3、4、5 都在发版前合入,每个 PR 只做一个方向。本 issue 清单里两个原先待定的问题,RFC 的答案是:传输层回放与 schema 3 放在相邻的两个 PR(3、4),而不是同一个 PR;rebuild_provider 删除,live 回放改用录制里的 target.modelRef。RFC §11 列了五个待讨论问题(采集位置、类型归属、调用层事件、Jev 真实录制的处理、3 与 4 是否合并),每个都附了原提案。

  2. cunninghamcard-bit commented on Oct 20, 2026

    @cunninghamcard-bit
    ContributorAuthor

    RFC-0048 Q1 补充事实 已并入 RFC 正文(#325 的 §11 Q1)。RFC 还开着时,新发现直接改 RFC;本 issue 只跟踪执行。

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

    area:coreCore abstractions (aimux-core)enhancementNew feature or request

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions