Три самые сложные задачи в HarnessOS
Как я строил HarnessOS · 9/10
Каждый из сложных аспектов harness’а я решал отдельно. Не пытался сделать всё сразу.
Вот три задачи, которые оказались самыми сложными. И как я их решал — без деталей реализации.
Задача 1. Как не терять работу при сбоях
Представь: агент делает задачу из 10 шагов. Сделал 6. Упал сервер.
Наивное решение — начать заново. Минус: теряется время, сжигаются токены.
Что я сделал: каждое действие агента записывается. Не в оперативную память, а в постоянное хранилище. Когда агент запускается снова, он читает эту запись и понимает, где остановился.
Это называется resume. Работа не теряется. Продолжаем с того же места.
Задача 2. Как откатывать плохие шаги
Представь: агент сделал шаг, и что-то сломалось. Он понял, что сделал неправильно.
Наивное решение — чинить руками. Минус: долго, рискованно, можно сломать ещё больше.
Что я сделал: после каждого шага агента сохраняется снимок состояния. Если шаг плохой, берём предыдущий снимок. Всё, что было после, отменяется.
Это называется rollback. Не надо чинить руками. Откатил — и работаешь с чистой точки.
Задача 3. Как не создавать дубли
Представь: агент отправил команду «создать заказ». Но ответ не пришёл — сеть моргнула. Агент не знает, создался заказ или нет.
Наивное решение — повторить. Минус: создастся второй заказ.
Что я сделал: к каждой команде прикрепляется уникальный ключ. Система помнит ключи. Если приходит команда с тем же ключом, она не выполняется повторно.
Это называется идемпотентностью (idempotency). Повторная попытка не ломает систему.
Все три задачи — про надёжность. Про то, что может пойти не так. И про то, чтобы система не рассыпалась от первой же проблемы.
В последнем посте серии — что я понял за это время.
#HarnessOS #AIразработка #КакЯСтроилHarnessOS #AIагенты #разработка