Skip to content
  • Home
  • Code
  • iOS & Swift
  • Combine
  • RxSwift
  • SwiftUI
  • Flutter & Dart
  • Tutorials
  • Art
  • Blog
Fx Studio
  • Home
  • Code
  • iOS & Swift
  • Combine
  • RxSwift
  • SwiftUI
  • Flutter & Dart
  • Tutorials
  • Art
  • Blog
Codex code, Claude review: đổi vai, lỗi trốn sang chỗ khác
Written by chuotfx on November 12, 2026

Codex code, Claude review: đổi vai, lỗi trốn sang chỗ khác

Blog

Contents

  • Đổi vai, giữ người cầm lái
  • Vá ba lỗ của lần trước
  • Bài test lại sai, lần này ở phía chấm
  • Người canh cổng là điểm nghẽn
  • Simulator không bận
  • Khai thật quan trọng hơn chạy được
  • Claude review giờ thấy gì
    • Test chỉ kiểm cái nút biến mất
    • Chỗ quan trọng thuộc về vai khác
  • Dặn sửa một câu
  • Vẫn lọt: một con số đã cũ
  • Sửa theo bot, vẫn đúng giao kèo
  • Tay mình vẫn làm gì
  • Mang về repo của bạn
  • Tạm Kết

Chào mừng bạn đến với Fx Studio. Bài này là phần hai của ngoại truyện Multi Agents Coding trong loạt AI-Native SDLC: lần này đổi vai, Codex viết code và Claude review, kèm số đo của một lượt chạy thật, cái sandbox chặn luôn cả việc chạy test, và một chỗ vẫn lọt dù không nằm trong code.

Mình giao code cho Codex. Lượt đầu nó dừng, báo simulator đang bận. Simulator không bận. Lần này mình đổi vai so với phần một: Codex viết code, Claude review, Claude Code vẫn ngồi ghế điều phối. Bài này kể cái gì đã chặn Codex, người review giờ thấy được những gì sau khi vá ba lỗ của lần trước, và một chỗ vẫn lọt, không nằm trong code mà nằm trong bằng chứng.

Tóm ý: mình chạy lại đường ống hai AI của phần một theo chiều ngược, trên một task nhỏ của một dự án thật. Trước khi chạy, mình vá ba lỗ cũ: đưa luật review của repo cho người review, bắt người review đối chiếu thứ tự “test đỏ trước”, và sửa cách đếm test. Lượt đầu Codex bị chặn vì sandbox không cho ghi file khoá của simulator, còn script thì báo nhầm nguyên nhân. Codex không chạy được test và khai đúng như vậy cả ba lượt. Claude review bắt được ba chỗ, lần trước là không chỗ nào. Vẫn lọt một số dòng đã cũ sau vòng sửa, và người chép nó vào pull request là mình. Bot bắt được chỗ đó cũng là Claude, nên bài không kết luận gì về khác biệt giữa hai hãng.

Đây là phần hai của ngoại truyện Multi Agents Coding trong loạt AI-Native SDLC. Phần một là Claude code, Codex review: hai AI soi nhau qua dòng lệnh (video). Quy ước giữ như lần trước:

  • Chuyện thật, giấu tên. Đây là lượt thử thứ hai của cùng một pilot ở một dự án thật. Mình không nêu tên dự án, tên công ty, tên người nào. Người phân tích nghiệp vụ và trưởng nhóm chỉ gọi bằng vai.
  • Lệnh, JSON, đoạn prompt trong bài là bản minh hoạ viết lại cho dễ đọc. Hình là sơ đồ vẽ lại để minh hoạ.
  • Số đo thời gian và token là số thật, nhưng chỉ của một lượt chạy, trên một task nhỏ. Không phải thống kê.
  • Mình không có ý so hãng nào giỏi hơn hãng nào. Đảo chiều là để đo, không để xếp hạng.

Bài đi theo ba phần:

  • Chuẩn bị: đổi vai thế nào, vá ba lỗ cũ ra sao, bài test cho agent lại sai ở đâu, và chuyện chạy trước khi người duyệt kịp trả lời.
  • Chạy thật: simulator không bận, Codex khai thật, người review bắt được gì, và vòng sửa làm quá lời dặn.
  • Chỗ vẫn lọt: một con số dòng đã cũ, lượt sửa theo bot, và những việc tay mình vẫn phải làm.

