Agent AI tự động viết code từ lời dẫn: một thử nghiệm đầy hứa hẹn

Simon Willison, một gương mặt quen thuộc trong giới phát triển và công nghệ, vừa mang đến một thử nghiệm mới mà tôi tin là đáng để chúng ta chú ý: llm-coding-agent phiên bản 0.1a0. Về cơ bản, đây là một agent lập trình được xây dựng trên thư viện llm của chính anh ấy, với tham vọng biến những mô tả ngôn ngữ tự nhiên thành các tác vụ lập trình cụ thể, từ viết code đến quản lý dự án. Tôi thấy cách Simon tạo ra nó khá trực diện và thông minh. Anh ấy bắt đầu với một thư viện Python mới, sau đó "ra lệnh" cho Claude qua hai prompt rõ ràng. Đầu tiên, yêu cầu viết một file spec.md cho dự án, định rõ nó sẽ là một agent lập trình theo kiểu Claude code, tích hợp các công cụ để đọc, chỉnh sửa file và thực thi lệnh. Kế đó, Simon yêu cầu agent commit bản spec đó, rồi triển khai dự án theo phương pháp TDD (red/green TDD) với hàng loạt commit hợp lý, mỗi commit đều có kiểm thử đạt và tài liệu được cập nhật. Kết quả cuối cùng là một gói llm-coding-agent trên PyPI, có thể chạy dễ dàng bằng lệnh uvx --prerelease=allow --with llm-coding-agent llm code. Điều tôi thấy thú vị là agent này còn tự động phát triển một API Python dạng CodingAgent(model="gpt-5.5", root="/path", approve=True).run("Fix the failing test in tests/test_parser.py") mà Simon ban đầu không hề yêu cầu nhưng lại cực kỳ hài lòng khi thấy nó được hiện thực hóa. Để vận hành được những tác vụ như vậy, agent được trang bị một bộ công cụ khá đầy đủ. Chẳng hạn, CodingTools_edit_file giúp thay thế một chuỗi chính xác trong file, đòi hỏi old_string phải khớp hoàn toàn và trả về bản diff để người dùng xác minh. CodingTools_execute_command cho phép chạy lệnh shell trong thư mục gốc của phiên làm việc, với timeout mặc định 120 giây (tối đa 600 giây), trả về cả stdout, stderr và mã thoát. Để quản lý cấu trúc file, có CodingTools_list_files liệt kê các file theo mẫu glob, bỏ qua thư mục ẩn, node_modules, pycache và các mục trong .gitignore, giới hạn 200 đường dẫn. CodingTools_read_file đọc file văn bản với các dòng được đánh số như l