CodeSpeak: Khi tôi để AI tiếp quản toàn bộ dự án phần mềm của mình

Công nghệ14 tháng 5, 2026·7 phút đọc

Bài viết chia sẻ trải nghiệm chuyển đổi một dự án phần mềm hơn 10.000 dòng code sang quy trình làm việc AI-native với CodeSpeak. Từ việc phân tích mã nguồn, tạo đặc tả tự động đến triển khai tính năng mới và sửa lỗi, công cụ này mở ra hướng đi mới cho lập trình dựa trên ngôn ngữ tự nhiên.

CodeSpeak: Khi tôi để AI tiếp quản toàn bộ dự án phần mềm của mình

Ngôn ngữ lập trình đã trải qua một hành trình tiến hóa dài, ngày càng trở nên trừu tượng và dễ hiểu hơn cho con người. Trong những ngày đầu của kỷ nguyên máy tính, các lập trình viên phải làm việc trực tiếp với mã máy, nhập các lệnh nhị phân thô sơ thông qua thẻ đục lỗ. Quá trình này tốn nhiều công sức và rất dễ xảy ra lỗi; chỉ một lỗ đục sai vị trí cũng có thể phá hỏng toàn bộ chương trình.

Để giảm thiểu khó khăn này, ngôn ngữ Assembly ra đời, thay thế mã nhị phân bằng các mã ghi nhớ dễ đọc như ADD hay MOV. Sau đó, các ngôn ngữ bậc cao đầu tiên như FORTRAN và COBOL xuất hiện vào những năm 1950, mang đến cú pháp gần với toán học và ngôn ngữ tự nhiên hơn. Các ngôn ngữ hiện đại như Python hay Java tiếp tục xu hướng này, ưu tiên khả năng đọc hiểu và hệ sinh thái thư viện khổng lồ, giúp kỹ sư tập trung vào giải quyết vấn đề kinh doanh thay vì các chi tiết phần cứng.

Tuy nhiên, gần đây, cách chúng ta viết code đang bắt đầu thay đổi một lần nữa với sự trỗi dậy của AI. Điều này đặt ra một câu hỏi thú vị: Liệu ngôn ngữ lập trình có tiến hóa theo hướng chúng ta có thể code bằng tiếng Anh thuần túy không? Đó là lý do tôi đã quyết định thử nghiệm CodeSpeak — một ngôn ngữ tiềm năng cho tương lai hiện đang ở giai đoạn alpha preview.

Cài đặt CodeSpeakCài đặt CodeSpeak

Thiết lập môi trường

Quá trình cài đặt CodeSpeak khá đơn giản. Chúng ta có thể cài đặt công cụ này thông qua trình quản lý gói uv:

uv tool install codespeak-cli
codespeak --version
# CodeSpeak CLI 0.4.1

Tiếp theo, bạn cần đăng nhập và xác thực. CodeSpeak hiện áp dụng chính sách "Bring Your Own Key" (tự mang khóa của bạn), nghĩa là bạn cần cung cấp API key của Anthropic. Sau khi xuất khóa API dưới dạng biến môi trường, mọi thứ đã sẵn sàng để bắt đầu xây dựng.

Tiếp quản dự án với CodeSpeak

Thay vì bắt đầu một dự án mới từ con số không (greenfield), tôi quyết định thử thách CodeSpeak với một dự án đã có chức năng — một ứng dụng web theo dõi và phân tích dữ liệu tập luyện mà tôi đã xây dựng trước đó. Kho lưu trữ này chứa khoảng 13.000 dòng code, một quy mô đủ lớn để kiểm tra khả năng của công cụ này.

Trước khi để CodeSpeak triển khai các tính năng mới, chúng ta cần tạo phiên bản đặc tả (spec) ban đầu. Tôi đã sao chép toàn bộ code của ứng dụng vào một kho lưu trữ mới và xóa bỏ các đặc tả cũ để mô phỏng kịch bản chuyển đổi một dự án "vibe-coded" (lập trình theo cảm hứng) sang quy trình có cấu trúc.

Chúng ta có thể bắt đầu tạo đặc tả bằng lệnh:

codespeak takeover

CodeSpeak sẽ mất khoảng một phút để phân tích các tệp cục bộ. Sau đó, nó mở một trang web với cấu trúc đề xuất cho codebase. Nó gợi ý chia ứng dụng của tôi thành bốn mô-đun: Frontend, Backend API, Data Layer và Backend Tests. Việc chia nhỏ này giúp tạo ra các miền tự chứa, cải thiện khả năng đọc và tái sử dụng.

Cấu trúc mô-đun đề xuất bởi CodeSpeakCấu trúc mô-đun đề xuất bởi CodeSpeak