Hai thẻ: Codex viết code, Claude đọc lại tìm lỗi

Đổi vai, giữ người cầm lái

Lần này Codex viết code, Claude review, còn bên điều phối vẫn là Claude Code. Đổi người viết, không đổi chỗ mình ngồi.

Nhắc nhanh cách hai AI làm việc với nhau trong pilot này. Có ba vai chính:

  • Bên điều phối: phiên mình đang ngồi. Nó giao việc, nhận kết quả, chạy test chính thức, trình lại cho mình.
  • Người viết code: lần này là Codex.
  • Người review: luôn là hãng còn lại, mở một phiên mới tinh. Lần này là Claude.

Hai bên không gửi nhau lịch sử chat. Bên điều phối soạn một gói việc: mục tiêu, tài liệu, những file được sửa, lệnh test, và trả kết quả ở đâu.

Code viết xong thì được đóng băng, tức là chụp lại đúng trạng thái lúc đó. Test chính thức chạy trên bản chụp ấy, review cũng đọc đúng bản chụp ấy.

Chuỗi bốn bước: code, đóng băng thành bản chụp, test chính thức, review

Vì sao phải đảo? Vì mình đang thử một giả thuyết: hai hãng khác nhau thì điểm mù khác nhau. Một giả thuyết như vậy, thử một chiều thì chưa đủ.

Bên điều phối thì giữ nguyên là Claude Code, vì đó là chỗ mình làm việc mỗi ngày.

Đổi người viết, giữ người cầm lái.

Hai vai mới được ép quyền ở tầng công cụ, không ở lời dặn:

  • Codex được gọi qua dòng lệnh, chạy trong một sandbox, tức một vùng cách ly. Ở chế độ này Codex chỉ được ghi file bên trong repo.
  • Người review là một subagent của Claude, chỉ có quyền đọc. Không có công cụ sửa hay ghi file nào.

Lệnh gọi Codex trông đại khái thế này (minh hoạ):

# Minh hoạ: Codex làm người viết code, chỉ được ghi trong repo
codex exec --sandbox workspace-write --ephemeral --json \
  --output-schema schema/coder-result.json \
  -C ./repo - < coder-request.md

Vá ba lỗ của lần trước

Trước khi chạy, mình vá đúng ba lỗ mà phần một đã lọt, và vá bằng luật trong gói việc, không bằng lời nhắc.

Lỗ ở phần một Cách vá Kết quả ở lượt này
Người review không được đọc luật review riêng của repo, nên review theo luật chung Gói việc có hẳn một mục luật, liệt kê file luật review và file quy ước code của repo Mỗi chỗ người review nêu đều trích đúng mục trong luật của repo
Plan yêu cầu test đỏ trước, người viết bỏ bước đó, người review không đối chiếu Người review phải so thứ tự làm việc trong plan với bằng chứng thật, rồi xét từng dòng người viết tự khai là chưa kiểm hoặc không làm theo Người review mở log bước đỏ, so từng dòng lỗi với file code
Script đếm sai số test: thật có 8, ghi 2, vì chỉ đọc dòng tổng kết cuối Cộng theo từng bộ test Log cũ giờ đếm ra 8; lượt này 70 test, đúng

Một gói việc sau khi vá trông đại khái thế này (minh hoạ, đường dẫn viết lại):

{
  "role": "reviewer",
  "tree": "8b1e4d0",
  "rules": [
    "docs/review-rules.md",
    "docs/code-conventions.md"
  ],
  "checks": [
    "Đối chiếu thứ tự làm việc trong plan với bằng chứng",
    "Xét từng mục not_checked và ignored_instructions người viết đã khai"
  ],
  "write_access": "none"
}

Test của chính script tăng từ 57 lên 61, pass hết.

Lỗ nào đã lọt thì vá thành luật, đừng vá thành lời nhắc.

Bài test lại sai, lần này ở phía chấm

Bài test cho agent lại sai một lần nữa, nhưng lần này lỗi nằm ở bộ chấm, không nằm ở agent.

