Skip to content

fix(desktop): reject unrelated scripts in generated titles - #3759

Closed
PeaceMaker-best wants to merge 1 commit into
makecindy:mainfrom
PeaceMaker-best:fix/auto-title-script-noise
Closed

fix(desktop): reject unrelated scripts in generated titles#3759
PeaceMaker-best wants to merge 1 commit into
makecindy:mainfrom
PeaceMaker-best:fix/auto-title-script-noise

Conversation

@PeaceMaker-best

Copy link
Copy Markdown

这次改了什么

摘要

智能标题偶发把与用户输入无关的文字脚本拼进标题,例如中文会话得到 夏日合照自然合成 ആവശ്യ。本 PR 在标题写入出口增加 locale 与原始材料感知的校验:不属于当前界面语言的字母脚本,只有在用户材料中真实出现过才允许保留;否则拒绝该候选标题并保留现有标题/首条消息占位。

变更类型

  • Bug 修复
  • 新功能
  • 重构
  • 文档

Fixes #3483

包含范围

  • 中文允许 Han + Latin,英文允许 Latin,日文允许 Han/Hiragana/Katakana/Latin,韩文允许 Hangul/Han/Latin。
  • 对不属于当前 locale 的 Unicode 字母逐字符核对原始材料,支持用户确实输入的多语言名称或引用。
  • 自动标题和 AI 重新生成标题共用同一出口校验。
  • 拒绝时只记录脱敏原因,不记录用户文本或模型原始输出。
  • 覆盖问题中的 Malayalam 尾巴、正常中文、中英混合产品名、用户原文包含外文、日文和韩文标题。

不包含

  • 不限制用户手动输入的标题。
  • 不批量修改已有历史标题。
  • 不改模型 prompt,也不新增 UI、交互或文案。

用户可见行为

当模型返回无来源的异种文字片段时,该智能标题不会覆盖当前标题;自动命名会继续保留首条消息占位,手动改名保持原行为。用户输入中确实存在的外文仍可进入标题。

UI 变化

不涉及视觉变化。界面仍展示原有标题字段,本 PR 只在模型候选值写入前做语义校验,因此不需要新增 DESIGN.md 规范或截图。

验证

已通过

  • titleOutputValidation.test.ts:56/56 通过。
  • regenerateSessionTitle.test.ts + sessionAutoTitle.test.ts:57/57 通过。
  • pnpm --filter desktop typecheck:通过。
  • 精确复现 夏日合照自然合成 ആവശ്യ,确认中文材料下被拒绝。
  • 确认 Mivo API 等中英混合标题、原文自带 Malayalam、日文长音符和韩文标题均保留。

未执行

  • 未做真实 Mivo 服务端到端复现:原问题为偶发模型输出且没有可固定的会话/模型条件;测试直接注入问题中的精确输出,覆盖确定性的写入边界。
  • 无 UI 改动,因此未附截图或录屏。

风险与回滚

  • 其他:多语言模型输出的误拒绝风险
  • SQLite / 数据库迁移
  • Breaking change

缓解:Latin 在全部支持语言中允许;用户材料中真实出现的其他脚本按精确字符放行;拒绝路径无损保留现有标题;手动标题完全不受影响。

回滚:移除生成标题出口的 locale 校验调用即可,不涉及数据迁移。

提交检查

  • 分支基于最新 upstream/main
  • PR 为非 Draft
  • 提交包含 DCO sign-off
  • 自动验证与边界均已记录

Signed-off-by: PeaceMaker-best <221849497+PeaceMaker-best@users.noreply.github.com>
@PeaceMaker-best
PeaceMaker-best requested a review from a team as a code owner September 2, 2026 00:59
@greptile-apps

greptile-apps Bot commented Sep 2, 2026

Copy link
Copy Markdown

Greptile Summary

此 PR 在桌面端自动标题和 AI 重新生成标题的统一写入边界增加 locale 感知的 Unicode 字母校验。

  • 按中文、英文、日文和韩文 locale 定义可接受的文字脚本
  • 非当前 locale 的字母仅在会话来源材料包含相同码点时放行
  • 校验失败时保留原有标题或首条消息占位,并仅记录脱敏原因
  • 新增 Malayalam 异文、正常多语言标题及两条生成链路的回归测试

Confidence Score: 5/5

此 PR 看起来可以安全合并,未发现会导致现有标题生成或重命名流程错误的可操作问题。

新校验在两条模型标题链路上保持一致,拒绝路径不会覆盖已有标题,测试也覆盖了目标异文输出和允许的多语言来源场景。

Important Files Changed

Filename Overview
apps/desktop/src/main/maker-host/title-output-validation.ts 新增集中式 locale 字母白名单和来源字符校验,未发现可发布的正确性问题。
apps/desktop/src/main/maker-ipc/title.ts 自动标题与 AI 重命名均在返回或写入前调用新校验,并保留各自既有失败行为。
apps/desktop/src/main/maker-host/tests/titleOutputValidation.test.ts 覆盖问题复现、受支持 locale 以及来源中确有异文字符的放行情形。
apps/desktop/src/main/maker-ipc/tests/regenerateSessionTitle.test.ts 覆盖自动标题和 AI 重命名链路的拒绝、回退及脱敏日志行为。

Reviews (1): Last reviewed commit: "fix(desktop): reject unrelated scripts i..." | Re-trigger Greptile

@MagicLizi MagicLizi added awaiting-discussion 等待维护者讨论(review-pr) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示) labels Sep 2, 2026

@MagicLizi MagicLizi left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

格式门未通过,请按仓库 PR 模板补全缺失段落后再请求审查。

当前 description 缺少模板要求的段落:

  • 怎么验证的

「这次改了什么」和风险信息已有,但门禁按一级标题识别。请把验证命令改挂到 ## 怎么验证的 下(titleOutputValidation / regenerateSessionTitle / typecheck,以及未做真实服务端到端复现的原因)。现有「## 验证」请改成这个标题,或把内容挪过去。

@MagicLizi MagicLizi added status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) and removed awaiting-discussion 等待维护者讨论(review-pr) labels Sep 2, 2026
@PeaceMaker-best

Copy link
Copy Markdown
Author

Closing this iteration to keep the contribution queue focused on changes that are ready for maintainers to review. The current head has reproducible regressions in the title IPC boundary on both Linux and Windows, and the per-code-point locale heuristic needs a broader design before it can safely handle legitimate multilingual titles. The underlying issue remains valid, but a future implementation should start from current main and prove the complete auto-title and regenerate-title paths before reopening.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

status:awaiting-author 等作者修改(review-pr 自动维护,仅展示) touches:core 改动碰到架构核心路径(review-pr 自动维护,仅展示)

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[Bug] 左侧任务栏任务标题出现乱码

2 participants