fix(consult): 每一轮回答前都必须调用排盘工具
Independent Staging Quality Gate / validate (push) Successful in 9m22s
Independent Staging Quality Gate / publish (push) Successful in 13m39s

This commit is contained in:
jesse-ux
2026-09-17 14:21:33 +08:00
parent 6d097de95b
commit dc2f2a16bb
10 changed files with 155 additions and 12 deletions
+32
View File
@@ -12002,3 +12002,35 @@
- 相关记录:BUG-695、BUG-920
- 复发自:无
- 修复版本:待发布
## BUG-922 | 咨询追问被提示词允许跳过排盘工具,整轮失败
- 状态:resolved
- 首次发现:2026-09-17
- 最近更新:2026-09-17
- 影响面:`windowJyotishInstructions``jyotishInstructions`
- 用户现象:申报时段会话连发短追问得不到回答,提示「Agent 未完成必要的方法与计算步骤,本次不会扣点」。
- 触发条件:本命或申报时段模式下发「?」「你在说什么鬼」一类追问。
- 根因:系统指令写「简单追问可复用已有 packet / context、不调工具」;`contractReady()` 却要求每次请求恰好一次成功排盘调用。跨请求没有可复用 packet(缓存只在单次请求内)。
- 修复:两处指令改为每一轮(含短追问、澄清、抱怨)都必须先调用排盘工具,并写明计算只在本请求内有效。
- 验证:`consultation-birth-time-mode.test.ts` 契约;既有 Agent 暴露工具测试仍绿。
- 防复发:不得再写「follow-ups may use the existing」。
- 相关记录:BUG-205、BUG-214、BUG-286、BUG-923
- 复发自:无
- 修复版本:待发布
## BUG-923 | 第 0 步未强制排盘工具,提示词与运行合同对不齐
- 状态:resolved
- 首次发现:2026-09-17
- 最近更新:2026-09-17
- 影响面:`consultationNatalPrepareStep``consultationWindowPrepareStep``consult/route.ts` 申报时段分支
- 用户现象:同 BUG-922。回执只有 skill 与 runtime-contract-retry,没有任何 tool 步骤。
- 触发条件:同上。
- 根因:提示词是软约束,`toolChoice: "auto"` 不能保证第 0 步调用排盘工具。申报时段路线甚至没有 `prepareStep`
- 修复:第 0 步 `activeTools` 仅排盘工具且 `toolChoice: "required"`;后续步骤 `"auto"`。窗口路线对称加 `prepareStep`,首次 stream 与合同 retry 使用它。`retryForAnswer` / 续写 / 分段仍不强制。未改 `contractReady()`
- 验证:natal / window prepareStep 单测;`route.ts` 源码契约。既有「失败后重试成功仍过门禁」「契约未绿文本丢弃」仍绿。
- 防复发:本命与窗口第 0 步必须 `required`。思考模式供应商历史上拒 named/required,本仓 Mastra 类型接受 `'required'`;若线上某模型拒收,另立单,不得静默改回 auto 而不改提示词。
- 相关记录:BUG-214、BUG-286、BUG-922
- 复发自:无
- 修复版本:待发布