ACP обещает подключить сторонний агент, и первое слово, на которое натыкаешься, - registry. Имя сбивает: звучит как каталог, из которого выбирают и ставят агентов, как расширения из магазина или пакеты из npm. На деле локальный ACP registry устроен иначе, и непонимание этого - первый и самый частый источник жалобы "агент добавлен, а не запускается". Ошибка не в руках и не в конфиге как таковом, а в модели того, что этот файл вообще делает.
Наивный ход понятен: раз это registry, значит, в нём лежат сами агенты; добавил запись - среда скачала бинарник, разрешила его и подняла. Отсюда ожидание, что достаточно вписать имя и версию, а доставку, обновление и запуск Desktop возьмёт на себя. Модель магазина настолько привычна по другим инструментам, что переносится сюда автоматически, без проверки, применима ли она вообще.
Ломается это на первом же запуске. Devin Desktop не скачивает бинарник из registry: executable должен уже лежать на машине, а запись в registry лишь описывает, чем и как его поднять. В файле - секция distribution.binary.<platform>: команда и аргументы запуска под каждую операционную систему. Разница принципиальна: магазин отвечает за доставку и версию, карта запуска - только за то, как позвать уже доставленное. Поэтому в записи нет ни ссылки на скачивание, ни контрольной суммы - только путь к исполняемому файлу и список аргументов, с которыми Desktop поднимет локальный subprocess на вашей платформе.
Сам файл лежит по старому пути, и это отдельная ловушка. Stable читает ~/.windsurf/acp/registry.json, Next - ~/.windsurf-next/acp/registry.json. Имя каталога .windsurf сохранено после ребрендинга: это не опечатка и не забытый артефакт, а наследие Windsurf, о котором лучше знать заранее, иначе поиск по слову Devin не найдёт ничего. Искать файл по диску не нужно вовсе - команда Open Local ACP Registry Config в палитре открывает именно тот файл, который читает текущая линия сборки, и этим снимает вопрос, stable у вас или Next.
Одной записи в registry мало, и это второе решение, которое легко пропустить. Агент надо ещё включить: палитра, Devin User Settings, вкладка Agents, тумблер нужного агента - и перезапуск Desktop. Registry говорит, чем поднять; настройка Agents говорит, что этот агент вообще разрешён к запуску. Два разных уровня: один описывает механику, другой даёт согласие. Пропуск второго - самая частая причина, почему синтаксически верная запись не даёт ровно никакого видимого эффекта, и почему поиск бага уходит не туда.
Аутентификация вынесена отдельно - и это не мелочь оформления, а граница безопасности. Обычно агент логинят его собственной командой /login уже внутри сессии, либо задают переменные окружения - через кнопку "..." на вкладке Agents или ключом devin.acp.agentEnv.<agentName> в settings.json. Registry описывает запуск, а не секреты, и в этом разделении есть смысл: конфиг запуска и хранилище доступов живут по разным правилам и меняются в разном темпе.
Держать токен прямо в registry.json документация напрямую не требует и не запрещает, но инженерно это плохое место, и вывод здесь важнее буквы. Файл описывает запуск, часто попадает в дотфайлы и в синхронизацию между машинами, и секрет в нём утекает вместе с конфигом, незаметно и надолго. Поэтому доступы держат в окружении или в /login, где у них своя политика жизни и своя область видимости, а registry оставляют чистой декларацией запуска. Это вывод из устройства, а не пункт продукта, но цена ошибки здесь измеряется не строкой в логе, а утёкшим токеном.
Локальный registry оправдан, когда сторонний агент действительно нужен в вашей экосистеме и бинарник у вас уже есть или ставится штатным способом. Он не заменяет установку, не следит за версиями и не чинит зависимости - это тонкий слой, который лишь объясняет Desktop, как позвать то, что уже стоит. Ждать от него большего значит требовать функций магазина от карты запуска и потом удивляться их отсутствию.
Проверять результат стоит не по факту "запись добавлена", а по короткой цепочке из трёх шагов. Откройте файл командой из палитры и убедитесь, что путь к бинарнику и аргументы верны именно для вашей ОС, а не для соседней. Проверьте, что executable реально существует и запускается руками из терминала - если он не стартует сам, Desktop его тоже не поднимет. Включите агент на вкладке Agents и перезапустите Desktop. И только потом ждите его в selector: если не появился, вопрос почти всегда в одном из этих трёх шагов, а не в самом протоколе ACP.
Типичные провалы предсказуемы и почти всегда сводятся к подмене модели. "Агент не скачался" - потому что Desktop и не качает, бинарник ставят отдельно. "Запись есть, а агента нет" - не включили на вкладке Agents или не перезапустили. "Логин не проходит" - токен положили в registry вместо окружения или /login. "Файл не там" - искали по имени Devin, а путь остался .windsurf. Признак один во всех случаях: registry приняли за магазин, а не за карту запуска уже установленного бинарника. Вернуть ему эту роль - и большинство "почему не работает" отвечают себе сами ещё до обращения в поддержку.