fix(consult): 申报时段计算改为服务端预跑并走同请求缓存(BUG-957)

窗口计算挂在 agent context 缓存上,模型开口前预跑并注入 packet;工具再调用命中同请求缓存,成功次数仍为 1。
This commit is contained in:
jesse-ux
2026-09-18 18:45:19 +08:00
parent 5e8b2ac112
commit 53d78137ff
10 changed files with 523 additions and 155 deletions
+13 -13
View File
@@ -12586,19 +12586,19 @@
## BUG-957 | 窗口计算由模型决定调不调,对结果无信息增益
- 状态:investigating
- 状态:resolved
- 首次发现:2026-09-18
- 最近更新:2026-09-18
- 影响面:`consultation-tools.ts` `run-jyotish-window-consultation`咨询运行时
- 用户现象:无(窗口线被 BUG-954 挡住,本项尚未在真实环境验证)
- 触发条件:窗口工具 `inputSchema` 只有 `question`,出生数据完全服务端绑定。
- 影响面:`consultation-tools.ts` `run-jyotish-window-consultation``stream-agent-response.ts` warmup、`consult/route.ts` 申报时段分支
- 用户现象:只知道一段出生范围时,回答仍取决于模型是否调用计算工具;漏调就整轮失败或降级
- 触发条件:`consultationMode=declared_birth_window`窗口工具 `inputSchema` 只有 `question`,出生数据完全服务端绑定。
- 根因:由模型决定调不调对计算结果没有信息增益,只多一条失败路径(BUG-205/214/922/923/937)。
- 修复:本单不做。任务书要求等 BUG-954 在真实环境验证通过后再单独做服务端预跑 + 同请求缓存
- 验证:未做
- 防复发:不得与救急同轮改运行时结构
- 关联记录:BUG-954、BUG-205、BUG-214、BUG-922、BUG-923、BUG-937
- 复发自:无
- 修复版本:
- 修复:缓存改挂在 agent context 上。服务端在模型循环前 `precomputeWindowConsultation`,进度经 warmup 写入同一 NDJSON 流;成功则把 packet 以服务端确定性消息注入本轮。工具仍留在窗口 Agent 上,再调用命中同请求缓存且 `consultationToolSuccessCount` 不得加第二次。预跑失败合同保持红,模型仍可调工具,既有 retry + 降级仍在。本命不预跑。没有 `toolChoice: "required"``contractReady()` 仍是「本请求恰好一次成功的真实计算」,预跑算那一次
- 验证:预跑成功且模型不调工具 → 合同绿、回执有 `run-jyotish-window-consultation` completed、正文送达;预跑后模型再调 → 缓存命中、成功次数为 1;预跑失败且模型只写字 → 仍降级。源码合同锁窗口工具仍 attach、本命工厂不变
- 防复发:窗口计算不得再依赖模型选不选工具;缓存不得回到工厂局部 `let`;咨询侧不得再写 `toolChoice: "required"`
- 关联记录:BUG-954、BUG-205、BUG-214、BUG-922、BUG-923、BUG-937、BUG-956、BUG-959
- 复发自:无954 验证通过后按任务书单独做)
- 修复版本:`59788ac6`
## BUG-959 | 降级正文绕过 Pass 4,保证性结论原样送达
@@ -12614,7 +12614,7 @@
- 防复发:降级路径必须复用 `releasePass4Sentences`,不得另写分句或句内替换。Pass 4 是门不是刀。
- 关联记录:BUG-956、BUG-948、BUG-950、BUG-951
- 复发自:BUG-956(降级路径漏接 Pass 4
- 修复版本:`ae2e46a6`
- 修复版本:`e07d5190`
## BUG-960 | 两次 attempt 的正文被拼起来一起送出
@@ -12630,7 +12630,7 @@
- 防复发:未绿缓冲按 attempt 隔离,不得跨 attempt 累加。
- 关联记录:BUG-956、BUG-959
- 复发自:BUG-956
- 修复版本:`ae2e46a6`
- 修复版本:`e07d5190`
## BUG-961 | 降级之后还会空跑一轮 compose
@@ -12646,7 +12646,7 @@
- 防复发:降级是终态交付,不得再进 compose。
- 关联记录:BUG-956、BUG-959
- 复发自:BUG-956
- 修复版本:`ae2e46a6`
- 修复版本:`e07d5190`
## BUG-958 | 窗口指令「必须调工具」与「不得给应期」未写清,模型可能跳过计算或拒答