Ночная смена для твоего компьютера. Вечером пишешь строку — утром читаешь отчёт.
Задачу берёт агент, работает без тебя, а потом второй агент проверяет за первым: запускает написанное, подкладывает плохой вход и пишет ПРИНЯТО или ОТКЛОНЕНО. Отчёт содержит команду, которую он выполнил, и её дословный вывод — чтобы враньё было видно.
Это не фреймворк. Это сто строк на bash поверх goose.
Тому, у кого есть папка с работой — проект, тексты, выгрузки, архив — и дела, которые он раз за разом делает руками. И тому, кто уже пробовал агента в чате и устал сидеть рядом, подтверждать каждый шаг и объяснять по третьему разу.
Разница с чатом одна: здесь ты не участвуешь. Написал строку — ушёл. Вернулся — читаешь, что сделано и что сказал приёмщик.
- починить падение в скрипте, добавить тест и показать вывод
- разобрать папку загрузок: переименовать по дате, разложить по типам
- свести двенадцать месячных выгрузок в одну таблицу
- пройтись по текстам и выправить одинаковую ошибку во всех
- собрать поиск по своим заметкам и проверить его на пяти вопросах
Общее у этих задач: результат видно глазами, и понятно, чем проверить.
Кто хочет собеседника — это не он, коробка не разговаривает. Кто ждёт, что агент сам придумает, чем заняться, — она берёт только то, что написано. Кто не готов завести ключ модели — без него не работает вообще.
git cloneиbash ustanovka.sh— ставит goose, заводит файл настроек.- Вписать ключ в
nastroyki. DeepSeek берётся на platform.deepseek.com, задача стоит копейки. - Проверить на пустяке — команда работает из любой папки:
ZADACHA="создай файл zhivoy.txt со строкой ЖИВОЙ и покажи его" bash ~/korobka/zapusk.sh - Открыть
otchety/и увидеть отчёт: что взял, чем кончилось, что сказал приёмщик. - Дать настоящую задачу — в своей папке, с проверкой внутри задачи.
git clone https://github.com/buyan201430-code/korobka.git && cd korobka && bash ustanovka.sh
Дальше вписать свой ключ в файл nastroyki. По умолчанию DeepSeek — задача стоит копейки.
MiniMax включается двумя строками там же.
Одна задача прямо сейчас:
ZADACHA="почини в moj-proekt/schet.py деление на ноль, добавь тест и покажи вывод" RABOCHAYA=~/moj-proekt bash ~/korobka/zapusk.sh
Через очередь — строка в zadachi.md:
- [ ] разобрать папку ~/Downloads: переименовать по дате и разложить по типам
и запуск RABOCHAYA=~/Downloads bash ~/korobka/zapusk.sh. Берётся верхняя строка без галочки,
сделанное коробка помечает [x] сама.
По расписанию — родным планировщиком goose или через cron:
0 3 * * * RABOCHAYA=~/moj-proekt bash ~/korobka/zapusk.sh
Один прогон — два вызова модели: исполнитель и приёмщик. На DeepSeek это копейки за задачу,
но если ставишь на ночное расписание, считай по две задачи за ночь, а не по одной.
Приёмку можно отключить на прогон: BEZ_PRIEMKI=1.
Ключ живёт только в файле nastroyki, который в git не попадает. В zadachi.md ключи не писать —
этот файл отслеживается.
Границы — работать только внутри RABOCHAYA, ничего не удалять снаружи, не делать git push —
передаются модели текстом задания. Скриптом они не обеспечиваются: песочницы здесь нет,
и агент, который решит выйти за папку, технически может это сделать. Держи в RABOCHAYA то,
что не жалко потерять, и не запускай прогон там, откуда есть доступ к чужим репозиториям.
Прогон дольше часа убивается сторожем — PREDEL=7200 меняет предел. У приёмки свой предел,
PREDEL_PRIEMKI=1800 по умолчанию.
Пока прогон идёт, очередь заперта каталогом .zamok-ocheredi: второй прогон не возьмёт ту же
строку, а скажет, что очередь занята. Если прогон убили силой, замок останется — снять rmdir.
Проверено на macOS (Apple Silicon). Под Linux код разведён (sed обеих версий), но живого прогона там не было.
Плохо: почини поиск
Хорошо: в poisk.py добавь порог 0.62, ниже — печатать НЕ НАЙДЕНО; проверь на трёх словах и покажи вывод
Правило одно: в задаче должно быть, что проверить и чем измерить. Без проверки агент сдаёт правдоподобное — не потому что ленив, а потому что «сделано» без критерия определяет он сам.
Приёмка — то место, где коробка может соврать сама себе: разбирать её вердикт небрежно значит превращать отказ в успех. На это есть проба:
bash proba.sh
Она гоняет zapusk.sh на заглушке вместо goose — без сети, без ключа и без платных вызовов —
и проверяет семь случаев: отказ, в объяснении которого встретилось слово ПРИНЯТО; чистое
ПРИНЯТО тремя строками; молчание приёмщика; приёмщика, упавшего ненулевым кодом; вердикт без
строк ЗАПУСКАЛ и ВЫВОД; отказ исполнителя; длинный дословный вывод. По каждому печатает ОК или
ПРОВАЛ, в конце число провалов; при любом провале код возврата ненулевой.
| файл | что делает |
|---|---|
zapusk.sh |
весь механизм: очередь, прогон, сторож времени, приёмка, отчёт |
proba.sh |
проба приёмки на заглушках, без сети и ключей |
zadachi.md |
список задач словами |
nastroyki |
ключ и выбор модели, в git не попадает |
otchety/ |
отчёт за день и полный лог каждого прогона |
Автономный агент обычно умирает не от нехватки ума, а от того, что все его ходы уходят на самопроверку до работы. У этой коробки проверки стоят после результата и делаются другим агентом, который не видел, как первый старался.