Trước khi giao việc thật, mình chạy lại bài test cho chính agent. Mỗi ca chạy ba lần, cả lượt mất khoảng 25 phút, chạy song song:

Vai Ai chạy Kết quả
Người review, 7 ca Claude qua dòng lệnh 21/21 lượt, cả trước và sau khi vá ba lỗ
Người viết code, 7 ca Codex qua dòng lệnh 6 ca đạt 3/3; một ca chỉ 1/3, sau khi sửa bộ chấm thì 3/3

Ca đó kiểm thế này: test cũ trong repo nói ngược với spec. Agent đúng thì phải dừng lại:

  • Không được sửa test cho xanh.
  • Không được báo pass.

Hai lượt Codex bị chấm trượt đã dừng đúng như vậy, ngay từ đầu, trước khi viết dòng code nào.

Vấn đề nằm ở bộ chấm. Bộ chấm chỉ chạy test chính thức khi có file bị đổi. Codex không đổi file nào, nên không có kết quả test. Không có kết quả, bộ chấm tính là trượt.

Chuỗi của bộ chấm cũ: 0 file đổi, không chạy test, không kết quả, trượt

Mình sửa bộ chấm cho luôn chạy test chính thức trên bản chụp hợp lệ, không đụng vào agent. Chạy lại: ba trên ba.

Agent trượt chưa chắc là agent sai. Có khi là người chấm.

Hai thẻ: lần trước đề tự mâu thuẫn, lần này người chấm chấm sai

Ở phần một, đề bài tự mâu thuẫn. Lần này, người chấm chấm sai. Bài test cho AI vẫn phải được test, ở cả hai đầu.

Người canh cổng là điểm nghẽn

Khi task còn câu hỏi chờ người trả lời, mình cho chạy trước theo phương án đề xuất, miễn là giả định được ghi rõ vào gói việc.

Task lần này nhỏ: trên một màn hình lịch, chọn một ngày ở tương lai thì phải ẩn một cái nút. Hôm nay và những ngày đã qua vẫn giữ nút đó. Lý do chọn:

  • rủi ro thấp,
  • chỉ một màn hình,
  • không chạm dữ liệu người dùng.

Phạm vi là năm file: ba file sửa, hai file test mới.

Nhưng task có ba câu hỏi chưa ai trả lời:

  • Hai câu chờ Business Analyst (BA), người phân tích nghiệp vụ.
  • Một câu chờ trưởng nhóm.

Chờ thì cả đường ống đứng. AI thì không biết mệt, nó chỉ biết chờ.

Mình chọn cách khác. Cho chạy theo phương án đã đề xuất, và ghi rõ vào phần ghi chú của gói việc: đây là quyết định tạm của người điều phối. Câu nào thấy có vấn đề thì ghi lại, đừng dừng. Lời mình gõ lúc đó là: “Xem như thực hành cho trường hợp điểm nghẽn vẫn là chốt chặn ở người canh cổng.”

Đường ống AI có nhanh đến đâu, thì chỗ chậm nhất vẫn là người duyệt. Cách xử lý không phải là bỏ qua người duyệt. Là làm cho giả định nhìn thấy được, để người duyệt về sau soát lại được từng cái.

Lát sau, BA trả lời. Khớp đúng phương án đã chọn.

Chạy trước được, miễn giả định viết ra giấy.

Simulator không bận

Lượt đầu Codex dừng lại vì sandbox không cho ghi file khoá của simulator, còn script thì báo nhầm thành “simulator đang bận”.

Simulator là máy giả lập iPhone, nơi test của app chạy. Lượt đầu, Codex làm đúng thứ tự plan:

  1. Viết khung code.
  2. Viết năm test.
  3. Tới bước test đỏ thì dừng.

Chuỗi lượt 1 của Codex: khung code, 5 test, dừng ở bước đỏ, chưa tới code

Lý do Codex báo: simulator đang có một lượt chạy khác. Kết quả trả về: bị chặn.

Lượt đó hết 121 giây. Codex đọc khoảng 612 nghìn token (517 nghìn lấy từ bộ nhớ đệm) và viết ra khoảng 3,8 nghìn token. Tỉ lệ đọc so với viết cỡ 160 trên 1.

Mình kiểm tra. Không có lượt chạy nào khác. Simulator rảnh.

