Day 4:換帳號之後,AI 的記憶去哪了?CLAUDE.md/Skill/memory/plugin 各住在哪
Vibe Coding 日誌 Day 3——最可怕的不是報錯,是它安靜地什麼都不記得
換電腦或換 macOS 帳號之後,工具沒裝好很好發現——指令一跑就報錯。
換電腦或換 macOS 帳號之後,工具沒裝好很好發現——指令一跑就報錯。
真正會出事的是另一種:AI 開起來一切正常,但它什麼都不記得了,而且不會有任何錯誤訊息。
這篇是一次同機換帳號後的完整盤點,包含怎麼驗證「到底搬過來了沒」。 一、四樣東西,各住在哪
先講結論。這四樣常被當成同一包,其實住在四個不同的地方,搬遷風險也完全不同。
位置 跟著什麼走 --- --- --- CLAUDE.md /.claude/CLAUDE.md(全域)<br><repo>/CLAUDE.md(專案) 專案層跟著 git,clone 就有;全域層只在本機 Skill /.claude/skills/(個人)<br><repo>/.claude/skills/(專案)<br>內建 專案層跟著 git;個人層只在本機 memory /.claude/projects/<slug>/memory/ 只在本機,且目錄名綁死路徑 ← 最危險 plugin /.claude/plugins/ 只在本機
跟著 git 的那些,換機時等於零成本——git clone 就回來了。真正要搬的只有家目錄裡那些。 二、最大的靜默陷阱:目錄名是路徑編碼出來的
/.claude/projects/ 底下的目錄名,是專案的絕對路徑把 / 換成 -:
換帳號 = 使用者名變了 = 所有 slug 全部對不上。
檔案原封不動搬過去,AI 依然把它當成一個全新的專案:memory 讀不到、歷史對話找不到、累積的判斷全部歸零。而且它不會抱怨——因為對它來說,這就是一個沒有記憶的新專案,完全合理。
修法是搬完之後改名:
專案本身也換位置的話(例如 /Documents/X → /Projects/X),slug 中間那段要一起改,規則一樣。 驗證方式:ls /.claude/projects/ grep <舊使用者名> 應該回 0 筆。 有殘留就代表那些 memory 現在是孤兒。 三、「沒搬過來」和「本來就沒有」是兩件事
盤點時最容易做白工的一步:看到某個目錄不存在,就開始想辦法「找回來」。
實際查下去,/.claude/plugins/ 在舊帳號和新帳號都不存在,設定檔裡也沒有任何 plugin/marketplace 紀錄——代表從來沒裝過 plugin,沒有東西需要搬。全域 /.claude/CLAUDE.md 同理。
先確認「原本有沒有」,再決定要不要救。 換機當下人本來就緊張,很容易把「沒有」誤判成「掉了」,然後花半小時找一個不存在的東西。 四、看起來像 plugin,其實是 skill
盤點時看到二十幾個功能包,第一反應是「這些是不是 plugin?」
不是。它們只是 /.claude/skills/ 底下的普通目錄——一個資料夾配一份 SKILL.md。plugin 是另一套機制,會註冊在設定檔裡。
判準:在 /.claude/skills/ 裡看得到目錄 → skill;設定檔裡有 marketplace 紀錄 → plugin。兩者的搬遷方式不同,先分清楚再動手。 五、怎麼驗:拿舊的直接對數字
同機換帳號有個很好用的優勢——舊帳號的家目錄還在。與其猜,不如直接對:
新的比舊的多是正常的——搬完之後又累積了新東西。要警覺的是新的比舊的少。
這比「我記得應該有搬」可靠得多。舊帳號家目錄留著別急著刪,它就是你的對照組。
(換新機沒有這個優勢,所以打包前一定要先產一份清單。) 六、真正帶不走的三類
有些東西不是「忘了搬」,是結構上就搬不了,別浪費時間試:
類別 為什麼 怎麼辦 --- --- --- keychain 裡的憑證 綁使用者,密碼不同 重登;簽章憑證要重新下載匯入 各種 OAuth 授權 綁帳號 各套服務分別重新授權 nodemodules 原生模組與快取路徑綁舊家目錄 不要複製,重裝
還有一個特別陰的:/Library/LaunchAgents 的排程。
它是 per-user,而且只有該帳號登入時才會跑。換帳號後,備份、定時檢查這類排程會直接安靜地消失——不會有錯誤、不會有通知,你只會在某天需要那份備份時才發現它幾週沒跑了。
更糟的是舊帳號的那個目錄通常讀不到(家目錄權限 700),所以連「原本有哪些排程」都查不回來。 教訓:真正重要的排程不該放在個人 launchd。搬去不綁登入狀態的地方(例如 CI 的排程),換機時才不會跟著蒸發。 七、裝 skill 用 symlink,不要 copy
順手記一個小決策。把 repo 裡的 skill 裝進 /.claude/skills/ 時,用 symlink:
理由:git pull 到新版立刻生效。用 copy 的話會出現「repo 已經改了、本機還在跑舊版」的分裂,而這種分裂不會報錯,只會讓行為莫名其妙地不一致。
同一個主題的第三次了——換機的坑幾乎都是「不會報錯」的那種。 收束
問題 答案 --- --- 跟著 git 的? 專案的 CLAUDE.md 和 .claude/skills/ — clone 就有 只在本機的? /.claude/ 底下全部 — memory、個人 skill、plugin、hooks 最危險的? projects/<slug>/ 的目錄名綁死家目錄路徑,換帳號要改名 怎麼驗? 拿舊帳號的目錄直接對數字,別靠印象 會安靜消失的? launchd 排程、OAuth 授權、keychain 憑證
Day 2 的結論:換機之後,先問「有什麼東西壞掉了但不會告訴我」,再開始裝工具。 本篇由 claude-code(claude-opus-5) 於開發過程中產生。 repo:makeclass 標籤:claude-code migration memory skills macos