Giá tính phí theo mức sử dụng đang "giết chết" cảm hứng lập trình? Đây là cách tự xây dựng tác nhân AI chạy cục bộ

02 tháng 5, 2026·9 phút đọc

Khi các dịch vụ AI như GitHub Copilot và Claude Code chuyển sang mô hình tính phí dựa trên mức sử dụng, việc lập trình cá nhân trở nên tốn kém hơn. Bài viết hướng dẫn cách thiết lập các tác nhân AI cục bộ sử dụng mô hình Qwen3.6-27B để tiết kiệm chi phí mà vẫn đảm bảo hiệu quả làm việc.

Giá tính phí theo mức sử dụng đang "giết chết" cảm hứng lập trình? Đây là cách tự xây dựng tác nhân AI chạy cục bộ

Trong vài tuần gần đây, chúng ta đã thấy Anthropic thử nghiệm loại bỏ Claude Code khỏi các gói dịch vụ giá rẻ nhất, trong khi Microsoft đã bỏ qua bước thử nghiệm và chuyển GitHub Copilot hoàn toàn sang mô hình tính phí dựa trên mức sử dụng. Tình hình này khiến chúng ta tự đặt câu hỏi: Liệu chúng ta có thực sự cần các mô hình hàng đầu của Anthropic hay OpenAI, hay có thể sử dụng các mô hình cục bộ nhỏ hơn? Chắc chắn, nó có thể chậm hơn, khả năng hạn chế hơn và hơi khó chịu hơn khi làm việc, nhưng bạn không thể beat được mức giá miễn phí... tất nhiên là giả định rằng bạn đã có sẵn phần cứng.

Chào mừng đến với Claude CodeChào mừng đến với Claude Code

Điều trùng hợp là Alibaba vừa mới ra mắt Qwen3.6-27B, mô hình mà gã khổng lồ đám mây và thương mại điện tử này khoe khoang có "sức mạnh lập trình flagship" được đóng gói đủ nhỏ để chạy trên máy Mac dòng M-series với 32 GB RAM hoặc GPU 24 GB.

Những thay đổi trong mô hình cục bộ

Đây không phải là lần đầu tiên chúng tôi xem xét các trợ lý lập trình cục bộ. Trước đây, chúng tôi đã khám phá việc sử dụng tiện ích mở rộng VS Code của Continue cho các tác vụ như hoàn thành và tạo mã.

Vào thời điểm đó, các mô hình và phần mềm còn khá non trẻ, khiến chúng trở thành công cụ hữu ích nhưng chưa đủ tốt để cạnh tranh với các mô hình biên giới (frontier models) lớn hơn. Kể từ đó, kiến trúc mô hình và các công cụ điều khiển tác nhân (agent harnesses) đã được cải thiện đáng kể.

Khả năng "suy luận" (reasoning) cho phép các mô hình nhỏ bù đắp cho kích thước của chúng bằng cách "nghĩ" lâu hơn, các mô hình hỗn hợp chuyên gia (mixture-of-experts) có nghĩa là bạn không cần băng thông bộ nhớ terabyte mỗi giây cho trải nghiệm tương tác, và khả năng gọi hàm và công cụ được cải thiện vượt bậc có nghĩa là các mô hình này thực sự có thể tương tác với cơ sở mã, môi trường shell và web.

Những gì bạn cần chuẩn bị

Để bắt đầu với "vibe coding" (lập trình theo cảm hứng) không giới hạn tốc độ, bạn sẽ cần:

  • Một máy có khả năng chạy các mô hình LLM cỡ vừa. Chúng tôi khuyên dùng GPU Nvidia, AMD hoặc Intel với ít nhất 24 GB VRAM. Nếu bạn thiếu bộ nhớ một chút, chúng tôi cũng sẽ thảo luận về cách gộp bộ nhớ hệ thống và GPU. Đối với những người dùng Mac dòng Mx-Max mới hơn, chúng tôi khuyên dùng ít nhất 32 GB bộ nhớ thống nhất.
  • Đối với hướng dẫn này, chúng tôi sẽ sử dụng Llama.cpp để chạy mô hình, nhưng nếu bạn thích dùng LM Studio, Ollama hoặc MLX, quy trình cài đặt cũng tương tự.

Cấu hình và chạy mô hình

Việc chạy LLM cục bộ hiện nay là một quá trình cực kỳ đơn giản. Cài đặt động cơ suy luận (inference engine) yêu thích của bạn. Tải xuống mô hình và kết nối ứng dụng của bạn qua API.

