omp²: архитектура agentic harness
Подробный постмортем и playbook рефакторинга omp в omp² — новая архитектура для надёжных agentic harness с единой материализованной сессией, доверенным control plane, bounded execution и формально верифицированным TUI.
privacy
Эта заметка участвует в semantic memory.
AI Summary
🚀 TL;DR: omp² — это полный рефакторинг класса agentic harness (OpenCode, Pi, OpenClaw, omp), вызванный тем, что «простая» while-цикл + fetch-архитектура не выдерживает реальных нагрузок (multiplexed workspace, remote driver, spectator, Factorio). Главная цель — переместить сложность внутрь модуля, чтобы callers не несли её копии. 2) Ключевые тезисы: (a) одна авторитетная сессия в виде DOM (XML-подобный), где state и transcript — одно дерево, а не два источника правды; (b) trusted control plane — host владеет policy, inference, limits, journaling; sandbox исполняет через минимальный stub; (c) bounded work — tool calls, subagents, background jobs — cancellable streams с центральными лимитами; (d) explicit compatibility — модельные и провайдерные quirks вынесены в KDL-таксономию (taxonomy/classes/providers) вместо разбросанных if/ternary; (e) views are projections — TUI, web, remote client рендерят один и тот же state. 3) Важные детали и нюансы: state failures в 78 официальных примерах Pi (60 stateless, из 17 stateful только 2 корректны); convar-система Source Engine как образец (typed var + flags: REPLICATED, ARCHIVE, CHEAT, NOTIFY, PROTECTED); Director stack для поведения (Plan, Goal, ForceTool) вместо приватных mutex и mode-флагов; forced tool calls — soft prompt + эскалация до native flag; dyn CLI для dynamic tool discovery без cache invalidation; Read и Bash как «сложные примитивы», чтобы callers не дублировали 30 % логики; RichText pipeline снижает render time с 267 с до 90 мс; TLA+ модель Elastic Speculative Slots формально доказывает exactly-once историю и resize-нейтральность. 4) Практические выводы / следующие шаги: (a) внедрять DOM-сессию и convar-систему; (b) вынести compatibility в KDL и убрать ветвления из inference; (c) ограничить постоянный tool roster 5 примитивами + dyn discovery; (d) использовать Python SDK для @remote extensions; (e) проверить TUI-поведение через TLA+ перед изменениями; (f) собирать AutoQA-сигналы для итеративного улучшения инструментов.