Один протокол, две среды исполнения
Команды Harness, требования, ADR, STEP, навыки, политика Git и правила обновления не принадлежат конкретной модели. Канонический контракт репозитория хранится в AGENTS.md, а Codex и Claude Code получают собственную конфигурацию исполнения.
HARNESS PROTOCOL
AGENTS.md · REQ · ADR · STEP · skills · policies
↓
адаптер среды исполнения
↙ ↘
Codex Claude CodeProvider-neutral Runtime Adapter Contract
Граница между Harness control plane и конкретным AI runtime формализована в .harness/runtime-adapter-contract.json. Adapter переводит lifecycle, account state и события конкретного provider, но не меняет CTS, STEP/REQ/ADR semantics, resolver или recovery decisions.
Capabilities
Каждая capability объявляется как native, synthesized или unsupported. Ключи включают runtime identity, authenticated account, model/effort, interactive input, streaming, resume, cancel, subagents, structured output, MCP tools и session/execution IDs.
Normalized events
Control plane работает с закрытым набором событий: run.started, message delta/completed, tool started/completed, input.required, auth.required, run.interrupted, run.completed и run.failed. Неизвестный canonical event fail-closed.
Account state без secrets
Codex использует machine-readable account/read App Server, Claude Code — claude auth status. Harness может показывать безопасную identity/account metadata, но не сохраняет токены, ключи, cookies или credential files.
Проверка контракта выполняется детерминированно:
python3 .harness/tools/runtime_adapter_contract.py --json
python3 .harness/tools/runtime_adapter_contract.py --runtime codex --json
python3 .harness/tools/runtime_adapter_contract.py --runtime claude --jsonКонтекст роли выбирает Harness, а не адаптер среды исполнения
Перед смысловым вызовом Harness строит Context Contract для конкретной роли. Планировщик, реализатор и проверяющий получают разные проекции отдельных разделов STEP, связанных REQ/ADR/OQ, ссылки на архитектуру и применимых Project Principles.
STEP + role + repository revision
↓
runtime-neutral Context Contract
↓
Codex adapter / Claude Code adapterAdapter может отличаться способом физического чтения файлов, но не меняет состав обязательного контекста. Дополнительный файл подключается только с явной причиной, а недоступный обязательный контекст приводит к BLOCKED вместо неограниченной предварительной загрузки всего репозитория.
Адаптер Codex
Основная конфигурация
.codex/config.toml регистрирует проектные роли и их файлы конфигурации.
Специализированные роли
.codex/agents/*.toml задают модель, уровень рассуждений, изоляцию и инструкции для каждой роли.
Модель и уровень рассуждений можно менять независимо для инициализатора, архитектора, планировщика, реализатора, проверяющего и остальных ролей. Это позволяет использовать усиленное рассуждение для архитектуры и независимого ревью, а механическую работу отдавать более экономичному профилю.
Адаптер Claude Code
Общий контракт репозитория
CLAUDE.md импортирует @AGENTS.md, поэтому правила Harness не дублируются в двух независимых файлах.
Основной профиль
.claude/settings.json задаёт проектные значения по умолчанию: модель, уровень рассуждений и базовый режим разрешений.
Специализированные роли
.claude/agents/*.md задают model, effort и permissionMode для каждой роли.
Локальные настройки
.claude/settings.local.json и CLAUDE.local.md позволяют хранить персональные настройки только для Claude вне Git.
Роли только для чтения — например архитектор, планировщик и проверяющий — по умолчанию используют режим планирования. Семантическое правило «не менять файлы» остаётся частью контракта Harness, даже если пользователь временно меняет режим основной сессии Claude Code.
Codex и Claude Code используют одну проектную память
Различается формат адаптера, но канонические артефакты проекта и смысл команд остаются общими.
| Область | Codex | Claude Code |
|---|---|---|
| Входной контракт | AGENTS.md | CLAUDE.md → AGENTS.md |
| Роли | .codex/agents/*.toml | .claude/agents/*.md |
| Состояние аккаунта | App Server account/read | claude auth status |
| Навыки | .agents/skills/ | .agents/skills/ |
| REQ / ADR / PRN / STEP | Общие | Общие |
| Project State API | Общий | Общий |
Поэтому проект можно продолжить в другой поддерживаемой среде исполнения без переноса скрытой истории чата: источник истины остаётся в репозитории.
Роли одинаковы по смыслу
Оба адаптера поддерживают один набор ролей Harness. Отличается только формат конфигурации среды исполнения и конкретный выбор модели.
initializer · architect · planner · implementer
reviewer · security-reviewer · test-reviewer · docs
mechanic · skill-curator · git-operator · harness-updaterВ базовом профиле роли с большим объёмом рассуждений получают более сильную модель и высокий уровень рассуждений, реализатор — сбалансированный профиль, а механические роли — более дешёвый. Проект может менять эти значения под собственные ограничения.
Навыки остаются общими
Канонические навыки Harness находятся в .agents/skills/<name>/SKILL.md. Адаптер Claude не создаёт зеркальную копию базовых навыков в .claude/skills/: это избегает расхождения двух версий одного процесса. Проектные навыки только для Claude при необходимости можно добавлять отдельно.
Настройки проекта сохраняются при обновлении Harness
Отслеживаемые конфигурации ролей Codex и Claude относятся к общим файлам. HARNESS UPDATE APPLY использует трёхстороннее слияние BASE / OURS / THEIRS и не должен молча перезаписывать локальный выбор модели и уровня рассуждений. Неизвестные проектные файлы внутри каталогов адаптеров по умолчанию считаются принадлежащими проекту.
Что выбрать
Выбирайте ту среду исполнения, которой хотите пользоваться в текущей рабочей среде. Harness не требует использовать оба одновременно: достаточно одной поддерживаемой среды исполнения — Codex или Claude Code. После создания репозитория откройте его в выбранном инструменте и выполните PROJECT INIT.