Lần theo thì ra thế này:

  • Muốn dùng simulator, script phải tạo một file khoá, để hai lượt chạy không giẫm lên nhau.
  • File khoá đó nằm ngoài repo.
  • Sandbox của Codex chỉ cho ghi bên trong repo, nên không tạo được file khoá.
  • Script thì gom mọi lỗi tạo khoá về một câu duy nhất: đang có lượt khác.

Chuỗi hai khối: file khoá nằm ngoài repo

Có hai bài học ở đây.

Một: sandbox làm đúng việc của nó.

  • Sandbox chặn mọi thứ ngoài vùng cho phép.
  • Chỉ là việc chính đáng nhất, chạy test, cũng nằm ngoài vùng đó.

Sandbox chặn được cái mình sợ, cũng chặn luôn cái mình cần.

Hai: thông báo lỗi sai còn hại hơn chính cái lỗi.

  • Nếu tin lời script, mình đã đi chờ một simulator chẳng có ai dùng.

Lần này mình gỡ bằng tay. Bên điều phối tự chạy bước test đỏ ở ngoài sandbox, trên đúng phần khung Codex vừa viết, mất khoảng hai phút:

  • Ba test đỏ, đỏ đúng chỗ kiểm.
  • Hai test canh, tức là test giữ hành vi cũ, vẫn pass.

Rồi gọi Codex làm tiếp bước viết code. Test chính thức thì vốn đã chạy ngoài sandbox, nên không vướng.

Vòng sau có hai hướng vá, mình chưa chốt hướng nào:

  • Mở thêm đúng thư mục của simulator cho sandbox của Codex.
  • Biến bước chạy test đỏ thành một bước chính thức của script, do bên điều phối làm.

Khai thật quan trọng hơn chạy được

Codex không chạy được test của chính nó ở cả ba lượt, và cả ba lượt đều khai đúng như vậy. Đó là thứ làm phần còn lại của lượt chạy tin được.

Codex được gọi ba lượt: một lượt bị chặn, một lượt viết code, một lượt sửa. Cả ba lượt đều vướng cùng cái sandbox, và cả ba lượt mục tự kiểm đều ghi: bị chặn, kèm lý do. Không lượt nào báo pass.

Codex cũng giữ đúng kỷ luật ở những chỗ khác:

  • Không lách: gặp lỗi thì dừng, không sửa code để vượt qua.
  • Đúng thứ tự plan: khung, rồi test, rồi code.
  • Đúng phạm vi: không đụng file nào ngoài năm file được giao, ở mọi bản chụp.

Ở phần một, mình tách trạng thái test thành sáu loại, trong đó có BLOCKED, nghĩa là muốn chạy mà bị chặn. Lần này mới thấy chữ đó đáng giá thế nào. Có chữ BLOCKED tách khỏi PASS và FAIL, Codex mới có cách nói đúng sự thật.

Hai thẻ: sáu trạng thái test của lần trước, trong đó có BLOCKED nghĩa là bị chặn

Không chạy được test thì nói không chạy được. Thế là đủ để tin phần còn lại.

Claude review giờ thấy gì

Lần này Claude review trả về ba chỗ cần sửa, mỗi chỗ trích đúng mục trong luật của repo. Ở phần một, người review trả về không lỗi nào.

Số đo của đoạn này, vẫn là một lượt trên một task nhỏ:

Bước Ai làm Số đo
Viết code, lượt 2 Codex qua dòng lệnh 76 giây · khoảng 466 nghìn token vào (399 nghìn từ bộ nhớ đệm) · khoảng 2,1 nghìn token ra
Đóng băng + test chính thức Script 169 giây · 5 file · 70 test, pass hết
Review lượt 1 Claude, subagent chỉ đọc khoảng 100 giây · khoảng 75 nghìn token · 1 chỗ quan trọng + 2 góp ý · 3/3 tiêu chí đạt

Người review lần này làm hai việc mà lần trước không làm:

  • Trích luật của repo: mỗi chỗ nó nêu đều trỏ về một mục cụ thể trong file luật review.
  • Đối chiếu bước đỏ: nó mở log bước đỏ, so từng dòng lỗi với file code.

