From 365ad799a5eb3c47235e3022b4d70a800a652c33 Mon Sep 17 00:00:00 2001 From: Jesse_Chen Date: Wed, 9 Sep 2026 17:03:52 +0800 Subject: [PATCH] =?UTF-8?q?docs:=20record=20BUG-609=E2=80=93611=20fix=20SH?= =?UTF-8?q?A=207d3bb0c5=20and=20free=20612/613=20for=20the=20daily=20empty?= =?UTF-8?q?-answer=20brief?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The later daily-deep-dive task reused 609/610 while those numbers were already assigned to the sync2 repair. Keep 609–611 on the shipped dasha/fence/version fix. Co-authored-by: Cursor --- docs/BUG_HISTORY.md | 6 +++--- docs/tasks/PROGRESS-upstream-sync2-fix-20260909.md | 5 +++-- docs/tasks/README.md | 4 ++-- .../TASK-consultation-daily-empty-answer-20260909.md | 8 ++++---- 4 files changed, 12 insertions(+), 11 deletions(-) diff --git a/docs/BUG_HISTORY.md b/docs/BUG_HISTORY.md index 63233dc4..3755f538 100644 --- a/docs/BUG_HISTORY.md +++ b/docs/BUG_HISTORY.md @@ -9460,7 +9460,7 @@ - 防复发:上述测试列入 `CORE_PYTEST_TARGETS`。咨询契约只增不改。感情分析模块逻辑未改,只修喂数。 - 相关记录:BUG-608、BUG-555、`TASK-upstream-sync2-fix-20260909.md` - 复发自:无(BUG-608 接入后的喂数断链) -- 修复版本:待发布 +- 修复版本:`7d3bb0c5` ## BUG-610 | 分盘围栏构造失败会让整份长报告 500 @@ -9476,7 +9476,7 @@ - 防复发:该文件已在 `CORE_PYTEST_TARGETS`。失败路径不加围栏,也不再打断报告。 - 相关记录:BUG-607、`TASK-upstream-sync2-fix-20260909.md` - 复发自:无(BUG-607 围栏成功路径未覆盖失败分支) -- 修复版本:待发布 +- 修复版本:`7d3bb0c5` ## BUG-611 | `/api/health` 的 version 写死旧 Skill 号 @@ -9492,5 +9492,5 @@ - 防复发:健康检查断言 `version == jyotish_api_server.__version__`。 - 相关记录:`TASK-upstream-sync2-fix-20260909.md` - 复发自:无 -- 修复版本:待发布 +- 修复版本:`7d3bb0c5` diff --git a/docs/tasks/PROGRESS-upstream-sync2-fix-20260909.md b/docs/tasks/PROGRESS-upstream-sync2-fix-20260909.md index f8a2dc0a..b8ee5e53 100644 --- a/docs/tasks/PROGRESS-upstream-sync2-fix-20260909.md +++ b/docs/tasks/PROGRESS-upstream-sync2-fix-20260909.md @@ -2,9 +2,10 @@ - 工作树:`.worktrees/upstream-sync2-fix-20260909` - 分支:`codex/upstream-sync2-fix-20260909`(track `origin/staging`) -- 基线:`origin/staging` @ `ee6173e8`(含任务书 `26ef220f`) +- 基线:`origin/staging` @ `ee6173e8`(含任务书 `26ef220f`);合并后含 `48d2ff80` - BUG:**BUG-609 / 610 / 611** -- 未改 `.gitea/workflows/**`,不提升 `main`,未 push +- 修复 SHA:`7d3bb0c5` +- 未改 `.gitea/workflows/**`,不提升 `main` ## 做了什么 diff --git a/docs/tasks/README.md b/docs/tasks/README.md index a8b5d1c2..92f3f2d8 100644 --- a/docs/tasks/README.md +++ b/docs/tasks/README.md @@ -86,7 +86,7 @@ | `TASK-rectification-timeline-20260909.md` | — | 常驻吸顶时间轴:轴锁**当前**搜索窗口并随放宽缩放、时段/分钟两套标记、候选点二元编码不分置信度(BUG-560 blocked)、无 hover(BUG-575)、只读不可采用。实现用第三个 grid 行而非 `position: sticky`,`useConversationScrollAnchor` 一行不改;条高固定是正确性要求;吸顶条只留区间与宽度两个元素 | 已验收通过;宽度口径与空心点两处未通过→修复单 | `ce91a0d2` | | `TASK-rectification-timeline-fix-20260909.md` | `PROGRESS-rectification-timeline-fix-20260909.md` | 时间轴修复单:宽度读数改含两端分钟数(与 BUG-593 报告/卡片一致);标记改读推断层候选全集,被淘汰分钟留在原地变空心(客户端投影只含 active,DESIGN §10 描述在真实数据下画不出) | 已验收通过 | `92e3d5e7`(BUG-602~603) | | `TASK-rectification-conversation-economy-20260909.md` | `PROGRESS-rectification-conversation-economy-20260909.md` | 对照竞品后产品拍板三条:开场三句讲做法 + 一次收多件(推翻 opening brief「不要一次说完/不举例」与 SKILL L52);采集题「没有 / 记不清」按钮(不做示例骨架条);每轮只留一句(方法句进活动记录、点选旁白去领先落后、证据轮正文一句复述 + 服务端裁剪);Skill 10.0.19 | 已验收通过(2 条 P3 备注) | `aa7ccb30` + `1453fb16`(BUG-604~606,Skill 10.0.19) | -| `TASK-consultation-daily-empty-answer-20260909.md` | `PROGRESS-consultation-daily-empty-answer-20260909.md` | 首页「深入看今日」计算完成却 `empty_answer`:入口定的 `timing` 被模型改成 `general`(`canonicalDomainPlan` 以模型为准),分段写作标题与今日格式错位,分段 `maxSteps=1` 且工具仍可调 → 模型在分段里再调工具、零正文;思考流按 chunk 过滤漏出缺词英文 | 待执行 | `codex/consultation-daily-empty-answer-20260909`(BUG-609~610) | +| `TASK-consultation-daily-empty-answer-20260909.md` | `PROGRESS-consultation-daily-empty-answer-20260909.md` | 首页「深入看今日」计算完成却 `empty_answer`:入口定的 `timing` 被模型改成 `general`(`canonicalDomainPlan` 以模型为准),分段写作标题与今日格式错位,分段 `maxSteps=1` 且工具仍可调 → 模型在分段里再调工具、零正文;思考流按 chunk 过滤漏出缺词英文 | 待执行 | `codex/consultation-daily-empty-answer-20260909`(BUG-612~613;609~611 已被 sync2 修复单占用) | ### 聊天主链路与首页 @@ -152,7 +152,7 @@ | `TASK-upstream-sync-20260903.md` | `PROGRESS-upstream-sync-20260903.md`、`PROGRESS-upstream-capabilities-20260903.md` | 上游快照推进到 `a6f47abd`、引擎三方合并、health 三窗 / VedAstro REST 桥 / 专业报告导出 / 新字段接聊天与报告 / 校正解冻三项 | 已验收 | 0/1/2/4/6:`45d13258`、`f2241463`、`734d2059`;3/5/7:`c2f23131`~`6063c1f7`(BUG-514)。staging 已部署 `6063c1f7`。修复单 `4ee79210` 已验收 | | `TASK-upstream-sync-fix-20260903.md` | `PROGRESS-upstream-sync-fix-20260903.md` | 非原生主题恢复 `degraded`、finance Yogi/D11/confidence cap、模板注册表引用、VedAstro/MCP finance 路由与 quick CORE 扩列 | 已验收 | `4ee79210`(BUG-515);staging health 已到该 SHA;十主题 e2e 合同全对,Python 红 90→69 无新增 | | `TASK-upstream-sync2-20260909.md` | `PROGRESS-upstream-sync2-20260909.md` | 上游活跃分支 `b9a0ef8f`(未进 main):婚恋三层触发模型(punarphoo / event_class_split 进证据链)+ 十套条件大运接 full reading 与长报告时间系统表;快照锁推进;Skill 6.9.16;不取 shadbala profile / PL9 用户版 / 校正泄漏项 | 已验收(04ad3325):定向 176 通过、quick 门 708/1 env 失败、pl9 时间系统表 5+10 行;1 P1(网页咨询路径 `dasha_info` 无 MD/AD,事件类拆分空转)→ 修复单 `TASK-upstream-sync2-fix-20260909.md` | 分支 `codex/upstream-sync2-20260909`(BUG-608) | -| `TASK-upstream-sync2-fix-20260909.md` | `PROGRESS-upstream-sync2-fix-20260909.md` | 修复单:`_thematic_dasha_info` 改读 `dasha_sub_periods.current`、婚恋 activation 句按事件类出、`_render_south_chart` 围栏失败不打断报告、health 版本读 `__version__` | 待验收 | 分支 `codex/upstream-sync2-fix-20260909`(BUG-609~611) | +| `TASK-upstream-sync2-fix-20260909.md` | `PROGRESS-upstream-sync2-fix-20260909.md` | 修复单:`_thematic_dasha_info` 改读 `dasha_sub_periods.current`、婚恋 activation 句按事件类出、`_render_south_chart` 围栏失败不打断报告、health 版本读 `__version__` | 待验收 | `7d3bb0c5`(BUG-609~611) | ## 命名与归档 diff --git a/docs/tasks/TASK-consultation-daily-empty-answer-20260909.md b/docs/tasks/TASK-consultation-daily-empty-answer-20260909.md index 5d87944d..210d9b3a 100644 --- a/docs/tasks/TASK-consultation-daily-empty-answer-20260909.md +++ b/docs/tasks/TASK-consultation-daily-empty-answer-20260909.md @@ -4,7 +4,7 @@ - 分支:`codex/consultation-daily-empty-answer-20260909`,基于 `origin/staging` - 执行方:coding agent;验收:Claude - 涉及文件:`frontend/src/mastra/consultation-tools.ts`(`canonicalDomainPlan` L291、`AGENT_SLICE_MAX_STEPS` L56、`consultationSliceGenerationSettings` L73)、`frontend/src/app/api/consult/route.ts`(`composeSection` L1151、`retryForAnswer` L1128)、`frontend/src/lib/stream-agent-response.ts`(`composeByHeadings` L420、`consumeAttempt` L336)、`frontend/src/lib/consultation-thinking-plan.ts`(`natalConsultationThinkingPlan`)、`frontend/src/lib/consultation-entrypoint.ts`(`daily_starlanguage` 扩展 L72–80)、`frontend/src/lib/public-thinking.ts` -- BUG 编号起点:**BUG-609**(`docs/BUG_HISTORY.md` 当前最大 BUG-608) +- BUG 编号起点:**BUG-612**(`docs/BUG_HISTORY.md` 最大已到 BUG-611,`TASK-upstream-sync2-fix-20260909` 占用 609~611) - 优先级:**P1**(首页入口"深入看今日"整条失败;不扣点是对的,但用户拿不到回答) ## 1. 事故实证(2026-09-09 staging,用户转录;只写结构) @@ -13,14 +13,14 @@ ## 2. 根因 -### 2.1 BUG-609(P1):入口定的是"时运",模型自己改成"综合";写作阶段想改回来时已经没有步数 +### 2.1 BUG-612(P1):入口定的是"时运",模型自己改成"综合";写作阶段想改回来时已经没有步数 1. 首页"深入看今日"发的是 `theme: "timing"` + `entrypoint: "daily_starlanguage"`(`page.tsx` L1466–1470),问题被扩展成"深入解读 ${日期} 的今日主题:今日趋势、适合推进、需要避开、一个行动建议"(`consultation-entrypoint.ts` L72–80)。 2. `run-jyotish-consultation` 的 `canonicalDomainPlan`(`consultation-tools.ts` L291):模型**显式传了 `domains`** 就以模型为准,只有省略时才用路由选的 `theme`。活动区"接下来分析你的综合"证明本次执行的是 `general`,即模型把服务端定的 `timing` 改成了 `general`。 3. 计算完成后进入按标题分段写作(`composeByHeadings`):标题来自 `natalConsultationThinkingPlan({domains: 已执行领域})` = 统一参数与原始结构 / **综合** / 技法审计表 / 现代生活。这套标题与"今日趋势 / 适合推进 / 避开 / 行动"完全对不上。思考流里模型正是在纠结这件事("is a daily/trend … 'timing'? … Let me use: [timing] … Let me run-jyotish-consultation")。 4. 每个分段调用 `maxSteps = AGENT_SLICE_MAX_STEPS = 1` 且**工具仍然可用**(`streamOptions` 没有 `toolChoice: "none"`,分段提示只是文字上说"不要再调用排盘工具")。模型在分段里发起了第二次工具调用(想换 `timing`),一步用完,没有任何正文。四个分段全空 → `retryForAnswer` 再跑一次完整循环 → 仍空 → `empty_answer`。这是 BUG-280"计算成功、模型没写"的又一条来路,BUG-280 的重试救不了它,因为重试后模型面对的还是同一套错位标题。 -### 2.2 BUG-610(P2):思考流按 chunk 过滤,英文被削成词渣 +### 2.2 BUG-613(P2):思考流按 chunk 过滤,英文被削成词渣 `sanitizePublicThinkingText`(`public-thinking.ts`)对每个 `reasoning-delta` chunk 判断"含 ≥4 字母英文且无中文就丢"。流式 chunk 常常是一两个词:长词所在的 chunk 被丢、短词(The / a / for / is / to / Let me)和带中文的 chunk 被放行,拼出来就是用户看到的那段。工具名只剥了后缀(`run-jyotish-` 残留)。 @@ -38,7 +38,7 @@ - 4.2 决策 2:`consultation-thinking-plan.ts` 新增 daily 计划;`route.ts` 在 `daily_starlanguage` 分支用它;测试——标题序列为三节,正文以 `## 今日趋势` 开头;`applyThinkingSectionProgress` 能按新标题标 done。 - 4.3 决策 3:`composeSection` 传 `toolChoice: "none"`,分段空正文重试一次;测试(`consultation-agentic-runtime.test.ts` 扩)——mock 某段模型只发 tool-call 无文本 → 该段重试后写出正文,`fullOutput` 非空、不触发 `retryForAnswer`;两次都空才 `answer-retry`。三栏:原值"分段可调工具"→ 新值"分段禁用"→ 决策 3。 - 4.4 决策 4:`public-thinking.ts` 改缓冲实现;测试——把事故那段按 3–6 字符切成 chunk 喂入,输出不含任何 4 字母以上英文词、不含 `run-jyotish`,中文句完整;纯中文思考原样通过。 -- 4.5 记录:`docs/BUG_HISTORY.md` BUG-609(复发关联 BUG-280:同一"计算成功、模型没写"现象,新来路是入口领域被改写 + 分段可调工具)、BUG-610;`CHANGELOG.md`;`PROGRESS-…`;`docs/testing/` 加"首页点『深入看今日』必须得到三节回答,思考区不得出现英文词渣"。触发链若执行方能从 staging `[agent-observability]` 日志取到该 run 的 `tool.input.domains` 与 `modelFinishReason`,写进 BUG-609 的验证段;取不到写 `investigating`,但决策 1–4 都是确定性缺陷,照做。 +- 4.5 记录:`docs/BUG_HISTORY.md` BUG-612(复发关联 BUG-280:同一"计算成功、模型没写"现象,新来路是入口领域被改写 + 分段可调工具)、BUG-613;`CHANGELOG.md`;`PROGRESS-…`;`docs/testing/` 加"首页点『深入看今日』必须得到三节回答,思考区不得出现英文词渣"。触发链若执行方能从 staging `[agent-observability]` 日志取到该 run 的 `tool.input.domains` 与 `modelFinishReason`,写进 BUG-612 的验证段;取不到写 `investigating`,但决策 1–4 都是确定性缺陷,照做。 ## 5. 让步顺序