Назад к RADAR

Как это работает

Как работает RADAR.

Технический обзор для разработчиков. RADAR запускает агентов для программирования и закрывает задачу только после того, как сам заново запустит её приёмочный тест. «Готово» от агента — это заявление; повторный запуск — доказательство.

01 Цикл

Один цикл для каждой задачи.

Каждая задача проходит один и тот же цикл, и каждый шаг выполняется, только если предыдущий пройден.

  1. 01 · открытие Задача и приёмочный тест Пишутся до начала работы
  2. 02 · аренда Один владелец, свой worktree Lease и fence-токен
  3. 03 · работа Агент работает В своей копии проекта
  4. 04 · заявление Агент говорит «готово» Записано как заявление, а не как результат
  5. 05 · проверка RADAR заново запускает тест На текущей ревизии
  6. если пройден Закрыта Доказательство хранится в журнале
  7. если не пройден · попытка n из 3 Открыта снова, сбой приложен Тот же агент пробует снова с шага 03
  8. после 3 попыток Задачу берёт другой агент Ещё до 3 попыток, с шага 03
  9. после ещё 3 Задача ждёт вас Журнал отклоняет новые попытки
Рис. 1 · Цикл задачи. Заявление ведёт к повторному запуску и никогда — прямо к закрытию.
Открытие
Задача открывается с целью и приёмочной командой, которую можно запустить повторно. Команда проверяется при открытии задачи, но не запускается: критерий, который не может выполниться в написанном виде, отклоняется сразу, а не обнаруживается в конце.
Аренда
В каждый момент у задачи один владелец — через аренду (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. Чтобы присоединиться, напишите нам.