Repository navigation
录制 schema 3 与传输层回放(发布前,RFC-0041) #270
Copy link
Copy link
Open
Labels
area:coreCore abstractions (aimux-core)Core abstractions (aimux-core)enhancementNew feature or requestNew feature or request
Description
状态(2026-10-25)
- 设计:RFC-0048 已于 10-25 由维护者批准并合入 master(RFC-0048: 录制 schema 3 与传输回放 #325,
5157fdc7)。§11 的五个问题已定;10-20、10-25 各轮评审的意见都在正文里。实施顺序见 RFC §10。 - 实现:RFC-0044(RFC-0044: crate 拆分与依赖反转 #279)已合并;第 3 步等 RFC-0044 的 C3、C5、C6 完成(跟踪在 包拆分与 provider 重构:RFC-0044、RFC-0046 实施进度 #328)。原先只在本地分支上的 schema 3 写入侧实现采集位置不同(Q1 已定用 Fetch 观察点),第 3 步按 RFC 正文重写。
核对基线: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:39RECORDING_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 子命令依赖本项)。
Metadata
Metadata
Assignees
Labels
area:coreCore abstractions (aimux-core)Core abstractions (aimux-core)enhancementNew feature or requestNew feature or request
Activity
cunninghamcard-bit commentedon Oct 20, 2026
设计已提为 RFC-0048(录制 schema 3 与传输回放),实施计划在 RFC 的 §10。顺序如下:
DiagnosticScope,provider-utils 不再读录制上下文aimux-devtoolsProviderRecord、MockReplayModel、rebuild_provider;ops 与生成物同步改ReplaySet/ReplaySession、create_offline_provider、replay.offline、replay.capabilities;CLI 与 Web 的 mock 模式;依赖回放的 provider 测试移到 ops 集成测试并改用回放 transport(RFC-0048 §7)3、4、5 都在发版前合入,每个 PR 只做一个方向。本 issue 清单里两个原先待定的问题,RFC 的答案是:传输层回放与 schema 3 放在相邻的两个 PR(3、4),而不是同一个 PR;
rebuild_provider删除,live 回放改用录制里的target.modelRef。RFC §11 列了五个待讨论问题(采集位置、类型归属、调用层事件、Jev 真实录制的处理、3 与 4 是否合并),每个都附了原提案。docs(rfc): keep RFC-0048 Q1 as opened; the follow-up fact goes to #270
cunninghamcard-bit commentedon Oct 20, 2026
RFC-0048 Q1 补充事实已并入 RFC 正文(#325 的 §11 Q1)。RFC 还开着时,新发现直接改 RFC;本 issue 只跟踪执行。RFC-0048: 录制 schema 3 与传输回放 (#325)