实测中文、日文、韩文、阿拉伯文全部受影响。4 种语言。6 层影响。1 个根源。


一、一个会话神秘消失了

6 月 24 日上午,我在 C:\Users\...\Desktop\claude面试 目录下跟 Claude Code 聊了半个小时。下午再打开——会话不见了。--resume 找不到。

没删过。没清理过。

回退路径——翻到 .claude/projects/——Claude Code 把所有对话历史存在这里,每个项目一个目录。

看到的目录名让我愣住了。


二、目录名去哪了

简历/          → C--Users-...-Desktop---
claude面试/    → C--Users-...-Desktop-claude--
测试中文目录/  → C--Users-...-Desktop-------

汉字全部被替换成了连字符。 "简历"变成两个 -。"测试中文目录"变成六个 -

为了验证,我创建了两个不同的目录:

mkdir 项目甲   (3 个中文字)
mkdir 测试乙   (3 个中文字)

各打开一次 Claude Code。然后检查 .claude/projects/

项目甲 → C--Users-...-Desktop----
测试乙 → C--Users-...-Desktop----  ← 一模一样

两个不同的文件夹——映射到了同一个会话目录。 它们的所有对话都存储在一起。


三、这意味着三件事

第一:清理一个目录,连带删除另一个

项目甲 执行 claude project purge 清理自己的项目——清理程序删了 ---- 目录下的所有会话——包括 测试乙 的全部对话。测试乙 的用户甚至不知道对话被删过。没有警告。没有提示。

第二:一个目录可以看到另一个目录的对话

测试乙 执行 claude --resume——会话列表里出现了 项目甲 的对话。从未打开过那个项目的人,可以点进去——恢复那个项目的完整聊天记录。

第三:不只中文

同样的测试在日文(日本語テスト)、韩文(한국어테스트)、阿拉伯文(اختبار)下各跑了一遍。全部被编码为等长连字符——全部碰撞到同一个目录。四种语言——同一个结果。


四、预存碰撞——这不是新 bug,已经发生很久了

调查过程中,我检查了自己系统上已有的 .claude/projects/。发现了 5 个纯连字符目录名——里面存储着真正项目的对话记录。

例如:C--Users-...-Desktop--------(8 个连字符)里存了 C:\Users\...\Desktop\黑马微服务资料 的会话。这个目录早就在这了——不是我的测试创建的——是正常的项目使用中生成的。

这个 bug 不是新引入的。它已经丢在用户系统上默默运行很久了。


五、不只是会话碰撞——更深层的问题

信任状态是分离的

.claude.json 里的信任状态由真实路径存储——项目甲测试乙 各自有独立的信任标记。但它们的会话是共享的

这意味着——你在 项目甲 里点了"信任"——你信任的不是 测试乙。但你们的对话存在同一个地方。你清一次项目——两个人的对话全没了。

清理机制也受影响

cleanupPeriodDays(默认 30 天)按编码后的目录名操作。两个不同的项目被视为一个——清理时统一处理。一个项目 30 天没用被清理——另一个还在活跃使用的项目对话也一起被删了。

"不再询问"权限也是共享的

如果 项目甲.claude/settings.local.json 里写了 "don't ask again" 的权限——它存在编码后的项目目录下——测试乙 打开时也会使用同一份设置。你为一个项目授予的权限——另一个项目自动获得。


六、根源:路径编码丢弃非拉丁字符

Claude Code 在存储会话时,使用的路径编码规则是:

路径中的 / → -
路径中的非拉丁字符 → -

所以 C:\Users\...\Desktop\测试中文目录 变成 C--Users-...-Desktop-------

不同目录——只要非拉丁字符数量相同——映射到完全相同的 .claude/projects/ 目录。 会话全部混在一起。


七、影响面

任何使用中文、日文、韩文、阿拉伯文、俄文、希伯来文、泰文等非拉丁字符命名文件夹的开发者——都存在以下风险:

  • 清理一个项目的对话——导致另一个项目的对话消失
  • 在一个项目里 --resume——能看到另一个项目的对话
  • 使用 autoUploadSessions 同步时——不同项目的对话被合并上传
  • cleanupPeriodDays 默认清理——把多个项目当作一个处理
  • "不再询问"权限——一个项目的授权应用到另一个项目

全球所有非英语用户都会受影响。


八、修复建议

在被 Claude Code 修复之前,建议:

  1. 将项目目录名改为纯 ASCII 字符——my-project 而不是 我的项目
  2. 避免在中文目录下打开 Claude Code——会话可能和其他同名长度的目录碰撞
  3. 使用检测工具扫描——确认你的目录是否有风险

九、已报告 & 检测工具

GitHub Issueanthropics/claude-code#70674
(已被 bot 标记为 area:core + has repro——确认为核心代码缺陷 + 复现步骤有效)

开源检测工具ai-config-guard

git clone https://github.com/yurenpai/ai-config-guard.git
cd ai-config-guard
node index.js .

功能:

  • 目录名检查——如果包含非拉丁字符,立即发出警告——告诉你编码后的名称和碰撞风险
  • 项目文件扫描——检测 AI 编码助手可能被诱导执行的危险操作(凭据读取、数据外泄、Prompt Injection 等 7 条规则)
  • Web 仪表盘——深色/浅色主题切换 + 中文/英文双语 + CSV/SARIF 导出
  • CI/CD 集成——GitHub Actions 自动扫描——可插入到任何项目的提交前校验中

这是目前唯一能检测此问题的工具。


2026-06-25 · 发现 → 实测 → 提交 → 工具

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