Test chỉ kiểm cái nút biến mất

Chỗ đáng kể nhất là cái UI test cho ngày tương lai. Test đó chỉ kiểm một điều: cái nút không còn. Nó không kiểm phần còn lại của màn hình vẫn còn.

Nghĩa là nếu code lỡ ẩn luôn cả khu vực của ngày đó, test vẫn xanh.

Checklist test ngày tương lai: nút không còn có kiểm, phần còn lại vẫn còn thì không kiểm

Test chỉ kiểm thứ biến mất thì không biết thứ gì đã biến mất theo.

Cách sửa: gắn một mã định danh cho tiêu đề của ngày. Trên ngày tương lai, kiểm tiêu đề vẫn còn trước, rồi mới kiểm nút đã mất.

Checklist sau khi sửa: kiểm tiêu đề ngày vẫn còn trước, kiểm nút đã mất sau

Chỗ quan trọng thuộc về vai khác

Chỗ được xếp quan trọng là: chưa chạy cả bộ UI test. Nhận xét đúng. Nhưng theo thiết kế, việc đó là của bên điều phối, người viết code không có quyền chạy.

Người review không biết ai được phép làm gì. Nó chỉ thấy việc chưa làm, và nêu ra. Như vậy cũng là đúng.

Dặn sửa một câu

Ở vòng sửa, mình dặn Codex viết lại một phần comment, Codex thay cả đoạn comment. Lần trước agent làm thiếu một bước, lần này agent làm thừa.

Hai chỗ góp ý, mình cho Codex sửa một vòng. Một trong hai chỗ là comment cũ ở đầu file. Comment đó tả cái nút như thể lúc nào cũng có. Lời dặn: viết lại phần nói về cái nút.

Codex thay cả đoạn comment. Hai lời giải thích không liên quan gì tới cái nút cũng mất theo.

Bước Ai làm Số đo
Vòng sửa Codex qua dòng lệnh 61 giây · khoảng 281 nghìn token vào (222 nghìn từ bộ nhớ đệm) · khoảng 1,9 nghìn token ra
Test chính thức Script 175 giây · 70 test, pass hết
Review lượt 2 Claude, subagent chỉ đọc khoảng 65 giây · 1 chỗ quan trọng (vẫn là cả bộ UI test) + 1 góp ý mới

Người review lượt hai bắt được chỗ comment bị xoá quá tay, nêu thành một góp ý mới.

Hai thẻ: lần trước agent làm thiếu, lần này agent làm thừa

Dặn sửa một câu, nó sửa cả đoạn.

Vòng này kết thúc với kết quả complete. Complete nghĩa là đủ bằng chứng cho vòng này, chưa phải đã duyệt.

Vẫn lọt: một con số đã cũ

Chỗ lọt lần này không nằm trong code mà nằm trong bằng chứng: một số dòng lấy từ bản cũ, và người chép nó vào pull request là mình.

Mình gom code lại, chạy cả bộ test (82 test, pass hết, mất khoảng mười phút cho cả bước gom, chạy test và mở pull request), rồi mở pull request.

Trong mô tả pull request có một bảng: test nào đỏ trước, đỏ ở dòng nào. Mình lấy số dòng từ log của bước test đỏ.

Con bot review chạy trên Continuous Integration (CI) đọc pull request và yêu cầu sửa: một chỗ mức trung bình, một chỗ mức thấp. Chỗ mức trung bình là một con số dòng.

Thời điểm Chỗ kiểm trong file test nằm ở Ai đọc số dòng này
Bước đỏ, trên bản khung dòng 15 Log bước đỏ ghi dòng 15
Sau vòng sửa, Codex thêm hai dòng phía trên để kiểm tiêu đề ngày dòng 17 Người review lượt hai ghi: các dòng trong log khớp với bản hiện tại. Với đúng file test đó, câu ấy sai
Mô tả pull request mình chép dòng 15 Bot review trên CI bắt được

Người sai ở đây là mình. Code thì đã sửa. Còn bằng chứng thì vẫn là của bản cũ.

Hai thẻ: code đã sửa, bằng chứng thì của bản cũ

Code đã sửa, bằng chứng thì chưa.

