Оглавление: почему одной модели мало · матрица слоёв harness · пределы производительности · шаги запуска · цитируемые факты · вывод и покупка.
Почему модель без harness останавливается на демонстрации
1. Нет долговременного состояния. В окне контекста модель видит только текущий диалог. Она не знает, какой diff уже применён, где лежат артефакты, какой тест падал вчера и какой токен нельзя выводить в лог.
2. Нет надёжной руки. Ответ «запустите тесты» не равен выполненной команде. Harness превращает намерение в вызов shell, файловую операцию, HTTP-запрос или задачу CI, а затем возвращает stdout, код выхода и лимиты времени.
3. Нет границы доверия. Без allowlist агент может читать лишние каталоги, отправлять данные наружу или бесконечно ретраить дорогой API. Поэтому production-agent начинается не с промпта, а с политики.
Матрица: из каких слоёв состоит agent harness
Практичный harness похож на мини-операционную систему вокруг модели. Ниже — минимальный набор слоёв, без которого агент остаётся игрушкой для чата, а не рабочим исполнителем.
| Слой | Что делает | Порог отказа | Что проверять на Mac M4 |
|---|---|---|---|
| Tool runtime | Запускает shell, тесты, браузер, git, HTTP | Timeout, неверный cwd, OOM | p95 команды, код выхода, sandbox |
| Memory и workspace | Хранит repo, scratch, логи, артефакты | Перезапись файлов, утечка секретов | Права каталогов, размер кэша, APFS snapshot |
| Policy engine | Разрешает инструменты, сеть, budget, ретраи | Широкий токен, бесконечный цикл | Allowlist, max calls, stop reason |
| Observability | Связывает prompt, tool call, diff и результат | Невоспроизводимый инцидент | Run id, JSONL, трассы, failure summary |
Технические пределы: где harness ломается первым
Главный предел — не «ум» модели, а длина замкнутого цикла. Если каждый tool call ждёт 30 секунд, агент быстро теряет экономику. На удалённом Mac mini M4 имеет смысл разделять быстрые проверки до 5 секунд, сборки до 120 секунд и ночные soak-задачи отдельно. Тогда scheduler не блокирует интерактивный цикл.
Второй предел — память. Локальная модель, браузерные тесты, Xcode или индексатор кода конкурируют за unified memory. Для harness-узла правило простое: один тяжёлый инференс плюс один тяжёлый tool-chain на хост. Всё остальное уводите в очередь или отдельный арендованный инстанс.
Третий предел — аудит. Если агент меняет код, итог должен быть проверяемым: diff, список команд, тестовый статус и короткое объяснение причины. Без этого агент создаёт не производительность, а новый класс непрозрачных изменений.
Хороший критерий готовности прост: любой запуск можно повторить без автора промпта. Если новый инженер видит policy, env, список инструментов, логи и итоговый diff, он должен понять, почему агент сделал именно это изменение и где остановился. Для русскоязычных команд это особенно важно: кириллические имена веток, комментарии в коде, локализованные сообщения сборки и смешанные пути часто ломают наивные парсеры. Проверяйте UTF-8 в логах, нормализацию имён файлов и вывод терминала до того, как harness попадёт в ночной контур.
Пять шагов запуска harness на удалённом Mac
- Разделите workspace: repo только для контролируемых правок, scratch для временных файлов, logs для неизменяемых JSONL. Это снижает риск случайной перезаписи.
- Опишите инструменты как контракт: команда, cwd, timeout, входная схема, маскирование stdout и список разрешённых сетевых доменов.
- Поставьте budget: max tool calls на задачу, лимит токенов, лимит wall-clock и правило остановки при повторяющемся одинаковом failure.
- Включите наблюдаемость: один run id связывает prompt, инструмент, stdout, изменённые файлы, тесты и финальную сводку. Это нужно для code review и биллинга.
- Проведите soak на реальной задаче: не synthetic prompt, а сборка, миграция, RAG-индекс или браузерный тест. Сравните p95 latency, failure rate и стоимость часа узла.
Цифры и тезисы, которые можно цитировать
- До 70% инцидентов agent workflow обычно связано не с ответом модели, а с инструментами: неправильный cwd, timeout, права, сеть или повторное выполнение команды.
- 5–10 секунд — практический верх для интерактивного tool call; всё дольше лучше маркировать как background job с отдельным heartbeat.
- Один run id для prompt, tool call, diff и тестов сокращает расследование инцидента с часов до минут, потому что не нужно собирать историю из разных логов.
- Mac mini M4 полезен как однотипный арендованный узел: Apple Silicon, стабильный SSH, локальные CLI, браузерные тесты и возможность держать long-running агента без перегрева ноутбука.
- UTF-8 без исключений обязателен для русских логов, веток и failure summary: иначе агент может принять корректный вывод теста за мусор и повторить уже выполненный шаг.
Вывод: harness превращает модель в инженерный процесс
Модель без harness похожа на сильного инженера без терминала, репозитория, прав доступа и журнала действий. Она может объяснить план, но не обязана безопасно довести задачу до проверяемого результата. Harness добавляет недостающие части: рабочую среду, инструменты, память, лимиты, наблюдаемость и остановку при риске.
Для команд, которые строят агентов в 2026 году, лучший следующий шаг — проверить harness на отдельном Mac mini M4. В LlmMac можно арендовать узел, подключиться по SSH, закрепить рабочую директорию, запустить ночной soak и измерить реальную стоимость task-run до покупки собственного железа. Если метрики зелёные — масштабируйте; если нет — меняйте policy и tier без капитальных затрат.