Alex ChernyshAlex ChernyshAgentic behaviorist · Тель-Авив
СтатьиАссистент
Назад к статьям

Статья

SYNAPSE: прототип software engineering с adaptive control

SYNAPSE — framework 2025 года для AI-агентов, которые ведут software lifecycle и адаптируют свои критерии успеха через MCDM. Идея детерминированного control plane позже вышла как Bernstein.

15 июля 2025 г.·7 мин чтения
DeliveryResearch
На странице(8)
Форма loopСинтетический экспериментЧто сработалоЧто не сработалоВо что это вырослоKotef — durable single-agent runnerBernstein — детерминированный control plane на масштабеРепозиторииПо темеДальнейшее чтение

Обновление — апрель 2026

Это был прототип. Идея детерминированного control plane позже вышла как Bernstein. Между ними был промежуточный прототип, Kotef — durable single-agent runner; в итоге он сложился внутрь multi-agent дизайна Bernstein.

Большинство agent loop в 2025 выбирали fitness function один раз и держали её константной. SYNAPSE — попытка положить решение «что в этом запуске значит хорошо» внутрь самого loop.

TL;DR

SYNAPSE предлагает автономный control loop, который сам адаптирует свои критерии успеха через multi-criteria decision-making (MCDM). Adaptive слой я проверил на синтетическом 2D pathfinding-сценарии. Small, single seed, направление, а не статистика. Концептуальный выигрыш в разделении: ЧТО агент оптимизирует (metric profile) и КАК он исполняет (внутренний loop). Control plane — обычный Python. LLM трогает только генерацию кандидатов. Framework — эскиз. Эксперимент — sanity check. Вместе их хватает, чтобы аргументировать форму.

Что предлагал SYNAPSE

  • adaptive metric selection — пересчитывать weight vector на каждой итерации, не только на старте
  • детерминированный control plane — оркестратор это Python, никогда не LLM, планирующий сам себя
  • MCDM7 dimensions: PerfGain, SecRisk, DevTime, Maintainability, Cost, Scalability, DX
  • human-in-loop checkpoints на границах, где меняется metric profile
  • synthetic-data-native validation — small, fast, repeatable сценарии вместо ручных бенчмарков

Форма loop

Большинство agent framework середины 2025 года читались одинаково. Planner выдаёт шаг. Executor его выполняет. Scorer возвращает число. Loop замыкается. Fitness function (то, что решает, идёт ли запуск хорошо) — константа. Её задают на старте и с ней живут.

SYNAPSE пытается сломать это допущение. В реальной инженерной работе правильный trade-off нестабилен. Первый проход заботится о корректности. Hardening pass — о safety и risk. Spike перед дедлайном — о wall-clock time за счёт maintainability. Если агент работает на всех этих фазах, ему нужно разрешить пересматривать критерии. Явно, легитимно, с записью в лог.

Loop состоит из пяти шагов. Сгенерировать кандидата. Провалидировать его на quality gates. Оценить результат против текущего metric profile. Скорректировать profile если сценарий требует. Выбрать следующий ход. Первый и последний трогают LLM. Три средних — детерминированный Python.

SYNAPSE control loop
Generation, validation, scoring, metric adjustment, next-move selection. LLM трогает только генерацию; всё остальное — код.

Новизна в шаге четыре. Агент читает сценарий, выбирает metric profile (наклониться в safety, потому что коридор шумный; наклониться во время, потому что дедлайн жёсткий) и пересчитывает следующего кандидата под новые веса. Vocabulary MCDM7 (PerfGain, SecRisk, DevTime, Maintainability, Cost, Scalability, DX) даёт profile форму, с которой можно спорить. Weight-векторы лежат в config. Decision logs — в файле. Ничего не прячется в чате.

Синтетический эксперимент

Концептуальный loop выше требует evaluation harness гораздо большего, чем я собрал. Что реально шипанулось — один proof-of-concept run: continuous 2D pathfinding под dynamic wind. Два агента двигают симулированный дрон из старта в цель под конфликтующим давлением — time, energy, safety margin, payload integrity.

  • StaticAgent использует фиксированный weight vector на весь запуск.
  • SYNAPSEAgent читает сценарий, выбирает metric profile (здесь: наклон в safety, потому что ветер делает коридор шумным) и пересчитывает на каждом шаге.

Вопрос был узкий: меняет ли адаптация критериев выбранный путь измеримо, под одним adversarial-сценарием?

AgentEnergySafety (меньше = безопаснее)TimePath found
StaticAgent170.283.9759.71 сyes
SYNAPSEAgent122.321.2461.50 сyes

SYNAPSEAgent потратил ~28% меньше энергии и получил ~3.2× лучший safety-метрик (1.24 против 3.97), при ~3% штрафе по времени. CSV закоммичен дословно в results/experiment_results_20250708_225100.csv. Ничего не сглажено.

Что это за evidence — и чем оно не является

N=1 — не результат. Это направленный сигнал. Один сценарий, один seed, одно расписание весов. Adaptive слой повёл себя ровно так, как был спроектирован, на лёгком кейсе. Обобщается ли он на более богатые среды — открытый вопрос. Честный ответ: «не знаю, harness слишком мал, чтобы это утверждать». В .dev/.plan.md в репо лежит факториальный дизайн с Mann–Whitney U и Cliff's δ, которого этому эксперименту не хватает.

Что сработало

Несколько вещей выдержали лучше, чем я ожидал.