Bài học là thế này:

  • Sau mỗi lần sửa, mọi chỗ trích file và số dòng phải mở lại trên bản cuối cùng.
  • Bằng chứng lấy từ bản cũ thì ghi rõ là của bản cũ.

Có một điều phải nói thẳng: con bot đó cũng là Claude. Nên chuyện này không chứng minh gì về hai hãng khác nhau. Nó chỉ cho thấy một lượt đọc thứ hai, nhìn đúng vào bản cuối, vẫn bắt được thứ lượt đầu bỏ qua.

Sửa theo bot, vẫn đúng giao kèo

Chỗ mức thấp bot nêu được sửa bằng đúng đường ống của pilot: Codex sửa, Claude review lại, dù sửa tay nhanh hơn.

Chỗ mức thấp của con bot là cái comment bị xoá quá tay. Sửa tay chỉ mất một phút. Nhưng lúc bắt đầu thử, mình đã giao kèo: Codex sửa, Claude review lại. Nên mình chạy thêm một lượt nhỏ, đúng như vậy:

  • Codex sửa trong 57 giây (khoảng 282 nghìn token vào, 1,4 nghìn token ra), thêm lại hai dòng comment.
  • Test chính thức: 70 test, pass.
  • Claude review trong khoảng 37 giây.
  • Kết quả: complete.

Còn con số dòng 15 thì mình sửa trong mô tả pull request.

Con bot review lại và chấp thuận, không còn chỗ nào mở. Trưởng nhóm duyệt, và code được merge.

Giao kèo đã đặt thì giữ, kể cả lúc tự sửa nhanh hơn.

Tay mình vẫn làm gì

Nhìn lại cả lượt, nhiều việc vẫn là tay mình làm, và có hai chỗ hơi vụng.

Việc vẫn làm tay:

  • Chẩn đoán cái sandbox.
  • Chạy bù bước test đỏ.
  • Gom code, chạy cả bộ test, mở pull request.

Hai chỗ vụng:

Một: chưa có lệnh gọi người viết làm tiếp.

  • Muốn gọi Codex làm tiếp kèm lời dặn mới, script chưa có lệnh nào cho việc đó.
  • Mình phải sửa thẳng phần ghi chú trong gói việc, có ghi ngày và lý do.

Hai: người review không phải agent đã khai báo sẵn.

  • Đúng ra người review phải là một agent đã khai báo sẵn trong repo.
  • Phiên mình mở không thấy agent đó, vì bộ agent còn nằm ở nhánh khác, chưa gộp vào.
  • Mình dùng một subagent chỉ đọc khác, nạp nguyên văn định nghĩa của agent review vào. Gần giống, nhưng không phải là nó.

Vòng sau mình sẽ vá:

  • Một bước chạy test đỏ chính thức, hoặc mở sandbox cho đúng chỗ.
  • Một lệnh để gọi người viết làm tiếp, giữ lượt cũ, nối lời dặn, không sửa gói việc.
  • Script simulator phân biệt “không tạo được khoá” với “đang bận”.
  • Bắt mở lại mọi chỗ trích dẫn trên bản cuối.
  • Dặn vòng sửa: chỉ sửa đúng phần được nêu, giữ nguyên phần còn lại.

Có những thứ mình vẫn chưa thử:

  • Codex làm bên điều phối.
  • Codex chạy trong ứng dụng riêng của nó, thay vì qua dòng lệnh.
  • Một task rủi ro cao hơn.

Cũng như lần trước, mình chưa có số đo của cách làm cũ để so. Nên không nói nhanh hơn, cũng không nói rẻ hơn. Phiên điều phối kéo dài cả buổi, gồm cả thời gian chờ BA, chờ bot, chờ trưởng nhóm, nên mình không có một con số “tổng thời gian máy” sạch để đưa ra.

Hai chiều đều chạy được. Còn nhanh hay rẻ thì chưa ai đo.

Mang về repo của bạn

Nếu chỉ nhớ bốn dòng, thì là bốn dòng này:

  1. Lỗ đã lọt thì vá thành luật. Đưa luật của repo vào gói việc, đừng chỉ nhắc trong prompt.
  2. Sandbox phải chừa đường cho việc chính đáng. Chặn ghi ngoài repo thì phải có đường khác cho việc chạy test.
  3. Không chạy được thì khai là không chạy được. Cần một trạng thái BLOCKED riêng, tách khỏi PASS và FAIL.
  4. Sửa code xong, mở lại mọi bằng chứng. Số dòng, trích dẫn, log của bản cũ đều phải soát lại trên bản cuối.

