Transcript
00:00:00Это Symphony от OpenAI, инструмент с открытым исходным кодом для управления долгоживущими агентами через
00:00:05существующие системы отслеживания задач, такие как Linear, чтобы помочь вашему агенту автономно выполнять задачи без
00:00:10контроля человека. Но зачем агенту собирать его с нуля, прежде чем вы сможете его использовать?
00:00:14Поддерживает ли он только Codex CLI? И станет ли это началом появления новых
00:00:18инструментов с открытым кодом от OpenAI? Подписывайтесь, и давайте выясним.
00:00:25Symphony появилась только потому, что OpenAI столкнулась с нехваткой человеческого внимания — инженеры
00:00:30могли контролировать только 3–5 сессий Codex одновременно, после чего переключение контекста начинало
00:00:35негативно сказываться на продуктивности. Это, конечно, не могло масштабироваться. И как же OpenAI решила
00:00:41проблему «быстрых агентов и медленных менеджеров»? Они избавились от менеджеров. Почти.
00:00:47В Symphony люди ставят задачи на доску, создается новый агент для выполнения этой задачи,
00:00:52и агент обращается к человеку только тогда, когда нужно что-то проверить.
00:00:55Но как Symphony соотносится с похожими инструментами, такими как Multica и Conductor?
00:00:58Посмотрите демо, и всё станет предельно ясно. Но прежде чем начать, я должен сказать,
00:01:03что у Symphony самый странный процесс установки, который я видел в жизни. Или это самый
00:01:07гениальный способ установки. К этому мы вернемся позже.
00:01:10Сначала разберем базовый пример. У меня запущена Symphony,
00:01:14которая опрашивает Linear на наличие задач. И в Linear я создам новую задачу:
00:01:18создать приложение Hello World на TypeScript и BUN.
00:01:22Сейчас Symphony не настроена на работу с бэклогом. Изменю статус на To-Do
00:01:27и нажму Create Issue. Запомните ID задачи — SYN7.
00:01:31Через некоторое время Symphony подхватывает этот ID. И спустя несколько секунд
00:01:36возникает ошибка валидации GraphQL, что не страшно и легко исправляется с помощью Codex.
00:01:41После этого мы видим, что Codex завершил работу, изменил статус задачи
00:01:45с To-Do на Done и оставил здесь комментарий от Symphony. Это значит, если мы перейдем
00:01:49в директорию рабочих пространств Symphony (позже об этом подробнее), мы увидим новое
00:01:53пространство с тем же ID, что и у задачи. Внутри этого пространства находится список
00:01:58файлов, созданных для приложения Hello World на TypeScript и BUN. Зайдя в папку source,
00:02:04мы увидим сам код приложения. По сути, это Symphony в двух словах.
00:02:08Теперь о том, как её настроить. Согласно репозиторию, есть два способа
00:02:12установки Symphony. Вариант два — привычный нам: ставим Elixir,
00:02:16клонируем репо, собираем код и запускаем его через файл рабочего процесса.
00:02:20Вариант один — возможно, самый странный или самый прогрессивный способ установки.
00:02:25Вы просто даете своему ИИ-агенту этот промпт, и он считывает файл спецификации,
00:02:30длина которого превышает 2000 строк. Там содержатся подробные
00:02:34инструкции для вашего агента по сборке Symphony. Это дико, ведь если бы все так делали,
00:02:39ни одна версия Symphony не была бы похожа на другую. У каждого были бы свои функции на
00:02:43разных языках, что стало бы хаосом для поддержки со стороны OpenAI.
00:02:47Но в этом есть и гениальность: если вы сами собрали свою версию Symphony,
00:02:51вы чувствуете за неё ответственность. Вы будете чинить баги, добавлять функции
00:02:55и поддерживать её. И если вы не хотите использовать Linear или
00:02:59Codex в Symphony — это ваше право. Кто-то собрал версию на Go с Charm CLI,
00:03:04а кто-то другой — версию на базе Claude SDK. Я не был столь креативен,
00:03:09поэтому скормил стандартный промпт в Codex через GPT 5.5 Low Effort, и он выдал мне Python-версию
00:03:15Symphony. Это логично, ведь нейросети отлично пишут на Python. Когда это готово,
00:03:19вам понадобится персональный API-ключ Linear, который можно получить в настройках безопасности,
00:03:23создав его по клику. Затем этот ключ нужно добавить в рабочий профиль —
00:03:28файл, который говорит Symphony, как работать. Он содержит YAML-заголовок,
00:03:32где указаны API-ключ, активные статусы для агента, чтобы он знал, когда брать задачу,
00:03:37а также путь к рабочему пространству и команду Codex — оболочку, которую Symphony
00:03:42использует для запуска агента. Ниже находится Markdown-промпт, отправляемый агенту
00:03:46по каждой задаче. Вы можете найти пример этого файла в репозитории OpenAI.
00:03:51Но на данный момент этот процесс не совсем подходит для реальных проектов. Допустим, я хочу
00:03:56внести изменения в свое приложение для эмуляции пленки. Мне нужно добавить хук create-after,
00:04:01который сработает после создания пространства для задачи. Этот хук сначала клонирует репозиторий
00:04:06в директорию, а затем создаст новую ветку. Также я добавил хук run-after,
00:04:10который запускается после завершения работы Codex над задачей. Он индексирует файлы,
00:04:15делает коммит, пушит ветку и создает пулл-реквест с заданными параметрами.
00:04:20Теперь, если запустить Symphony через UV (который тоже был куплен OpenAI, но об этом
00:04:25как-нибудь в другой раз), она начнет опрашивать задачи. Создам задачу на обновление readme —
00:04:30в разделе пакетной обработки нужно использовать маску вместо списка файлов.
00:04:35Опять меняю статус с бэклога на To-Do и жму Create Issue. Symphony подхватила
00:04:40эту задачу. В директории workspaces появилась новая папка с ID задачи,
00:04:45в которой лежит клонированный проект. Когда Symphony закончила работу над
00:04:49задачей, она перевела статус в Done и создала PR со ссылкой на тикет в Linear
00:04:54и именно теми изменениями, которые я просил. Конечно, я мог бы дописать код Symphony,
00:04:59чтобы описание PR было лучше, а ссылка на него была в комментариях, но Codex
00:05:04с этим легко справится. Вот такой краткий обзор Symphony. Если вы привыкли к Linear
00:05:08или работаете в компании, использующей его, интерфейс будет вам знаком. А если вы пользователь Codex,
00:05:13то сможете применить свои навыки, инструменты MCP и плагины. Лично я не
00:05:18использую Codex, но отчетливо вижу видение OpenAI. Представьте,
00:05:22команду разработчиков, работающих над одним проектом с ИИ. Вместо того чтобы у каждого
00:05:28был свой инструмент со своим процессом, может быть центральный агент с общими навыками,
00:05:33инструментами, процессами и плагинами. И каждый разработчик может общаться с ним,
00:05:37давая задачи. Видно, над чем работают другие, какие промпты они используют,
00:05:41и можно сразу понять, как чужие правки повлияют на вашу задачу. Хотя
00:05:46сложно придумать фичу, которая не затронет код, над которым трудится кто-то еще.
00:05:49Но при всей крутости Symphony, на мой взгляд, Multica справляется лучше, так как её
00:05:54проще настроить, в ней легче создавать агентов и даже можно планировать задачи. Тем не менее,
00:05:59у Symphony есть своя ниша. Это своего рода «голая» версия Multica, где вы
00:06:04можете добавить именно то, что вам нужно, вместо использования готового продукта.
00:06:08Считайте Symphony чем-то вроде каркаса, а Multica или Conductor — готовым решением.
00:06:13Если вы ничего не знаете о Multica, посмотрите это видео, где подробно рассказано
00:06:18обо всем, что нужно знать.