Files
Jyotisha/docs/tasks/PROGRESS-consult-three-channels-fix-20260918.md
T
jesse-ux e32ce6247e fix(consult): BUG-945~949 领域截断、思考分片、Pass 4 按模式分流
schema 上限与执行上限解耦;校正思考改分片门;日期观察不删字,保证句与无分钟个人盘退回重写。
2026-09-18 13:17:35 +08:00

55 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# PROGRESS · 三通道重做修复单(2026-09-18)
工作树:`.worktrees/consult-three-channels-fix-20260918`
分支:`codex/consult-three-channels-fix-20260918`
基线:`origin/staging` @ `b4fcb946`(任务书写 `7ae3aa9a`,其后两笔纯文档已快进)
任务书:`docs/tasks/TASK-consult-three-channels-fix-20260918.md`
## 任务状态
| 任务 | 状态 | 说明 |
| --- | --- | --- |
| BUG-945 领域 schema 与执行上限解耦 | 完成 | 计划最多 6 条,执行仍按墙钟 2 条,其余 `omitted_domains` |
| BUG-946 31s 预算断言 | 完成 | 6 条按 MAX=2 / 31s 重写,附三栏 |
| BUG-947 校正思考分片 | 完成 | 选方案 (b):分片级 CJK 门,不复用 8 字条目门 |
| BUG-948 Pass 4 按模式分流 | 完成 | 日期观察、保证句退回、无分钟个人盘整段拒绝 |
| BUG-949 容量算术 | 完成 | 按四标题计划重测上下界 |
## 947 选型
选 **(b)**。校正流仍按 `reasoning-delta` 分片推到浏览器,不能拿 Pass 2 的整条门(≥8 字 + 句末标点)去滤。新门 `acceptThinkingFragment` 只判非空、含 CJK、不含工具名,不改写、不删词。另给 `createThinkingFragmentAssembler` 证明连续分片能拼出可见行。
## 948 让步
1. 有 `composeAnswer` 的本命路径:Pass 4 命中保证句 / 个人盘时退回 Pass 3 一次,二次再落地(丢保证句或整段拒绝句)。正文 hold 到判定结束再发,避免闪两次。
2. 无 `composeAnswer` 的一般 / 窗口路径:不另开一轮模型,直接二次落地。
3. 非 agentic 的 `streamTextResponse` 旧路径不再套恒等壳,也不在流上改写。日期因此能出来;保证句在这条旧路径上没有模型重写。
4. `exact-timing` 在 `general_no_birth_time` 不记 observe、也不拦——产品表只给有盘 / 窗口模式观察日期。
## 断言三栏(既有测试)
| 测试 | 原值 | 新值 | 原因 |
| --- | --- | --- | --- |
| `MAX_CONSULTATION_DOMAINS` | 3 | 2 | 31s/领域,墙钟 65s 只能付 2 个 |
| `executableDomainPlan` 5 个领域 | 执行 3 | 执行 2 | 同上 |
| `domainFitsRunBudget(42_000, 2)` | true(按 21s) | 改为 31s 口径的 0/1/2 组 | 预算公式跟新时长 |
| 超限计划 | schema 失败、execute 0 | schema 接受 ≤6,execute ≥1,`omitted_domains` 非空 | BUG-945 |
| 未校正 / 分钟敏感日期 | `[具体时间已省略]` | 原文保留 + `pass4-observe:exact-timing` | BUG-948 产品授权 |
| 无分钟个人盘 | 半句替换或恒等 | 二次整段 `GENERAL_NO_BIRTH_TIME_REFUSAL` | 不得半句替换 |
| 1 域 thinkingSections JSON | 1200–2500 | 900–1300(实测 1053) | 四标题计划更小 |
| 2/3 域 thinkingSections JSON | 1800–3500 / 2400–4500 | 1100–1600(实测 1267,12 步封顶同长) | 同上 |
| 19 轮旧口径字符 | > 200,000 | 170k–190k(实测 177,973) | 分节变小后 19 轮不再必然撞旧额度 |
| 19/50 轮详情字节 | 540k–590k / 1.45M–1.51M | 520k–550k / 1.38M–1.43M(533,113 / 1,402,384) | 同上;比例仍约 2.63 |
## 测试
| 项 | 结果 |
| --- | --- |
| `tsc --noEmit` | 0 错 |
| `npm run lint` | 0 error(121 warning,与基线同量级) |
| 原 12 条红 | 全绿(见上表) |
| 全量 `npm test`(本机 Windows) | tests 3449 / pass 3371 / fail 78。多出来的失败是本机 symlink/EPERM、bash、无 Docker 的既有缺口,不是本单 12 条 |
| 本单新增 | Pass 4 观察/退回/拒绝合同、范围用户日期合同、分片 assembler、容量上下界 |
Linux 门禁才是验收数字:目标 fail 回到 31,总数 ≥ 3484。本机无法跑 skill symlink 的两条 Agent 探针(`personal Agent exposes…` / `general agent runtime has no Jyotish skill package…`),CI Linux 上应仍绿。