Chuyển đến nội dung chính
Hướng dẫn AI

Tạo máy ảo phát triển biệt lập cho mọi dự án với devvm

Tìm hiểu cách cài đặt devvm, tạo máy ảo biệt lập với các toolchain được tự động phát hiện, chạy tác vụ lập trình bên trong sandbox, tùy chỉnh môi trường và bảo vệ cây mã nguồn bằng cách sử dụng một bản sao kho lưu trữ riêng.

Tạo máy ảo phát triển biệt lập cho mọi dự án với devvm

devvm là gì?

devvm tạo một máy ảo độc lập cho từng thư mục dự án. Máy ảo chứa các toolchain mà dự án cần và cung cấp một sandbox, nơi bạn hoặc coding agent có thể làm việc mà không cần cài trực tiếp agent trên máy chủ.

Mỗi máy ảo chạy thông qua Lima. Theo mặc định, devvm chỉ mount thư mục dự án đã chọn và hiển thị thư mục đó bên trong máy ảo tại cùng đường dẫn được sử dụng trên máy chủ. Chạy lại devvm trong thư mục đó sẽ mở lại chính máy ảo trước đó.

Tính năng chính

  • Một máy ảo cho mỗi dự án: Mỗi thư mục dự án có một môi trường độc lập riêng.
  • Tự động phát hiện toolchain: devvm kiểm tra các tệp dự án để xác định những toolchain cần thiết. Ví dụ, dự án chứa package.json sẽ được cung cấp các công cụ Node.js.
  • Hỗ trợ coding agent: Claude Code, Codex, opencode và pi có thể chạy bên trong máy ảo cùng với các thiết lập, skill và máy chủ MCP của chúng.
  • Mạng được kiểm soát: Máy ảo mới mặc định sử dụng tầng mạng allowlist và chỉ có thể kết nối đến các host đã được phê duyệt.
  • Bí mật ở phía máy chủ: Thông tin xác thực như token GitHub và Claude Code vẫn nằm trên máy chủ ở mọi tầng mạng.
  • Image có thể tái sử dụng: Máy ảo được sao chép từ một image cơ sở, còn các toolchain được chia sẻ ở chế độ chỉ đọc giữa các máy ảo. Sau lần thiết lập ban đầu, máy ảo mới có thể khởi động trong vài giây.
  • Layer tùy chọn: Các layer tích hợp gồm docker, nix và desktop. Bạn cũng có thể tạo layer riêng.
  • Chế độ clone: Máy ảo có thể làm việc trên bản clone Git riêng thay vì mount working tree trên máy chủ.

Yêu cầu hệ thống

devvm hỗ trợ macOS 13 trở lên và Linux trên arm64 hoặc x86_64. Công cụ này yêu cầu Lima 2.2 trở lên cùng các yêu cầu của Lima tương ứng. Dự án được kiểm thử trên máy Mac dùng Apple silicon và các hệ thống Linux sử dụng arm64 và x86_64, nhưng chưa được kiểm thử trên máy Mac dùng Intel.

Cài đặt devvm

Cài đặt trên macOS bằng Homebrew

Công thức Homebrew sẽ cài đặt devvm và Lima:

brew trust --formula devvmhq/tap/devvm
brew install devvmhq/tap/devvm

Cài đặt trên Linux

Chạy script cài đặt chính thức:

curl -fsSL https://github.com/devvmhq/devvm/releases/latest/download/install.sh | bash

Script này cũng hoạt động trên macOS. Trước khi cài đặt Lima, QEMU hoặc truy cập /dev/kvm, script sẽ yêu cầu bạn xác nhận.

Mỗi bản phát hành được ký bằng khóa minisign của devvm: RWSjzFsn7ETaijKJ2y7F4DtZobXmyv+LmdclJwZP/KmAkLUwOCzWF/2b. Hãy xem hướng dẫn xác minh script cài đặt nếu bạn muốn xác minh bản tải xuống trước khi chạy.

Kiểm tra quá trình cài đặt

Sau khi cài đặt, hãy chạy lệnh chẩn đoán:

devvm doctor

Lệnh này kiểm tra những gì devvm cần trên máy tính của bạn và giải thích cách cài đặt mọi thành phần còn thiếu. Xem hướng dẫn cài đặt đầy đủ để biết tất cả yêu cầu và tùy chọn trình cài đặt.

Tạo máy ảo đầu tiên cho dự án

  1. Mở thư mục dự án. Trong terminal, chuyển đến thư mục chứa dự án.
  2. Chạy devvm. Xem lại cấu hình máy ảo được đề xuất và xác nhận.
  3. Làm việc bên trong máy ảo. devvm mở một shell với dấu nhắc bắt đầu bằng (devvm).
cd ~/some-project
devvm

devvm phát hiện các toolchain được yêu cầu trong các tệp của dự án. Trước khi tạo máy ảo, bạn cũng có thể tùy chỉnh toolchain, coding agent, layer, tầng mạng và kích thước của máy ảo.

Lần chạy đầu tiên sẽ đặt một số câu hỏi để thiết lập giá trị mặc định cho các máy ảo mới và image cơ sở. Các tùy chọn này gồm kích thước máy ảo mặc định, coding agent và các thành phần bổ sung tùy chọn của image cơ sở. Việc xây dựng image cơ sở chỉ mất vài phút một lần; các máy ảo dự án về sau thường khởi động trong vài giây.

