עוזר האתר
שלום! איך אפשר לעזור לכם היום?
מדריך OpenAI

6. AGENTS.md: הזיכרון הקבוע של הפרויקט

חלק ב׳: שליטה והתאמה אישיתפרק 6 מתוך 16זמן קריאה: כ-8 דקות

Codex לא צריך שתחזרו על אותן הנחיות בכל שיחה. קובץ AGENTS.md נותן לו הוראות קבועות — לפני שהוא נוגע בקוד — וקובצי Rules קובעים אילו פקודות מותר לו להריץ מחוץ ל-sandbox בלי לשאול. בפרק הזה נראה איך בונים את שניהם נכון, ומתי להשתמש בכל אחד.

מה זה AGENTS.md ולמה זה קיים

Codex קורא קובצי AGENTS.md לפני שהוא מתחיל לעבוד (פעם אחת בכל הרצה; ב-TUI זה בדרך כלל אומר פעם אחת לכל סשן). מי שמכיר את CLAUDE.md מ-Claude Code ימצא כאן רעיון דומה: קובץ טקסט פשוט עם הנחיות עבודה קבועות לפרויקט, שנטען אוטומטית ולא צריך להעתיק שוב בכל שיחה.

איך Codex מוצא את ההנחיות

Codex בונה "שרשרת הנחיות" שלמה בכל הפעלה, לפי סדר עדיפויות:

  1. תחום גלובלי: בתיקיית הבית של Codex (~/.codex כברירת מחדל, או המיקום שהוגדר ב-CODEX_HOME) — Codex קורא AGENTS.override.md אם הוא קיים, אחרת AGENTS.md. רק קובץ אחד לא-ריק נטען בשכבה הזו.
  2. תחום הפרויקט: החל משורש הפרויקט (בדרך כלל שורש ה-Git) וכלה בתיקיית העבודה הנוכחית — Codex בודק בכל תיקייה לאורך הדרך: קודם AGENTS.override.md, אחר כך AGENTS.md, ואז שמות חלופיים שהוגדרו ב-project_doc_fallback_filenames. קובץ אחד לכל היותר לכל תיקייה.
  3. סדר המיזוג: Codex משרשר את הקבצים מהשורש כלפי מטה, עם שורות ריקות ביניהם. קבצים קרובים יותר לתיקיית העבודה שלכם גוברים על הנחיות מוקדמות יותר, כי הם מופיעים מאוחר יותר בפרומפט המשורשר.

קבצים ריקים מדולגים. Codex מפסיק להוסיף קבצים כשהגודל המצטבר מגיע למגבלה שמוגדרת ב-project_doc_max_bytes (32KB כברירת מחדל) — אפשר להעלות את המגבלה, או לפצל הנחיות בין תיקיות מקוננות.

הוראות גלובליות: אותן העדפות בכל פרויקט

הנחיות ב-~/.codex/AGENTS.md חלות על כל פרויקט שתפתחו:

  1. ודאו שהתיקייה קיימת:
    mkdir -p ~/.codex
  2. צרו את ~/.codex/AGENTS.md:
    # ~/.codex/AGENTS.md
    
    ## Working agreements
    
    - Always run `npm test` after modifying JavaScript files.
    - Prefer `pnpm` when installing dependencies.
    - Ask for confirmation before adding new production dependencies.
  3. בדקו שההנחיות נטענות:
    codex --ask-for-approval never "Summarize the current instructions."
    תוצאה צפויה: Codex מצטט את הסעיפים מהקובץ הגלובלי לפני שהוא מציע עבודה.

כדי לעקוף זמנית את ההנחיות הגלובליות בלי למחוק אותן, צרו ~/.codex/AGENTS.override.md. מחיקת הקובץ הזה מחזירה את ההנחיות הרגילות.

הנחיות לפרויקט, עם חריגות לתתי-תיקיות

קובץ ברמת הריפו שומר על נורמות הפרויקט, ועדיין יורש את ברירות המחדל הגלובליות:

# AGENTS.md

## Repository expectations

- Run `npm run lint` before opening a pull request.
- Document public utilities in `docs/` when you change behavior.

לצוותים עם כללים שונים בתת-תיקייה, מוסיפים AGENTS.override.md ספציפי. לדוגמה, בתוך services/payments/:

# services/payments/AGENTS.override.md

## Payments service rules

- Use `make test-payments` instead of `npm test`.
- Never rotate API keys without notifying the security channel.

הפעלה מתוך התיקייה הזו מדגימה את סדר העדיפויות:

codex --cd services/payments --ask-for-approval never "List the instruction sources you loaded."

תוצאה צפויה: Codex מדווח על הקובץ הגלובלי ראשון, קובץ השורש שני, וה-override של payments אחרון. Codex מפסיק לחפש ברגע שהוא מגיע לתיקיית העבודה שלכם — כדאי למקם override קרוב ככל האפשר לעבודה הספציפית.

כללי סקירת קוד ב-AGENTS.md

