這個單元解決什麼問題在學任何一家工具的設定細節之前,先建立一個通用座標系。掌握「作用範圍」與「設定種類」這兩個軸,之後看到任何工具的設定檔,你都能立刻判斷它屬於哪一格、會不會被別的設定覆寫、該不該提交到版控。
學習目標
- 能用「作用範圍」軸(受管理 → 使用者 → 專案 → 本地)描述任一設定的生效範圍。
- 能用「設定種類」軸(個人化 / 記憶 / 規則 / 隱私 / 權限 / 自動化)分類任一設定項。
- 能說明覆寫優先序,並分辨「覆寫」「串接」「合併」三種不同的層級語意。
- 能正確區分「該提交到版控(團隊共享)」與「該 gitignore(個人)」的設定檔。
1. 第一軸:作用範圍(scope)
同一個設定可以出現在不同範圍,誰生效取決於優先序。以 Claude Code 為主範本,由高到低五層(截至 2026-05 官方文件 [1]):三種層級語意:覆寫 vs 串接 vs 合併
這是多數人對「層級」最大的誤解:不是所有設定都用「高層覆寫低層」。Claude Code 裡至少有三種不同的合併行為,混用這兩種心智模型會讓你在 debug 時耗費大量時間([1][2]):
換句話說:你的
~/.claude/CLAUDE.md 與專案 ./CLAUDE.md 不會互相覆寫,兩份都會被讀進去(使用者層在前、專案層在後)。但 ~/.claude/settings.json 與 .claude/settings.json 裡同一個鍵,高層的會贏。把這兩件事當成同一回事,是「我明明在使用者層設了,怎麼專案裡行為不一樣」這類困惑的根源。
2. 第二軸:設定種類
範圍決定「在哪生效」,種類決定「管什麼」。六類:- 個人化:角色、語言、語氣、輸出格式。
- 記憶:跨 session 持久化的事實與偏好(01-4 談過短期 vs 長期)。
- 規則 / 指令:專案慣例、約束(
CLAUDE.md、AGENTS.md、.claude/rules/)。 - 隱私:訓練退出、保留期限、暫時對話。
- 權限:工具可否執行、可讀寫哪些路徑(allow / ask / deny)。
- 自動化:Skill、Hook、工作流。
3. 兩軸交叉:決策工具
把「種類 × 範圍」當成一張矩陣,每次要放一個設定,先選這兩個軸,答案就決定了它該進哪個檔、要不要提交版控。三個設定,三個位置
- 團隊共用的程式碼風格規約:規則種類 × 專案範圍 → 寫進
./CLAUDE.md,提交版控,全隊共享。 - 你個人的測試沙箱 URL 與偏好測試資料:個人化 / 規則種類 × 本地範圍 → 寫進
./CLAUDE.local.md,加進.gitignore,只有你看得到、不污染團隊。 - 你跨所有專案的語言偏好(一律用台灣繁中回覆):個人化種類 × 使用者範圍 → 寫進
~/.claude/CLAUDE.md,套用到你機器上每個專案。
4. 提交 vs gitignore(關鍵實務)
範圍軸最直接的版控後果,就是這條二分:- 提交(版控、團隊共享):團隊應一致遵守的規則與設定。
./CLAUDE.md、.claude/settings.json、.claude/rules/、AGENTS.md。 - gitignore(個人、不分享):個人覆寫、密鑰、本地路徑。
./CLAUDE.local.md、.claude/settings.local.json、任何含 token 的檔。
.env / .env.example 是同一套思維:可分享的模板進版控,含密鑰的實體留本地。判準很簡單:這個設定換一個隊友套用,是幫到他還是洩漏你? 幫到他就提交,洩漏你就 gitignore。
5. 把任何新工具對位到此模型
這個座標系的價值,在於它跨工具通用。拿到一個陌生工具,依序問五個問題,你就摸清了它的設定面,不用讀完整份文件:1
使用者級設定在哪?
套用所有專案的個人偏好放哪個檔或目錄?
2
專案級規則檔是哪個?
哪個檔案進版控、對全隊生效?
3
有沒有本地覆寫層?
有沒有已 gitignore 的個人設定入口?
4
隱私 / 訓練退出開關在哪?
如何退出資料訓練或設定資料保留期?
5
權限怎麼控制?
能不能限制它讀寫、執行的範圍?deny / ask / allow 在哪設?
工具對照
各家的設定層級對應(截至 2026-05,精確檔名與機制以官方文件為準,逐項細節見 02-2 與 02-6):對照表給座標,不給細則這張表讓你知道「同一層在你的工具叫什麼」。各 cell 的精確語意(誰覆寫誰、哪些進版控)屬快變動事實,統一在 02-2(Claude)與 02-6(其餘)查證並標日期。值得記住的是:幾乎每家都有「使用者 / 專案 / 本地」這條範圍軸,差別只在檔名與本地層完整度。
常見誤區
自我檢核
通過本單元的標準
- 你能說出你主力工具的「使用者級」與「專案級」設定各放哪、哪些已進版控嗎?
- 給你一個 API key、一條團隊風格規則、一個個人語言偏好,你能各自說出「放哪一格、提交還是 gitignore」嗎?
- 你能解釋為什麼
~/.claude/CLAUDE.md與./CLAUDE.md不會互相覆寫,但兩份settings.json的同一個鍵會嗎?
來源與延伸閱讀
事實主張依官方文件,快變動項標註截至 2026-05。- [1] Anthropic, “Claude Code settings”(設定優先序:managed → CLI → local → project → user;檔案位置;permissions 為跨層合併),Claude Code Docs. https://code.claude.com/docs/en/settings (截至 2026-05)
-
[2] Anthropic, “How Claude remembers your project”(
CLAUDE.md階層與串接載入、CLAUDE.local.md、@path匯入語法、.claude/rules/、Claude Code 讀CLAUDE.md而非AGENTS.md),Claude Code Docs. https://code.claude.com/docs/en/memory (截至 2026-05)