Skip to content

Где решает человек ​

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

Утверждение документа ​

Два обязательных места: спецификация и готовый код. Задача показывает документ и ждёт решения:

  • принять — задача идёт дальше; комментарий к принятию становится обязательным правилом для всех следующих шагов;
  • вернуть с комментарием — документ уходит на доработку тому шагу, который его сделал. Агент получает ваш комментарий и прошлую версию и правит её, а не пишет заново;
  • отклонить — задача заканчивается.

Решение привязано к точному содержимому документа. Если документ изменился, нужно новое решение. Если какое-то утверждение вам не нужно, его можно выключить в настройках проекта.

У документа бывают открытые вопросы. На странице над кнопками решения есть форма: у каждого вопроса — ответ, который Jarvis нашёл в источниках, варианты, поле для своего ответа, «спросить аналитика» или «не в этой задаче». Ответы уходят вместе с возвратом.

Вопрос агента ​

Агент требований (и агент разбора ревью) может остановиться с одним вопросом, если без ответа дальше нельзя. Он показывает, как понял требование, и какие видит варианты. Вы отвечаете текстом, агент уточняет или предлагает сформулированное правило, вы его принимаете. Правило становится обязательным для всех следующих шагов этой задачи, и спрашивать его снова никто не будет.

sh
jarvis attach <задача>     # разговор прямо в терминале
jarvis answer <тред> "…"   # ответить без разговора

Заметка на ходу ​

Пока задача идёт, на странице можно оставить заметку агенту: «не трогай старый API», «смотри модуль оплаты». Текущий агент получит её со следующего обращения к модели, следующие шаги — тоже.

Пока идёт реализация, там же два переключателя для этой задачи: «Спросить меня, когда тесты падают» и «Остановиться после шага».

Упавшие проверки ​

Если проверки упали так же, как в прошлом круге, или тесты не запустились, задача останавливается и показывает, что упало, что ответил агент и полный вывод. Варианты: вернуть в реализацию с подсказкой, «тест неверный», «исправлю сам», идти дальше без этой проверки, вернуться к спецификации. Когда останавливаться, задаёт human.checks.ask в настройках проекта: при повторе (по умолчанию), при любом падении или только когда кончились круги.

Реализация и сама может спросить: если упавший тест противоречит спецификации, агент задаёт вопрос с вариантами ответа, и вы отвечаете кнопкой.

Замечания прямо в коде ​

Вместо утверждения кода можно открыть рабочую копию задачи и оставить замечания в комментариях:

ts
// REVIEW: проверка статуса должна жить в доменном слое, а не здесь
export function canRestart(status: string) { … }

Потом jarvis review submit <задача> --resume. Отдельный агент разберёт каждое замечание:

  • исправить код — уходит в реализацию;
  • ошибка в спецификации или требованиях — задача возвращается туда;
  • вопрос — открывается разговор;
  • правило, которое стоит записать на будущее, — становится кандидатом в стандарт или знание проекта;
  • пожелание — принимается к сведению.

Маркеры удаляются из кода, когда результат переносится в вашу ветку.

Попробовать перед решением ​

На странице утверждения кода есть блок «Try it»: путь к рабочей копии, команда запуска, адрес, который открыть, и критерии приёмки из спецификации списком с галочками. Как запускать проект, задаётся в настройках, иначе Jarvis возьмёт команду из package.json и пометит её как догадку.

Свои правки ​

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

Спецификацию, план и ревью тоже можно править как файлы: они лежат в рабочей копии задачи в .jarvis/runs/<задача>/, jarvis edit <задача> открывает их в редакторе. Ваша правка становится новой версией документа с пометкой «правка человека».

Данные из интернета ​

Если задача прочитала что-то из интернета, этим данным Jarvis не доверяет: дальше её действия наружу — комментарии, push, PR — ждут вашего одобрения. На странице задачи об этом есть баннер.

Pull request ​

Готовую задачу можно отправить pull request'ом: кнопка «Создать PR» рядом с Apply или jarvis apply <задача> --pr. Если в настройках проекта delivery.pr: approve, Jarvis сначала покажет PR и создаст его только после вашего одобрения.

Бюджет и тупики ​

Ещё два случая, когда задача ждёт:

  • кончился бюджет шага или задачи — можно добавить или закончить шаг с тем, что уже есть (результат будет помечен неполным);
  • возвраты исчерпаны — проверки так и не прошли. Можно поправить код самому и запустить шаг снова или дать реализации ещё один круг.

Автономный режим (experimental) ​

Задачу можно запустить без человека: галочка «Автономно» в «Новой задаче» или jarvis work … --autonomous. Режим пока обкатывается.

  • Утверждения спецификации и кода проходят сами.
  • На вопрос агента отвечать некому: он берёт самое осторожное допущение — менять как можно меньше, сохранить то, что есть, — записывает его в документ и продолжает.
  • Упавшие проверки идут на все круги возврата; агент на лимите заканчивает с тем, что успел.
  • Если задача упёрлась в тупик — круги исчерпаны, бюджет кончился, агент всё ещё спрашивает, — она заканчивается ошибкой с причиной. Полусделанное никуда не уходит.

Каждое такое решение видно в ленте задачи. Что касается внешнего мира, всё равно ждёт вас: действия после данных из интернета, действие с неизвестным исходом и PR, если проект требует его одобрять. Чтобы задача сама открыла PR, добавьте --deliver pr.

Вернуть задачу к шагу ​

Если результат шага не устраивает, задачу можно вернуть к любому пройденному шагу с комментарием:

sh
jarvis redo <задача> spec --note "считать скидку до налогов, а не после"

Шаг выполнится заново с этим комментарием как обязательным, следующие шаги — тоже. На странице это блок «Redo from here».

Apache-2.0