elide adopt startet einen KI-Coding-Agenten (Codex, Claude Code oder OMP) im aktuellen Verzeichnis mit einem
eingebauten Migrations-Prompt. Der Agent liest den Build, bearbeitet Dateien und führt Elide aus; Elide selbst
bearbeitet nichts. Der Prompt zielt auf Java- und Kotlin-Projekte, die mit Maven oder Gradle gebaut werden,
insbesondere Spring Boot, und weist den Agenten an, alle anderen Sprachen funktionsfähig zu halten.
elide adoptelide adopt migriert den Build nach elide.pkl. Wie Sie Maven, Gradle oder Bazel behalten und darin die Compiler von
Elide verwenden, beschreibt Build-Tool-Integration.
Für welche Projekte sich der Befehl eignet
| Projekt | Eignung | Grund |
|---|---|---|
| Java- oder Kotlin-Anwendung mit einem Modul auf Maven oder Gradle | Gut | Abhängigkeiten, Quell-Layout, Tests und JAR lassen sich auf elide.pkl abbilden. Getestet. |
| Spring-Boot-Anwendung oder -Dienst | Gut | Der Prompt prüft Hauptklasse, Spring-Abhängigkeiten und -Plugins, Ressourcen, Tests und Paketierung. Getestet. |
| Ein JVM-Build, den Sie behalten möchten, mit Elide nur zum Ausführen und Kompilieren | Gut | Wählen Sie Bestehender Build: Eine elide.pkl ist nicht erforderlich. |
| Builds mit mehreren Modulen | Ungetestet | Elide hat Workspaces, aber der Prompt wurde damit nicht evaluiert. |
| Viele eigene Plugins, generierte Quellen, ungewöhnliche Annotationsverarbeitung | Schlecht | Der Agent behält Maven oder Gradle für Schritte, die Elide nicht ersetzt; rechnen Sie mit einer teilweisen Migration. |
| Android | Ungetestet | Der Prompt wurde nicht mit Android-Builds evaluiert. |
| Nur JavaScript, TypeScript oder Python | Nicht nötig | Elide führt package.json-Skripte, pyproject.toml-Einstiegspunkte und node:test-Dateien ohne Migration aus; siehe Projekteinrichtung. |
Getestete Projekte
Diese Projektformen bestehen elide install, elide build, elide test, den Start und den ursprünglichen Build,
ausgehend von einem frischen Checkout, mit dem Agenten Codex:
| Projektform | Bestehender Build | Getestet mit |
|---|---|---|
| Java, Spring-Boot-Anwendung | Maven | Spring Petclinic: Abhängigkeiten, Ressourcen, Tests, lauffähige Anwendung, JAR |
| Java, Spring-Boot-Dienst | Gradle | Spring-REST-Dienst: Abhängigkeiten, Ressourcen, Tests, HTTP-Bereitschaft |
| Kotlin/JVM-Kommandozeilenanwendung | Gradle Kotlin DSL | Ein Modul mit Kotlin-Serialisierung und Koroutinen |
Der Agent Claude Code wird an der Kotlin-Anwendung im durchgespielten Beispiel gezeigt.
Bevor Sie beginnen
-
Installieren Sie einen Agenten und melden Sie sich an. Elide startet ihn über
PATH:Auswahl Programm Agent codexcodexOpenAI Codex CLI claudeclaudeClaude Code ompompOMP -
Committen Sie das Projekt, damit die Migration ein einzelner prüfbarer Diff ist.
-
Bauen Sie es einmal mit Maven oder Gradle, damit es einen bekannt guten Ausgangszustand gibt.
-
Wechseln Sie mit
cdin das Projekt oder übergeben Sie-p DIR.
Interaktiv ausführen
elide adopt stellt drei Fragen und startet dann den Agenten. Flags beantworten eine Frage im Voraus.
| Frage | Antworten | Flag |
|---|---|---|
| Use elide build with an elide.pkl project manifest? | Ja (Standard): Elide-Build. Nein: Bestehender Build | --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 bei einer Frage beendet den Befehl mit Exit-Code 0, ohne den Agenten zu starten. Strg+C stoppt den Agenten und
endet mit Exit-Code 130.
Build-Strategie
| Strategie | Der Prompt weist den Agenten an, |
|---|---|
| Elide-Build | elide.pkl zu schreiben: src/main/src/test ohne deklarierte Source-Sets beizubehalten, Versionen und Scopes der Abhängigkeiten zu übernehmen, Java-Target und -Release zu setzen und das JAR mit seiner Hauptklasse zu definieren. Maven oder Gradle zu behalten, bis ein abschließendes elide install, elide build, elide test, elide run und der ursprüngliche Build erfolgreich sind. |
| Bestehender Build | Maven oder Gradle als Build zu behalten; die Laufzeit und Werkzeuge von Elide nur dort einzusetzen, wo sie helfen; elide.pkl nicht nur für elide build anzulegen. |
Beide enden mit einer Zusammenfassung der geänderten Dateien, der ausgeführten Validierung und allem, was noch offen ist.
Freigabemodus
| Modus | Codex | Claude Code | OMP | Geeignet für |
|---|---|---|---|---|
auto-approve | --approve-for-me | --permission-mode auto | --auto-approve | Einen committeten Arbeitsbaum, den Sie prüfen werden. |
manual-approve | (kein Flag) | --permission-mode manual | --approval-mode= | Unbekannte oder sensible Repositorys. |
yolo | --dangerously-bypass-approvals-and-sandbox | --permission-mode bypassPermissions | --approval-mode=yolo | Wegwerfumgebungen ohne Geheimnisse. |
Mit auto-approve oder yolo führt Elide den Agenten im Batch-Modus aus (codex exec --skip-git-repo-check,
claude --print, omp --print) und zeigt eine Fortschrittszeile; --log gibt zusätzlich die Ausgabe des Agenten aus.
Mit manual-approve läuft der Agent interaktiv, und seine Ausgabe wird immer angezeigt.
Ohne Rückfragen ausführen
elide adopt \
--build elide \
--harness codex \
--approval auto-approve \
--non-interactive--non-interactive erfordert --build, --harness und --approval; fehlt eines, endet der Befehl mit Exit-Code 2.
Das Flag lehnt manual-approve ab. Ohne Terminal endet elide adopt mit Exit-Code 1, außer --non-interactive und
alle drei sind angegeben.
Hinweise ergänzen
--prompt-append FILE hängt eine UTF-8-Datei unter Additional adoption guidance: an das Ende des Prompts an.
Wiederholen Sie das Flag, um mehrere Dateien der Reihe nach anzuhängen:
elide adopt --prompt-append ./adoption-guidance.md --prompt-append ./team-rules.mdNutzen Sie das Flag für Fakten, die der Agent nicht ableiten kann: interne Repositorys, welcher Build bleiben soll, Befehle, die weiter funktionieren müssen.
Ausgabe und Exit-Codes
Die Änderungen des Agenten sind die einzige Ausgabe im Projekt. Im durchgespielten Beispiel waren das
eine neue elide.pkl und .gitignore-Einträge für .dev/. Elide gibt vor dem Start Adoption log: PATH aus; das Log
bleibt unter .dev/logs/adopt-<timestamp>-<pid>.log im Projekt erhalten.
| Exit-Code | Bedeutung |
|---|---|
0 | Der Agent endete mit Exit-Code 0, oder eine Frage wurde abgebrochen. |
1 | Der Agent schlug fehl (Error: claude exited unsuccessfully (exit status: 3)), konnte nicht starten (Error: failed to launch codex: No such file or directory), eine --prompt-append-Datei ist nicht lesbar, oder es gibt kein Terminal. |
2 | Ein Flag fehlt oder ist ungültig. |
130 | Mit Strg+C unterbrochen. |
Migration prüfen
Exit-Code 0 bedeutet, dass der Agent fertig ist, nicht dass die Migration korrekt ist. Prüfen Sie den Diff:
Versionen der Abhängigkeiten, Quell- und Ressourcenverzeichnisse, Einstiegspunkt, Tests und Paketierung. Führen Sie
dann aus:
elide install
elide build
elide test
elide runFühren Sie auch den ursprünglichen Maven- oder Gradle-Build aus, solange er existiert. Ist das Ergebnis falsch, setzen
Sie die Änderungen zurück, ergänzen Sie Hinweise mit --prompt-append und starten Sie erneut.
Durchgespieltes Beispiel
Eine Kotlin-Kommandozeilenanwendung mit einem Modul, gebaut mit Gradle Kotlin DSL: Kotlin 2.3.20, JVM 17,
kotlinx-coroutines-core 1.10.2, kotlinx-serialization-json 1.9.0 und ein kotlin("test")-Test. Nach dem Commit:
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 56sDer Agent fügte elide.pkl und eine .gitignore hinzu und änderte nichts anderes. Das Manifest übernimmt die
Gradle-Versionen und überträgt den Rest in die Begriffe von 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"
}
}Validierung ab einem leeren .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 erzeugte .dev/artifacts/jar/kotlinx-cli/kotlinx-cli.jar, und gradle build lief weiterhin erfolgreich.