Fix cross-model auto title generation reliability#34
Fix cross-model auto title generation reliability#34ai-jiaqian wants to merge 4 commits intoErlichLiu:mainfrom
Conversation
ErlichLiu
left a comment
There was a problem hiding this comment.
Hi @ai-jiaqian,感谢这个 PR!你识别出了多个真实存在的可靠性问题,修复方向是正确的 👍
亮点:
- 移除
thinking: { type: "disabled" }修复了 Anthropic 兼容网关的 422 错误,这是个真实 bug firstTurnTriggeredRef防重复触发解决了会话切换时的 race conditionskipAutoTitleflag 让 resend/edit 路径正确跳过自动标题decideTitleTrigger抽成纯函数设计很好
需要简化的方向(整体上请尽量减少新增代码量):
-
title-utils.ts和agent-title-utils.ts可以合并 — 两个文件结构几乎镜像,deriveFallbackTitle和deriveAgentFallbackTitle逻辑完全相同,只是常量不同。建议共用一个工厂函数或直接合并为一个共享模块。 -
每个失败路径
logTitleEvent调用了两次 — 每处失败都先 logtitle_failed_*再 logtitle_generated_fallback,产生大量重复代码。建议封装成一个 helper 一次调用即可:function logFallback(reason: TitleReason, context: ...) { logTitleEvent(reason, context) logTitleEvent('title_generated_fallback', context) }
-
hasKnownTitleShape可以去掉 — 这个函数区分empty_contentvsparse_failed对最终行为没有任何影响(都返回 fallback),只体现在日志里,增加了不必要的复杂度,建议直接删除。 -
请移除所有测试文件 — 目前
.test.ts文件直接散落在src/main/lib/、src/renderer/components/chat/、packages/core/tests/等多个目录下,请将测试文件全部从这个 PR 中移除,我们暂时不在 PR 中引入测试。
整体来说这个 PR 核心修复是有价值的,但目前新增代码量偏多(净增约 1000 行)。请按上述方向精简后重新提交,让改动更聚焦在核心 bug fix 上 🙏
|
拉取最新的代码,在最新的代码基础上进行修改哈,顺便可以解决掉目前修改的部分的冲突的问题。 @ai-jiaqian |
What's fixed
http_non_200/empty_content/parse_failedwithstatus+dataPreviewthinking: { type: "disabled" }in title requestsRoot cause
thinking.type=disabledValidation
Notes
openspec/remains gitignored