Open SWE: open-source фреймворк для внутренних coding-агентов
За последний год несколько инженерных команд создали внутренних coding-агентов, которые работают бок о бок с разработчиками. Stripe разработал Minions, Ramp собрал Inspect, Coinbase создал Cloudbot. Все эти системы встраиваются в существующие workflows — через Slack, Linear и GitHub — а не заставляют инженеров переходить в новые интерфейсы.
Несмотря на независимую разработку, все три системы пришли к схожим архитектурным решениям: изолированные cloud-песочницы, тщательно отобранный набор инструментов, оркестрация (координация) дочерних агентов и интеграция с рабочими процессами разработчиков. Это говорит о том, что у production-агентов есть общие требования.
Мы выпускаем Open SWE — open-source фреймворк, который фиксирует эти паттерны в настраиваемом виде. Построенный на Deep Agents и LangGraph, Open SWE предоставляет ключевые архитектурные компоненты, которые мы наблюдали во всех трёх реализациях. Если ваша команда исследует тему внутренних coding-агентов — это хорошая стартовая точка.
Паттерны из production-развертываний
Stripe, Ramp и Coinbase построили своих агентов независимо, но Kishan Dahya подробно разобрал их архитектурные решения. Ниже — краткая выжимка и сравнение с Open SWE.
Изолированные среды выполнения. Задачи запускаются в выделенных cloud-песочницах с полными правами внутри строгих границ. Это ограничивает последствия ошибок и при этом позволяет агентам выполнять команды без запроса подтверждения на каждое действие.
Тщательно отобранные наборы инструментов. По словам команды Stripe, их агенты имеют доступ примерно к 500 инструментам — но это не накопленная за годы масса, а тщательно отобранный и поддерживаемый набор. Качество инструментов важнее количества.
Slack-first интерфейс. Все три системы используют Slack как основную точку входа — разработчики не переключаются между приложениями.
Полный контекст при старте. Агенты собирают контекст из Linear-тикетов, Slack-тредов или GitHub PR до начала работы. Это избавляет от необходимости добывать требования через дополнительные вызовы инструментов.
Оркестрация дочерних агентов (subagent’ов). Сложные задачи разбиваются на части и делегируются специализированным дочерним агентам с изолированным контекстом и чёткими зонами ответственности.
Эти решения зарекомендовали себя в production, но каждая команда адаптирует компоненты под свои нужды.
Архитектура Open SWE
Open SWE реализует аналогичные паттерны как open-source. Вот как фреймворк отображается на наблюдаемую картину.
1. Agent Harness: сборка поверх Deep Agents
Вместо форкания существующего агента или построения с нуля, Open SWE собирается из компонентов фреймворка Deep Agents. Подход похож на то, как команда Ramp построила Inspect поверх OpenCode.
Сборка из готовых компонентов даёт два преимущества:
Путь апгрейда. Когда Deep Agents улучшается — лучше работает с контекстом, эффективнее планирует, оптимизирует потребление токенов — вы получаете эти улучшения без пересборки кастомных слоёв.
Кастомизация без форка. Организационные инструменты, промпты и workflows хранятся как конфигурация, а не как модификация базовой логики агента.
create_deep_agent(
model="anthropic:claude-opus-4-6",
system_prompt=construct_system_prompt(repo_dir, ...),
tools=[
http_request,
fetch_url,
commit_and_open_pr,
linear_comment,
slack_thread_reply
],
backend=sandbox_backend,
middleware=[
ToolErrorMiddleware(),
check_message_queue_before_model,
...
],
)
Deep Agents обеспечивает необходимую инфраструктуру: встроенное планирование через write_todos, файловое управление контекстом, нативное создание subagent’ов через tool task и middleware-хуки (промежуточные слои логики) для строго заданной оркестрации.
2. Песочница: изолированные cloud-окружения
Каждая задача выполняется в собственной изолированной cloud-песочнице — удалённом Linux-окружении с полным shell-доступом. Репозиторий клонируется внутрь, агент получает полные права, а все ошибки остаются внутри окружения.
Open SWE из коробки поддерживает несколько провайдеров песочниц:
Можно реализовать и собственный backend.
Это следует наблюдаемому паттерну: сначала изоляция, затем полные права внутри границ.
Ключевые свойства:
- Каждый тред получает персистентную (сохраняемую между сообщениями) песочницу, переиспользуемую при последующих сообщениях
- Песочницы автоматически пересоздаются при потере связи
- Несколько задач выполняются параллельно, каждая в своей песочнице
3. Инструменты: отбор, а не накопление
Open SWE поставляется с фокусированным набором:
| Tool | Назначение |
|---|---|
execute |
Shell-команды в песочнице |
fetch_url |
Загрузка веб-страниц как markdown |
http_request |
API-вызовы (GET, POST и т.д.) |
commit_and_open_pr |
Git-коммит и открытие GitHub draft PR |
linear_comment |
Обновления в Linear-тикетах |
slack_thread_reply |
Ответы в Slack-тредах |
Плюс встроенные инструменты Deep Agents: read_file, write_file, edit_file, ls, glob, grep, write_todos и task (создание subagent’ов).
Меньший и продуманный набор проще тестировать, поддерживать и анализировать. При необходимости добавляйте инструменты для своих внутренних API, систем деплоя или тестовых фреймворков явно.
4. Context Engineering: AGENTS.md + контекст задачи
Context Engineering (управление контекстом) — подход к наполнению агента нужными данными. Open SWE собирает контекст из двух источников:
Файл AGENTS.md. Если в корне репозитория есть этот файл, он считывается из песочницы и подставляется в system prompt. Тут можно описать конвенции, требования к тестам, архитектурные решения и командные паттерны — всё, что агент должен учитывать при каждом запуске.
Контекст задачи. Полный Linear-тикет (заголовок, описание, комментарии) или история Slack-треда собирается и передаётся агенту до старта. Это обеспечивает задачную специфику без дополнительных вызовов инструментов.
Двухслойный подход балансирует знание о репозитории с информацией о конкретной задаче.
5. Оркестрация: Subagent’ы + Middleware
Оркестрация в Open SWE объединяет два механизма:
Subagent’ы. Deep Agents поддерживает создание дочерних агентов через tool task. Основной агент может делегировать независимые подзадачи изолированным subagent’ам — каждый со своим middleware-стеком, списком задач и файловыми операциями.
Middleware. Строго заданные хуки, обёртывающие агентный цикл:
check_message_queue_before_model— подставляет входящие сообщения (комментарии в Linear или Slack, пришедшие во время работы) перед следующим вызовом модели. Позволяет корректировать агента на лету.open_pr_if_needed— страховка: если агент завершился без открытия PR, middleware сделает это автоматически.ToolErrorMiddleware— ловит и обрабатывает ошибки инструментов.
Разделение между agentic-оркестрацией (решения принимает модель) и детерминированной (решения прописаны в коде) помогает балансировать гибкость и надёжность.
6. Вызов: Slack, Linear и GitHub
Многие команды приходят к Slack как к основной поверхности вызова. Open SWE следует этому паттерну:
Slack. Упомяните бота в любом треде. Поддерживается синтаксис repo:owner/name для указания репозитория. Агент отвечает в тред статусами и ссылками на PR.
Linear. Комментарий @openswe в любом тикете. Агент читает полный контекст, ставит реакцию 👀 в подтверждение, а результаты отправляет обратно как комментарий.
GitHub. Тег @openswe в комментариях к PR, созданным агентом — он обработает замечания ревьюера и запушит фиксы в ту же ветку.
Каждый вызов создаёт предсказуемый thread ID, так что последующие сообщения по тому же тикету маршрутизируются к тому же работающему агенту.
7. Валидация: через промпт + страховочные сетки
Агенту предписано запускать линтеры, форматтеры и тесты перед коммитом. Middleware open_pr_if_needed служит подстраховкой — если агент завершился без открытия PR, middleware обработает это автоматически.
Слой валидации можно расширять: добавлять CI-проверки, визуальную верификацию или gates ревью (обязательные точки проверки) как дополнительный middleware.
Почему Deep Agents
Deep Agents даёт фундамент, делающий эту архитектуру собираемой из компонентов и поддерживаемой.
Управление контекстом. Долгие coding-задачи генерируют много промежуточных данных — содержимое файлов, вывод команд, результаты поиска. Deep Agents решает это через файловую память, выгружая большие результаты вместо хранения всего в истории диалога. Это помогает избежать переполнения контекста на крупных кодовых базах.
Примитивы планирования. Встроенный tool write_todos даёт структурированный способ разбиения работы на части, отслеживания прогресса и адаптации планов по мере поступления новой информации. Особенно полезно для многошаговых задач.
Изоляция subagent’ов. При создании дочернего агента через task он получает собственный изолированный контекст. Разные подзадачи не засоряют историю друг друга, что даёт более чистое рассуждение на сложных задачах.
Middleware-хуки. Позволяют встраивать строго заданную логику в конкретные точки агентного цикла. Именно так в Open SWE реализованы подстановка сообщений и автоматическое создание PR — поведение, которое должно срабатывать надёжно.
Путь апгрейда. Deep Agents активно развивается как самостоятельная библиотека. Улучшения — сжатие контекста, кэширование промптов, эффективность планирования — доходят до Open SWE без пересборки кастомизаций.
Такой подход даёт преимущества, аналогичные тем, что описала команда Ramp при построении на OpenCode: вы получаете поддерживаемый и улучшающийся фундамент, сохраняя контроль над своим организационным слоем.
Кастомизация под вашу организацию
Open SWE — это настраиваемый фундамент, а не готовый продукт. Каждый крупный компонент подключаем:
Провайдер песочницы. Выбирайте между Modal, Daytona, Runloop или LangSmith. Реализуйте свой backend при необходимости.
Модель. Любой LLM-провайдер. По умолчанию Claude Opus 4, но можно настроить разные модели для разных подзадач.
Инструменты. Добавляйте tools для внутренних API, систем деплоя, тестовых фреймворков или мониторинга. Убирайте ненужное.
Триггеры. Модифицируйте логику интеграции со Slack, Linear и GitHub. Добавляйте новые поверхности — email, webhooks, кастомные UI.
System prompt. Кастомизируйте базовый промпт и логику подключения AGENTS.md. Добавляйте организационные инструкции, ограничения и конвенции.
Middleware. Добавляйте собственные хуки для валидации, approval-гейтов, логирования или проверок безопасности.
Customization Guide проводит по каждой точке расширения с примерами.
Сравнение с внутренними реализациями
Как Open SWE соотносится с системами Stripe, Ramp и Coinbase на основе публично доступной информации:
| Решение | Open SWE | Stripe (Minions) | Ramp (Inspect) | Coinbase (Cloudbot) |
|---|---|---|---|---|
| Harness | Сборка (Deep Agents/LangGraph) | Форк (Goose) | Сборка (OpenCode) | С нуля |
| Песочница | Плагинная (Modal, Daytona, Runloop и др.) | AWS EC2 devboxes (pre-warmed, заранее запущенные) | Modal-контейнеры (pre-warmed, заранее запущенные) | Собственная |
| Инструменты | ~15, отобранные | ~500, отобранные на агента | OpenCode SDK + расширения | MCP (Model Context Protocol) + кастомные Skills |
| Контекст | AGENTS.md + тикет/тред | Rule-файлы + pre-hydration (предзагрузка контекста) | Встроенный в OpenCode | Linear-first + MCP |
| Оркестрация | Subagent’ы + middleware | Blueprints (детерминированная + agentic) | Sessions + child sessions | Три режима |
| Вызов | Slack, Linear, GitHub | Slack + встроенные кнопки | Slack + web + Chrome-расширение | Slack-native |
| Валидация | Через промпт + PR-страховка | 3 слоя (local + CI + 1 retry) | Визуальная DOM-верификация | Agent councils + auto-merge |
Базовые паттерны схожи. Различия — в деталях реализации, внутренних интеграциях и организационных инструментах. Именно этого и следует ожидать при адаптации фреймворка к разным окружениям.
Начало работы
Open SWE доступен на GitHub.
Installation Guide: создание GitHub App, настройка LangSmith, конфигурация триггеров Linear/Slack/GitHub и production-деплой.
Customization Guide: замена песочницы, модели, инструментов, триггеров, system prompt и middleware под вашу организацию.
Фреймворк распространяется под лицензией MIT. Можно форкать, кастомизировать и деплоить внутри компании. Если построите на базе него что-то интересное — нам будет интересно узнать.
Несколько инженерных команд уже успешно развернули внутренних coding-агентов в production. Open SWE даёт open-source реализацию схожих архитектурных паттернов, рассчитанную на адаптацию под разные кодовые базы и workflows. Мы продолжаем изучать, что работает в разных контекстах, но этот фреймворк — разумная стартовая точка для команд, идущих этим путём.
Попробовать Open SWE: github.com/langchain-ai/open-swe
Узнать о Deep Agents: docs.langchain.com/oss/python/deepagents
Записаться в waitlist LangSmith Sandboxes: https://www.langchain.com/langsmith-sandboxes-waitlist
Документация: Open SWE Documentation
