Przejdź do głównej zawartości

Konfiguracja AGENTS.md w Codeksie

AGENTS.md to plik instrukcji w Markdownie, który Codex dołącza do każdej sesji, zanim cokolwiek zrobi. Codex łączy jeden plik globalny z ~/.codex/ z najwyżej jednym plikiem projektowym na katalog, od korzenia repozytorium w dół do katalogu startowego, więc głębsze pliki trafiają dalej i wygrywają. Od Codex 0.150.0 projekt oznaczony jako niezaufany nie dostarcza żadnych plików projektowych.

Ta strona jest dla programisty, który konfiguruje Codexa w prawdziwym repozytorium, i dla tech leada, który będzie odpowiadał za ten plik w zespole. Prosisz Codexa o nowy endpoint, a on sięga po Express w serwisie na Fastify, po czym uruchamia npm test w workspace na pnpm. Winny nie jest model: nic mu nie powiedziało, jak działa to repozytorium.

  • Krótki projektowy AGENTS.md z poleceniami, wyborami technologicznymi i twardymi regułami, których Codex nie wywnioskuje z kodu.
  • Globalny ~/.codex/AGENTS.md z twoimi osobistymi ustawieniami, oddzielony od reguł zespołu.
  • Zagnieżdżony plik dla jednego pakietu w monorepo i różnicę między AGENTS.md a AGENTS.override.md.
  • Deterministyczne sprawdzenie, co Codex wczytał, oraz sondę, która pokazuje, czy reguły zmieniają jego zachowanie.
  • Trzy prompty do skopiowania: szkic pliku, sonda reguł i audyt nieaktualnych lub sprzecznych linii.

Potrzebujesz zainstalowanego i zalogowanego Codexa oraz jednego wykonanego zadania. Jeśli ich nie masz, zacznij od strony uruchom pierwsze zadanie w Codexie.

Codex buduje jeden blok instrukcji na początku każdej sesji. Poniższe zachowanie odtworzyliśmy w testowym repozytorium na Codex CLI 0.157.1 w dniu 2026-09-26.

WarstwaGdzie szuka CodexReguła
Globalna~/.codex/ (albo $CODEX_HOME)AGENTS.override.md, jeśli istnieje, w przeciwnym razie AGENTS.md. Jeden plik.
Korzeń projektuIdzie w górę od katalogu startowego do pierwszego trafienia z project_root_markers (domyślnie .git)Wyznacza, gdzie zaczyna się łańcuch projektowy.
Każdy katalog, od korzenia do katalogu startowegoTen katalogPierwszy istniejący z: AGENTS.override.md, AGENTS.md, potem kolejne wpisy project_doc_fallback_filenames. Jeden plik na katalog.
BudżetWszystkie pliki projektowe razemproject_doc_max_bytes, domyślnie 32 768 bajtów (32 KiB). Plik globalny się do niego nie liczy.
ZaufanieProjektProjekt oznaczony jako niezaufany wczytuje tylko plik globalny (Codex 0.150.0 i nowsze).

Pierwszego dnia liczą się dwie konsekwencje. Po pierwsze, AGENTS.override.md ukrywa tylko AGENTS.md w tym samym katalogu; pliki powyżej nadal się wczytują. Po drugie, gdy łańcuch przekracza budżet, Codex obcina najgłębszy plik jako pierwszy, w pół zdania, bez żadnego komunikatu w terminalu (Codex CLI 0.157.1). Budżet szczegółowo omawia przewodnik po optymalizacji AGENTS.md.

Zacznij od szkicu napisanego przez Codexa, a potem go przytnij. Wygenerowany plik wymienia wszystko, co agent widział; twoim zadaniem jest zostawić tylko to, czego sam by nie ustalił.

  1. Otwórz korzeń repozytorium w terminalu i uruchom codex. Gdy Codex zapyta Trust this folder?, zaakceptuj. Niezaufany projekt nigdy nie wczytuje swoich plików projektowych, więc zapisany plik nigdy by się nie wczytał.

  2. Wpisz /init w prompcie Codexa. Codex przeskanuje repozytorium i zapisze AGENTS.md w korzeniu.

  3. Przytnij szkic do linii, które przechodzą test: „Czy Codex pomyliłby się bez tej linii?”. Nazwy frameworków oczywiste z package.json zwykle odpadają. Dokładne polecenie testów, zakazane biblioteki i katalogi, których nie wolno edytować, zwykle zostają.

  4. Zacommituj plik i dodaj go do CODEOWNERS, żeby każdą zmianę zatwierdzała konkretna osoba. Ten plik steruje każdą sesją w repozytorium, więc zasługuje na taki sam przegląd jak konfiguracja CI.

Plik projektowy, który przetrwa takie cięcie, jest krótki. Ten jest dla API na Fastify w workspace na pnpm:

