CommandCodeAI / CommandCodeAI/command-code
Taste learning silently finds 0 Claude Code sessions when the project path contains spaces (encodeAgentProjectDir mismatch)
@saqibameen 已經在處理了。
開始於 2026年9月16日。
- 主要語言
- 沒有語言資料
- 星號
- 4k
- 分支
- 350
- PR 合併指標
- 30 天內沒有已合併 PR
描述
Summary
Taste onboarding and /learn-taste silently learn zero Claude Code sessions when the project path contains spaces (e.g. .../My Repository/My Works/Startup/WUP). encodeAgentProjectDir() only replaces /, \ and : with -, while Claude Code encodes project directories by replacing every non-alphanumeric character with - (spaces, CJK characters, etc.). Command Code therefore looks up a ~/.claude/projects/<dir> that does not exist, findClaudeCodeSessions() returns [], and nothing is reported to the user — no entry in skippedSessions or failedSessions.
Observed on a fresh v1.53.1 install: onboarding recorded 168 Codex sessions for the project but zero Claude Code sessions, even though 25 Claude Code sessions exist for the very same working directory.
Expected Behavior
For a project at /Users/<user>/Library/CloudStorage/OneDrive-Personal/My Repository/My Works/Startup/WUP, onboarding / /learn-taste should discover the existing ~/.claude/projects/-Users-<user>-Library-CloudStorage-OneDrive-Personal-My-Repository-My-Works-Startup-WUP/ directory (25 .jsonl sessions) and learn from it.
Actual Behavior
- Command Code computes the lookup path with spaces preserved:
~/.claude/projects/-Users-<user>-...-My Repository-My Works-Startup-WUP→isDirectory()fails → 0 sessions scanned. - Claude Code actually stores those sessions at:
~/.claude/projects/-Users-<user>-...-My-Repository-My-Works-Startup-WUP(spaces replaced by-). - After onboarding completes,
~/.commandcode/projects/<slug>/config.jsoncontains only:
"tasteOnboarding": {
"learnedSessions": { "codex": ["... 168 session ids ..."] },
"skippedSessions": {},
"failedSessions": {},
"lastLearningDate": "2026-09-13T17:44:49.082Z",
"completed": true
}
No claude-code key is created and no warning is surfaced, so it looks as if Claude Code simply had no sessions.
Steps to reproduce the issue
- Put a project in a path that contains a space (very common under OneDrive / Google Drive / "My Works"-style folders).
- Run Claude Code at least once in that project so
~/.claude/projects/<claude-encoded-dir>/*.jsonlexists (note that Claude Code replaces the spaces with-). - Fresh-install Command Code in the same directory (or run
/learn-taste) and let taste onboarding finish. - Inspect
~/.commandcode/projects/<project-slug>/config.json:learnedSessionscontains onlycodex(if anything); the Claude Code sessions were silently ignored.
Root cause / suggested fix
dist/cli.mjs:
function encodeAgentProjectDir(e){ return e.replace(/[/\\:]/g,"-") }
async function findClaudeCodeSessions(e){
const n = `${t}/.claude/projects/${encodeAgentProjectDir(e.projectPath)}`;
if (!await isDirectory2({ runtime: e.runtime, path: n })) return [];
...
}
Claude Code's own encoding replaces every non-alphanumeric character with -. Verified locally: a path segment 应用 (CJK) renders as two consecutive dashes, e.g. .../Dropbox/应用/Overleaf/... → ~/.claude/projects/-Users-<user>-Library-CloudStorage-Dropbox----Overleaf-....
Suggested fix:
- Mirror Claude Code's encoding:
e.replace(/[^a-zA-Z0-9]/g, "-"). - Optionally add a fallback that scans
~/.claude/projects/*and matches the decoded path, so future encoding divergences degrade gracefully. - Surface "0 sessions found for claude-code" instead of silently skipping a source, so users can tell that discovery failed.
Related: #438 (non-standard Claude Code config paths), #639 (ENAMETOOLONG on taste learning), #740 (learning from worktree sessions).
Command Code Version
1.53.1 (cmd --version, Homebrew npm global install)
Operating System
macOS
Terminal/IDE
Apple Terminal
Shell
zsh
貢獻指南
這個儲存庫沒有索引到貢獻指南
從這裡開始
- 先讀完整個 Issue,再讀專案的貢獻指南。
- 在 Issue 下留言說明你要接手 —— 這能避免兩個人做同樣的事。
- Fork 儲存庫,在一個分支上完成修改。
- 送出 Pull Request,並在描述裡引用這個 Issue 編號。
評估
這個 Issue 還沒有評估資料。