Xây dựng một AI Coding Agent cục bộ an toàn với Node.js
Các AI agent nghe có vẻ phức tạp. Nhưng thực tế không phải vậy.
Một agent đơn giản là một LLM được kết nối với một vòng lặp, các công cụ và các quy tắc an toàn.
Tôi đã xây dựng một coding agent cục bộ bằng cách sử dụng Node.js và Mistral thông qua Ollama. Bạn không cần các khóa API trả phí. Mọi thứ đều chạy ngay trên máy của bạn.
Agent này giúp bạn hiểu các dự án JavaScript của mình. Nó có thể: • Liệt kê các tệp trong dự án • Đọc các tệp trong dự án • Tìm kiếm văn bản • Giải thích mã nguồn • Tìm lỗi • Đề xuất các thay đổi mã nguồn
Nguyên tắc cốt lõi là sự an toàn. Agent có thể kiểm tra các tệp, nhưng không thể chỉnh sửa chúng. Nó chỉ trả về một đề xuất bản vá (patch proposal) để bạn xem xét. Điều này giúp duy trì sự kiểm soát của con người (human in the loop).
Cách thức hoạt động của agent: Một chatbot thông thường tuân theo một lộ trình đơn giản: Người dùng đặt câu hỏi -> Mô hình trả lời
Một agent tuân theo một vòng lặp: Người dùng đặt câu hỏi -> Mô hình quyết định chọn công cụ -> JavaScript chạy công cụ đó -> Mô hình xem kết quả -> Mô hình trả lời
Các mô hình chính được sử dụng trong dự án này: • Agent loop: Quá trình lặp lại cho đến khi mô hình đưa ra câu trả lời cuối cùng. • Tool calling: Mô hình yêu cầu các hàm JavaScript cụ thể. • Tool allowlist: Chỉ những công cụ đã được phê duyệt mới được chạy. • System prompt: Các quy tắc hướng dẫn mô hình cách hành xử. • JSON action protocol: Mô hình phản hồi bằng dữ liệu có cấu trúc. • Safety boundary: Việc truy cập tệp chỉ giới hạn trong thư mục gốc của dự án.
An toàn là ưu tiên hàng đầu. Tôi đã sử dụng một hàm gọi là safeResolve để ngăn chặn lỗi path traversal. Điều này đảm bảo agent không thể truy cập các tệp nằm ngoài thư mục dự án của bạn. Tôi cũng thiết lập giới hạn về kích thước tệp để bảo vệ ngữ cảnh (context) của mô hình.
Cấu trúc dự án: • src/cli.js: Điểm khởi đầu từ terminal. • src/agent.js: Vòng lặp cốt lõi và điều phối công cụ. • src/ollama.js: Client API cục bộ. • src/tools.js: Các công cụ hệ thống tệp an toàn. • test/tools.test.js: Các bài kiểm tra tính an toàn và hành vi.
Bạn có thể chạy dự án này với Node.js và Ollama. Hãy sử dụng Mistral hoặc thử các mô hình chuyên dụng cho lập trình như Qwen2.5-Coder hoặc DeepSeek-Coder để có kết quả tốt hơn.
Hãy xây dựng các công cụ hữu ích. Giữ phạm vi của chúng thật hẹp. Hãy để mã nguồn của bạn thực thi các ranh giới an toàn.
Nguồn: https://dev.to/gaurav101/building-a-safe-local-ai-coding-agent-with-nodejs-46ol