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 і далі проходив.