我常常在同一個 Agent session 裡做完一件事,打個 /clear,接著叫它去另一個 repo 處理下一件事。
直覺上,既然都叫它去那個專案了,它應該會先讀那邊的 CLAUDE.md 或 AGENTS.md 吧?後來我才發現,事情沒有這麼直覺。
全域規則和專案規則,分別放在哪裡?
~/├── .claude/│ └── CLAUDE.md ← Claude Code 的全域規則├── .codex/│ └── AGENTS.md ← Codex 的全域規則│└── git/ └── project-a/ ├── CLAUDE.md ← project-a 的專案規則,給 Claude Code └── AGENTS.md ← project-a 的專案規則,給 CodexAgent 會去做事,但不一定會讀規則
假設我是從 ~/ 啟動 Agent,做完事情或討論完之後下了 /clear,想讓它去另一個專案改 bug,於是對它說:去 ~/git/project-a 幫我改東西。
Agent 通常做得到。它會找到檔案、搜尋程式碼、修改內容,甚至跑測試;因為我已經明確告訴它要去哪裡做事。
但這不代表它已經讀過 project-a 根目錄的 CLAUDE.md 或 AGENTS.md,也不代表它會按照這個專案的規則執行。
這是最容易讓人誤會的地方:Agent 有在那個專案工作,不等於它有套用那個專案的規則。
如果光看文字還是不太好想像,可以把它想成這張圖:使用者只說「幫我洗羊毛大衣」,Agent Bon Bon 很快就洗完了;但牆上的 CLAUDE.md 明明寫著「只能乾洗」。問題不是它沒有做事,而是它沒有先讀規則。

為什麼會這樣?
關鍵在這裡:以我目前用到的 Claude Code 和 Codex 來說,沒有切換工作區域的明確指令。Agent 從哪裡啟動,就以那裡作為這次 session 的起點。
中途叫它去另一個資料夾做事,很多時候只是把那個資料夾當成下一個任務的目標,不是重新開一個以新專案為起點的 Agent。所以它能去工作,卻不一定會自動讀取 B 專案的規則。
所以 /clear 也解決不了這件事。它只是把對話清乾淨,不會重新啟動 Agent,更不會自動替你讀另一個專案的規則。
從目標專案重新啟動 Agent 當然最乾淨,但我不會每次從 A repo 跳到 B repo 都重開一次。有些 repo 本來就有相依關係,剛處理完 A 接著去 B 是很正常的工作流程。
比較實際的做法,是要求 Agent 在跨專案工作前先做一件事:讀規則。
解決方法:把「先讀規則」寫成全域規則
我最後在最頂層的 system prompt 加了一條很短的規則:只要這次要處理的專案不是 session 一開始所在的位置,就先讀目標專案根目錄的 CLAUDE.md 或 AGENTS.md,再開始搜尋、修改或跑測試。
全域規則 prompt
## Entering A Project
When starting work in a project directory different from the session's initial cwd, first check for and read that project's root `CLAUDE.md` or `AGENTS.md` before any code search, edits, or task execution.實測結果
當我叫 Agent 切到 ~/project-a 時,它會先讀取該專案根目錄的規則,才回覆已經可以開始。

這條規則不是魔法,它還是要靠 Agent 遵守。但它至少把原本「要不要讀規則」的猜測,變成一個明確的工作步驟。
對我來說,這就夠了。以後我只要叫 Agent 去另一個 repo 工作,不用再另外補一句「先讀 CLAUDE.md」;這件事已經是它進場前該做的事。