7 điểm bởi davespark 2026-02-01 | 1 bình luận | Chia sẻ qua WhatsApp

Cựu kỹ sư Facebook Christopher Chedeau (Vjeux) đã thực hiện một thử nghiệm port engine chiến đấu Pokemon Showdown (khoảng 100 nghìn dòng TypeScript) sang Rust bằng Claude Code

Mục tiêu dự án

  • Xây dựng một oracle tốc độ cao (hệ thống tham chiếu) để huấn luyện AI chiến đấu Pokemon
  • Bản triển khai TypeScript hiện có → quá chậm (không thể mô phỏng hàng triệu trận đấu)
  • Ngôn ngữ mục tiêu: Rust (hiệu năng cao) → nhưng bản thân tác giả có zero kinh nghiệm với Rust

Thành quả chính

  • Hoàn tất việc port khoảng 100 nghìn dòng chỉ trong 1 tháng (thời gian làm thực tế khoảng 2~4 tuần)
  • Tạo ra khoảng 5.000 commit
  • Tốc độ thực thi tăng 3,5 lần
  • Kết quả kiểm thử vi sai đạt tỷ lệ khớp 99,96% (dựa trên 2 triệu trận đấu ngẫu nhiên)
    • 0,04% còn lại được cho là lỗi từ mã TypeScript gốc

Chiến lược cốt lõi dẫn đến thành công

  • Áp dụng kiểm thử vi sai (differential testing)
    • Chạy đồng thời bản gốc TS và phiên bản Rust → so sánh kết quả
    • Khi có trường hợp không khớp → đưa log cho Claude và yêu cầu sửa
  • Dù gần như không biết cú pháp Rust vẫn có thể kiểm chứng được

Những khó khăn chính mà Claude gặp phải

  • Port từng file riêng lẻ thì làm tốt ↔ nhưng thường xuyên phát sinh vấn đề ở khâu tích hợp giữa các file
    • Ví dụ: cùng một khái niệm (move) lại được định nghĩa bằng các struct khác nhau
  • Giới hạn cửa sổ ngữ cảnh → làm mất thông tin quan trọng trong quá trình tóm tắt giữa chừng
  • Có xu hướng cố làm cho “tốt hơn” → bỏ qua chỉ thị rõ ràng “port từng dòng một” và thử refactor → sinh ra hàng loạt bug
  • Yêu cầu tối ưu hóa → kế hoạch trông rất hay nhưng thực tế gần như không cải thiện hiệu năng (một số trường hợp còn chậm hơn)

Một mẹo hack workflow khá đặc biệt

  • Tự động hóa yêu cầu phê duyệt của người dùng trong Claude
    • Dùng AppleScript để tự động nhấn Enter vài giây một lần → chạy không người giám sát suốt 24 giờ
    • (Có rủi ro bảo mật, nhưng chấp nhận được vì mục đích oracle dùng một lần)

Hiện trạng công cụ coding AI (đánh giá)

  • Các tác vụ chuyển đổi cơ học và port quy mô lớn → cực kỳ mạnh
  • Các tác vụ cấp cao như tối ưu hiệu năng, thiết kế kiến trúc → vẫn còn thiếu sót
  • Tranh luận trên Hacker News
    • Phe hoài nghi: không thể bảo trì, chỉ là mã “biên dịch được”
    • Phe ủng hộ: có thể đủ tin cậy nhờ kiểm thử vi sai + tiết kiệm thời gian vượt trội so với con người

3 bài học để áp dụng vào thực tế

  • Bắt buộc phải có hệ thống kiểm thử tự động thật chặt chẽ (nếu không có kiểm thử vi sai thì xác suất thất bại rất cao)
  • Chỉ thị rõ ràng và phạm vi hẹp cho kết quả tốt nhất (“port từng dòng một” O, “hãy cải thiện đi” X)
  • AI chỉ là công cụ → lập trình viên vẫn phải chẩn đoán vấn đề, thiết kế câu hỏi và giữ đúng định hướng

→ Đây là một trường hợp một người hoàn toàn không biết Rust vẫn có thể chuyển một codebase 100 nghìn dòng lên mức sử dụng thực tế chỉ trong một tháng → vừa là ví dụ chứng minh tính thực dụng của AI coding, vừa là thí nghiệm tiêu biểu cho thấy các giới hạn của nó cũng rất rõ ràng

https://aisparkup.com/posts/8701

1 bình luận

 
ahwjdekf 2026-02-03

Điều này đang bỏ qua việc viết test case không phải là vạn năng. Không phải cứ đầu vào và đầu ra hoạt động bình thường là đã là tất cả. Cuối cùng vẫn sẽ phải review lại toàn bộ 100.000 dòng.