Mở lại cùng máy ảo

Quay lại thư mục dự án và chạy lại lệnh tương tự:

cd ~/some-project
devvm

Vì mỗi thư mục dự án lưu máy ảo riêng, devvm sẽ mở lại môi trường hiện có thay vì tạo một máy ảo không liên quan.

Chạy coding agent

Sau khi shell của máy ảo mở, hãy khởi động một agent được hỗ trợ từ bên trong máy ảo. Ví dụ, chạy Claude Code bằng lệnh:

claude

Cách này giữ coding agent bên trong sandbox thay vì cài đặt agent trên máy chủ. devvm lưu các thiết lập và thông tin đăng nhập của những agent được hỗ trợ trong kho lưu trữ riêng.

Đăng nhập Claude Code

Trước khi khởi động Claude Code lần đầu, hãy bắt đầu quy trình đăng nhập từ máy ảo:

devvm agent login claude

Thông tin đăng nhập được lưu trên máy tính của bạn. Xem hướng dẫn đăng nhập Claude Code để biết thêm chi tiết.

Nhập cấu hình agent hiện có

Nếu bạn đã sử dụng một coding agent được hỗ trợ trên máy chủ, devvm có thể sao chép cấu hình hiện có của agent đó vào kho lưu trữ riêng:

devvm agent import

Tính năng này dùng để đưa vào các thiết lập được sử dụng bởi một agent cục bộ hiện có. Các tích hợp được hỗ trợ gồm Claude Code, Codex, opencode và pi.

Bảo vệ working tree bằng chế độ clone

Ở chế độ mặc định, trình soạn thảo trên máy chủ và máy ảo dùng chung các tệp dự án đã mount. Vì vậy, những thay đổi được thực hiện bên trong máy ảo sẽ xuất hiện trong cùng working tree.

Để tách biệt mạnh hơn, hãy khởi động devvm với --clone. Khi đó, VM sẽ nhận một bản sao riêng của kho lưu trữ, ngăn các tiến trình bên trong truy cập cây làm việc của máy chủ hoặc thư mục .git của máy chủ.

devvm --clone

Sau khi hoàn tất công việc và commit bên trong VM, hãy lấy các thay đổi trên máy chủ thông qua remote devvm:

git fetch devvm

Các nhánh đã lấy sẽ có sẵn dưới những tên như devvm/main. Hãy xem xét sự khác biệt trước khi hợp nhất:

git log -p main..devvm/main

Quy trình này đảm bảo công việc trong VM chỉ được đưa vào kho lưu trữ của bạn khi bạn chủ động lấy các thay đổi. Xem Làm việc trên bản sao để biết toàn bộ quy trình.

Mẹo cấu hình nâng cao

Lựa chọn bộ công cụ một cách có chủ đích

Tính năng tự động phát hiện cung cấp một điểm khởi đầu hữu ích, nhưng hãy xem xét thiết lập được đề xuất trước khi tạo VM. Quy trình tạo cho phép bạn tùy chỉnh các bộ công cụ khi lựa chọn được phát hiện không phù hợp với môi trường dự kiến của bạn. Tài liệu về bộ công cụ liệt kê các tùy chọn được hỗ trợ.

Thêm các lớp môi trường

Sử dụng các lớp tích hợp docker, nix hoặc desktop khi dự án yêu cầu những khả năng đó. Để bắt đầu định nghĩa một lớp tùy chỉnh, hãy dùng:

devvm layer new

Xem tài liệu về các lớp trước khi tùy chỉnh image.

Xem xét quyền truy cập mạng

VM mới mặc định nhận tầng mạng allowlist. Hãy giữ danh sách máy chủ có thể truy cập ở mức hẹp nhất có thể, đặc biệt khi chạy một tác nhân lập trình tự động. Các tầng mạng khác được mô tả trong hướng dẫn an toàn mạng.

Hiểu ranh giới sandbox

VM giúp giảm rủi ro, nhưng không loại bỏ mọi lỗ hổng bảo mật. Hãy hiểu những gì VM có thể truy cập, tránh để lộ các tài nguyên không cần thiết và xem xét các thay đổi được tạo ra trước khi chấp nhận. Đọc Giữ an toàn trước khi giao cho VM một dự án quan trọng.

Tham khảo tài liệu CLI

Để biết các lệnh, cờ và đối số ngoài phạm vi hướng dẫn này, hãy sử dụng tài liệu tham khảo CLI chính thức. Tài liệu sử dụng tổng quát hơn cũng đề cập đến cổng, kích thước VM, liên kết giữa các VM, SSH, trình soạn thảo, image và khắc phục sự cố.

Kết luận

devvm cung cấp một cách thiết thực để dành cho mỗi dự án một môi trường phát triển biệt lập. Hãy cài đặt công cụ, kiểm tra máy chủ bằng devvm doctor, chạy devvm từ thư mục dự án và khởi động tác nhân lập trình bên trong shell được tạo ra. Với công việc nhạy cảm, hãy kết hợp mạng bị hạn chế với devvm --clone và xem xét các thay đổi đã lấy trước khi hợp nhất.