Как это работает
Как работает RADAR.
Технический обзор для разработчиков. RADAR запускает агентов для программирования и закрывает задачу только после того, как сам заново запустит её приёмочный тест. «Готово» от агента — это заявление; повторный запуск — доказательство.
01 Цикл
Один цикл для каждой задачи.
Каждая задача проходит один и тот же цикл, и каждый шаг выполняется, только если предыдущий пройден.
- 01 · открытие Задача и приёмочный тест Пишутся до начала работы
- 02 · аренда Один владелец, свой worktree Lease и fence-токен
- 03 · работа Агент работает В своей копии проекта
- 04 · заявление Агент говорит «готово» Записано как заявление, а не как результат
- 05 · проверка RADAR заново запускает тест На текущей ревизии
- если пройден Закрыта Доказательство хранится в журнале
- если не пройден · попытка n из 3 Открыта снова, сбой приложен Тот же агент пробует снова с шага 03
- после 3 попыток Задачу берёт другой агент Ещё до 3 попыток, с шага 03
- после ещё 3 Задача ждёт вас Журнал отклоняет новые попытки
- Открытие
- Задача открывается с целью и приёмочной командой, которую можно запустить повторно. Команда проверяется при открытии задачи, но не запускается: критерий, который не может выполниться в написанном виде, отклоняется сразу, а не обнаруживается в конце.
- Аренда
- В каждый момент у задачи один владелец — через аренду (lease) и fence-токен. Запись от устаревшего владельца отклоняется.
- Работа
- Агент работает в собственном git worktree, в собственной ветке.
- Заявление
- Сообщение агента о том, что работа готова, записывается как заявление. Заявление не закрывает задачу.
- Проверка
- RADAR сам запускает приёмочную команду на текущей ревизии работы. Собственный отчёт агента читается, но доказательством не является.
- Закрытие или повторное открытие
- Если тест пройден, задачу можно закрыть, а запись о проверке сохраняется как доказательство. Если нет, задача открывается снова, и к ней прикладывается сбой.
- Лимиты
- Три попытки исполнителя, затем три перехвата другим агентом. После этого журнал отклоняет новые попытки, и задача ждёт вас. Смена модели, сессии или машины не обнуляет счётчик, а каждая повторная попытка должна указать, что изменилось.
02 Журнал
Единый журнал, в который пишут все агенты.
Все агенты читают и пишут один и тот же журнал задач: локальный файл SQLite. Это единственная запись о том, кто владеет каждой задачей, что было заявлено и что показал тест.
- Задачи
- Цель и приёмочная команда, записанные до начала работы.
- Владение
- Текущий владелец каждой задачи, с его lease и fence-токеном.
- Попытки
- Считаются по задаче — для всех агентов, моделей и машин.
- Заявления
- Сообщение агента о том, что работа готова, хранится отдельно от результатов.
- Записи проверки
- Каждый приёмочный прогон, привязанный к коммиту и рабочему дереву, на которых он выполнялся.
- Изменения
- Изменённая приёмочная команда записывается со старой и новой версией; ручное переопределение тоже записывается.
Память
Решения и уроки — это заметки в Markdown с источником и областью действия. Локальный индекс ищет по ним без сети, а хук показывает агенту подходящие заметки до того, как он начнёт действовать. Поскольку это обычный Markdown, заметки можно открыть в Obsidian.
03 Изоляция
Каждая попытка — в своей копии.
- Каждая попытка выполняется в собственном git worktree, в собственной ветке. Два исполнителя никогда не делят одно дерево.
- Исполнитель не может переписать собственную приёмочную команду. Изменить её может только менеджер, и только до закрытия задачи; при каждом изменении сохраняются старая и новая версии.
- Работа попадает в вашу основную ветку только после успешной проверки, а после слияния приёмочная команда запускается ещё раз.
- Force-push отклоняется для любой роли.
- Эти правила выполняются как код — до и после вызова модели. Это не промпт, поэтому агенту не удастся обойти их уговорами.
04 Агенты
Агенты, которыми вы уже пользуетесь.
RADAR запускает Claude Code, Codex CLI, OMP и Hermes Agent — на вашем компьютере или на ваших собственных Linux-серверах. Он их не заменяет: работу по-прежнему делают они.
- Claude Code
- Codex CLI
- OMP
- Hermes Agent
- Единый контракт
- Одни и те же правила, один журнал, одна проверка перед закрытием и одни лимиты попыток действуют для всех четырёх.
- Менеджер
- Управляет тот агент, с которым вы общаетесь: он открывает задачи, передаёт их исполнителям и закрывает задачу только при успешной записи проверки.
- Исполнители
- Исполнители делают работу в собственных worktree. Они не могут закрывать задачи и менять свою приёмочную команду.
05 Локально прежде всего
Локально прежде всего.
RADAR не нужны ни учётная запись, ни облако.
- На вашей машине
- Журнал, заметки памяти, worktree и каждый прогон проверки — на вашем компьютере или на ваших собственных Linux-серверах.
- Нужна сеть
- Вашим агентам, которые обращаются к своим провайдерам, как и сейчас. Любой другой внешний сервис необязателен и выключен, пока вы его не включите.
- Требования
- Windows или Linux (macOS пока не поддерживается), Python 3.12 или новее и Git. RADAR использует только стандартную библиотеку Python.
- Стоимость
- Собственных счетов нет. Агенты по-прежнему используют те учётные записи, под которыми вы их авторизовали. Платный API используется, только если вы укажете провайдера и бюджет.
- Установка
- Дайте своему агенту для программирования ссылку на репозиторий и скажите «установи это». Он проверит ваш компьютер, спросит, прежде чем устанавливать недостающее, установит RADAR в виртуальное окружение и сообщит, что показывают radar init и radar doctor.
06 Команды
Короткий список команд.
Команды, которыми вы будете пользоваться в первую очередь. Плейсхолдеры указаны в угловых скобках.
| Команда | Что делает |
|---|---|
radar init | Создаёт домашний каталог RADAR и журнал. |
radar doctor | Проверяет установку и перечисляет необязательные сервисы, которые ещё не настроены. |
radar task new --project P --goal "…" --accept "<command>" | Открывает задачу с её приёмочной командой. |
radar dispatch <task> | Передаёт задачу агенту, который работает в собственном worktree. |
radar status | Показывает состояние всей системы. |
radar verify <task> | Заново запускает приёмочную команду на текущей ревизии. |
radar task done <task> --evidence "<verification report>" | Закрывает задачу. Отклоняется, пока проверка не пройдена. |
radar collect | Собирает завершённую работу. |
radar integrate | Сливает проверенную работу в main. |
radar stop | Приостанавливает работу и устанавливает STOP. |
radar go | Снимает STOP и показывает, что можно продолжить. |
radar memory search --local "<words>" | Ищет по заметкам памяти без сети. |
radar uiradar web | Открывает панель управления в терминале или в браузере. |
radar help --all | Показывает все команды. radar <command> -h выводит подробности. |
07 Чего он не делает
Чего RADAR не делает.
- Он не заменяет ваших агентов. Код по-прежнему пишут они; RADAR даёт им единый журнал, проверку, которую нельзя пропустить, и общую память.
- Он не пишет за вас тесты. Проверка хороша ровно настолько, насколько хорош её тест; RADAR делает тест явным до начала работы, чтобы человек мог его прочитать.
- Он не закрывает работу без теста. Задача без запускаемой приёмочной команды отклоняется при открытии.
- Он не отключает ваших агентов от сети. Они по-прежнему обращаются к своим провайдерам, как и сейчас.
- Открытая редакция предназначена для индивидуальных разработчиков, а не для команд; редакция для компаний разрабатывается.
08 Статус
Ранний доступ
Сейчас — ранний доступ. Открытый исходный код — при публичном выпуске.
RADAR находится в раннем доступе. При публичном выпуске он будет опубликован как открытый исходный код под лицензией Apache-2.0. Чтобы присоединиться, напишите нам.