# Orders API
## Commands
- Install: `pnpm install --frozen-lockfile`
- Test one file: `pnpm vitest run path/to/file.test.ts`
- Full gate before you say you are done: `pnpm typecheck && pnpm lint && pnpm test`
## Hard rules
- The HTTP framework is Fastify. Never add Express or its middleware.
- Validate every request body with the Zod schemas in `src/schemas/`.
- Log with the `pino` instance from `src/logger.ts`. No `console.log` in `src/`.
- Never edit files under `src/generated/`; run `pnpm codegen` instead.
## Definition of done
- A new endpoint ships with a test in `tests/routes/` that fails without the change.
- Report the gate output. If a command fails, say so; do not claim success.

Ostatnia instrukcja jest kluczowa. Szkic, który oddziela to, co przeczytał, od tego, co zgadł, mówi ci dokładnie, które linie sprawdzić przed commitem.

AGENTS.md to rada, którą czyta model. Wszystko, co musi zachodzić za każdym razem, należy do mechanizmu, który przy naruszeniu kończy się jawnym błędem.

RegułaGdzie ją umieścićDlaczego
„Uruchom pnpm test przed zakończeniem”AGENTS.md i to samo polecenie w CICodex zwykle się do tego stosuje; CI egzekwuje to zawsze.
„Żadnego console.log w src/”Reguła lintera plus jedna linia w AGENTS.mdBramka lintera łapie to, co model przeoczy.
Dwunastokrokowa procedura wydania lub migracjiSkill w .agents/skills/Wczytuje się tylko wtedy, gdy zadanie jej potrzebuje, a nie w każdej turze.
Sandbox, zatwierdzenia, dozwolony modelconfig.tomlTo ustawienia, które Codex egzekwuje, a nie rady. Zobacz konfigurację Codexa.

Plik globalny idzie z tobą do każdego repozytorium, więc zawiera preferencje dotyczące tego, jak pracujesz, a nigdy fakty o jednym projekcie. Ogranicz go do kilku linii; wczytuje się w każdej sesji.

Okno terminala
# terminal
mkdir -p ~/.codex
$EDITOR ~/.codex/AGENTS.md
# Personal defaults
- Before you change more than three files, show me a plan and wait.
- Prefer small commits with conventional messages (feat:, fix:, chore:).
- Never push, force-push, or open a pull request unless I ask.
- When a repository's AGENTS.md disagrees with this file, follow the repository.

Ostatnia linia rozstrzyga konflikty na piśmie. Plik projektowy i tak wczytuje się później i zwykle wygrywa, ale zapisanie tego usuwa zgadywanie. Na tymczasową zmianę osobistą utwórz ~/.codex/AGENTS.override.md; zastępuje globalny AGENTS.md, dopóki go nie usuniesz.

Dodaj zagnieżdżony AGENTS.md dla jednego pakietu w monorepo

Dział zatytułowany „Dodaj zagnieżdżony AGENTS.md dla jednego pakietu w monorepo”

W monorepo jeden pakiet często łamie reguły z korzenia. Umieść plik w tym pakiecie i uruchamiaj Codexa z jego wnętrza.

repo/
AGENTS.md # workspace-wide rules, always loaded
packages/
billing/
AGENTS.md # adds billing rules on top of the root
legacy-api/
AGENTS.override.md # wins over legacy-api/AGENTS.md
AGENTS.md # ignored while the override exists

Uruchomiony z packages/billing/ Codex wczytuje plik globalny, potem AGENTS.md z korzenia, a na końcu packages/billing/AGENTS.md. Uruchomiony z korzenia repozytorium nie wczytuje żadnego pliku pakietu, bo przejście kończy się na katalogu startowym. To najczęstszy powód, dla którego reguła pakietu „nie działa”.

Z AGENTS.override.md korzystaj oszczędnie, na tymczasowy etap, taki jak migracja, i w pierwszej linii zapisz warunek jego usunięcia. Łatwo o nim zapomnieć, a dopóki ktoś go nie skasuje, ukrywa sąsiedni AGENTS.md.

Jeśli zespół trzyma już wskazówki dla agentów w innym pliku, dodaj go jako nazwę zapasową w ~/.codex/config.toml zamiast go powielać:

~/.codex/config.toml
project_doc_fallback_filenames = ["TEAM_GUIDE.md"]

Codex sprawdza nazwy zapasowe tylko wtedy, gdy w katalogu nie ma ani AGENTS.override.md, ani AGENTS.md.

Pytanie „które pliki instrukcji wczytałeś?” daje ci to, co model pamięta. codex debug prompt-input wypisuje w formacie JSON prompt, który Codex by wysłał, bez wywoływania modelu:

Okno terminala
# terminal, z katalogu, z którego zwykle uruchamiasz Codexa
codex debug prompt-input "ping" > /tmp/codex-prompt.json
jq -r '.. | .text? // empty | select(startswith("# AGENTS.md instructions"))' /tmp/codex-prompt.json