Sau khi xem xét và chấp nhận cấu trúc này, CodeSpeak xử lý từng mô-đun: đọc tệp, tạo đặc tả, tinh chỉnh và chạy kiểm thử. Kết quả là một thư mục specs chứa bốn tệp đặc tả. Các tệp này sử dụng các câu lệnh import để theo dõi sự phụ thuộc giữa các mô-đun, giúp tác nhân AI có đủ ngữ cảnh cần thiết trước khi thực hiện thay đổi.

Đặc tả được tạo ra rất ngắn gọn và súc tích, tập trung vào các thông tin tối thiểu cần thiết để tạo code. Điều này khác với các đặc tả do LLM tạo truyền thống thường rất dài dòng. CodeSpeak được thiết kế để con người đọc và chỉnh sửa, có sự hỗ trợ của AI.

Triển khai tính năng mới

Để kiểm tra khả năng thực tế, tôi muốn thêm một tính năng mới: tạo bản tóm tắt buổi tập luyện dưới dạng văn bản để có thể sao chép và chia sẻ cho một AI huấn luyện viên khác.

Trong quy trình phát triển dựa trên đặc tả (spec-driven), việc triển khai bắt đầu bằng việc cập nhật đặc tả. Tôi đã chỉnh sửa tệp frontend.cs.md để thêm mô tả về chức năng mới này. Sau đó, tôi chạy lệnh:

codespeak build frontend.cs.md

CodeSpeak đã phân tích sự thay đổi trong đặc tả và triển khai code tương ứng. Nó nhận diện đúng nhiệm vụ: thêm một nút "sao chép tóm tắt" vào mỗi hàng buổi tập trong trang History. Các bài kiểm tra đều vượt qua và quá trình build thành công.

Tuy nhiên, khi kiểm thử thực tế, nút này hoạt động tốt với các buổi tập strength (tập tạ) nhưng lại thất bại im lặng với các buổi tập cardio. Không có lỗi nào xuất hiện trong console hay log.

Quy trình build và sửa lỗi với CodeSpeakQuy trình build và sửa lỗi với CodeSpeak

Sửa lỗi và yêu cầu thay đổi

Để khắc phục vấn đề này, tôi sử dụng tính năng "code change request" của CodeSpeak. Tôi tạo một tệp yêu cầu thay đổi mới, mô tả lỗi và yêu cầu thêm tính năng ghi log để dễ dàng debug hơn:

  • Hỗ trợ sao chép tóm tắt cho các buổi tập cardio, hiện tại tính năng này đang thất bại (có thể do định dạng dữ liệu khác nhau).
  • Thêm logging cho các lỗi sao chép, vì hiện tại các vấn đề không xuất hiện trong log trình duyệt hay Docker.

Sau khi chạy lệnh thay đổi, CodeSpeak đầu tiên sẽ xác minh xem các thay đổi code được yêu cầu có nhất quán với đặc tả hiện tại hay không. Nếu yêu cầu mâu thuẫn với đặc tả, nó sẽ yêu cầu bạn sửa đổi yêu cầu hoặc cập nhật đặc tả trước. Đây là một cơ chế bảo vệ rất hữu ích để giảm thiểu sự phân kỳ giữa đặc tả và triển khai.

Cuối cùng, CodeSpeak đã sửa thành công lỗi và thêm các bài kiểm thử để ngăn chặn các sự cố tương tự trong tương lai.

Tổng kết

Thử nghiệm này cho thấy kết quả khá tích cực. CodeSpeak đã tiếp quản thành công một kho lưu trữ hơn 10.000 dòng code mà không làm mất các chi tiết triển khai quan trọng. Sau đó, chúng tôi đã cập nhật đặc tả và xây dựng chức năng mới trực tiếp từ nó.

Trải nghiệm làm việc với CodeSpeak cảm thấy khá khác biệt so với quy trình phát triển dựa trên đặc tả truyền thống. Trong khi các đặc tả truyền thống thường dài dòng và khó duy trì, thì đặc tả của CodeSpeak lại ngắn gọn và dành cho con người.

Tôi phải thừa nhận rằng CodeSpeak khá khác so với những gì tôi mong đợi. Nó không thực sự giống một ngôn ngữ lập trình truyền thống với cú pháp nghiêm ngặt. Đổi lại, sự đổi mới chính nằm ở các công cụ và quy trình làm việc xung quanh nó. CodeSpeak cho phép bạn viết đặc tả bằng tiếng Anh thuần túy với rất ít ràng buộc. Sự linh hoạt này mạnh mẽ, nhưng cũng đi kèm với những đánh đổi: một đặc tả được viết kém có thể dẫn đến triển khai kém.

Hy vọng rằng khi CodeSpeak trưởng thành hơn (hiện tại vẫn ở alpha), nó sẽ phát triển một cách tiếp cận tốt hơn để viết các đặc tả chất lượng cao, cùng với các công cụ tốt hơn để xác thực và cải thiện chúng.

Chia sẻ:FacebookX
Nội dung tổng hợp bằng AI, mang tính tham khảo. Xem bài gốc ↗