生活分享

AGENTS.md 層級與覆寫驗證

用根目錄與子目錄案例追蹤規則來源、衝突與 override,確認實際選入的文件。

閱讀時間約 12 分鐘 · 操作 25 分鐘

原創流程示意圖,非產品介面截圖。
圖片:Mokaair (© Mokaair)
回總目錄:Codex 學習中心:完整教學目錄

實作 · Desktop / CLI / VS Code / JetBrains / cloud

本篇目錄
  1. 目標與準備
  2. 先看載入順序
  3. 步驟一:建立獨立規則實驗室
  4. 步驟二:從兩個目錄各啟動一次
  5. 步驟三:加入同層 override 再比較
  6. 失效排查與完成判準

目標與準備

保存對工作的指示, 保存應用設定;兩者不是同一個覆寫機制。這次用回覆標記與必須保留的共同要求觀察規則,不提高沙盒權限,也不要求模型執行未知命令。能複述某個檔案,仍不等於它在啟動時自動載入,所以要同時看實際回覆行為與工作目錄。

先看載入順序

全域規則預設位於使用者目錄的 .codex;若已有 CODEX_HOME,則以其指向位置為準。專案規則從辨識到的根目錄往目前工作目錄走,不會一次遍歷所有兄弟資料夾。每一層依檔名優先檢查 AGENTS.override.md,再找 AGENTS.md,最後才是已設定的備援檔名;同層最多取一份。較深層的指示可覆寫前面衝突項目,沒有衝突的共同要求仍保留。

情境會選的專案規則不應自行推定
從根目錄啟動根目錄規則所有子目錄都已載入
從 ui 啟動根目錄,再到 uiui 可以取消平台強制政策
ui 有非空 override根目錄,再到 ui override同層 AGENTS.md 也會合併
修改規則後沿用舊工作階段可能仍有先前上下文存檔就代表新規則已載入

步驟一:建立獨立規則實驗室

在自己的練習位置建立新的 codex-rules-lab,裡面再建 ui 與 data 子資料夾。先不要建立 override。用編輯器開啟這個新資料夾,在整合終端機確認位置:PowerShell 用 Get-Location,macOS/Linux 用 pwd。確認沒有同名既有專案後,在這個新資料夾執行下列 Git 初始化;它只用來讓練習有明確專案根目錄,不需要提交或連接遠端。

系統終端機:確認位於新的規則練習根目錄後執行 · sh
git init
git rev-parse --show-toplevel

在根目錄新增 AGENTS.md,貼入第一份完整內容。ROOT-LAB 是方便觀察的回覆前綴,KEEP-DATA 則是各子目錄都應保留的共同要求。這些標記只服務練習,正式規則應改寫成實際測試、資料保留與交付要求。

檔案內容:根目錄 AGENTS.md · markdown
# Root practice instructions

- Start the final answer with ROOT-LAB.
- Include KEEP-DATA in the final answer.
- Do not change any files for the rule-discovery exercise.
- Report checks that were actually performed separately from unverified claims.

在 ui/AGENTS.md 放第二份完整內容,在 data/README.md 放下面的資料說明。README 刻意不是 AGENTS 檔,沒有另外設定備援檔名時,不應只因為同為 Markdown 就加入啟動指示。先檢查每份檔名大小寫與副檔名,避免 Windows 編輯器默默補上 .txt。

檔案內容:ui/AGENTS.md · markdown
# UI practice instructions

- Start the final answer with UI-LAB instead of ROOT-LAB.
- Include UI-BASE in the final answer.
檔案內容:data/README.md · markdown
# Data notes

This folder describes fictional practice data.
DATA-NOTE is a document marker, not a required answer prefix.

步驟二:從兩個目錄各啟動一次

在實驗室根目錄的系統終端機先執行第一個啟動命令;它把這次 CLI 限制為唯讀。進入 Codex 後送出下方自然語言要求,不另外貼規則內容或指定應有前綴。預期回覆從 ROOT-LAB 開始並包含 KEEP-DATA。再用 /exit 回到系統終端機,不要用 resume 接續剛才任務,改執行第二個命令從 ui 開全新工作階段。

系統終端機:從實驗室根目錄啟動新的 CLI · sh
codex --cd . --sandbox read-only
自然語言提示詞:在新 CLI 工作階段輸入 · text
Without changing files, report the current working directory and the project instruction sources already available to this session. Follow the active response-format instructions. Do not search unrelated sibling folders just to collect more rules. Distinguish known loaded instructions from files you have not inspected.
系統終端機:退出上一個 CLI 後,從根目錄執行 · sh
codex --cd ui --sandbox read-only

在 ui 工作階段送出完全相同要求。預期前綴改成 UI-LAB,仍有 KEEP-DATA,並增加 UI-BASE。這代表子目錄覆寫前綴,根目錄不衝突的要求仍在。若它只能在你要求手動讀檔後才說出規則,請把「手動讀到」和「啟動已載入」分開記錄;模型自述不是載入日誌,不要把不確定的狀態標成成功。