עבור סקירת קוד אוטומטית של Codex ב-GitHub, אפשר להוסיף סעיף ## Code Review Rules ל-AGENTS.md הקרוב ביותר לקוד שהכללים חלים עליו — בדיקות כלל-ריפו בשורש, ובדיקות ספציפיות לשירות בקובץ מקונן:

## Code Review Rules

### Experiment cohorts

- Do not filter treatment comparisons on post-exposure behavior, including conversion or retention.
  Safe path: build cohorts from assignment or exposure; report conversion as an outcome.

כדאי לשמור על כללים תמציתיים, להסביר את ההתנהגות שיש לסמן ואת הדרך הבטוחה החלופית, ולהשאיר בדיקות פורמט ולינטינג ל-CI.

שמות קבצים חלופיים

אם בריפו שלכם כבר יש קובץ הנחיות בשם אחר (למשל TEAM_GUIDE.md), אפשר להוסיף אותו לרשימת השמות החלופיים:

# ~/.codex/config.toml
project_doc_fallback_filenames = ["TEAM_GUIDE.md", ".agents.md"]
project_doc_max_bytes = 65536

לאחר הפעלה מחדש, Codex בודק בכל תיקייה לפי הסדר: AGENTS.override.md, AGENTS.md, TEAM_GUIDE.md, .agents.md. שמות שלא ברשימה מתעלמים מהם לצורך גילוי הנחיות.

איך מוודאים מה נטען בפועל

הריצו codex --ask-for-approval never "Summarize the current instructions." משורש הריפו כדי לראות את ההנחיות מהקבצים הגלובליים והפרויקטיים לפי סדר העדיפות. השתמשו ב-codex --cd subdir --ask-for-approval never "Show which instruction files are active." כדי לאשר שחריגות מקוננות אכן מחליפות כללים רחבים יותר. Codex בונה מחדש את שרשרת ההנחיות בכל הרצה, אז אין צורך לנקות מטמון — אם משהו נראה לא מעודכן, פשוט הפעילו מחדש מהתיקייה הרצויה.

Rules: אילו פקודות מותר להריץ בלי לשאול

AGENTS.md אומר ל-Codex איך לעבוד. קובצי Rules (עדיין ניסיוניים ועשויים להשתנות) שולטים במשהו אחר: אילו פקודות מוחשיות מותר לו להריץ מחוץ ל-sandbox בלי לעצור ולבקש אישור. זה המקום להגדיר "מותר להריץ gh pr view תמיד" או "אסור להריץ rm -rf לעולם" — לא הנחיה כללית, אלא כלל טכני על פקודה ספציפית.

יצירת קובץ כללים

  1. צרו קובץ .rules תחת תיקיית rules/ ליד שכבת הגדרות פעילה, למשל ~/.codex/rules/default.rules.
  2. הוסיפו כלל — הדוגמה הזו מבקשת אישור לפני הרצת gh pr view מחוץ ל-sandbox:
    # Prompt before running commands with the prefix `gh pr view` outside the sandbox.
    prefix_rule(
        # The prefix to match.
        pattern = ["gh", "pr", "view"],
    
        # The action to take when Codex requests to run a matching command.
        decision = "prompt",
    
        # Optional rationale for why this rule exists.
        justification = "Viewing PRs is allowed with approval",
    
        match = [
            "gh pr view 7888",
            "gh pr view --repo openai/codex",
        ],
        not_match = [
            # Does not match because the `pattern` must be an exact prefix.
            "gh pr --repo openai/codex view 7888",
        ],
    )
  3. הפעילו את Codex מחדש כדי שהכלל ייטען.

Codex סורק את rules/ בכל שכבת הגדרות פעילה בעת ההפעלה, כולל תצורת צוות ושכבת המשתמש ב-~/.codex/rules/. כללים ברמת הפרויקט תחת <repo>/.codex/rules/ נטענים רק כשהשכבה .codex/ של הפרויקט מהימנה (trusted).

כשמאשרים פקודה ומוסיפים אותה לרשימת האמון ישירות מה-TUI, Codex כותב אותה ל-~/.codex/rules/default.rules כדי שהרצות עתידיות ידלגו על השאלה. וכש-Smart approvals פעיל (ברירת המחדל), Codex עשוי להציע prefix_rule בעצמו במהלך בקשת אישור — כדאי לבדוק כל הצעה כזו לפני קבלתה.

שדות הכלל

שדהתפקיד
pattern (חובה)רשימה שמגדירה את קידומת הפקודה להתאמה — מחרוזת בודדת, או רשימת חלופות באותה עמדה, למשל ["view", "list"]
decision (ברירת מחדל allow)allow — רץ בלי לשאול; prompt — שואל בכל התאמה; forbidden — חוסם בלי לשאול. כשכמה כללים תואמים, ההחלטה המחמירה ביותר גוברת (forbidden > prompt > allow)
justification (אופציונלי)הסבר קריא לאדם שעשוי להופיע בבקשות אישור או בהודעות דחייה; כדאי לכלול חלופה מומלצת עבור forbidden
match / not_match (ברירת מחדל [])דוגמאות ל"בדיקות יחידה" מוטמעות — Codex מוודא אותן בטעינת הכלל, כדי לתפוס טעויות מוקדם

