# 05 — Идентичность и системный промпт

**Русский** · [English](../05-system-prompt.md)

Чтобы агент знал своё имя, роль и соседей по команде, iapeer собирает ему системный промпт — текст, который рантайм получает до начала диалога. Промпт складывается из слоёв: часть пишет человек, часть собирает система.

## Зачем подменять системный промпт

У Claude и Codex есть собственный встроенный системный промпт — тот, что делает их «ассистентом по коду». iapeer заменяет его целиком: вместо родного промпта рантайм получает собранный iapeer текст, где агент описан как пир команды — со своим именем, ролью, знанием о соседях и общими правилами.

Замена идёт штатным механизмом каждого рантайма:

- **Claude** — флагом `--system-prompt-file <файл>`;
- **Codex** — настройкой `model_instructions_file` (`codex -c model_instructions_file=<файл>`), которая подменяет компилированные базовые инструкции.

Инфраструктурные рантаймы (Telegram, notifier) системный промпт не получают — это не языковые модели, им нечего им наполнять.

## Слои промпта

Промпт собирается из слоёв, от общего к частному. Каждый слой при пустом содержимом просто выпадает — лишних разделов не появляется.

```text
1. Блок идентичности (YAML)          ← система, всегда свежий
2. Доктрина IAPEER.md                 ← человек: общая + персональная
3. Реестр пиров                       ← система: кто ещё в команде
4. Доменные файлы (любой .md по имени)← человек/плагин
5. Доктринальные фрагменты            ← плагины-примитивы, машинно
```

### Слой 1 — блок идентичности

Динамический YAML-блок в начале промпта. Система синтезирует его при каждом запуске из профиля пира и фактов о хосте: имя, описание, рабочая папка, платформа, версия ОС, пользователь, имя машины, сегодняшняя дата. Значения экранируются, поэтому двоеточия, кавычки и переводы строк в описании не ломают разметку.

Этот слой всегда свежий — дата и факты о хосте подставляются заново на каждый запуск.

### Слой 2 — доктрина IAPEER.md

Главный слой, который наполняет человек, — для пира то же, что `CLAUDE.md` для проекта: постоянные инструкции и характер агента. Это два файла:

- **Общая доктрина** `~/.iapeer/IAPEER.md` — правила, действующие для всех пиров хоста: как отвечать на обращения, как обращаться с памятью, общие договорённости команды.
- **Персональная доктрина** `<папка-пира>/.iapeer/IAPEER.md` — роль и характер конкретного пира: кто он, чем занимается, какие у него зоны ответственности.

Порядок — от общего к частному: сначала общая доктрина, затем персональная. Частное идёт после общего и уточняет его. Каждый файл вставляется как отдельная помеченная секция со своей меткой-путём (HTML-комментарий с путём файла, видимый модели), чтобы агент понимал, откуда взялось каждое правило.

Оба файла редактирует оператор обычным markdown. Это и есть то место, где задаётся, кем будет агент.

### Слой 3 — реестр пиров

Система вставляет краткую сводку по всем пирам команды: имя, основной рантайм, список рантаймов, описание, природа. Так агент знает, к кому он может обратиться через `send_to_peer` и кто чем занимается. Сводка отсортирована по именам; если пиров нет — слой выпадает.

Здесь и работает само-документирующее `description` из профиля: оно ограничено по длине именно потому, что попадает в промпт каждого пира — раздутые описания стоили бы контекста всей команде.

Для сервис-пира — скажем, `timer` и `watcher` нотифаера — это описание несёт сам формат вызова: JSON-поля и пример. Так агент умеет управлять сервисом из одного своего промпта, а когда нужно больше — просто спрашивает сервис (на `help` тот отвечает полным форматом). Реестр учит вызову; остальное пир документирует сам.

### Слой 4 — доменные файлы по имени

Любой markdown-файл в корне `.iapeer/`, кроме `IAPEER.md`, едет в промпт своей секцией. Этот канал открыт и вам, не только плагинам: положите `SOUL.md` (или любое имя) в `~/.iapeer/` — его увидит каждый пир хоста; положите в папку `.iapeer/` одного пира — увидит только он. Выдать агенту дополнительный контекст — это просто добавить файл.

Как и доктрина, каждый файл бывает общим (`~/.iapeer/<ДОМЕН>.md`) и персональным (`<папка-пира>/.iapeer/<ДОМЕН>.md`), вставляется от общего к частному. Сканируется только корень `.iapeer/` — не подпапки. Файлы идут в детерминированном порядке (по алфавиту имени), каждый — отдельной помеченной секцией, пустые выпадают. Плагины пользуются этим же каналом для своих настроек (`<ДОМЕН>.md` на плагин); ваши файлы вручную и файлы плагина стоят бок о бок.

### Слой 5 — доктринальные фрагменты

Последний слой — фрагменты, которые генерируют машинно плагины-примитивы. Они лежат в подпапке `fragments/` обоих корней (`~/.iapeer/fragments/` и `<папка-пира>/.iapeer/fragments/`). Например, провайдер памяти кладёт сюда актуальную карту памяти агента.

Этот слой — самый изменчивый, поэтому он идёт последним и **перечитывается на каждом свежем подъёме сессии**. Когда у агента меняется память или другой машинный контекст, обновлённый фрагмент попадёт в промпт при следующем запуске.

## Сборка и неизменность в сессии

Слои склеиваются в один файл с пустой строкой между секциями. Этот файл и передаётся рантайму флагом подмены промпта.

Системный промпт фиксируется в момент подъёма сессии и не меняется, пока сессия живёт. Когда демон поднимает агента заново — свежим или продолжая прежний диалог, — он пересобирает файл, поэтому свежие фрагменты слоя 5 и актуальная дата подтягиваются на каждом подъёме. Это проверено: продолжение диалога переприменяет новый файл промпта, а не тянет старый.

Подмена доставляет системный промпт iapeer — личность пира. Она не отключает собственные нативные файлы инструкций рантайма: `CLAUDE.md` (Claude) или `AGENTS.md` (Codex) работают ровно так же, как вне iapeer, — читаются как постоянные инструкции, которым модель следует. Это два независимых канала — личность iapeer через подмену и нативные `CLAUDE.md`/`AGENTS.md` рантайма — и действуют они вместе. Так что если вы приносите готовый проект, где уже есть `CLAUDE.md`, он продолжит работать рядом с промптом iapeer; а сами эти файлы работают и без iapeer вообще.

## Что наполнять вам

Из всех слоёв руками наполняют два файла:

- `~/.iapeer/IAPEER.md` — общие правила команды (один раз на хост);
- `<папка-пира>/.iapeer/IAPEER.md` — роль каждого пира.

Остальное — блок идентичности, реестр, фрагменты — система и плагины собирают сами. Раскладку каталогов, где лежат эти файлы, разбирает [06 — Хранение](06-хранение.md).
