ErgocodeAI учит ваших ИИ-агентов работать по Эргономичному подходу:
- вести разработку через тесты (TDD);
- писать быстрые, надёжные и устойчивые к рефакторингу тесты;
- разделять сложную логику (бизнес-логику, вычисления, трансформации) и ввод-вывод (действия, эффекты);
- декомпозировать систему на небольшие сфокусированные модули с низкой сцепленностью;
Warning
Фреймворк находится в активной разработке. Структура, контракты скиллов и процесс установки могут изменяться без обратной совместимости.
Note
На данный момент соглашения, примеры и готовые процессы в первую очередь ориентированы на Kotlin и Spring Boot. Общие архитектурные и процессные идеи не зависят от стека, но их применение с другими технологиями потребует адаптации контекста.
Note
На данный момент фреймворк ориентирован в первую очередь на Codex и модели OpenAI.
Фреймворк поддерживает три способа использования:
- Prompt-driven — вы ставите задачи как привыкли, агент автоматичски применяет релевантные соглашения фреймворка.
- Skill-driven — вы явно выбираете скилл для решения очередной задачи.
- Workflow-driven — агент идёт сам по процессу фреймворка, обращаясь к вам с вопросами и останавливаясь для ревью в ключевых точках.
Помимо этого вы можете взять фреймворк в качестве основы, а потом "доработать напильником" или полностью заменить отдельные его части: разделение на роли, роутинг контекста, конвенции дизайна и кодирования, конвенции процесса работы, скиллы и артефакты.
Вызывайте готовые скиллы явно, самостоятельно выбирая нужные действия и их порядок.
Базовый поток реализации одного изменения:
- Спроектировать тест-кейс проверки наблюдаемого поведения через
$design-test-case. - При необходимости согласовать требуемые интерфейсы через
$align-required-design. - Закодировать кейс через
$code-test-case. - Реализовать кейс минимальным изменением production-кода через
$fix-red-case. - Выполнить рефакторинг через
$refactor-case.
Перед основным циклом при необходимости можно описать API через $describe-rest-api или найти связанные участки кода через $collect-code-anchors.
Перед изменением production-кода можно подготовить план исправления одного красного кейса через $plan-test-case-fixing.
В этом варианте реализация задачи идёт по спецификации. Но в отличие от традиционного SDD, в ErgocodeAI используется более лёгкий и гибкий подход — на первом этапе описываются только основные треобования, а так же общие направление и ограничения решения.
Затем, по мере реализации, спецификации задачи и решения дополняются деталями или даже сущственно меняются, если в процессе реализации выяснилось, что первоначальный план оказался неудачным.
- Подготовьте рабочую директорию с помощью
$prepare-task-workdir. Скилл в диалоге заполняет010-task-brief.md, при необходимости собирает020-code-anchors.md, формирует варианты решения и после явного выбора заполняет030-solution-brief.md. - При необходимости добавьте другие артефакты
010-*,020-*и030-*с существенными сведениями о задаче, текущей реализации и целевом решении. - При необходимости добавьте стартовые задачи в todo.md.
Note
Коды артефактов
Код в начале имени файла обозначает назначение артефакта в рабочей директории задачи:
010-*— постановка задачи: требования и исходные материалы;020-*— описание текущего состояния системы;030-*— описание целевого состояния и выбранного решения;040-*— рабочие файлы реализации.
Файл todo.md хранит прогресс реализации и используется без числового кода.
Полный контракт рабочей директории описан в соглашении о задачах.
Для создания пустой рабочей директории без подготовки брифов используйте $init-task-workdir.
Минимальная директория задачи имеет следующий вид:
devlog/123-example-task/
├── 010-task-brief.md
├── 030-solution-brief.md
└── todo.md
После сбора первичной спецификации итеративно выполняйте шаги до завершения реализации задачи.
- Выбрать следующий минимальный инкремент из спецификации и
todo.md($select-next-increment). - Спроектировать и записать тест-кейс проверки целевого поведения в
030-test-cases-new.md($design-test-case). - При необходимости согласовать требуемые интерфейсы (
$align-required-design); скилл сам вызовет$describe-rest-apiдля нового или изменённого JSON-over-HTTP контракта. - Закодировать тест (
$code-test-case). - Спроектировать и спланировать реализацию кейса (
$plan-test-case-fixing). - Реализовать кейс (
$fix-red-case). - Отрефакторить реализацию (
$refactor-case). - Обновить
todo.md.
Для явно нового SUT тест-кейс может сначала содержать Feature без технической ссылки.
$align-required-design проектирует недостающий интерфейс и дополняет Feature точной ссылкой на SUT; до этого кодирование теста не начинается.
Итерации можно вести в трёх режимах:
- Ручном - самостоятельно выбираете что делать дальше, вызываете соответствующий скилл и обновляете рабоиче файлы задачи;
- Полуавтоматическом - используйте скилл
$implement-task-tdd, чтобы агент сам полностью реализовал задачу до конца, останавливаясь на ревью после записи тест-кейса и в других ключевых точках, но не между озеленением кейса и запуском рефакторинга. - Автоматическом - используйте скилл
$implement-task-tddс указанием не останавливаться на ревью, чтобы агент сам полностью реализовал задачу до конца.
Warning
Автоматический режим очень жадный до токенов и может сжечь весь недельный лимит на одной задаче.
В случае если агент допустил ошибку, используйте $fix-project-context или $fix-framework-context для коррекции контекста, чтобы предотвратить повторение ошибки в будущем.
$fix-project-contextизменяетAGENTS.md,.agents/**,.codex/**и другие agent-facing инструкции конкретного проекта, не затрагивая runtime-контекст Ergocode.$fix-framework-contextизменяет общий runtime-контекст ErgocodeAI подsrc/**;
Передайте выбранному скиллу описание проблемы, требуемое поведение и, при наличии, id Codex-сессии с примером неправильной работы:
Используй $fix-project-context.
codex session id: <необязательно>
problem: <что в текущем контексте приводит к неправильной работе агента или что агент сделал не так в сессии Codex>
target behavior: <как агент должен действовать после изменения>
Фреймворк разделяет базовый контекст, ответственность агента, инженерные правила, исполняемые процессы и память конкретной задачи.
flowchart TD
Project[Контекст проекта<br/>AGENTS.md, .agents/, .codex/] --> Baseline[Базовый контекст<br/>project-baseline.md]
Baseline --> Roles[Индекс ролей<br/>roles.md]
Roles --> Role[Роль<br/>roles/*.md]
Role --> Conventions[Конвенции<br/>conventions/**]
Skill[Скилл<br/>skills/**/SKILL.md] --> Role
Skill --> Conventions
Skill --> Artifacts[Форматы артефактов<br/>artifacts/**]
Skill <--> Task[Контекст задачи<br/>devlog/**]
| Слой | Назначение |
|---|---|
bootstrap/ |
Устанавливает фреймворк в целевой репозиторий и подключает обязательный SessionStart hook. |
src/project-baseline.md |
Задаёт минимальные правила загрузки контекста и работы с задачами. |
src/roles/ |
Определяет ответственность и границы текущей роли агента. |
src/conventions/ |
Хранит архитектурные, кодовые, тестовые и процессные соглашения. |
src/skills/ |
Описывает воспроизводимые рабочие процессы с входами, этапами, проверками и результатами. |
src/artifacts/ |
Задаёт форматы проверяемых промежуточных результатов. |
devlog/ целевого проекта |
Хранит постановку, анализ, целевое решение и прогресс конкретной задачи. |
AGENTS.md целевого проекта |
Интегрирует фреймворк с проектными и локальными правилами. |
Установка и runtime-интеграция сейчас поддерживают только Codex. Для других агентов фреймворк скорее всего придётся адаптировать.
Для адаптации фреймворка другой агент должен уметь:
- загружать репозиторные инструкции и дополнительные Markdown-файлы по ссылкам;
- резолвить символические ссылки;
- выбирать и явно исполнять процессы, описанные в
SKILL.md; - выполнять startup hook или предоставлять эквивалентный механизм загрузки baseline-контекста;
- запускать отдельные последовательные субагенты для автоматического TDD-цикла.
Без последней возможности остаются доступны неявный и ручной способы применения после адаптации загрузчика контекста.
-
Добавьте репозиторий фреймворка в целевой проект. Рекомендуемый вариант — Git submodule в
.agents/ergo:git submodule add https://github.com/ergonomic-code/dot-agents.git .agents/ergo
Также можно скопировать репозиторий или создать symlink на него.
-
Попросите Codex выполнить установочный скилл:
Install the framework in this repository using [SKILL.md](.agents/ergo/bootstrap/skills/installing-framework/SKILL.md). -
Ответьте на вопросы установщика о расположении framework config, если они появятся.
Установщик идемпотентно обновляет framework-секцию в AGENTS.md, подключает скиллы и настраивает Codex hook, сохраняя несвязанные проектные инструкции.
| Скилл | Назначение |
|---|---|
$advance-task |
Определяет и выполняет одну следующую стадию TDD-инкремента. |
$align-required-design |
Проектирует и фиксирует только интерфейсы, необходимые для кодирования одного выбранного тест-кейса. |
$code-test-case |
Преобразует проверку в формате verification-check-format-v0.1 в Kotlin JUnit-тест, затем в репозитории проверяет, что тест падает из-за отсутствующего поведения или уже проходит. |
$collect-code-anchors |
Находит связанные с требуемым поведением участки кода, модели, запросы, таблицы, конфигурацию и другие якоря в коде. |
$describe-rest-api |
Строит, валидирует и отображает описание REST API по коду, OpenAPI, требованиям или другим входным данным. |
$design-test-case |
Проектирует одну проверку размером с тестовый метод и при заданном пути записывает её в артефакт. |
$find-touched-tables |
Определяет таблицы и представления, затрагиваемые кодом на готовой диаграмме structure-chart/v1. |
$fix-framework-context |
Анализирует и после выбора варианта изменяет общий runtime-контекст Ergocode. |
$fix-project-context |
Анализирует и после выбора варианта изменяет agent-facing контекст конкретного проекта. |
$fix-red-case |
Изменяет production-код, чтобы сделать зелёным один красный Kotlin JUnit-тест. |
$implement-task-tdd |
Координирует реализацию задачи минимальными TDD-инкрементами с субагентами и ревью в определённых точках; после green сразу запускает рефакторинг. |
$init-task-workdir |
Создаёт директорию задачи devlog/NNN-slug с обязательными рабочими файлами из шаблонов. |
$plan-test-case-fixing |
Исследует один красный тест-кейс и составляет план его реализации. |
$prepare-task-workdir |
В диалоге подготавливает бриф задачи, якори в коде и выбранное направление решения. |
$refactor-case |
Полностью проверяет один зелёный TDD-инкремент, группирует совместимые узкие рефакторинги и сообщает оставшиеся кандидаты. |
$select-next-increment |
Выбирает следующий минимальный нереализованный вертикальный инкремент. |
$write-verification-check |
Описывает один тест-кейс в стандартном Gherkin-подобном формате. |