Tuy nhiên, đối với trợ lý lập trình cụ thể, có một vài tham số chúng ta cần tinh chỉnh, nếu không mô hình sẽ có xu hướng tạo ra rác và mã bị lỗi. Một số mô hình yêu cầu các siêu tham số cụ thể để hoạt động chính xác trong các ứng dụng khác nhau, và Qwen3.6-27B không phải là ngoại lệ.

Khi sử dụng Qwen3.6-27B cho lập trình, Alibaba khuyến nghị thiết lập các tham số sau: temperature=0.6, top_p=0.95, top_k=20, v.v.

Chúng ta cũng cần đặt cửa sổ ngữ cảnh (context window) của mô hình càng lớn càng tốt trong phạm vi bộ nhớ. Khi làm việc với các cơ sở mã lớn chứa hàng nghìn dòng mã, điều này tích tụ rất nhanh. Hơn nữa, các lời nhắc hệ thống (system prompts) được sử dụng bởi nhiều khung tác nhân có thể khá lớn, vì vậy chúng ta muốn đặt cửa sổ ngữ cảnh càng cao càng tốt.

Qwen3.6-27B hỗ trợ cửa sổ ngữ cảnh 262.144 token, nhưng trừ khi bạn có Mac cao cấp hoặc GPU máy trạm, bạn có thể không đủ bộ nhớ để tận dụng tất cả điều đó, ít nhất là ở độ chính xác 16-bit.

Tin tốt là chúng ta không cần lưu trữ bộ nhớ đệm key-value (theo dõi trạng thái mô hình) ở 16-bit. Chúng ta có thể sử dụng độ chính xác thấp hơn mà không làm giảm quá nhiều hiệu suất và chất lượng. Để tối đa hóa cửa sổ ngữ cảnh, chúng ta sẽ nén các cặp giá trị khóa xuống 8-bit.

Dưới đây là lệnh khởi chạy chúng tôi sử dụng cho Nvidia RTX 3090 TI 24GB:

llama-server \
--hf-repo unsloth/Qwen3.6-27B-GGUF:Q4_K_M \
--ctx-size 65536 \
-ngl 999 \
--flash-attn on \
--cache-prompt \
--cache-type-k q8_0 \
--cache-type-v q8_0 \
--temp 0.6 \
--top-p 0.95 \
--top-k 20 \
--min-p 0.0 \
--presence-penalty 0.0 \
--repeat-penalty 1.0 \
--port 8080

Lựa chọn khung tác nhân (Agent Framework)

Bây giờ mô hình đã chạy, chúng ta cần kết nối nó với một môi trường lập trình tác nhân. Một mình, các mô hình có thể tạo mã, nhưng chúng không có cách nào triển khai, kiểm thử hoặc gỡ lỗi nó mà không có môi trường phát triển tích cực.

Để giữ mọi thứ đơn giản, chúng tôi sẽ xem xét ba tùy chọn phổ biến: Claude Code, Pi Coding Agent và Cline.

Claude Code

Bạn có thể nghĩ rằng Claude Code bắt buộc phải dùng với các mô hình của Anthropic, nhưng thực tế không phải vậy. Khung công tác này hoạt động tốt với các mô hình cục bộ, miễn là bạn có đủ tài nguyên để chạy chúng.

Sau khi cài đặt Claude Code như bình thường, chúng ta cần cho nó biết chúng ta muốn sử dụng mô hình chạy cục bộ thay vì tài khoản Claude hay dịch vụ API của Anthropic. Điều này được thực hiện bằng cách thiết lập một vài biến shell trước khi khởi chạy Claude Code:

export ANTHROPIC_BASE_URL="http://localhost:8001"
export ANTHROPIC_API_KEY='none'
claude

Pi Coding Agent

Nếu bạn không chỉ muốn sử dụng mô hình cục bộ của riêng mình mà còn thích một khung mã nguồn mở, Pi Coding Agent là một lựa chọn tuyệt vời. Một trong những điểm thu hút chính của Pi Coding Agent là tính nhẹ nhàng của nó.

Tuy nhiên, tốc độ đó đánh đổi bằng nhiều rào cản và tính năng an toàn mà chúng ta thấy ở các tác nhân lập trình khác. Đây là cái mà bạn có thể muốn chạy trong máy ảo, container hoặc thậm chí là Raspberry Pi.

