Hacktoberfest 2026:メンテナが10月に向けて印を付けた、オープンで初心者向けの issue。 Hacktoberfest の issue を見る

CJK workspace paths collapse to the same project session directory — sessions from different projects get mixed together(中文路径项目会话串扰)

オープン
#3,231 コメント 0 件 リアクション 0 件 担当者 0 名 GitHub で見る

メンテナーはふだん 8 日以内に返信

まだ誰も着手していません。

評価

難易度
4/5
見積もり時間
3〜5日
初心者へのやさしさ
52/100
issue の種類
バグ
明瞭さ
おおむね明確
活発さ
活発
技術スタック
rust
領域
desktop

調査の方向性

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 目录)同样共用一个目录
  • 用户往往在升级后才发现,误以为是升级造成的

我们目前的临时解法(已验证有效)

  1. 给受影响的项目文件夹加 ASCII 后缀(如 上海一妇婴合作 → 上海一妇婴合作-FH),使每个 slug 唯一
  2. 按每个会话 metadata.json 的 workspacePath,把会话目录搬回各自的新 slug 目录
  3. 同步改写 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

環境構築

はじめの一歩

  1. issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
  2. 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
  3. リポジトリをフォークし、ブランチを切って変更します。
  4. issue 番号を参照したプルリクエストを送ります。

GCWing/OpenBitFun のほかの issue

GCWing/OpenBitFun の issue をすべて見る

似ている issue

Rust の issue をもっと見る

新しい issue をメールで受け取る

初心者向けの GitHub issue を短くまとめたダイジェスト。