步驟三:加入同層 override 再比較

退出 ui 工作階段,保留 ui/AGENTS.md,再新增 ui/AGENTS.override.md,內容如下。回實驗室根目錄,重新執行 codex --cd ui --sandbox read-only,送出同一個要求。預期 UI-OVERRIDE 與 KEEP-DATA,這次不應因同層 AGENTS.md 而加入 UI-BASE。override 取代的是同一層候選,不是把根目錄與所有全域要求全部清空。

檔案內容:ui/AGENTS.override.md · markdown
# UI override practice

- Start the final answer with UI-OVERRIDE instead of ROOT-LAB.
- Include OVERRIDE-ACTIVE in the final answer.

多做一個邊界檢查:保留 override 備份後清空、儲存並開新工作階段,記錄實際載入結果。本機 codex-cli 0.154.0-alpha.6.2 的診斷輸入顯示,空 override 不提供內容,但也沒有接著載入同層 AGENTS.md,只留下根目錄規則;不要把空檔當作可靠的停用方法。要恢復 ui 規則,將 override 改名為不在備援清單內的 override.saved.md,再開全新工作階段確認 UI-LAB、UI-BASE、KEEP-DATA。不要刪除全域檔或整個設定目錄。

用一張觀察表分開載入與遵循

每次新啟動都填下面欄位,分別記 ROOT-LAB、UI-LAB、UI-OVERRIDE、空 override 與改名還原。不要把期望值先寫進「實際回覆」。例如診斷輸入包含 ui override,但回覆沒有 OVERRIDE-ACTIVE,只能說來源已出現在輸入、回覆格式未通過;不能因此說檔案沒載入,也不能把模型自述當成診斷輸入證據。私人的完整輸入可能含其他規則,只保存本練習需要的摘要。

私人觀察表:每次啟動填一份,不是 CLI 指令 · text
Case: [root / UI / override / empty override / renamed restoration]
CLI version and start directory: [actual values]
New session: [yes / no / unverified]
Instruction-file state: [paths, nonempty/empty/renamed]
Expected markers: [prediction]
Instruction-source evidence: [observed input/log / model statement only / unavailable]
Actual answer markers: [observed values / no model run]
Conclusion: [discovery verified? response verified? remaining uncertainty]

失效排查與完成判準

完全沒出現標記時,確認真正副檔名、非空內容、Git 根目錄與 --cd 位置;總是顯示舊標記時,確認已退出並新啟動,不是 resume 舊上下文;只有某段消失時,找同層 override、全域偏好或更高優先級的環境指示。不能把較深 AGENTS.md 當作越過組織政策、工具權限或使用者要求的通行證。若有衝突,先說明來源,再調整自己可控制的規則。

文件很長時還要考慮合計大小上限,官方預設是 32 KiB,計算的是位元組,不是中文字數。先保留必要規則,把長設計和範例移到普通文件並在需要時明確讀取;不要以為切成大量兄弟目錄就會自動載入全部內容。備援檔名和上限屬設定項,留到處理,改完同樣要重啟驗證。

完成時保存根目錄、ui、override、空 override、改名還原五種情況的啟動位置、檔案狀態與實際標記。共同的 KEEP-DATA 應持續保留,移除 override 後可回到原 ui 行為。上述本機證據使用 debug prompt-input 檢查真正組成的輸入,沒有送出模型請求,也未聲稱模型一定遵從。官方來源與實際版本差異都要記錄;回覆行為需由新工作階段另行驗證。接著看,把容易膨脹的 AGENTS.md 改成可維護的入口。

原創流程示意圖,非產品介面截圖。
原創流程示意圖,非產品介面截圖。 · 圖片:Mokaair (© Mokaair)
閱讀完整文字說明

Three numbered stages: identify the starting point, perform the exercise, and verify the result. Original illustration, not a product screenshot.

回總目錄

  • 生活分享

    Codex 學習中心:完整教學目錄

    從安裝、第一個任務到 MD 規則與進階整合,規劃 60 篇 Codex 教學、十個單元。依程度、平台、需求或指令搜尋下一篇;尚未公開的教學會標示狀態,方便安排學習路線。

  • 生活分享

    Worktree 與多任務隔離

    Worktree 讓同一個 Git 程式庫有不同的工作目錄,各自承接不同分支。它適合讓兩項工作分開改檔,但資料庫、連接埠與外部服務仍可能共用,不能把檔案隔離當成所有資源隔離。

  • 生活分享

    實戰:製作小網站

    從 brief.md 規劃並製作 Small Steps 待辦網站,完成新增、完成、刪除、篩選與本機資料保存。將 HTML、CSS、資料函式、畫面事件與測試分開,以 Node 測試和瀏覽器操作驗收,並留下可重新啟動與還原的交接紀錄。

  • 生活分享

    用量與效率:減少重工

    記錄任務條件、模型選項、時間與成果,找出能減少無效重試和過多上下文的調整。

最新旅遊情報攻略

資料來源

生活分享