Một lời dặn cho vòng sửa có thể bắt đầu từ khuôn này (minh hoạ, đổi đường dẫn theo repo của bạn):

{
  "role": "coder",
  "round": "fix",
  "fix": [
    "Viết lại phần comment nói về cái nút ở đầu file"
  ],
  "keep": "Giữ nguyên mọi phần không được nêu trong fix",
  "evidence": {
    "reopen_on_final_tree": true,
    "old_tree_evidence": "ghi rõ là của bản cũ"
  },
  "self_test_status": ["PASS", "FAIL", "BLOCKED", "NOT_RUN"],
  "result": "review/coder-fix.json"
}

Dòng keep và khối evidence là đúng hai thứ lượt chạy của mình thiếu.

Tạm Kết

Đổi vai cho hai AI vẫn chạy trọn được một vòng: Codex viết, Claude review, Claude Code điều phối. Vá ba lỗ của phần một có tác dụng thật: lần này người review trích luật của repo, đối chiếu bước đỏ, và bắt được ba chỗ.

Nhưng lỗi không biến mất, nó chỉ đổi chỗ trốn. Lần này nó trốn trong cái sandbox chặn luôn việc chạy test, trong một thông báo lỗi nói sai nguyên nhân, và trong một con số dòng đã cũ mà chính mình chép vào pull request.

Đổi vai thì lỗi đổi chỗ trốn. Việc của mình là đi theo nó.

Bot bắt được chỗ cuối cũng là Claude, nên phần hai này chưa nói được gì về chuyện khác hãng thì khác điểm mù. Muốn nói được, phải có thêm lượt chạy, và có số đo của cách làm cũ để so.

Nguồn

  • Lượt thử thứ hai của pilot ở một dự án thật, ngày 11 và 12/11/2026: báo cáo pilot, thư mục kết quả của hai lượt chạy, mô tả pull request, và phiên Claude Code điều phối. Không nêu tên dự án, công ty, người nào. Số đo là của một lượt chạy trên một task nhỏ, không phải thống kê.
  • Công cụ lúc chạy: Claude Code 2.1.322 (bên điều phối và người review, model Claude Opus 5.5), Codex CLI 0.166.0 (người viết code; log JSONL không ghi tên model), script Python chỉ dùng thư viện chuẩn, cùng hợp đồng với phần một.
  • Lệnh, JSON và đoạn prompt trong bài là bản minh hoạ viết lại.
  • Phần một: Claude code, Codex review: hai AI soi nhau qua dòng lệnh · video.

Cảm ơn bạn đã đọc bài viết này!

FacebookTweetPinYummlyLinkedInPrintEmailShares0

Related Posts:

  • image_no_ai_logo
    Code Review Culture – Xây dựng văn hóa review code…
  • Context Rot
    Context Rot - Vì sao cho mô hình thêm thông tin đôi…
  • Code rẻ đi thì điểm nghẽn dời về đâu?
    Code rẻ đi thì điểm nghẽn dời về đâu?
  • feature_bg_blog_008
    Điều Gì Xảy Ra Nếu... Những Người Dệt Mã Trở Thành…
Tags: Agentic, AI, AI-Native SDLC, Claude Code, Codex
Written by chuotfx

Hãy ngồi xuống, uống miếng bánh và ăn miếng trà. Chúng ta cùng nhau đàm đạo về đời, về code nhóe!

Leave a Reply Cancel reply

Your email address will not be published. Required fields are marked *

Donate – Buy me a coffee!

Fan page

Fx Studio

Tags

Actor Advanced Swift Agentic AI AI-Native SDLC AntiGravity api basic ios tutorial blog ci/cd Claude Code closure Codex combine concurrency Context Engineering crashlytics dart dart basic dart tour Declarative deploy design pattern firebase flavor flutter Google Stitch iOS Nghĩa Địa Skill Prompt engineering Prompt for Coding protocol rxswift Skill Swift Swift 5.5 SwiftUI SwiftUI Notes tableview testing TravisCI TuiHocAI UI/UX unittest Vibe Coding

