11B MODEL / ASSEMBLY SNAPSHOT

改选 B,为什么这次仍然请求 A?

比较改选发生在组装前后。播放沿六个观察点推进,检查 current、assembled、提示词变量和最终请求。

01 / 在哪个时间点改选

本次提示词 A → 本次请求 A → 下次组装 B

先组装 A 的提示词,再把 current 改成 B。请求监听器读取已捕获的 assembled,因此这次仍用 A。

本次提示词 B → 本次请求 B → 下次组装 B

在本次组装开始前已经选好 B;current、提示词变量与 assembled 都捕获 B,本次请求也用 B。

步骤 6 / 6

完整路径,共六步

模型选择捕获与下一次组装的六步时序时间从上向下。选择入口写 current,SystemPrompt 捕获它并提交 assembled;入口随后可以改写 current,当前请求仍读取 assembled。箭头标注调用或赋值方向,图中不发真实模型请求。选择入口UI / controller选择引用两份模型字段SystemPromptassemble请求配置agent/request写 current = A写 current = B01捕获 current = A捕获 current = B02提交 assembled = A提交 assembled = B03写 current = Bcurrent 保持 B04读取 assembled = A读取 assembled = B05下次捕获 current = B下次捕获 current = B06
选择入口选择引用SystemPrompt请求配置
  1. 01
    写 current = A

    选择入口 → 选择引用

    入口选定 A;这里尚未组装提示词。

    写 current = B

    选择入口 → 选择引用

    入口选定 B;这里尚未组装提示词。

  2. 02
    捕获 current = A

    SystemPrompt → 选择引用

    组装开始先读 A,随后等待其他组装贡献。

    捕获 current = B

    SystemPrompt → 选择引用

    组装开始先读 B,随后等待其他组装贡献。

  3. 03
    提交 assembled = A

    SystemPrompt → 选择引用

    组装完成,变量 provider/model 与快照都采用 A。

    提交 assembled = B

    SystemPrompt → 选择引用

    组装完成,变量 provider/model 与快照都采用 B。

  4. 04
    写 current = B

    选择入口 → 选择引用

    改选只更新 current;已经捕获的 assembled 仍为 A。

    current 保持 B

    选择入口 → 选择引用

    改选只更新 current;已经捕获的 assembled 仍为 B。

  5. 05
    读取 assembled = A

    请求配置 → 选择引用

    覆盖当前请求 provider/model,得到 A;不是再次读取 current。

    读取 assembled = B

    请求配置 → 选择引用

    覆盖当前请求 provider/model,得到 B;不是再次读取 current。

  6. 06
    下次捕获 current = B

    SystemPrompt → 选择引用

    下一次组装从 current 读到 B,后续请求使用新快照。

    下次捕获 current = B

    SystemPrompt → 选择引用

    下一次组装从 current 读到 B,后续请求使用新快照。

先看完整关系,再播放检查值

阶段是解释用观察点,时间间距不代表耗时;两种路径均使用真实实现的选择规则。

01 / 写 current = A

入口选定 A;这里尚未组装提示词。

01 / 写 current = B

入口选定 B;这里尚未组装提示词。

02 / 捕获 current = A

组装开始先读 A,随后等待其他组装贡献。

02 / 捕获 current = B

组装开始先读 B,随后等待其他组装贡献。

03 / 提交 assembled = A

组装完成,变量 provider/model 与快照都采用 A。

03 / 提交 assembled = B

组装完成,变量 provider/model 与快照都采用 B。

04 / 写 current = B

改选只更新 current;已经捕获的 assembled 仍为 A。

04 / current 保持 B

改选只更新 current;已经捕获的 assembled 仍为 B。

05 / 读取 assembled = A

覆盖当前请求 provider/model,得到 A;不是再次读取 current。

05 / 读取 assembled = B

覆盖当前请求 provider/model,得到 B;不是再次读取 current。

06 / 下次捕获 current = B

下一次组装从 current 读到 B,后续请求使用新快照。

06 / 下次捕获 current = B

下一次组装从 current 读到 B,后续请求使用新快照。

02 / 对照本次请求的结果

数据为固定实验解释;第六步到达后,下一次 assembled 已经变成 B。

本次捕获值A
本次提示词变量A
本次请求读取 assembledA
改选后的 currentB
下一次组装快照B
本次捕获值B
本次提示词变量B
本次请求读取 assembledB
改选后的 currentB
下一次组装快照B
current = A
assemble() 捕获 A
assembled = A
current = B
agent/request 采用 A
下一次 assemble() 捕获 B

省略 effort 会清除继承 effort;其他请求字段保留。
current = B
assemble() 捕获 B
assembled = B
current = B
agent/request 采用 B
下一次 assemble() 捕获 B

省略 effort 会清除继承 effort;其他请求字段保留。
查看来源、操作方式与限制

对应 dsh-agent/model-selection.ts 的组装和请求 waterfall,以及 API Session Controller 的会话选择引用。使用原生场景控件;播放器支持播放/暂停、单步和重播,聚焦时可用 Home、End 与左右方向键。

图只展示一次组装与一次请求的字段关系,未绘制请求重试、adapter 默认值解析、磁盘写入和变化说明消息。阶段 2 捕获 current 的动作发生在等待后续组装之前;后来的选择影响下一次组装。