Files
iomgaa b12bf6ce79 docs: plan the sampling parameter implementation (issue #4)
Eleven verifiable tasks covering decisions A-G and the 14 test items,
with the reviewer-found execution traps written into the tasks.
2026-07-31 13:01:53 -04:00

2.3 KiB

type, node_id, title, date
type node_id title date
plan plan:sampling-params-plan 采样参数透传实现计划(issue #4) 2026-07-31

采样参数透传实现计划(issue #4)

正文: 2026-07-31-sampling-params.md。实现 design:sampling-params

  • 任务数: 11 个,每个一次提交、独立可验证。Task 1-4 是 issue 诉求的最小闭环;Task 5-8 是设计中「issue 未提但必须处理」的部分(地基不变式、遥测三入口、两后端落列、决策 G 剥离),不可跳过。
  • 关键接口已在计划 §1 定死: validate_request_overlay() / merge_sampling() / canonical_sampling_json() 三个纯函数落 types.py(最内层),ChatRequest.samplingSourceConfig.extra_body 两个新字段,build_cache_key()chat() 的新签名。
  • 审查暴露的执行陷阱(已写进计划): ① 两个 _record_minimal() 的硬编码 20 键 fields dict 必须同步,否则 row = tuple(fields[col] for col in _COLUMNS)(在 try 之外)抛裸 KeyError 让两侧落库测试全红;② SourceConfig 加 mapping 字段后不再 hashable、asdict/deepcopy 失效——已核实库内无调用点会踩,作为已知后果显式接受并加锁定测试;③ 各文件需新增的 import 逐一列出(types.pyfrom __future__ import annotations,注解在类体求值);④ validate_request_overlay 的校验顺序必须先查 str 键再试序列化,否则非 str 键会被误报成"值不可序列化"。
  • 测试证据门: 每个任务合并前须出示先失败后通过的证据。Task 5 单列一条地基不变式回归——决策 C/D 都建立在「sampling 跨层恒定」之上,而这条目前只靠 dataclasses.replace 的约定,无机械执法;该测试须在故意破坏 structured.py 时验证过确实变红。
  • 共享后端纪律: Task 7、Task 11 涉及 PG polygateway 库,严禁与其他会话并跑(含 git 钩子触发的测试)。
  • 审查留痕: Codex CLI 不可用(vendor 二进制缺失),派全新上下文 subagent 只读审查。报 5 项必修(两处测试文件路径不存在、_record_minimal 漏项、Gitea Wiki 同步漏整块、SourceConfig 可哈希性后果未声明),逐条核实后全部采纳;5 条建议(import 清单、校验顺序、Task 5 落点表述、make ci 勿嵌套 conda runtest_ports.py_DummyRecorder 同步)亦已收进。