פקודות מורכבות ו-shell wrappers

כלים מסוימים עוטפים כמה פקודות shell בקריאה אחת, למשל ["bash", "-lc", "git add . && rm -rf /"]. אם הסקריפט הוא שרשרת ליניארית של מילים פשוטות (בלי הרחבת משתנים, $FOO, תווים כלליים וכד') מחוברות באופרטורים בטוחים (&&, ||, ;, |), Codex מפרק אותה לפקודות נפרדות ומחיל את הכללים על כל אחת בנפרד — כך שגם אם git add מותר, rm -rf / באותה שורה עדיין ייבדק בנפרד ולא "יוברח" יחד עם הפקודה הבטוחה. כשהסקריפט משתמש בתכונות מתקדמות יותר (הפניות קלט/פלט, $(...), משתני סביבה, תווים כלליים, בקרת זרימה), Codex לא מפרק אותו, והכלל מוחל על ההרצה השלמה כמקשה אחת.

בדיקת קובץ כללים

codex execpolicy check --pretty 
  --rules ~/.codex/rules/default.rules 
  -- gh pr view 7888 --json title,body,comments

הפקודה מדפיסה JSON עם ההחלטה המחמירה ביותר וכל הכללים שהתאימו, כולל justification. אפשר לשלב כמה קבצי כללים עם כמה דגלי --rules.

שפת הכללים

קובצי .rules כתובים ב-Starlark — תחביר שדומה ל-Python, אבל מתוכנן להיות בטוח להרצה: מנוע הכללים מריץ אותו בלי תופעות לוואי (כמו נגיעה במערכת הקבצים).

AGENTS.md מול Rules: מתי להשתמש בכל אחד

AGENTS.mdRules
מה זה קובעהנחיות עבודה, קונבנציות, הקשר על הפרויקטאילו פקודות מותר/אסור/צריך לאשר מחוץ ל-sandbox
איך Codex "קורא" את זהכטקסט בפרומפט — הצעה שהמודל מנסה לפעול לפיהכמנוע כללים דטרמיניסטי, נבדק לפני הרצת כל פקודה
דוגמה"הריצו npm test אחרי שינוי קבצי JS""אפשר להריץ gh pr view תמיד, אבל תמיד לשאול לפני rm -rf"

כלל אצבע: אם זו העדפת עבודה או קונבנציה — זה שייך ל-AGENTS.md. אם זו החלטה בינארית על פקודת shell ספציפית שצריכה להיאכף בעקביות — זה שייך ל-Rules.

Personalize: התאמת Codex להעדפות שלכם

מעבר להנחיות ברמת הפרויקט, אפשר להתאים את הסגנון הכללי של Codex להעדפות האישיות שלכם, דרך Settings > Personalization:

  • אישיות: בוחרים Friendly, Pragmatic או None כברירת מחדל לסגנון התקשורת — זה משנה איך Codex מתקשר, לא מה שהוא מסוגל לעשות.
  • הוראות אישיות (custom instructions): העדפות שרוצים ש-Codex יעקוב אחריהן בכל שיחה. ב-Codex, הוראות כאלה נשמרות בפועל בקובץ AGENTS.md הגלובלי שלכם — כלומר זו למעשה אותה מנגנון שראינו למעלה, רק דרך תפריט הגדרות.
  • Memories: מאפשרות ל-ChatGPT לשאת הקשר שימושי משיחות קודמות לתוך עבודה עתידית — העדפות יציבות, זרימות עבודה חוזרות, וקונבנציות פרויקט. Memories נפרדות מהנחיות פרויקט מחייבות: הנחיות שחייבות לחול תמיד שייכות ל-AGENTS.md או לתיעוד פרויקט מנוהל בגרסאות, לא למנגנון הזיכרון.
בקצרה
  • AGENTS.md נטען אוטומטית בכל הרצה, משכבה גלובלית (~/.codex/AGENTS.md) ומכל תיקייה בדרך לתיקיית העבודה, מהשורש כלפי מטה — קרוב יותר גובר על רחוק יותר.
  • AGENTS.override.md עוקף זמנית קובץ רגיל באותה תיקייה, בלי למחוק אותו.
  • אפשר להוסיף שמות קבצים חלופיים עם project_doc_fallback_filenames, ולהעלות את מגבלת הגודל (32KB כברירת מחדל) עם project_doc_max_bytes.
  • Rules (ניסיוני) שולטות באילו פקודות shell מותר להריץ מחוץ ל-sandbox בלי לשאול — כתובות ב-Starlark, בקובצי .rules תחת rules/.
  • Codex מפרק פקודות shell מורכבות לרכיבים בטוחים כדי שכלל מותר לא "יבריח" פקודה מסוכנת שהוצמדה אליו.
  • אישיות, הוראות אישיות ו-Memories מותאמים דרך Settings > Personalization; הוראות אישיות נשמרות בפועל ב-AGENTS.md הגלובלי.