يشغّل elide adopt وكيل برمجة بالذكاء الاصطناعي (Codex أو Claude Code أو OMP) في المجلد الحالي مع موجّه ترحيل مدمج.
يقرأ الوكيل إعداد البناء ويعدّل الملفات ويشغّل Elide؛ أما Elide نفسه فلا يعدّل شيئًا. يستهدف الموجّه مشاريع Java
و Kotlin المبنية باستخدام Maven أو Gradle، وخاصة Spring Boot، ويطلب من الوكيل إبقاء أي لغات أخرى تعمل.
elide adoptينقل elide 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 -
أودِع المشروع (commit)، كي يكون الترحيل فرقًا واحدًا قابلًا للمراجعة.
-
ابنِه مرة واحدة باستخدام 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 claudeالضغط على Esc عند سؤال يُنهي برمز الخروج 0 دون تشغيل الوكيل. ويوقف Ctrl+C الوكيل ويُنهي برمز الخروج 130.
استراتيجية البناء
| الاستراتيجية | يطلب الموجّه من الوكيل أن |
|---|---|
| بناء Elide | يكتب elide.pkl: يُبقي src/main/src/test دون التصريح بمجموعات مصادر، ويحافظ على إصدارات التبعيات ونطاقاتها، ويضبط هدف 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 126msأنتج elide build الملف .dev/artifacts/jar/kotlinx-cli/kotlinx-cli.jar، وظل gradle build ينجح.