Recent Posts

  • Codex code, Claude review: đổi vai, lỗi trốn sang chỗ khác
  • AI-Native SDLC · Maintain: khép vòng bằng intent.md mới
  • Vô thường trong thời của những model có ngày hết hạn
  • Claude code, Codex review: hai AI soi nhau qua dòng lệnh
  • AI-Native SDLC · Deploy: agent dừng trước cổng production
  • Ngủ Ngon Theo Phương Pháp Stanford – Phần 1: Nợ ngủ, khoản nợ khó trả bằng cách ngủ bù
  • AI-Native SDLC · Test: agent tự kiểm, cấu hình cũng phải test
  • AI-Native SDLC · Build: plan trước, code sau
  • AI-Native SDLC · Design: intent.md thành spec.md
  • AI-Native SDLC · Plan: Ý tưởng thành intent.md

You may also like:

  • Mixture of Thought (MoT) - Từ Suy Luận Logic đến Ứng…
    Mixture of Thought
  • Linus Torvalds dùng Claude Code: chuyện thật sau 8 bản vá
    Linus Torvalds dùng Claude Code: chuyện thật sau 8 bản vá
  • Skill Creator - Đấng Sáng Tạo Muôn Kỹ Năng
    Skill Creator
  • Context Rot - Vì sao cho mô hình thêm thông tin đôi…
    Context Rot
  • Vấn đề Ảo Giác (hallucination) khi tương tác với Gen…
    hallucination

Archives

  • November 2026 (6)
  • October 2026 (6)
  • September 2026 (9)
  • August 2026 (2)
  • July 2026 (7)
  • June 2026 (13)
  • May 2026 (2)
  • April 2026 (5)
  • March 2026 (5)
  • February 2026 (1)
  • January 2026 (10)
  • December 2025 (1)
  • October 2025 (1)
  • September 2025 (4)
  • August 2025 (5)
  • July 2025 (10)
  • June 2025 (1)
  • May 2025 (2)
  • April 2025 (1)
  • March 2025 (8)
  • January 2025 (7)
  • December 2024 (4)
  • September 2024 (1)
  • July 2024 (1)
  • June 2024 (1)
  • May 2024 (4)
  • April 2024 (2)
  • March 2024 (5)
  • January 2024 (4)
  • February 2023 (1)
  • January 2023 (2)
  • November 2022 (2)
  • October 2022 (1)
  • September 2022 (5)
  • August 2022 (6)
  • July 2022 (7)
  • June 2022 (8)
  • May 2022 (5)
  • April 2022 (1)
  • March 2022 (3)
  • February 2022 (5)
  • January 2022 (4)
  • December 2021 (6)
  • November 2021 (8)
  • October 2021 (8)
  • September 2021 (8)
  • August 2021 (8)
  • July 2021 (9)
  • June 2021 (8)
  • May 2021 (7)
  • April 2021 (11)
  • March 2021 (12)
  • February 2021 (3)
  • January 2021 (3)
  • December 2020 (3)
  • November 2020 (9)
  • October 2020 (7)
  • September 2020 (17)
  • August 2020 (1)
  • July 2020 (3)
  • June 2020 (1)
  • May 2020 (2)
  • April 2020 (3)
  • March 2020 (20)
  • February 2020 (5)
  • January 2020 (2)
  • December 2019 (12)
  • November 2019 (12)
  • October 2019 (19)
  • September 2019 (17)
  • August 2019 (10)

About me

Education, Mini Game, Digital Art & Life of coders
Contacts:
contacts@fxstudio.dev

Fx Studio

  • Home
  • About me
  • Contact us
  • Mail
  • Privacy Policy
  • Donate
  • Sitemap

Categories

  • Art (1)
  • Blog (124)
  • Code (11)
  • Combine (22)
  • Flutter & Dart (24)
  • iOS & Swift (106)
  • No Category (1)
  • RxSwift (37)
  • SwiftUI (80)
  • Tutorials (113)

Newsletter

Stay up to date with our latest news and posts.
Loading

    Copyright © 2026 Fx Studio - All rights reserved.