Trước đây các cuộc chiến giữa nhà cung cấp thường diễn ra trên bảng benchmark. Lần này nó diễn ra ngay trong thư mục .claude/ của bạn. Chiến dịch “Switch to Codex” của OpenAI tặng doanh nghiệp 2 tháng dùng Codex miễn phí, cộng thêm công cụ import một-cú-click quét máy bạn để tìm skills, hooks, MCP servers, subagents và file instructions của Claude Code rồi tự động migrate những gì có thể. Nước đi đáp trả của Anthropic không phải là xây một công cụ export cạnh tranh — mà là tăng giới hạn sử dụng hàng tuần của Claude Code lên 50% cho khách hàng hiện tại. Sự bất đối xứng đó mới là câu chuyện thật, và nó nói lên nhiều điều về chi phí chuyển đổi hơn cả phần marketing của hai bên.

Tôi dùng Claude Code làm công cụ chính hàng ngày, với một setup khá phức tạp: custom skills, vài MCP servers, định nghĩa subagent, instructions cấp project trong CLAUDE.md. Khi một khách hàng tuần trước hỏi liệu có nên nhận ưu đãi 2 tháng miễn phí của OpenAI không, tôi đã thực sự chạy công cụ import trên một config thử nghiệm thay vì đoán mò. Đây là những gì xảy ra.

Cái gì migrate mượt

File instructions dạng văn bản thuần chuyển gần như không mất mát. Instructions cấp project kiểu CLAUDE.md chỉ là markdown với vài quy ước — công cụ import của Codex đọc nó, tái cấu trúc thành định dạng system-prompt riêng, và nội dung ngữ nghĩa vẫn giữ nguyên. Nếu setup của bạn chủ yếu là “đây là coding style, đây là quy ước test, đây là quy trình deploy,” bạn sẽ mất rất ít.

Config MCP server cơ bản cũng chuyển ổn — command, args, tên biến môi trường (không phải giá trị, đúng như kỳ vọng). Nếu bạn dùng MCP kiểu stdio server tiêu chuẩn với setup có tài liệu rõ ràng, đây gần như không phải vấn đề.

Cái gì gãy hoặc suy giảm âm thầm

Ba nhóm sau gây rắc rối thật sự cho tôi, và không cái nào báo lỗi ồn ào — chúng chỉ tạo ra hành vi tệ hơn mà tôi chỉ phát hiện được nhờ test trực tiếp:

Hooks. Hooks của Claude Code là các shell script gắn với sự kiện vòng đời cụ thể (PreToolUse, PostToolUse, Stop, v.v.) qua settings.json. Codex có mô hình sự kiện riêng không ánh xạ 1:1. Công cụ import chuyển hook kiểu pre-commit của tôi thành thứ vẫn chạy được, nhưng sai thời điểm trong vòng lặp — nó chạy sau khi diff đã được stage thay vì trước, điều này phá hỏng toàn bộ mục đích của một gate pre-commit.

Skills và subagents. Đây là abstraction đặc thù sâu nhất của Claude Code — một skill về cơ bản là một năng lực có phạm vi, có thể gọi được, với instructions và quyền truy cập tool riêng. Codex không có primitive tương ứng; công cụ import làm phẳng skills của tôi thành văn bản system-prompt thuần túy được nối thêm vào context chính. Đó không phải migration, đó là phình context. Một skill tôi chỉ gọi khoảng 5% thời gian giờ tiêu tốn token thường trực trên mọi lượt turn.

Bất cứ thứ gì tham chiếu ngữ nghĩa tool đặc thù của Claude. Vài hook và instructions của tôi giả định tên tool và mô hình quyền cụ thể của Claude Code (ví dụ kiểm tra xem Bash đã được auto-approve cho một pattern nào đó chưa). Những cái này không báo lỗi — chúng chỉ âm thầm không làm gì cả, vì Codex có tên tool hoàn toàn khác.

