Tôi dùng Fable để viết lại 65kLoC từ Go sang Rust, chỉ tốn 400 đô la
Một kỹ sư phần mềm chia sẻ cách dùng Fable, công cụ AI agent, để tự động viết lại toàn bộ mã nguồn 65.000 dòng từ Go sang Rust chỉ với chi phí 400 đô la. Quy trình gồm 3 bước: trích xuất biểu diễn dữ liệu, thao tác trên biểu diễn đó và đưa trở lại thành code, giúp việc chuyển đổi ngôn ngữ trở nên nhanh chóng và tiết kiệm hơn nhiều so với làm thủ công.

Tôi dùng Fable để viết lại 65kLoC từ Go sang Rust, chỉ tốn 400 đô la
Kỹ thuật viết lại toàn bộ mã nguồn sang một ngôn ngữ lập trình khác thường được xem là nhiệm vụ tốn kém và rủi ro. Tuy nhiên, một kỹ sư giàu kinh nghiệm vừa chia sẻ cách anh dùng Fable – một công cụ AI agent – để tự động hóa quá trình này cho dự án 65.000 dòng code, với tổng chi phí chỉ vỏn vẹn 400 đô la.
Bài viết không chỉ giới thiệu phương pháp 3 bước hiệu quả mà còn chỉ ra cách tận dụng tối đa khả năng phân tích luồng dữ liệu của LLM, giúp lập trình viên Việt Nam có góc nhìn thực tế về việc ứng dụng AI vào tái cấu trúc hệ thống cũ – một bài toán đang ngày càng phổ biến trong bối cảnh chuyển đổi số.
Bối cảnh và động lực
Tác giả, một lập trình viên C++ kỳ cựu, chia sẻ rằng anh từng trì hoãn việc học Rust vì lý do cá nhân khá hài hước. Nhưng mọi thứ thay đổi khi anh thử skill /teach của Matt Pocock – một phương pháp học tập cá nhân hóa giúp dạy Rust cho người đã thành thạo C++ theo cách "bỏ qua cú pháp cơ bản, tập trung vào khác biệt cốt lõi". Cùng lúc, anh đọc được bài viết về việc Bun được viết lại bằng Rust và nảy ra ý tưởng: liệu có thể làm rẻ hơn nhiều không?
Ba bước cốt lõi của quy trình
Tác giả nhấn mạnh triết lý của Fred Brooks: "Chỉ cho tôi flowchart của bạn và che giấu bảng dữ liệu, tôi sẽ tiếp tục bối rối. Chỉ cho tôi bảng dữ liệu, tôi thường không cần flowchart – mọi thứ trở nên hiển nhiên."
Điều này áp dụng trực tiếp vào cách làm việc với LLM. Thay vì bắt AI dịch từng dòng code, quy trình gồm:
- Bước 1 – Trích xuất biểu diễn dữ liệu: Yêu cầu LLM biểu diễn toàn bộ code dưới dạng đồ thị, ontology, máy trạng thái phân cấp, sơ đồ UML, ràng buộc hoặc công thức toán học.
- Bước 2 – Thao tác trên biểu diễn: Tại đây, bạn có thể yêu cầu AI đơn giản hóa máy trạng thái, loại bỏ các kênh giao tiếp ẩn (như qua bảng chia sẻ hoặc chia sẻ địa chỉ RAM).
- Bước 3 – Đưa biểu diễn trở lại thành code: Cuối cùng, yêu cầu tạo code – thậm chí ở một ngôn ngữ lập trình hoàn toàn khác.
Bí quyết thành công
Theo tác giả, các agent AI hiện nay đã rất xuất sắc trong việc sử dụng công cụ. Anh gợi ý thêm vào prompt của Fable những hướng dẫn sau:
- Tránh dùng quá nhiều
Glob,Grep,WebSearch,Bash– thay vào đó dùngExploreagents - Tránh dùng quá nhiều
Edit/Bash– thay bằng các subagentsgeneral-purpose(sonnet hoặc haiku) - Dùng
Readmột cách tiết kiệm, chỉ để xác minh các tuyên bố quan trọng
"Các agent đã xuất sắc trong việc sử dụng công cụ, và chúng có thể coi các agent khác như các lời gọi hàm."
Kết quả: 65kLoC đã được chuyển đổi thành công
Dự án được chuyển đổi là rune – một trình soạn thảo terminal dành cho kỷ nguyên LLM, tích hợp phong cách Obsidian × VSCode ngay trong terminal. Các tính năng nổi bật bao gồm:
- Hỗ trợ Markdown và syntax highlight mạnh mẽ
- Bảng Markdown và Obsidian vaults với
[[wikilinks]] - Task list kiểu
- [x]quen thuộc - Auto-merge, khôi phục dữ liệu khi crash và nhiều tính năng khác
Minh họa quá trình chuyển đổi mã nguồn với Fable
Bài học cho lập trình viên Việt Nam
Với chi phí chỉ 400 đô la cho một lần chuyển đổi ngôn ngữ quy mô lớn, phương pháp này mở ra cơ hội lớn cho các doanh nghiệp phần mềm tại Việt Nam – nơi thường phải đối mặt với bài toán nâng cấp hệ thống legacy với ngân sách hạn chế. Việc tận dụng AI để tự động hóa các thao tác cơ học thay vì chỉ dùng để sinh code mới sẽ giúp tăng năng suất đáng kể, đồng thời giảm thiểu rủi ro so với viết lại hoàn toàn bằng tay.
Bạn đang cân nhắc việc chuyển đổi ngôn ngữ cho dự án của mình? Hãy thử tiếp cận theo hướng "biến bài toán thành bài toán dữ liệu" – biết đâu bạn sẽ bất ngờ với kết quả.


