Skip to content

fix(tools): fix spacing errors in CJK and Latin mixed paths#1925

Closed
Sakuranda wants to merge 1 commit intoQwenLM:mainfrom
Sakuranda:fix/1897-fix-cjk-latin-mixed-path-spacing
Closed

fix(tools): fix spacing errors in CJK and Latin mixed paths#1925
Sakuranda wants to merge 1 commit intoQwenLM:mainfrom
Sakuranda:fix/1897-fix-cjk-latin-mixed-path-spacing

Conversation

@Sakuranda
Copy link
Copy Markdown
Contributor

TLDR

本PR修复了LLM在生成路径时,会错误在CJK字符集(中日韩)与拉丁字符(a-zA-Z0-9)混用的路径段中插入空格的问题。
(例如,image 图片 与真实文件夹 image图片 )。

在issue #1897中,@pomelo-nwu 提到“通过最严厉的prompt也无法绕过去这个问题”,说明通过prompt这块去优化比较困难。同时,qwen-code支持多模型、多Provider。不同模型对prompt的遵循程度也会有所不同。所以此处并没有采用优化prompt的方式来约束模型以解决问题。

本PR添加了一个回退机制:

  • 如果原始路径存在,则原样使用。
  • 如果不存在,则仅针对CJK字符集与拉丁字符的间距错误做修正。
  • 且仅在修正后路径实际存在时才会接受,否则保持正常的报错行为。

Dive Deeper

Root Cause

LLM有时会把路径字符串当成自然语言格式化掉,而不会遵循严格的字符串规矩。(英文与中文相邻时,LLM会倾向于插入空格来提高回复的可读性。)
所以LLM会偶发地在中英混合的路径段上错误地加上空格。

Fix

添加了 resolvePathWithMixedScriptSpacingFix(...) 函数,并设有严格的边界:

  • 仅在原始路径缺失时才会触发。
  • 仅修正中文 平假名 片假名 韩文字母A-Z a-z 0-9之间的间距。
  • 修正后需要进行路径是否存在的检查。

应用于:

  • packages/core/src/tools/read-file.ts
  • packages/core/src/tools/ls.ts
  • packages/core/src/tools/edit.ts

Tests

在以下位置添加了测试,可供参考:

  • packages/core/src/tools/read-file.test.ts
  • packages/core/src/tools/ls.test.ts
  • packages/core/src/tools/edit.test.ts
  • packages/core/src/utils/paths.test.ts

Reviewer Test Plan

  1. 目标问题验证:
npm run test --workspace packages/core -- src/tools/read-file.test.ts -t "mixed CJK/Latin spacing mistakes" --coverage.enabled false
npm run test --workspace packages/core -- src/tools/ls.test.ts -t "mixed CJK/Latin spacing mistakes" --coverage.enabled false
npm run test --workspace packages/core -- src/tools/edit.test.ts -t "mixed CJK/Latin spacing mistakes" --coverage.enabled false
  1. 回归验证:
npm run test --workspace packages/core -- src/tools/read-file.test.ts src/tools/ls.test.ts src/tools/edit.test.ts --coverage.enabled false
  1. 函数测试:
npm run test --workspace packages/core -- src/utils/paths.test.ts -t "resolvePathWithMixedScriptSpacingFix" --coverage.enabled false

Testing Matrix

Win Linux macOS
npm run
npx
Docker - - -
Podman - - -
Seatbelt - - -

Linked issues / bugs

Fixes #1897
Fixes #1923

@tanzhenxin
Copy link
Copy Markdown
Collaborator

@Sakuranda 感谢你的贡献!我们排查发现这是模型 API 返回结果的问题,影响范围包括所有中英文混杂的情况,不局限于文件目录。我们正在联系相关方排查解决中,具体细节内容请参考 issue #1922

@tanzhenxin
Copy link
Copy Markdown
Collaborator

这个 issue 不考虑 hotfix,等待模型侧修复。

@tanzhenxin tanzhenxin closed this Mar 4, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

文件目录空格问题 LLM 错误地在中文路径中添加空格导致工具调用失败

2 participants