跳到主要内容
版本:最新版(未发布)

记忆与回放

概览​

路由学习在热路径上使用进程内在线状态。启用路由回放时可以记录事件;跨配置重载和重启保留记录需要持久化后端。请求路由不依赖同步的回放存储读取。

主要优势​

  • 让热路径学习读取保持本地且有界。
  • 配置耐用后端后,可保留回放证据供审计和评估。
  • 将可变防护状态与长期回放证据分开。
  • 为离线配方学习提供回放数据,而不在请求路由中增加回放存储读取。

解决什么问题?​

学习需要历史,但请求路由不能在每次调用时扫描存储或回放日志。路由器为防护和自适应保留紧凑的进程内状态。启用回放时,它还会写入审计、调试、结果和离线配方实验记录;其持久性取决于所选后端。

何时使用​

  • 需要超出紧凑响应头的详细学习诊断。
  • 希望评估或智能体在请求之后检查路由证据。
  • 希望结果更新在线经验,同时仍链接到回放记录。
  • 计划启用回放,并从生产或测试数据运行离线配方学习。

分层​

层热路径职责
防护状态是当前受保护模型、身份范围、轮次数、缓存/工具循环证据和切换历史。
模型经验是供自适应使用的质量、过度使用、可靠性、延迟、缓存和成本证据。
路由回放否可选的路由、响应、结果和学习诊断;持久性取决于后端。
离线配方学习否评估、发现、候选配方、配方补丁和经验种子包。

配置​

使用现有服务配置启用路由回放:

global:
services:
router_replay:
enabled: true
store_backend: postgres

此示例使用 Postgres 做持久化。默认 memory 后端会在配置重载或重启时丢失记录,即使重载没有重启路由器进程也一样。调优配方时,使用持久化存储可让会话轨迹继续在 API 和 Dashboard 中查看。

启用回放时,学习诊断会写入回放记录:

{
"learning": {
"protection_preflight": {
"action": "allow_sampling",
"scope": "conversation",
"reason": "no_tool_or_protocol_state"
},
"adaptation": {
"strategy": "routing_sampling",
"candidate_set": "decision",
"base_model": "small-model",
"proposal_model": "frontier-model",
"reason": "posterior_win"
},
"protection": {
"action": "allow_switch",
"base_model": "small-model",
"proposal_model": "frontier-model",
"final_model": "frontier-model",
"switch_cost": 0.03,
"reason": "switch_allowed"
}
}
}

原始 session、conversation、user、tenant 和 workspace 标识符不应存储在学习诊断中。请存储有界哈希以及 source/status 字段。

结果​

通过与回放关联的结果端点提交类型化反馈:

POST /api/v1/observability/outcomes
{
"replay_id": "replay_123",
"source": "agent",
"target": "model",
"target_ref": "frontier-model",
"verdict": "good_fit",
"reason": "solved_complex_task",
"score": 1.0
}

target: model 结果会更新在线模型经验。target: route、target: policy、target: stability、target: provider 和 target: router 结果会保留给回放和离线配方学习,除非存在类型化的在线消费者。

配方学习命令​

从回放运行离线循环:

vllm-sr optimize recipe-learning \
--replay-file replay.json \
--recipe-file config.yaml \
--output-dir ./router-learning-report

该命令会写入:

  • metrics.json
  • findings.json
  • experiment_results.json
  • recipe_patch.json
  • experience_seed_pack.json
  • 提供 --recipe-file 时还会写入候选配方 YAML 文件