Coroid's агенты пишут код так же, как инженер, работающий в терминале. Не нужно ждать интеграции под конкретный язык: если компетентный разработчик может открыть ваш репозиторий, прочитать его, внести изменения и выполнить соответствующие команды, то сможет и агент.
Различия между языками заключаются не в том, может ли Coroid работать с ним. А в том, насколько независимо Coroid способно подтвердить корректность внесённых изменений — семантически анализировать ваш код, собирать его, запускать тестовый набор, запускать приложение в контейнере. Именно это и составляет суть поддержки языков, и важно понимать этот аспект перед тем, как оценивать результат.
Среда агента
Каждая задача выполняется в чистом, разовом рабочем пространстве Linux, созданном на основе образа Debian, от имени непривилегированного пользователя. Ничто не сохраняется между задачами: каждая начинается с нового клона без кэша и предустановленного ПО, кроме самого образа.
В образ включён универсальный инструментарий, поэтому для большинства проектов не требуется дополнительная настройка:
| Область | Доступно |
|---|---|
| JavaScript / TypeScript | Node.js 22, npm, npx |
| Python | Python 3, pip, venv, Poetry, Pipenv |
| Java | JDK (headless), Maven, Gradle |
| Go | Инструментарий Go |
| PHP | PHP CLI, Composer |
| Ruby | Ruby, Bundler |
| C / C++ | GCC, G++, Make, CMake |
| Браузер | Chromium, для тестирования в браузере и проверки предпросмотра |
| Общие параметры | git, curl, jq, ripgrep, grep, sed, awk, coreutils, клиент PostgreSQL |
Если в этом списке нет нужного элемента — менее распространённой среды выполнения, конкретной версии компилятора или нативной зависимости — это не препятствие. Это повод использовать собственный контейнер.
Чем отличаются языки друг от друга
Три фактора, упорядоченные по степени влияния на качество работы.
Языковые серверы
Сервер языка обеспечивает агенту семантическое понимание: переход к определению, поиск ссылок, реальные типы. При наличии такого сервера агент может задавать точные вопросы о вашем коде, а не выводить ответы на основе текста. Без него агент лишь считывает код — что работает хорошо для небольших и средних проектов, но становится менее надёжным при увеличении размера и сложности кода.
Coroid запускает серверы языков для TypeScript и JavaScript, Python, Java и C#.
Для других языков используется режим чтения. Это главное отличие по качеству между языками — разница лишь в степени, а не в типе.
Команды сборки и тестирования
Агенту необходимо скомпилировать ваш проект и запустить тестовый набор, чтобы проверить собственную работу. Coroid определяет эти команды при создании проекта; при этом определение лучше работает для стандартных структур, чем для нестандартных.
Это настройка, а не возможность — см. настройка сборки и тестирования. Правильная пара команд для редкого языка эффективнее неправильной пары для популярного языка.
Контейнеры
Если ваш проект может запускаться в контейнере, Coroid использует его в качестве среды выполнения, что позволяет сразу устранить расхождения в окружении и зависимости от сторонних сервисов.
Когда для вашего языка нет сервера языка
Практичные альтернативы, отсортированные по эффективности:
- Настройте команды сборки и тестирования явно , не полагаясь на автоматическое определение. Это важнее, чем наличие сервера языка.
- Используйте контейнеризацию. Рабочий контейнер закрывает большинство проблем уровня окружения.
- Вложитесь в контекст проекта. Хороший контекст частично компенсирует функции сервера языка, предоставляя агенту информацию о структуре, которую иначе пришлось бы определять самостоятельно.
Используйте собственный контейнер
Если ваш проект успешно собирается и тестируется в файле Dockerfile или Compose, это самая надёжная доступная настройка — лучше, чем использование стандартного образа для хорошо поддерживаемого языка, так как контейнер точно сохраняет ваш стек инструментов, версии и зависимости от сервисов.
Простой тест: склонируйте ваш репозиторий в пустую директорию и выполните install, сборку и тестирование без дополнительных настроек. Если это сработает, Coroid также будет работать.
Частные реестры и доступ к сети
Рабочие пространства имеют доступ к сети, поэтому публичные реестры пакетов работают без дополнительной настройки. Для частных реестров — частного npm-реестра, внутреннего репозитория Maven, самостоятельно размещённого PyPI — требуются учётные данные, указанные в настройках проекта, так как в чистом рабочем пространстве нет готовых учётных данных для наследования.
Проекты с несколькими языками
Большинство реальных проектов используют более одного языка. Фронтенд на TypeScript с сервисом на Python — распространённый случай, и Coroid справляется с ним. Глубина обработки зависит от языка, в котором фактически внесено изменение — изменение в хорошо поддерживаемой части получает полноценную обработку независимо от того, на каком языке написана другая часть.