Что это такое
SPEC-AGENT — это запуск Goose-агента «с идентичностью составителя ТЗ». Он не пишет код —
он проектирует: читает задачу и создаёт техническое задание (артефакт kind=spec),
по которому потом будет работать агент-разработчик.
Простая аналогия: SPEC-AGENT — это аналитик, который превращает
«сделай фичу» в понятное техническое задание для разработчика.
В рамках чего запускается
SPEC-AGENT запускает workflow — но только в одном случае: когда пришла задача без готового ТЗ
(в run() передан task_id, а не spec_id). Тогда выполняется первый
шаг пайплайна — шаг SPEC_STEP:
# workflows.py
SPEC_STEP = Step(
step_name = "spec",
job_name = "spec-agent", # ← это и есть SPEC-AGENT
writes_repo = False, # читает, но НЕ пишет в репозиторий
uses_task_package = True, # вход — пакет задачи, а не спека
)
run(spec_id, task_id=""):
if task_id: # ТЗ ещё нет
результат = запустить_шаг(SPEC_STEP) # SPEC-AGENT пишет черновик
...
- Запускается как одноразовая Nomad-задача (job
spec-agent) — стартовал, отработал, умер. - После его работы спека (ТЗ) уходит ЧЕЛОВЕК на проверку; если ЧЕЛОВЕК вернул с замечаниями — SPEC-AGENT запускается снова с учётом замечаний (см. про спеку (ТЗ)).
Что он получает на вход
| Вход | Откуда | Что это |
|---|---|---|
| пакет задачи | система (task package) | история, подзадачи, срезы, тесткейсы, решения — всё, что уже известно о задаче |
| снимок репозитория | Nomad prestart (fetch-repo) | код, который надо понять, чтобы спроектировать изменение |
Что он делает и отдаёт
- Читает пакет задачи и код репозитория.
- Через MCP-инструмент artifacts создаёт артефакт
specв статусе draft (черновик). - Записывает в спеку
base_sha— коммит, от которого вести работу. - В свой результат (result.json) кладёт ссылку на созданную спеку —
spec_id. - Завершается; workflow забирает
spec_idи отправляет спеку (ТЗ) ЧЕЛОВЕК на проверку.
Права доступа: SPEC-AGENT read-only — он не получает deploy-ключ,
не коммитит и не создаёт MR. Его «письмо» — только сам артефакт спеки в artifacts-service.