Cấu hình Pi Coding Agent khá đơn giản thông qua một file JSON. Bạn chỉ cần chỉ định baseUrl, apiKey và model ID để kết nối với server Llama.cpp của bạn.

Cline

Claude Code tích hợp trực tiếp với các IDE phổ biến như VS Code, nhưng nếu bạn đi theo hướng này, chúng tôi cũng khuyên dùng một ứng dụng mã nguồn mở khác gọi là Cline.

Việc cài đặt Cline đơn giản là tìm nó trong trình quản lý tiện ích mở rộng của VS Code và thêm vào thư viện của bạn.

Cấu hình ClineCấu hình Cline

Tiếp theo, chúng ta sẽ trỏ Cline đến server Llama.cpp và điều chỉnh một vài siêu tham số như nhiệt độ và kích thước ngữ cảnh. Sau khi cấu hình, bạn có thể tương tác với Cline thông qua giao diện trò chuyện của nó. Một trong những tính năng hữu ích hơn của Cline là khả năng chuyển đổi giữa chế độ lập kế hoạch thuần túy và chế độ hành động.

Quy trình làm việc với ClineQuy trình làm việc với Cline

Mô hình cục bộ đã đủ tốt chưa?

Vậy Qwen3.6-27B có thể thay thế Opus 4.7 hay GPT-5.5 không? Không hẳn. Như bạn có thể đoán, một LLM 27B không phải là thay thế cho mô hình biên giới với hàng nghìn tỷ tham số.

Tuy nhiên, bạn có thể ngạc nhiên về mức độ bạn có thể đi xa với các mô hình cục bộ ngày nay. Trong bài kiểm tra của chúng tôi, Qwen3.6-27B dễ dàng tạo ra một ứng dụng web hệ mặt trời tương tác chỉ trong một lần thử (one-shot) và có thể xác định chính xác cũng như vá lỗi trong một cơ sở mã hiện có.

Thomas Claburn, đồng nghiệp của tôi, đã chia sẻ trải nghiệm sử dụng tác nhân lập trình pi với OMLX làm máy chủ mô hình: "Tốc độ token chậm hơn nhiều, nhưng tôi hài lòng với Qwen cho đến nay, ít nhất là cho các script nhỏ. Ví dụ, tôi yêu cầu mô hình viết một script Python để thay đổi kích thước hình ảnh và nó đã làm được – sau khoảng năm phút với một vài phê duyệt thủ công."

Những tác nhân này có an toàn không?

Với tất cả sự ồn ào về cơn ác mộng bảo mật được gọi là OpenClaw, đây là một câu hỏi tốt. May mắn thay, hầu hết các khung công tác chúng tôi thảo luận ở đây đều khá hạn chế về tính tự chủ. Mặc định, Claude Code và Cline dựa vào việc có con người trong vòng lặp (human-in-the-loop) để phê duyệt thay đổi mã và thực thi lệnh shell.

Trừ khi bạn đã đưa vào danh sách trắng một tập hợp các lệnh hoặc đang spam phím enter trước khi đọc mà không mất thời gian để hiểu tác nhân đang cố gắng làm gì, phạm vi ảnh hưởng sẽ có thể kiểm soát được.

Điều này không đúng với Pi Coding Agent, hoạt động ở chế độ YOLO (You Only Live Once - chỉ sống một lần) ngay khỏi hộp, cho phép nó tự do đọc và sửa đổi bất cứ thứ gì nó có quyền truy cập. Trong một môi trường phát triển chuyên dụng như máy ảo hoặc Raspberry Pi, đây có thể là một rủi ro chấp nhận được, nhưng nếu không, bạn có thể muốn chạy tác nhân trong một sandbox thích hợp.

Containerization (đóng gói) cung cấp một con đường dễ dàng cho việc này. Việc khởi động một container Docker và chuyển thư mục làm việc của bạn qua nó khá đơn giản. Lệnh docker run sau sẽ cung cấp cho bạn một điểm khởi đầu hợp lý cho một môi trường sandbox:

docker run -it --name vibe_container -v working_dir:/working_dir ubuntu /bin/bash

Điều này sẽ khởi động một container docker ubuntu mới và chuyển thư mục làm việc của chúng ta vào container. Bất kỳ thay đổi nào sẽ bị giới hạn ở thư mục hoặc container đó.

Bài viết được tổng hợp và biên soạn bằng AI từ các nguồn tin tức công nghệ. Nội dung mang tính tham khảo. Xem bài gốc ↗