Wynik to jeden blok <INSTRUCTIONS> wypisany z prawdziwymi podziałami wierszy. Najpierw twój plik globalny, potem separator --- project-doc ---, a dalej kolejne pliki projektowe od korzenia do katalogu startowego. Z packages/billing/ w drzewie powyżej powinieneś zobaczyć trzy sekcje. Jeśli brakuje plików projektowych, folder jest oznaczony jako niezaufany. Jeśli ostatni plik kończy się w pół zdania, przekroczyłeś budżet.

Plik, który się wczytuje, to jeszcze nie plik, który działa. Sprawdź twarde reguły przebiegiem tylko do odczytu i porównaj odpowiedź z oczekiwaną, zanim powierzysz plikowi prawdziwe zadania.

Zapisz powyższy prompt jako probe.txt w korzeniu repozytorium. Uruchom go nieinteraktywnie, żeby odpowiedź była powtarzalna:

Okno terminala
# terminal, korzeń repozytorium
codex exec --sandbox read-only "$(cat probe.txt)"

Każda odpowiedź „no instruction” to luka, którą akceptujesz albo zamykasz jedną linią. Każda odpowiedź cytująca niewłaściwą linię to konflikt do naprawienia. Trzymaj probe.txt w repozytorium i uruchamiaj go ponownie po każdej zmianie AGENTS.md.

Sonda mówi ci, że Codex zamierza stosować się do pliku. Bramki dowodzą, że to zrobił. Polecenia z sekcji „Definition of done” trzymaj w CI, żeby sesję, która zignorowała regułę, zatrzymał build, a nie czujność recenzenta. Jak przeglądać zmiany bez czytania każdej linii, opisuje strona przejrzyj zmiany Codexa przed commitem.

Dodaj wytyczne przeglądu, które Codex stosuje w pull requestach

Dział zatytułowany „Dodaj wytyczne przeglądu, które Codex stosuje w pull requestach”

Przegląd w Codexie czyta te same pliki. Instrukcje przeglądu wbudowane w Codex CLI 0.157.1 każą recenzentowi korzystać z plików instrukcji z korzenia i z zakresu zmienionych plików, a przy konflikcie wygrywają wskazówki bardziej szczegółowe. Dodaj sekcję, na podstawie której recenzent może działać:

## Review guidelines
- Flag any route in src/routes/ registered without the auth preHandler.
- Flag SQL built with string concatenation instead of the query builder.
- Treat a missing test for a new endpoint as a P1 finding.

Wypróbuj ją lokalnie przed pushem poleceniem codex review --base main. Aby te same reguły działały na GitHubie z @codex review, przejdź do strony połącz Codexa z GitHubem.

AGENTS.md nie jest wyłącznie plikiem Codexa. Claude Code czyta AGENTS.md, gdy w repozytorium nie ma CLAUDE.md, od wersji v2.1.277 na kanale wydań latest (v2.1.281 dla Bedrock, Google Cloud, Foundry, bramek LLM i sesji bez telemetrii; sprawdzone 2026-09-26); przełącznik jest w sekcji „Project instructions” w /config. Zespół, który używa obu narzędzi, może trzymać jeden plik zamiast dwóch, które z czasem się rozjadą. Szerszy obraz daje strona AGENTS.md i CLAUDE.md jako zwięzły kontekst repozytorium.

Większość awarii to problemy z wczytywaniem, a nie z modelem. Sprawdzaj je w tej kolejności.

ObjawPrzyczynaNaprawa
W codex debug prompt-input widać tylko reguły globalneProjekt jest oznaczony jako niezaufanyUruchom ponownie codex w folderze i zaakceptuj Trust this folder? albo ustaw trust_level = "trusted" w sekcji [projects."/absolute/path"] w ~/.codex/config.toml.
Reguły pakietu nigdy nie działająCodex został uruchomiony z korzenia repozytoriumUruchamiaj Codexa w katalogu pakietu. Reguły, które mają obowiązywać wszędzie, trzymaj w pliku w korzeniu.
AGENTS.md w katalogu jest ignorowanyObok leży AGENTS.override.md, być może pustyUsuń override albo przenieś jego treść i wtedy go usuń.
Najgłębszy plik urywa się w pół zdaniaŁańcuch przekracza project_doc_max_bytesNajpierw przytnij plik w korzeniu. Podniesienie limitu tylko ukrywa problem; przewodnik po optymalizacji ma kontrolę budżetu w CI.
Zmiany w ~/.codex/AGENTS.md nic nie dająCODEX_HOME wskazuje inny katalogUruchom echo $CODEX_HOME. Gdy zmienna jest ustawiona, Codex czyta plik globalny z tego katalogu.
Plik się wczytuje, a Codex i tak łamie regułęReguła jest mglista albo przeczy jej inna liniaPrzepisz ją jako polecenie z konkretną ścieżką lub komendą, a potem wesprzyj regułą lintera lub testem.
Codex uruchamia polecenie, które już nie istniejePlik zestarzał się po zmianie narzędziPo każdej zmianie skryptów w package.json lub CI uruchom poniższy prompt audytowy.