Bỏ qua tới nội dung chính
Quay lại tin tức

Lập trình từ dãy Himalaya với tác tử AI ngoại tuyến

Latent Space· Rittika Jindal· 27/10/2026models

Khi đề cập đến hình thức làm việc từ xa, nhiều điều kiện thường được mặc định sẵn, đặc biệt là sự ổn định của mạng internet và nguồn điện. Tuy nhiên, làm việc từ xa đôi khi đồng nghĩa với nỗ lực hoàn thành nhiệm vụ trên một chuyến bay, trong suốt hành trình dài bằng tàu hỏa, hoặc tại những địa điểm kết nối mạng chập chờn hay hoàn toàn mất tín hiệu. Thời điểm chuyển về sinh sống tại chân núi Himalayas cách đây một năm mang lại sự yên bình, song cũng đi kèm những thách thức đặc thù, bao gồm sự cố mất điện và gián đoạn kết nối mạng. Những yếu tố vốn ít được lưu tâm trước đây nay đã trở thành một phần không thể tách rời trong việc lập kế hoạch công việc. Trên cương vị Kỹ sư trưởng (Principal Engineer) tại Thomson Reuters, phần lớn thời gian công tác được dành cho hoạt động lập trình một

Khi đề cập đến hình thức làm việc từ xa, nhiều điều kiện thường được coi là hiển nhiên, đặc biệt là kết nối internet và nguồn điện ổn định. Tuy nhiên, trong nhiều trường hợp, làm việc từ xa đồng nghĩa với việc phải xử lý công việc trên các chuyến bay, những chuyến tàu dài, hoặc tại các khu vực có kết nối mạng hạn chế hoặc hoàn toàn không có mạng. Việc chuyển đến sinh sống tại khu vực chân núi Himalaya cách đây một năm mang lại không gian yên tĩnh, song cũng đặt ra không ít thách thức, bao gồm sự cố mất điện và mất kết nối mạng. Những yếu tố trước đây ít được lưu tâm nay đã trở thành một phần trong việc lập kế hoạch công việc. Với vai trò Kỹ sư trưởng (Principal Engineer) tại Thomson Reuters, phần lớn thời gian làm việc được dành cho việc lập trình và duyệt mã nguồn của đồng nghiệp. Các tác nhân hỗ trợ lập trình (coding agent) đã trở thành một phần thiết yếu trong quy trình làm việc hằng ngày, từ đó đặt ra câu hỏi về khả năng duy trì quy trình này khi không có kết nối internet (ngoại tuyến). Làm việc từ khu vực chân núi Himalaya. Hình ảnh không gian làm việc. Nội dung bài viết hướng tới những người làm công nghệ nhưng ưa thích môi trường làm việc tại các khu vực yên tĩnh, xa xôi, nơi mạng viễn thông không phải lúc nào cũng bảo đảm; đồng thời cũng dành cho những ai quan tâm đến khả năng vận hành hoàn toàn ngoại tuyến của các coding agent trên máy tính xách tay. Thử nghiệm chạy cục bộ một coding agent trên máy tính cá nhân đã được tiến hành nhằm đánh giá khối lượng công việc thực tế có thể hoàn thành khi ngắt kết nối internet. Khả năng xử lý công việc ở chế độ ngoại tuyến Một dự án có sẵn trên máy tính xách tay cung cấp đầy đủ dữ liệu để thao tác. Lập trình viên có thể yêu cầu tác nhân giải thích một hàm chưa quen thuộc, kiểm tra lỗi kiểm thử (test), tái cấu trúc (refactor) một đoạn mã nhỏ hoặc hỗ trợ hoàn thiện một tính năng. Các tác vụ này có thể vận hành ngoại tuyến khi mô hình, các gói phụ thuộc (dependencies) của dự án và công cụ kiểm thử đã có sẵn trên máy cục bộ. Việc tải các gói thư viện mới hoặc tìm kiếm thông tin trên web vẫn đòi hỏi phải có kết nối mạng. Vai trò của OpenCode OpenCode là một coding agent mã nguồn mở hoạt động trực tiếp với dự án. Sau khi nhận nhiệm vụ, công cụ này có thể đọc tệp, đề xuất chỉnh sửa và thực thi các lệnh như chạy bộ kiểm thử. Trong thiết lập này, các thông báo yêu cầu phân quyền cho phép người dùng kiểm tra các lệnh và thay đổi trước khi phê duyệt. OpenCode được lựa chọn do khả năng duy trì quy trình làm việc trong giao diện dòng lệnh (terminal), đồng thời kết nối trực tiếp với mô hình vận hành trên máy tính cá nhân. Ollama đảm nhiệm việc vận hành mô hình; OpenCode xử lý các tương tác với dự án. Giao diện OpenCode trên máy tính Mac, với mô hình cục bộ được lựa chọn là Qwen3.5 9B. Các mô hình mở trọng số (open-weight), bao gồm Qwen, giúp hiện thực hóa quy trình này: các trọng số (weights) – tức các tham số đã qua huấn luyện dùng để tạo phản hồi – có thể tải về và vận hành cục bộ. Với việc Ollama chạy Qwen trên cùng một thiết bị, OpenCode có thể gửi yêu cầu đến dịch vụ nội bộ này. Toàn bộ tài nguyên được tải về trước, sau đó thiết bị ngắt kết nối internet để phục vụ công việc lập trình. Aider cũng là một phương án khả dĩ đối với quy trình chỉnh sửa có hướng dẫn, đồng thời công cụ này cũng hỗ trợ Ollama. Tuy nhiên, OpenCode được sử dụng xuyên suốt hướng dẫn này nhằm bảo đảm tính nhất quán trong quá trình thiết lập và đánh giá kết quả. OpenCode thao tác với các tệp dự án và gửi yêu cầu mô hình tới Ollama trên cùng một thiết bị. Ollama chịu trách nhiệm vận hành Qwen ở chế độ cục bộ. Lựa chọn mô hình mã nguồn mở Qwen có nhiều phiên bản kích thước khác nhau. Mục tiêu đặt ra là tìm kiếm một mô hình vừa có thể chạy cục bộ, vừa có khả năng sử dụng các công cụ của tác nhân. Dưới đây là kết quả công bố của hai phiên bản Qwen và một lựa chọn mở trọng số khác, theo tài liệu kỹ thuật (model card) của Qwen. LiveCodeBench v6 đánh giá năng lực tạo mã nguồn đối với các bài toán lập trình. BFCL-V4 đánh giá khả năng gọi hàm (function calling), yếu tố then chốt khi mô hình cần chọn công cụ và truyền đúng các đối số. Điểm số càng cao thể hiện hiệu năng càng tốt trên cả hai tiêu chí đánh giá. Mô hình LiveCodeBench v6 BFCL-V4 Qwen3.5 4B 55,8 50,3 Qwen3.5 9B (được sử dụng tại đây) 65,6 66,1 gpt-oss-20b 74,6 Không công bố Điểm số trong bảng trên được công bố trong thẻ mô hình (model card) của Qwen, không phải kết quả đo lường trực tiếp trên máy tính xách tay này. Thuật ngữ “Không công bố” đồng nghĩa với việc nguồn dữ liệu không cung cấp điểm số đó. Mô hình Qwen3.5 9B được lựa chọn cho quy trình thử nghiệm này. Kết quả công bố vượt trội hơn về khả năng lập trình và gọi công cụ (tool-calling) so với phiên bản 4B giúp mô hình này trở thành điểm khởi đầu phù hợp. Bảng số liệu không phản ánh tốc độ của máy tính hay toàn bộ quy trình làm việc của OpenCode; các thao tác chỉnh sửa tệp và kiểm thử ngoại tuyến sẽ đóng vai trò kiểm chứng các yếu tố này. Kích thước mô hình và bộ nhớ Mô hình Dung lượng tải xuống ước tính Qwen3.5 4B 3,3–4,0 GB Qwen3.5 9B (được sử dụng tại đây) 6,6–7,6 GB Qwen3.5 27B 17–20 GB Ollama liệt kê toàn bộ các kích thước khả dụng; dung lượng tải xuống thay đổi tùy thuộc vào định dạng môi trường thực thi. Dung lượng tải xuống không đồng nghĩa với yêu cầu dung lượng bộ nhớ RAM. Voltti phân bổ 12–16 GB bộ nhớ cho bản dựng Qwen3.5 9B dung lượng 6,6 GB. Cấu hình OpenCode với 64k token có thể đòi hỏi dung lượng lớn hơn, do đó cần dự phòng tài nguyên cho ngữ cảnh và các ứng dụng khác. Hiệu năng của OpenCode trong các bài kiểm chuẩn OpenCode cũng đã được kiểm nghiệm ngoài phạm vi các bản trình diễn nhỏ. Bản thảo nghiên cứu "The Scaffold Effect in Coding Agents" đã so sánh OpenCode, Goose và OpenHands-SDK trên 50 tác vụ Terminal-Bench Pro bằng hai mô hình đám mây. Tỷ lệ vượt qua bài kiểm tra được ghi nhận tại Bảng 2 như sau: Tác nhân lập trình (Coding agent) Qwen3.6 Plus MiniMax M2.5 Goose 48% [34–62%] 38% [24–52%] OpenCode 50% [36–64%] 46% [32–60%] OpenHands-SDK 50% [36–64%] 46% [32–60%] Các số liệu trong ngoặc vuông thể hiện khoảng tin cậy 95%. Nhóm tác giả khuyến cáo phần lớn sự khác biệt về tỷ lệ đạt yêu cầu không có ý nghĩa thống kê rõ ràng. Nghiên cứu cũng chỉ ra mức tiêu thụ token của OpenCode cao hơn đáng kể: gấp khoảng 40 lần số token của Goose trên mỗi tác vụ được xử lý. Các lần chạy này sử dụng API đám mây và các mô hình khác với mô hình đang thử nghiệm, do đó không thể dùng để dự đoán hiệu năng của Qwen3.5 9B khi vận hành cục bộ. Thiết lập ban đầu Trong thời gian còn kết nối internet, cần thực hiện đầy đủ quy trình thiết lập theo tệp README trên GitHub. Nội dung bao gồm việc cài đặt các công cụ, tải dự án và cài đặt OpenCode phiên bản 1.19.4. Dự án chứa các ví dụ, tệp kiểm thử và cấu hình để vận hành Qwen cục bộ. Sau khi hoàn tất, duy trì Terminal A mở tại thư mục dự án. Trước khi bắt đầu, cần tìm hiểu chức năng của tệp opencode.json. Đây là tệp cấu hình dự án của OpenCode. Trong tệp cấu hình này, cả mục model và small_model đều chọn Qwen3.5 9B, và baseURL trỏ về Ollama tại địa chỉ http://127.0.0.1:11434/v1. Chỉ có nhà cung cấp cục bộ được kích hoạt. Hệ thống cũng sẽ yêu cầu xác nhận trước khi chỉnh sửa tệp hoặc thực thi lệnh shell, đồng thời chặn các công cụ web. Toàn bộ cấu hình được lưu trong kho lưu trữ (repository). Kết nối mạng vẫn được ngắt để phục vụ việc kiểm thử ngoại tuyến. Terminal A sẽ được sử dụng cho OpenCode và các

Nguồn tin: Latent Space — Tác giả: Rittika Jindal. Bản dịch tiếng Việt do AI thực hiện, có thể có sai sót.