Архитектурный паттерн. Разделение ЧТО агент оптимизирует и КАК исполняет — чистый разрез. Когда metric profile становится first-class объектом (dict в YAML-файле, а не предложение в промпте), агент перестаёт спорить сам с собой что важнее: скорость или safety. Берёт profile, исполняет под него, следующая корректировка видна в diff.

Vocabulary. MCDM7 достаточно opinionated, чтобы быть полезным, и достаточно small, чтобы держаться в голове. Ложится на trade-off-ы, которые senior engineers и так обсуждают вслух. Сделать их явными.

Детерминированно, где можно. Оркестратор не тратит ни одного LLM-токена на собственный scheduling. Каждое решение control plane воспроизводимо из config и seed. Это аргумент про debuggability. Когда что-то ведёт себя криво, ты читаешь decision log, а не гадаешь, что подумала модель.

Что не сработало

Часть вещей оказалась преждевременной.

Нет реальных CLI-агентов, которыми можно оркестрировать. До-Claude-Code эпоха. Нет зрелого agentic CLI, который берёт бриф, редактирует файлы, запускает тесты и возвращается. SYNAPSE описывает control plane для инструментов, которых ещё нет. LlamaAdapter в прототипе — тонкая обёртка над Ollama. Умеет сгенерировать кандидата. Не умеет работать с репозиторием.

Нет grounding-слоя. До-MCP. У агента нет стандартизованного способа дёрнуть filesystem, build-тул, linter или базу. Каждый адаптер пишется руками. Цена «дать агенту настоящий инструмент» достаточно высока, чтобы прототип валидировал loop только на закрытой симуляции.

Эксперимент слишком маленький. Один сценарий, один seed, нет факториального дизайна, нет теста значимости. Числа реальные. История маленькая. В roadmap-файле репо этот gap зафиксирован явно. Это тот пробел, который превращает «research preview» во что-то публикуемое.

Во что это выросло

SYNAPSE был эскизом. Форма, которую он отстаивал, дозрела через два следующих проекта.

Kotef — durable single-agent runner

Kotef взял SYNAPSE-loop и поставил его на реальные репозитории. Supervisor-flow planner → researcher → coder → verifier → janitor гоняет цикл по живому коду, с durable state в .sdd/runtime/, MCP-grounded инструментами и resume по thread ID. Это single-agent. Metric profile стал quality-gate конфигом; адаптивный слой стал backlog-driven планнером, который перепересчитывает приоритеты на каждом тике. Kotef — причина, почему я поверил, что loop переживает контакт с файловой системой.

Bernstein — детерминированный control plane на масштабе

Что Kotef сделал для одного агента, Bernstein делает для многих. Детерминированный Python scheduler декомпозирует цель, диспатчит короткоживущих агентов в изолированные git worktrees, верифицирует выход через janitor и коммитит то, что выжило. LLM пишет код; оркестратор решает, что запускается и что мёржится. Decision log — каталог с обычными файлами. Vocabulary поменялся (tasks, adapters, budget caps, MCP integration); форма — та же пятиступенчатая SYNAPSE-петля (generate, validate, score, adjust criteria, choose next move) с whiteboard. Уроки Kotef про durable state и backlog-driven планирование переехали туда же.

Репо остаётся публичным, потому что lineage честнее, чем polish. SYNAPSE — это маленький кусок evidence, что loop работает на лёгком кейсе. Production-системы, которые пришли позже, — это настоящий аргумент. Этот — карточка над столом.

Оркестратор и есть продукт. Ему разрешено менять мнение о том, что такое «успех». Условие одно: каждое такое изменение остаётся читаемым и воспроизводимым, а человек может его перебить.

Репозитории

Репозитории

  • SYNAPSE на GitHub — прототип 2025 года
  • Kotef на GitHub — durable single-agent runner, который пришёл следом
  • Bernstein на GitHub — multi-agent control plane, выросший из той же ДНК
По теме

По теме

  • Я запустил 12 ИИ-агентов на 47 часов
  • Building agentic AI systems that hold up
  • Spec-driven development: workflow, который я реально использую
  • AI-assisted development: как довести до green
Источники

Дальнейшее чтение

  • Hwang & Yoon, Multiple Attribute Decision Making (1981) — линия TOPSIS, через которую проходит каждая adaptive-metric routine здесь.
  • Sutton & Barto, Reinforcement Learning: An Introduction (2nd ed., 2018) — policy-iteration framing для внешнего loop.
  • Brooks, The Mythical Man-Month (1975) — conceptual integrity как первая обязанность инженера.

— Alex Chernysh, alexchernysh.com

✓ Reading complete

Alex ChernyshAlex ChernyshApplied AI Systems & Platform Engineer

Ещё по теме Delivery

Часть публичных заметок про AI-системы с опорой на источники: поиск, evals и поставку под реальными ограничениями.

  • →Прогноз без пророчества: дисциплина в простом тексте2 мая 2026 г.·10 мин чтения
  • →Как доводить разработку с AI до зелёного CI и не ломать код4 мар. 2026 г.·5 мин чтения
  • →Большинство проблем в RAG начинаются с документов12 февр. 2026 г.·5 мин чтения
На странице
  • 01Форма loop1 min
  • 02Синтетический эксперимент1 min
  • 03Что сработало1 min
  • 04Что не сработало1 min
  • 05Во что это выросло
  • Kotef — durable single-agent runner
  • Bernstein — детерминированный control plane на масштабе1 min
  • 06Репозитории
  • 07По теме
  • 08Дальнейшее чтение