CJK workspace paths collapse to the same project session directory — sessions from different projects get mixed together(中文路径项目会话串扰)
メンテナーはふだん 8 日以内に返信
まだ誰も着手していません。
評価
調査の方向性
Locate the workspace-path slug generation and project/session storage entry points, then inspect how metadata.json, state.json, and workspace_data.json record workspacePath or rootPath. Reproduce the collision with CJK workspace paths and check existing session-directory behavior. Done means distinct projects receive stable directories, existing sessions can be migrated or recovered by workspacePath, and project-derived data is no longer mixed.
索引モデルが issue の本文から書いたものです。
説明
Environment: OpenBitFun 1.0.2, macOS (Apple Silicon), local workspaces
TL;DR (English)
The project session storage directory name is derived from the workspace path by lowercasing it, replacing every non-[a-z0-9] character with -, and trimming leading/trailing -. Workspace paths containing CJK characters — especially paths ending with CJK — collapse into the same project directory. As a result, sessions belonging to different projects are stored in one directory and shown mixed together in each project's session list.
复现(真实数据)
一位中文用户的多个工作区,例如:
/Users/frankzhang/Work-2/上海一妇婴合作/Users/frankzhang/Work-2/放射科内合作/王平教授/Users/frankzhang/Work-2/放射科内合作/朱博- ……(Work-2 下 9 个纯中文命名的项目)
由于 slug 算法把每个 CJK 字符替换成 - 并去掉尾部 -,以上所有路径全部坍缩到同一个项目目录:
~/.openbitfun/projects/users-frankzhang-work-2/sessions/<session-id>/
实际统计(本机):
| 坍缩目录 | 混入的项目数 | 混入的会话数 |
|---|---|---|
users-frankzhang-work-2 |
9 个项目 | 37 个会话 |
users-frankzhang-work-3 |
8 个项目 | 42 个会话 |
打开其中任何一个项目,会话列表里都能看到其他项目的对话。而路径含 ASCII 的项目(如 2026.5-全景PETCT、MyCode/pacs_dd、MyPapers/AI_Conferences)完全不受影响。
影响
- 不同项目的会话在界面上互相串,看起来像数据损坏(实际数据未丢:每个会话的
metadata.json里记录的workspacePath是正确的) - 项目级派生数据(snapshot baselines、项目 config 目录)同样共用一个目录
- 用户往往在升级后才发现,误以为是升级造成的
我们目前的临时解法(已验证有效)
- 给受影响的项目文件夹加 ASCII 后缀(如
上海一妇婴合作→上海一妇婴合作-FH),使每个 slug 唯一 - 按每个会话
metadata.json的workspacePath,把会话目录搬回各自的新 slug 目录 - 同步改写
metadata.json/state.json/workspace_data.json(rootPath)等处的旧路径
能彻底解决串会话,但需要对用户文件系统做侵入式改名 + 手工迁移,不适合普通用户。
建议的修复方向
- 项目目录名加入完整路径的短哈希,例如
users-frankzhang-work-2-<sha256 前 8 位>,或对 CJK 做百分号编码,而不是替换成- - 提供一次性迁移:扫描所有会话的
metadata.json,按workspacePath重新归位 - 防御性检查:当计算出的 slug 目录已存在但属于不同
workspacePath时,回退到带哈希的目录名
如需更多数据(目录统计、metadata 样例)可以随时提供。谢谢!
- 主要言語
- Rust
- スター
- 2.3k
- フォーク
- 236
- 平均マージ
- 2時間 31分
- マージ済み PR(30日)
- 553
環境構築
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
GCWing/OpenBitFun のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
GCWing/OpenBitFun#3213 · コメント 1 件 ·
メンテナーはふだん 8 日以内に返信
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
GCWing/OpenBitFun#2363 ·
メンテナーはふだん 8 日以内に返信
-
question
難易度 1/5 1時間未満 初心者へのやさしさ 78/100
GCWing/OpenBitFun#2340 ·
メンテナーはふだん 8 日以内に返信
-
難易度 5/5 1週間以上 初心者へのやさしさ 25/100
GCWing/OpenBitFun#3229 ·
メンテナーはふだん 8 日以内に返信
-
難易度 3/5 1〜2日 初心者へのやさしさ 68/100
GCWing/OpenBitFun#3226 ·
メンテナーはふだん 8 日以内に返信
GCWing/OpenBitFun の issue をすべて見る
似ている issue
-
area:casework bug criticality:p3 triage:needs-implementation
難易度 2/5 1〜3時間 初心者へのやさしさ 84/100
registrystack/registry-stack#1623 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 76/100
leptos-rs/leptos#4885 · コメント 1 件 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
longbridge/gpui-kit#3276 ·
メンテナーはふだん 1 日以内に返信
-
A-Migration Guides D-Straightforward S-Ready-For-Implementation X-Uncontroversial
難易度 1/5 1時間未満 初心者へのやさしさ 88/100
bevyengine/bevy-website#2607 ·
メンテナーはふだん 1 日以内に返信
-
難易度 2/5 1〜3時間 初心者へのやさしさ 72/100
メンテナーはふだん 1 日以内に返信