# những gì tôi thực sự làm để đánh giá migration, không chỉ tin lời quảng cáo
mkdir -p /tmp/claude-export-test && cd /tmp/claude-export-test
cp -r ~/.claude/skills ~/.claude/settings.json ./  # bản copy thử nghiệm, không phải config thật

# chạy công cụ import của Codex trên bản copy đã sandbox này
# rồi so sánh HÀNH VI, không chỉ cấu trúc config:
# 1. Hook pre-commit có còn chặn khi lint fail không? -> KHÔNG, chạy sau khi đã stage
# 2. Skill ít dùng có còn nằm ngoài context mặc định không? -> KHÔNG, bị làm phẳng vào
# 3. MCP servers có còn kết nối với cùng tên biến môi trường không? -> CÓ

Bài học: một công cụ migration báo “12 mục đã import, 0 lỗi” không đồng nghĩa với “12 mục import đúng.” Bạn phải test hành vi mà config đó vốn tạo ra, không chỉ xác nhận file tồn tại ở phía bên kia.

Vì sao Anthropic không xây công cụ export

Đây là tín hiệu chiến lược thú vị hơn. Phản ứng của Anthropic — tăng giới hạn sử dụng, không phải công cụ portability — cho thấy họ đang đặt cược rằng chính chi phí chuyển đổi mới là hào bảo vệ (moat), không phải tính năng ngang bằng. Nếu mô hình skills/hooks/subagents của Claude Code thực sự biểu đạt mạnh hơn Codex, thì việc làm cho migration dễ dàng lại gây hại cho Anthropic, vì một export sạch sẽ chứng minh rằng chẳng còn gì mang tính lock-in để bảo vệ. Ưu đãi thêm cho người ở lại là nước đi đúng nếu bạn tin sự khác biệt của mình là thật; xây công cụ export là nước đi đúng nếu bạn lo nó không thật. Anthropic chọn cược theo hướng đầu tiên.

Đó là một cách đọc chiến lược hợp lý, nhưng nó cũng có nghĩa là người dùng Claude Code hiện tại đang bị khóa chặt hơn những gì marketing về công cụ agentic “mở” gợi ý. Nếu team bạn chuẩn hóa sâu vào skills/hooks/subagents, hãy hiểu rằng bạn đang tích lũy chi phí chuyển đổi, không chỉ sự tiện lợi.

Tôi thực sự khuyên gì

Đừng xem 2 tháng miễn phí là một cuộc thử nghiệm không tốn kém — hãy dành thời gian kỹ thuật thật để verify hành vi của từng hook và skill sau khi migrate, không chỉ xác nhận nó có tồn tại. Nếu setup Claude Code của bạn chủ yếu là instructions văn bản thuần và MCP servers tiêu chuẩn, chi phí chuyển đổi thực sự thấp và 2 tháng miễn phí có thể đáng để benchmark vòng lặp task của Codex với workload của bạn. Nếu bạn đã xây độ sâu thật sự vào skills và hooks — bất cứ thứ gì mà hành vi, chứ không chỉ văn bản, quan trọng — hãy xem đó là khoản đầu tư hạ tầng đã chìm và tính thời gian kỹ thuật migration vào bất kỳ quyết định chuyển đổi nào, không chỉ chênh lệch giá subscription.

Kết luận

Công cụ import trả lời trung thực câu hỏi “tôi có chuyển được file không.” Nó không trả lời câu hỏi “automation của tôi có còn làm đúng như hôm qua không,” và đó mới là câu hỏi thực sự quan trọng với một quy trình dev production. Hãy test hành vi, không phải số lượng file, trước khi để cả team chuyển đổi — và hãy chuẩn bị tinh thần rằng hooks và skills sẽ là phần cần sửa tay, vì đó là nơi các abstraction thực sự không ánh xạ được.

Nguồn: TechTimes: OpenAI vs Anthropic Coding War, Phemex: OpenAI Launches Codex Migration Tool for Claude Code Users, Bit.Fan: OpenAI adds Claude Code import to Codex, but users still can’t export their setup out

Xuất nội dung

Bình luận