elide adopt запускает ИИ-агента для программирования (Codex, Claude Code или OMP) в текущем каталоге со встроенным
промптом для миграции. Агент читает сборку, редактирует файлы и запускает Elide; сам Elide ничего не редактирует.
Промпт рассчитан на проекты на Java и Kotlin, собираемые Maven или Gradle, особенно на Spring Boot, и требует от агента
сохранить работоспособность остальных языков.
elide adoptelide adopt переносит сборку в elide.pkl. Чтобы сохранить Maven, Gradle или Bazel и использовать в них компиляторы
Elide, см. Интеграция со сборщиками.
Каким проектам подходит
| Проект | Пригодность | Почему |
|---|---|---|
| Одномодульное приложение на Java или Kotlin с Maven или Gradle | Хорошая | Зависимости, структура исходников, тесты и JAR переносятся в elide.pkl. Проверено. |
| Приложение или сервис на Spring Boot | Хорошая | Промпт проверяет главный класс, зависимости и плагины Spring, ресурсы, тесты и упаковку. Проверено. |
| Сборка для JVM, которую вы хотите сохранить, а Elide нужен только для запуска и компиляции | Хорошая | Выберите Существующая сборка: elide.pkl не требуется. |
| Многомодульные сборки | Не проверено | В Elide есть рабочие пространства, но промпт на них не оценивался. |
| Много собственных плагинов, сгенерированные исходники, нестандартная обработка аннотаций | Плохая | Агент оставляет Maven или Gradle для шагов, которые Elide не заменяет; рассчитывайте на частичную миграцию. |
| Android | Не проверено | Промпт не оценивался на сборках для Android. |
| Только JavaScript, TypeScript или Python | Не нужно | Elide запускает скрипты package.json, точки входа pyproject.toml и файлы node:test без миграции; см. Настройка проекта. |
Проверенные проекты
Проекты такого вида проходят elide install, elide build, elide test, запуск и исходную сборку, начиная с чистого
клона, с агентом Codex:
| Вид проекта | Существующая сборка | Проверено на |
|---|---|---|
| Java, приложение Spring Boot | Maven | Spring Petclinic: зависимости, ресурсы, тесты, запускаемое приложение, JAR |
| Java, сервис Spring Boot | Gradle | REST-сервис Spring: зависимости, ресурсы, тесты, готовность по HTTP |
| Консольное приложение Kotlin/JVM | Gradle Kotlin DSL | Один модуль с сериализацией и корутинами Kotlin |
Агент Claude Code показан на приложении Kotlin в подробном примере.
Перед началом
-
Установите агента и войдите в него. Elide запускает его из
PATH:Выбор Исполняемый файл Агент codexcodexOpenAI Codex CLI claudeclaudeClaude Code ompompOMP -
Закоммитьте проект, чтобы миграция стала одним диффом, который можно проверить.
-
Соберите его один раз с Maven или Gradle, чтобы иметь заведомо рабочую исходную точку.
-
Перейдите в каталог проекта через
cdили передайте-p DIR.
Интерактивный запуск
elide adopt задаёт три вопроса, затем запускает агента. Флаги отвечают на вопрос заранее.
| Вопрос | Ответы | Флаг |
|---|---|---|
| Use elide build with an elide.pkl project manifest? | Да (по умолчанию): Сборка Elide. Нет: Существующая сборка | --build elide, --build existing |
| Which AI coding harness should perform the migration? | codex, claude, omp | --harness |
| How should the harness approve tool calls? | auto-approve, manual-approve, yolo | --approval |
elide adopt --build elide --harness claudeEsc на вопросе завершает работу с кодом 0, не запуская агента. Ctrl+C останавливает агента и завершает работу с
кодом 130.
Стратегия сборки
| Стратегия | Промпт требует от агента |
|---|---|
| Сборка Elide | Написать elide.pkl: сохранить src/main/src/test без объявления наборов исходников, сохранить версии и области видимости зависимостей, задать целевую версию и release для Java, описать JAR с главным классом. Сохранять Maven или Gradle, пока итоговые elide install, elide build, elide test, elide run и исходная сборка не пройдут успешно. |
| Существующая сборка | Оставить Maven или Gradle в качестве сборки; использовать среду выполнения и инструменты Elide только там, где они помогают; не создавать elide.pkl только ради elide build. |
Обе стратегии заканчиваются сводкой изменённых файлов, выполненной проверки и оставшихся задач.
Режим подтверждения
| Режим | Codex | Claude Code | OMP | Когда использовать |
|---|---|---|---|---|
auto-approve | --approve-for-me | --permission-mode auto | --auto-approve | Закоммиченное рабочее дерево, которое вы проверите. |
manual-approve | (без флага) | --permission-mode manual | --approval-mode= | Незнакомые или чувствительные репозитории. |
yolo | --dangerously-bypass-approvals-and-sandbox | --permission-mode bypassPermissions | --approval-mode=yolo | Одноразовые окружения без секретов. |
С auto-approve или yolo Elide запускает агента в пакетном режиме (codex exec --skip-git-repo-check,
claude --print, omp --print) и показывает строку прогресса; --log дополнительно транслирует вывод агента. С
manual-approve агент работает интерактивно, и его вывод показывается всегда.
Запуск без вопросов
elide adopt \
--build elide \
--harness codex \
--approval auto-approve \
--non-interactive--non-interactive требует --build, --harness и --approval; если какого-то нет, команда завершается с кодом
2. Этот флаг отклоняет manual-approve. Без терминала elide adopt завершается с кодом 1, если не заданы
--non-interactive и все три флага.
Дополнительные указания
--prompt-append FILE добавляет файл в UTF-8 в конец промпта под заголовком Additional adoption guidance:.
Повторите флаг, чтобы добавить несколько файлов по порядку:
elide adopt --prompt-append ./adoption-guidance.md --prompt-append ./team-rules.mdИспользуйте его для фактов, которые агент не может вывести сам: внутренние репозитории, какую сборку сохранить, какие команды должны продолжать работать.
Результат и коды выхода
Правки агента — единственный результат в проекте. В подробном примере это были новый elide.pkl и
записи .gitignore для .dev/. Перед началом Elide выводит Adoption log: PATH; журнал сохраняется в проекте в
.dev/logs/adopt-<timestamp>-<pid>.log.
| Код выхода | Значение |
|---|---|
0 | Агент завершился с кодом 0, или вопрос был отменён. |
1 | Агент завершился с ошибкой (Error: claude exited unsuccessfully (exit status: 3)), не смог запуститься (Error: failed to launch codex: No such file or directory), файл --prompt-append не читается или нет терминала. |
2 | Флаг отсутствует или недопустим. |
130 | Прервано через Ctrl+C. |
Проверка миграции
Код 0 означает, что агент закончил работу, а не что миграция верна. Проверьте дифф: версии зависимостей, каталоги
исходников и ресурсов, точку входа, тесты и упаковку. Затем выполните:
elide install
elide build
elide test
elide runЗапустите и исходную сборку Maven или Gradle, пока она существует. Если результат неверен, откатите изменения,
добавьте указания через --prompt-append и запустите снова.
Подробный пример
Одномодульное консольное приложение на Kotlin, собираемое Gradle Kotlin DSL: Kotlin 2.3.20, JVM 17,
kotlinx-coroutines-core 1.10.2, kotlinx-serialization-json 1.9.0 и один тест kotlin("test"). После коммита:
elide adopt --build elide --harness claude --approval auto-approve --non-interactiveAdoption log: /path/to/project/.dev/logs/adopt-1767225600-973648.log
[3m 56s] ✓ Project adopted in 3m 56sАгент добавил elide.pkl и .gitignore и больше ничего не изменил. Манифест сохраняет версии из Gradle и переносит
остальное в понятия Elide:
amends "elide:project.pkl"
import "elide:Jvm.pkl" as Jvm
import "elide:Kotlin.pkl" as Kotlin
name = "kotlinx-cli"
version = "1.0.0"
dependencies {
maven {
packages {
"org.jetbrains.kotlinx:kotlinx-coroutines-core:1.10.2"
"org.jetbrains.kotlinx:kotlinx-serialization-json:1.9.0"
// Gradle mediates annotations to 23.0.0 (via coroutines); Elide's nearest-wins picks 13.0.
"org.jetbrains:annotations:23.0.0"
}
testPackages {
// Gradle's `kotlin("test")` with `useJUnitPlatform()` resolves to the JUnit 5 variant.
"org.jetbrains.kotlin:kotlin-test-junit5:2.3.20"
// The JUnit launcher; with `testing = false`, Elide does not bundle one.
"org.junit.platform:junit-platform-console:1.10.1"
}
}
}
jvm {
main = "dev.elide.samples.MainKt"
target = 17
features {
// JUnit comes from testPackages above, as with Gradle's `kotlin("test")`; Elide's bundled JUnit is off.
testing = false
}
java {
source = 17
release = 17
}
}
kotlin {
// Matches the Kotlin Gradle plugin version in build.gradle.kts.
toolchain = new Kotlin.ManagedKotlinToolchain {
version = "2.3.20"
}
compilerOptions {
jvmTarget = 17
}
features {
// KotlinX libraries are declared explicitly above, at the versions Gradle uses; only the
// serialization compiler plugin (Gradle's `plugin.serialization`) is enabled.
kotlinx = false
serialization = true
coroutines = false
atomicfu = false
powerAssert = false
metro = false
reflection = false
}
}
artifacts {
["jar"] = new Jvm.Jar {
name = "kotlinx-cli"
main = "dev.elide.samples.MainKt"
}
}Проверка с чистого .dev/:
$ elide install
[504ms] ✓ Resolved 25 Maven dependencies (476ms)
[505ms] ✓ Dependencies installed in 484ms
$ elide test
1 pass
0 skip
0 fail
Ran one test across one file. (0.57s)
$ elide run
[ 16ms] ⇥ Dependencies ready (Up to date)
[ 16ms] ⇥ Kotlin main compilation skipped (Up to date)
[ 16ms] ⇥ Java main compilation skipped (Up to date)
[ 17ms] ⇥ Packaging jar 'jar' skipped (Up to date)
{"completed":["PARSE","EMIT"]}
[138ms] ✓ JVM jar application completed successfully (121ms)
[139ms] ✓ Build successful in 126mselide build создал .dev/artifacts/jar/kotlinx-cli/kotlinx-cli.jar, а gradle build по-прежнему проходил успешно.