
REODE
Code migration
Trước khi sửa, hãy tìm nguyên nhân chung.
Một tác nhân chuyển đổi mã Java/Spring.
REODE vocabulary
- assess
- plan
- explore
- transform
- validate
- fix
- measure
- recipes
- docker isolation
- equivalence
- escalation
- checkpoint
- learnings
Assess: assess_node · assessment_report · frameworks_detected · SOCRATIC RISK ANALYSIS · clarity_score · BASELINE BUILD · baseline_build_success · detect_spring_features · SpringAssessment · memory_context · get_local_jdk_versionPlan: plan_node · migration_plan · incremental_recipe_chain · get_recipe_chain · project_constraints · llm_structural · get_migration_strategy · is_fw_to_boot_migration · hitl_level · memory_contextExplore: _explore_before_fix · AFFECTED FILES · read_file · @Data · pom.xml · classify_build_error · ErrorCategory · get_category_prompt_hint · _batch_errors · _detect_fix_patterns · CANNOT FIND SYMBOL · compute_error_signatureTransform: llm_structural · transform_node · rewrite-maven-plugin · _ensure_openrewrite_plugin · rewrite:run · java_openrewrite_run · recipes_applied · _BATCH_SIZE · source_path_backup · structural_changes · resume_from_batchValidate: BASELINE BUILD · validate_node · java_build · java_test · java_lint · build_error_output · test_error_output · test_pass_rate · _route_after_validate · build_verification_tasks · verify-compat-check · SubAgentManager · _BackpressureExecutor · docker_maven_command · max_iterationsFix: memory_context · _explore_before_fix · @Data · pom.xml · get_category_prompt_hint · _detect_fix_patterns · build_error_output · test_error_output · fix_node · _fix_deterministic_pass · _apply_deterministic_fixes · LOMBOK 1.18.34 · annotationProcessorPaths · _fix_architect_editor_pass · FixPlan · _execute_llm_fix · _BackpressureExecutor · fix_attempts · java-migration-diagnostic · _determine_escalation · _build_full_project_context · fix-iter-{iteration} · AUTO-LEARNINGSMeasure: baseline_build_success · recipes_applied · test_pass_rate · measure_node · MigrationScorecard · G1 BUILD SUCCESS · G2 TEST EQUIVALENCE · G3 COVERAGE PRESERVATION · G4 TEST INTEGRITY · G5 NO TEST EXCLUSION · _count_deleted_test_files · _count_surefire_excludes · automation_ratio · S/A/B/C GRADERecipes: detect_spring_features · incremental_recipe_chain · get_recipe_chain · rewrite-maven-plugin · java_openrewrite_run · UpgradeToJava17 · UpgradeToJava21 · JavaxMigrationToJakarta · UpgradeSpringBoot_3_2 · UpgradeSpringSecurity_6_2 · JUnit4to5Migration · rewrite-migrate-java · rewrite-spring · SPRING_RECIPE_CHAINS · java_openrewrite_listDocker Isolation: JDK_DOCKER_IMAGES · maven:3.9-eclipse-temurin-22 · needs_docker_build · docker_maven_command · get_local_jdk_version · is_docker_available · docker_build_mode · local_jdk_version · _maven_cache_dir · JDK MISMATCHEquivalence: source_path_backup · verify-compat-check · java_app_start · e2e_smoke_test · java_app_stop · run_jar_comparison · detect_jar_type · deploy_dual_stack · discover_endpoints · api_equivalence_rate · api_breaking_changes · teardown_dual_stackEscalation: _route_after_validate · fix_attempts · _determine_escalation · claude-opus-4-6 · _build_full_project_context · _is_stuck · CONVERGENCE · CIRCUIT BREAKER · recovery_attempted · max_iterations · budget_usd · _check_budget_gateCheckpoint: _BATCH_SIZE · PipelineCheckpoint · reode/checkpoint · fix-iter-{iteration} · resume_from_batch · _resume_skip_nodes · MigrationProgressTracker · migration_progress.json · _save_node_progress · --resumeLearnings: FixPlan · FixEventLog · FixEvent · fix_events.jsonl · query_by_signature · format_learnings · compute_error_signature · AUTO-LEARNINGS · LEARNINGS.md · _append_learning · AVOID THIS APPROACH
Một vòng lặp chuyển đổi giữ bằng chứng sửa lỗi tách khỏi tiêu chí chấp nhận.
Trạng thái build gốc được ghi lại và chuyển đổi dựa trên quy tắc được áp dụng, rồi bằng chứng từ mã nguồn và POM được thu thập trước khi sửa. Sau khi mô hình chỉnh sửa, build, test và tính toàn vẹn của test được kiểm tra lại, và các lượt chạy kết thúc vì giới hạn hay bị kẹt được báo cáo tách khỏi thành công.
Nó kết hợp chuyển đổi dựa trên quy tắc với sửa chữa có mô hình hỗ trợ và kiểm tra mã đã thay đổi bằng build và test. Một dự án công việc.
Công việc REODE trong kho mã; thời gian hợp tác với pinxlab March 16, 2026 đến May 26, 2026
Một công cụ CLI dùng trong công việc.
Chuyển đổi theo quy tắc
Trạng thái gốc được giữ làm baseline; sau chuyển đổi theo quy tắc, build và test kiểm chứng, và lượt chạy đi tiếp đến đo lường.
Mã nguồn · POMDữ liệu: mã nguồn · POMTrạng thái gốc · compile
Kiểm tra bản gốcNhận mã nguồn Java/Spring và POM cần chuyển đổi. Mã và màn hình của khách hàng không được hiển thị.
Trạng thái gốc · compile
Kiểm tra bản gốcDữ liệu: compile bản gốcBaseline · giá trị chưa biết không được đoTrạng thái lượt chạyTrước khi chuyển đổi, runtime được chọn và bản gốc được compile, nên một build vốn đã hỏng được giữ trong baseline. Các giá trị test và độ bao phủ mặc định trong baseline không phải là phép đo.
Trạng thái gốc · compile
Kiểm tra bản gốcChạy · phán định: chuyển đổi theo quy tắcKế hoạch → chuyển đổi dựa trên quy tắcChuyển đổiĐồ thị lượt chạy đi theo kiểm tra bản gốc → kế hoạch chuyển đổi → chuyển đổi dựa trên quy tắc → kiểm chứng. Những chuyển đổi mà quy tắc đảm nhận được sẽ được áp dụng trước.
Kế hoạch → chuyển đổi dựa trên quy tắc
Chuyển đổiChạy · phán định: build · testbuild · test · vòng lặp +1Kiểm chứngBuild và test kiểm chứng mã đã chuyển đổi và số vòng lặp tăng thêm một. Kết quả quay về trạng thái lượt chạy.
build · test · vòng lặp +1
Kiểm chứngDữ liệu: kết quả · số vòng lặpTiếp tục · đo · tối đa 3Bước tiếp theoBuild thành công hay không, tỷ lệ test đạt và số vòng lặp quyết định bước tiếp theo.
Tiếp tục · đo · tối đa 3
Bước tiếp theoChạy · phán định: đạt · giới hạn · bị kẹtTỷ lệ quy tắc · test · độ bao phủĐo lườngKhi build và test đều đạt, chạm giới hạn vòng lặp, hoặc phát hiện bị kẹt (sau một lần thử khôi phục nếu chưa thử), lượt chạy đi đến đo lường. Đi đến đo lường không có nghĩa là thành công.
Baseline · giá trị chưa biết không được đo
Trạng thái lượt chạyDữ liệu: so sánh baselineTỷ lệ quy tắc · test · độ bao phủĐo lườngĐo lường đọc baseline được giữ trong trạng thái lượt chạy. Đây không phải một lượt chạy baseline mới.
5 cổng chấp nhận
Đo lườngDữ liệu: xếp loạiScorecard · xếp loạiBuild thành công, tỷ lệ test đạt 100%, thay đổi độ bao phủ từ −5 trở lên (chỉ khi biết baseline), không test nào bị xóa, không loại trừ surefire nào. Chỉ xếp loại khi cả năm đều đạt.
Sửa chữa theo nguyên nhân
Bằng chứng được thu thập trước khi sửa và các bản sửa tất định đi trước. Nếu build lại thành công, mô hình được bỏ qua; nếu không, mô hình sửa với bằng chứng và chỉ dẫn và kết quả được kiểm chứng lại.
build · test · vòng lặp +1
Kiểm chứngDữ liệu: kết quả · số vòng lặpTiếp tục · đo · tối đa 3Bước tiếp theoBuild thành công hay không, tỷ lệ test đạt và số vòng lặp quyết định bước tiếp theo.
Tiếp tục · đo · tối đa 3
Bước tiếp theoChạy · phán định: thất bại · thử lạiBằng chứng nguyên nhân · 3 mã nguồn · POMKhám phá trước khi sửaNếu build thất bại hoặc tỷ lệ test đạt dưới 100%, và chưa chạm giới hạn vòng lặp (mặc định 3), lượt chạy đi đến sửa chữa.
Bằng chứng nguyên nhân · 3 mã nguồn · POM
Khám phá trước khi sửaQuan sát · báo cáo: lưu trước khi sửaCheckpoint trước khi sửaBản ghi khôi phụcMột checkpoint được lưu trước khi sửa. Đây là best-effort: lưu thất bại không dừng việc sửa, và một lần lưu không phải bằng chứng thành công.
Bằng chứng nguyên nhân · 3 mã nguồn · POM
Khám phá trước khi sửaDữ liệu: bằng chứng · lỗi được nhómSửa các mẫu đã biếtSửa tất địnhThu thập các tệp Java bị lỗi, các dòng đầu của tối đa ba mã nguồn, cấu hình annotation, POM và annotation processor, và các import đến độ sâu 2. Một mẫu có giới hạn, không phải sự hiểu biết toàn bộ codebase.
Kiểm tra build lại
Sửa tất địnhChạy · phán định: đạt · bỏ qua LLMbuild · test · vòng lặp +1Kiểm chứngNếu một bản sửa tất định cho mẫu đã biết (ví dụ cấu hình Lombok) khiến build lại thành công, không gọi mô hình nào. Lượt chạy vẫn quay về kiểm chứng, nên đây không phải chấp nhận cuối cùng.
Kiểm tra build lại
Sửa tất địnhLỗi · giới hạn: build lại thất bạiSửa với bằng chứng · chỉ dẫnMô hình sửa chữaNếu build lại thất bại, bằng chứng đã thu thập và chỉ dẫn sửa được chuyển cho mô hình sửa. Đọc mã cho thấy văn bản lỗi được chuyển kèm là lỗi build ban đầu, không phải lỗi mới của lần build lại, nên không được hiểu là “chỉ chuyển các lỗi còn lại”. Đây không phải lỗi đã được tái hiện trong một lượt chạy.
Bản sửa trước đó, cùng lỗi
Bản ghi khôi phụcDữ liệu: bản sửa trướcSửa với bằng chứng · chỉ dẫnMô hình sửa chữaCác bản sửa trước đó được ghi theo cùng chữ ký lỗi được tra cứu và đính kèm. Đây là bản ghi được thêm vào đầu vào, không phải huấn luyện mô hình.
Sửa với bằng chứng · chỉ dẫn
Mô hình sửa chữaChạy · phán định: kiểm chứng lạibuild · test · vòng lặp +1Kiểm chứngMô hình sửa qua đường architect/editor có cấu trúc, hoặc một prompt tool-use khi đường đó không khả dụng hay đang khôi phục, rồi build và test kiểm chứng lại. Bản sửa của mô hình tự nó không phải là một build đạt.
Đạt hay bị kẹt
Xếp hạng cần đủ năm cổng; test bị xóa hay loại trừ và lối ra do giới hạn hay bị kẹt không được tính là thành công.
Tiếp tục · đo · tối đa 3
Bước tiếp theoChạy · phán định: đạt · giới hạn · bị kẹtTỷ lệ quy tắc · test · độ bao phủĐo lườngKhi build và test đều đạt, chạm giới hạn vòng lặp, hoặc phát hiện bị kẹt (sau một lần thử khôi phục nếu chưa thử), lượt chạy đi đến đo lường. Đi đến đo lường không có nghĩa là thành công.
Baseline · giá trị chưa biết không được đo
Trạng thái lượt chạyDữ liệu: so sánh baselineTỷ lệ quy tắc · test · độ bao phủĐo lườngĐo lường đọc baseline được giữ trong trạng thái lượt chạy. Đây không phải một lượt chạy baseline mới.
5 cổng chấp nhận
Đo lườngDữ liệu: xếp loạiScorecard · xếp loạiBuild thành công, tỷ lệ test đạt 100%, thay đổi độ bao phủ từ −5 trở lên (chỉ khi biết baseline), không test nào bị xóa, không loại trừ surefire nào. Chỉ xếp loại khi cả năm đều đạt.
5 cổng chấp nhận
Đo lườngLỗi · giới hạn: xóa · loại trừ · thất bạiBáo cáo lỗi · bị kẹtKết quả đạt có được nhờ xóa test hay nhờ loại trừ surefire, và build hay test thất bại, vẫn là thất bại. Kiểm tra xóa và loại trừ đếm là không khi không đọc được Git hay POM, nên chúng không chứng minh mọi vi phạm đều bị phát hiện.
Tiếp tục · đo · tối đa 3
Bước tiếp theoQuan sát · báo cáo: lối ra giới hạn · bị kẹtBáo cáo lỗi · bị kẹtMột lượt chạy kết thúc vì giới hạn hay bị kẹt vẫn đi qua đo lường nhưng không được báo cáo là thành công. Điều này đánh dấu cách báo cáo; nó không phải lối tắt bỏ qua đo lường.
Mọi kết nối có cùng độ đậm. Chọn một luồng để chỉ làm nổi bật đường đi của nó, kèm các bước được đánh số.
- Nét liền · hướng đi của đầu vào, kết quả và bản ghi
- Nét đứt · chạy, phán định, yêu cầu
- Chấm dài · quan sát và báo cáo, tách khỏi phán định
- Gạch ngắn · lỗi, dừng, giới hạn
- Nét đen đậm · luồng được chọn; số chỉ thứ tự
- Hộp · ranh giới mã hoặc trạng thái, tên ở phần đầu
- Chip bên trong · một thành phần của ranh giới đó
- Hộp chấm · bên ngoài ranh giới đó
- Viền cam · nơi một mô hình quyết định
- Các bước pipeline · sửa chữa
- Kiểm chứng · định tuyến · chấp nhận
- Trạng thái · bản ghi
- Khám phá trước khi sửa
Vẽ từ các bản ghi hiện thực và phát triển riêng tư. Tên là tên công khai chung; không hiển thị đường dẫn mã hay thông tin khách hàng.
- Đầu vào sau khi build lại thất bại
- Mô hình sửa nhận bằng chứng đã thu thập và chỉ dẫn sửa, nhưng văn bản lỗi được chuyển kèm là lỗi build ban đầu, không phải lỗi mới của lần build lại. Điều này được xác lập bằng cách đọc mã; không tái hiện trong lượt chạy nào, và mã nguồn không bị thay đổi.
- Giới hạn của các cổng
- Nếu không biết baseline độ bao phủ, cổng đó được bỏ qua. Kiểm tra surefire đếm các loại trừ trong POM hiện tại, không phải chênh lệch so với baseline. Kiểm tra xóa và loại trừ đếm là không khi không đọc được Git hay POM.
- Trường hợp và các con số
- Khoảng 40 lỗi setter được truy về một nguyên nhân, cấu hình Lombok và POM, là một chẩn đoán được ghi lại khi đó. Đây không phải số liệu thông lượng, độ chính xác hay bàn giao cuối cùng.