# סוכן טרמינל

> סוכן שקורא, מחפש ועורך קבצים בפרויקט שלך ומריץ פקודות במחשב שלך, באישור שלך.


הפקודות האלה דורשות CLI מותקן ומחובר. פרטים ב[התקנת ה-CLI](/he/cli/install).

יש להריץ את `notholy` בתוך פרויקט. הסוכן יכול להשתמש בכלים האלה במחשב שלך:

| כלי | מה עושה |
|---|---|
| `read`, `grep`, `glob` | קריאה וחיפוש בקבצים |
| `edit`, `write` | שינוי קבצים |
| `bash` | הרצת פקודה |
| `cve_lookup`, `kb_search`, `web_search` | כלי מחקר מרוחקים |

## מצבים

| מצב | התנהגות |
|---|---|
| `plan` | קריאה בלבד |
| `ask` | ברירת מחדל. שואל לפני כל כתיבה ולפני כל פקודה |
| `auto-edit` | עורך בלי לשאול. פקודות עדיין דורשות אישור |
| `yolo` | אף פעם לא שואל. צריך `--yolo` בכל הרצה |

הפקודות רצות במחשב שלך ובהרשאה שלך. השרתים של NotHoly לא מריצים שום דבר מול המטרות שלך.

הוראות לפרויקט נכתבות בקובץ `NOTHOLY.md` בתיקיית השורש. תוכן של קבצים ופלט של פקודות נחשבים לנתונים, אף פעם לא להוראות לסוכן.

דגלים: `--mode`, `--model`, `--yolo`, וגם `-p` להרצת פרומפט אחד ויציאה.

פקודות סלאש: `/model`, `/effort` (off, low, high או max), `/mode` (plan, ask או auto-edit), `/cost`, `/compact`, `/autocompact`, `/mcp`, `/resume` (הסשן האחרון), `/exit`. הסשנים נשמרים בתיקייה `~/.notholy/sessions` עם הרשאה `600`.

```bash
notholy --mode plan -p "map the auth flow in this repo"
```

## Engagements

`notholy engage` מתעד מה מותר לבדיקה לגעת בו ובודק פקודות מול זה לפני שהן רצות. נדרשים שם, סקופ והפניה להרשאה: חוזה, URL של תוכנית או טיקט. הסקופ מקבל hosts, תווים כלליים `*.`, כתובות IP ו-CIDR. `--exclude` גובר על הסקופ, ו-`--from` ו-`--until` קובעים חלון.

```bash
notholy engage init --name acme-q4 --scope "*.acme-staging.test,10.20.0.0/24" --exclude vpn.acme-staging.test --until 2026-12-20 --auth "contract 2026-117"
notholy engage status
notholy engage off
```

הכללים והלוג נשארים ב-`~/.notholy/engagements/<id>/`, מחוץ לריפו, כך שריפו לא יכול לשתול סקופ משלו. שום דבר לא נשלח.

כש-engagement פעיל, הסוכן קורא את היעדים מכל פקודת `bash` לפני שהיא רצה. פקודה בסקופ עוברת את האישור הרגיל. יעד מחוץ לסקופ מחייב הקלדת ה-host, והחריגה נרשמת. `yolo` כבוי. יעד שידוע רק בזמן ריצה, כמו משתנה shell, מקבל אזהרה לבדיקה שלך.

כל החלטה נכתבת ל-`log.jsonl` עם הפקודה, היעדים, קוד היציאה ו-SHA-256 של הפלט, וכל רשומה משורשרת ל-hash של קודמתה.

`notholy connect claude` מתקין את אותה בדיקה כ-hook של `PreToolUse` על קריאות Bash. שם, פקודה מחוץ לסקופ נדחית.

הבדיקה קוראת טקסט shell ולא מפענחת DNS. היא תופסת טעויות תפעול ואינה sandbox, כך שפקודה יכולה להגיע ל-host שלא מוזכר בה.

## סשנים ארוכים

לכל מודל יש גודל הקשר, שמופיע בשדה `context_length` בתשובה של `GET /v1/models`. הסוכן קורא אותו משם ודוחס את השיחה לפני שבקשה תעבור כ-80% ממנו. כשזה קורה מוצגת שורה עמומה.

הדחיסה מחליפה את החלק הישן של השיחה בסיכום אחד, שהמודל של הסשן כותב בקריאה בלי כלים. הסיכום שומר את המטרה, ההחלטות, הקבצים שנגעו בהם, הממצאים, הפקודות שהורצו והמשימות הפתוחות. הודעת המערכת, הבקשה האחרונה שלך וההודעות החדשות ביותר, עד כ-30% מההקשר, נשארות כמו שהן, אלא שפלט כלי ארוך מאוד בחלק הזה יכול להיחתך באמצע. קריאת כלי והתוצאות שלה אף פעם לא מופרדות. קריאת הסיכום מחויבת כמו כל בקשה אחרת ונספרת בפלט של `/cost`.

| פקודה | מה עושה |
|---|---|
| `/compact` | דוחסת עכשיו ומדפיסה את הגודל המשוער לפני ואחרי |
| `/compact keep the auth findings` | אותו דבר, ומכוונת את הסיכום למה שצריך להתמקד בו |
| `/autocompact on\|off` | מפעילה או מכבה דחיסה אוטומטית בסשן הזה. בהתחלה היא פועלת |

אם קריאת הסיכום נכשלת, הסוכן שומר את ההודעות החדשות ביותר, משמיט את הישנות ומודיע על כך. הפסקה, או שגיאה של חשבון, קרדיטים או מגבלת קצב, עוצרות את הדחיסה ומשאירות את ההיסטוריה שלמה. אם ה-API עונה [`context_length_exceeded`](/he/guides/errors#אורך-הקשר), הסוכן דוחס פעם אחת ומנסה שוב את אותו שלב. עם `/autocompact off` השגיאה מגיעה אליך.

## הבא

- [חיבור והרצה](/he/cli/connect-and-run)
- [כלי ה-harness](/he/chat/harness)
