Подход · переезд
Переезд в новую сессию
Агент не помнит прошлый чат и не должен: память проекта лежит в репозитории. Переезд — это переход, у которого есть вход, выход и проверка на выходе.
Проблема. Каждый ход оплачивает входной контекст целиком. Долгая сессия дорожает быстрее, чем приносит пользу, а нужное — правило, решение, долг — тонет в переписке.
Решение. Состояние хранится в файлах: правила, доска долгов, письма шины, решения. Переезд идёт по протоколу: снимок, текст готовности, новый чат, старт по шагам.
Выгода. Новый чат начинается с короткого контекста и продолжает с того же места: ничего не пересказываем и не восстанавливаем по памяти.
01Состояние
Что остаётся после закрытия чата
После ротации остаётся только то, что лежит в репозитории. Поэтому состояние собирают заранее, а не восстанавливают потом:
- правила —
AGENTS.md: короткий список того, как работать и что проверять; - доска долгов —
DEBTS.md: открытые строки с тегами, приоритетами и условием закрытия; - письма шины — задачи и отчёты в
mailbox/, а не в чате; - решения — почему сделано так, а не иначе, с датой и проверкой.
У каждого файла есть история в git: снимок можно сравнить, откатить и проверить. У чата такого нет.
02Протокол старта
Первые шаги новой сессии
-
01
Почта
Проверка ящика без модели:
EMPTY— к задаче,PENDING— прочитать, ответить, перенести в обработанные. -
02
Дешёвые проверки
Скрипты сайта, доски и карты правил: один код возврата. Красный — не «готово», а работа.
-
03
Доска и состояние
Пересчитать долги, прочитать правила и хвост журнала, ответить одним экраном: почта, доска, следующий шаг.
-
04
Задача
Работа начинается с закрытия долга, а не с чтения истории: что открыто — то и делается.
03Алгоритм
Восемь шагов переезда
Схема одна и та же для любого бота: меняется только содержимое снимка.
Снимок делается до закрытия чата: пока сессия жива, видно, что именно недоделано. Текст готовности — короткая записка для следующего чата: где остановились, что проверено, что осталось. Дальше новый чат поднимает состояние по протоколу и продолжает с того же места.
04Расписание
Своё расписание у каждой сессии
Запись расписания живёт внутри сессии и хранит её идентификатор. На 26.10 на узле четыре активные записи с заголовками вида #2 …, у каждой свой sessionId. В чужой сессии запись не создаётся: это не ограничение интерфейса, а свойство модели.
Практический вывод: при переезде расписание переключает владелец. Старое останавливается, новое поднимается в новой сессии — вручную и явно. Мы пишем это на странице, потому что «само переедет» здесь было бы неправдой.
05Гейты
Что не пускает в прод
Новая сессия получает состояние, но не право считать его верным. На приёме стоит гейт pre-receive: он пропускает только зелёный результат verify.py. Красный — изменение остаётся у автора, а не на сервере.
Это тот же принцип, что и у ротации: доверять можно проверке, а не памяти о том, что «в прошлый раз работало».