- Mô tả cấu hình thực hiện công việc phát triển bằng cách chạy song song 6 agent Claude Code chỉ với smartphone
- Kết hợp Termius và mosh, Tailscale VPN, Vultr VM để duy trì môi trường phát triển từ xa ổn định ngay cả khi không có laptop
- Có thể phát triển bất đồng bộ nhờ duy trì phiên tmux và thông báo webhook Poke; chỉ phản hồi qua thông báo đẩy khi Claude yêu cầu đầu vào
- Bảo mật được tăng cường bằng cấu trúc phòng thủ nhiều lớp gồm chỉ truy cập qua Tailscale, nftables, fail2ban
- Triển khai một quy trình phát triển di động hoàn chỉnh, cho phép review PR, refactor, sửa lỗi ngay cả khi đang chờ cà phê hoặc đang di chuyển
Tổng quan kiến trúc
- Trên smartphone, dùng ứng dụng Termius để kết nối bằng mosh qua Tailscale VPN tới Vultr VM
- Bên trong VM, Claude Code chạy và hook PreToolUse gọi webhook Poke để gửi thông báo đẩy
- Người dùng nhận thông báo và phản hồi câu hỏi của Claude, tạo thành một vòng lặp lặp lại
- Cách này tạo nên vòng lặp phát triển bất đồng bộ, cho phép làm việc ở bất cứ đâu
Chi tiết hạ tầng
- Vultr VM đặt tại khu vực Silicon Valley, cấu hình là
vhf-8c-32gb
- Chi phí là $0.29/giờ, tương đương khoảng $7/ngày
- Chỉ truy cập qua Tailscale, nên SSH không công khai và mọi cổng public đều bị chặn
- Tự động hóa việc khởi động và tắt VM bằng các script vm-start và vm-stop
- Có thể khởi động trực tiếp VM qua Vultr API bằng Phím tắt iOS
- Lớp bảo mật gồm tường lửa đám mây, nftables, và fail2ban
Môi trường terminal di động
- Termius hỗ trợ SSH và mosh trên iOS/Android
- mosh giữ kết nối ngay cả khi đổi mạng, nên phiên vẫn tiếp tục khi chuyển Wi‑Fi ↔ mạng di động hoặc khi vào chế độ tiết kiệm pin
- Ví dụ lệnh:
mosh --ssh="ssh -p 47892" [email protected]
- Nhược điểm là không hỗ trợ SSH agent forwarding; các tác vụ cần xác thực GitHub thì dùng SSH thường bên trong tmux
Duy trì phiên
- Cấu hình
.zshrc để tự động kết nối vào phiên tmux khi đăng nhập
- Ngay cả khi đóng Termius rồi mở lại, phiên vẫn được giữ nguyên
- Chạy song song nhiều agent Claude trong các cửa sổ tmux
- Tạo cửa sổ mới bằng
C-a c, chuyển cửa sổ bằng C-a n
Hệ thống thông báo đẩy
- Khi phát sinh sự kiện AskUserQuestion của Claude Code, hook PreToolUse sẽ được chạy
- Script
poke-notify.sh trích xuất câu hỏi và gửi yêu cầu POST tới webhook Poke
- Người dùng nhận thông báo trên điện thoại, xem câu hỏi rồi có thể trả lời ngay
- Nhờ đó, người dùng có thể phát triển hoàn toàn bất đồng bộ mà không cần liên tục nhìn vào terminal
Mô hình tin cậy và bảo mật
- Claude Code chạy ở chế độ permissive, còn VM được cô lập nên không thể truy cập hệ thống production
- Chỉ chứa lượng thông tin bí mật tối thiểu cần cho phát triển
- Ngay cả khi có hành vi ngoài dự kiến, VM vẫn có thể bị loại bỏ
- Kiểm soát chi phí để giảm thiểu rủi ro, với mức chi tối đa mỗi ngày được giới hạn
Cấu trúc phát triển song song
- Dùng Git worktree để vận hành đồng thời nhiều nhánh tính năng
- Ví dụ:
myproject-sidebar, myproject-dark-mode
- Mỗi worktree có cửa sổ tmux và agent Claude riêng biệt
- Cổng được xác định dựa trên hash của tên nhánh nên không bị xung đột
- Ví dụ công thức tính:
django_port = 8001 + (hash_val % 99)
- Có thể chạy tối đa 6 agent cùng lúc
Kịch bản sử dụng
- Có thể review PR, refactor, sửa lỗi ngay cả khi đang chờ cà phê hoặc đang di chuyển
- Trong lúc Claude xử lý các tác vụ mất 10~20 phút, người dùng có thể làm việc khác, rồi nhận thông báo, phản hồi và tiếp tục
- Chu trình phát triển hoàn chỉnh không cần desktop được hiện thực ngay trên smartphone
Tóm tắt thành phần
- Vultr: VM đám mây giá $0.29/giờ
- Tailscale: mạng riêng an toàn
- Termius: client SSH di động
- mosh: shell có khả năng chịu lỗi mạng
- tmux: duy trì tính liên tục của phiên
- Poke: thông báo đẩy dựa trên webhook
- Claude Code: thực hiện công việc phát triển thực tế
Kết luận
- Toàn bộ môi trường có thể được dựng bằng một phiên Claude Code
- Chỉ cần cung cấp khóa API Vultr và quyền truy cập GitHub, Claude có thể tự động cấu hình một VM phát triển an toàn
- Kết quả là có thể xây dựng một môi trường phát triển hoàn chỉnh chỉ với smartphone, tối đa hóa tính di động và hiệu quả
4 bình luận
Ừm... cũng có cảm giác là có cần phải làm tới mức này không nhỉ...
Khi dùng bản web của Claude Code, tôi đã nghĩ sẽ thật tiện nếu có thể ra lệnh bằng giọng nói thay vì phải gõ. Nhưng tôi không biết có cách nào để nhận diện giọng nói tiếng Hàn thành văn bản hay không..
Trên Android, sau khi nhấn nút micro trên bàn phím rồi nói nội dung bạn muốn, nếu nhấn lại nút micro thì văn bản sẽ được nhập bằng tiếng Hàn trong một lần.
Ý kiến trên Hacker News
Chiếc hộp Pandora đã được mở ra. Giờ đây thế giới đang tiến tới chỗ lao động trí óc phải làm việc 24/7
Tôi cảm thấy một sự mâu thuẫn khi vừa trò chuyện với LLM lúc rửa bát, dắt chó đi dạo hay đi chợ để tạo ra những tính năng vô nghĩa, vừa cuối cùng lại phá hủy môi trường mà con cái chúng ta sẽ sống trong đó
Tôi dùng LLM hữu ích mỗi ngày, nhưng nghĩ về dài hạn thì sự bất hòa nhận thức là quá lớn
Cuối cùng, chúng ta либо tin rằng không thể thay đổi hệ thống này, либо thực hiện một giao kèo kiểu Faust để tìm kiếm lợi ích cá nhân trong đó
Rốt cuộc vẫn cần một sự cân bằng có sự can thiệp của con người. Tự động hóa dựa trên LLM có lẽ cũng sẽ đi theo con đường tương tự
Đừng quá bi quan, chúng ta vẫn còn thời gian để thở
Một thế giới nơi công cụ làm thay thì chẳng còn hứng thú hay niềm vui gì nữa. Thế giới sẽ thay đổi, nhưng đó là phần của thế hệ trẻ
Với dự án cá nhân, tôi tận dụng Claude Code ở quán cà phê hoặc trong những khoảng thời gian ngắn
Cuối cùng, nếu tự thiết kế ranh giới cho mình, ta có thể không trở thành nạn nhân của xu hướng tiêu cực này
Tôi để một chiếc MacBook Pro nhanh trên bàn làm việc ở văn phòng và thiết lập môi trường bằng tmux, tailscale, git worktree
Nhờ tailscale và ssh, tôi vẫn có thể vibecode bằng điện thoại, nhưng công việc chất lượng cao thì vẫn chỉ làm được khi ngồi trước bàn
Khi làm sản phẩm SaaS, phải rà soát kỹ từ code review, log, metric đến phân tích hành vi người dùng
Cuối cùng vẫn cần màn hình lớn và bàn phím. Dù thế giới có đổi thay thì những điều cơ bản không đổi
Cấu hình khá tinh vi. Tôi đặc biệt thích phần tận dụng Tailscale
Tôi thì đang dùng cách đơn giản hơn là Claude Code for Web trong ứng dụng iPhone
Anthropic cấp nhiều VM 21GB cho mỗi phiên mà không tính thêm phí
Thỉnh thoảng tôi còn chạy nhiều phiên cùng lúc khi đang dắt chó đi dạo. Hoạt động khá tốt
Hiện giờ tôi dùng tổ hợp Tailscale + Terminus(iPad) + máy ở nhà, và đang tìm cách xử lý nhiều chức năng cùng lúc
Không biết có phải giờ mọi người đã đủ tự tin để hoàn toàn tin tưởng LLM rồi không
Nó cung cấp xem trước ứng dụng trực tiếp, docker-in-docker và tính năng đa agent trong một ứng dụng di động
Tôi cũng đang làm thứ gì đó tương tự — dự án clauderon
Các phiên được chạy trên server bằng Docker, K8s, Zellij và được cô lập bằng Git worktree + proxy
Có thể quản lý các phiên Claude Code bằng web UI hoặc app, và container không có thông tin xác thực
Nó ổn định hơn Claude Code Web vì cho phép kiểm soát môi trường linh hoạt hơn
Vẫn đang là WIP, nhưng mục tiêu là một UX thân thiện hơn
Tôi ghét phải nhập những câu dài trên điện thoại nên workflow này không hợp với mình
Thay vào đó, khi Claude Code yêu cầu nhập liệu thì Home Assistant gửi thông báo đẩy, rồi tôi quay lại máy tính để tiếp tục công việc
Nó có giới hạn với các tin nhắn ngắn hay comment review.
Sẽ thật tuyệt nếu ứng dụng Claude trên di động có thể mirror Claude Code
Nó cho phép chuyển giọng nói thành văn bản chất lượng cao thông qua nhà cung cấp AI mà bạn muốn
Ở những nơi như gpdstore.net thậm chí còn có cả mẫu gập hai màn hình
ttyd chia sẻ terminal qua http nên có thể thao tác bằng nhập giọng nói trên trình duyệt điện thoại
Tôi tò mò không biết sẽ xử lý thế nào khi Claude mắc lỗi hoặc thêm vào hàng nghìn dòng code
Nếu chỉ là dự án phụ không có test hay quản lý chất lượng thì còn được, chứ cũng có thể trở thành cơn ác mộng bảo trì
Chỉ với Jules và GitHub Copilot Agent cũng có thể tạo workflow tương tự
Tài liệu Claude Code for Web cũng đáng tham khảo
Nếu tự thiết lập môi trường cloud thì có thể test end-to-end cả database lẫn việc gọi các công cụ cụ thể
Tôi cũng đã làm thứ gì đó tương tự trong công ty
Tôi chỉnh sửa để hỗ trợ dán ảnh trong phiên SSH
Nếu phát hiện đường dẫn tệp cục bộ thì nó sẽ tự động tải lên server và chuyển tiếp nguyên đầu vào gốc
Giờ chỉ cần kéo tệp từ Finder là tự động được tải lên server. Đồng bộ trong suốt rất ấn tượng
Cách băm cổng theo tên branch có xác suất xung đột khoảng 14%
Với 6 branch và 99 slot cổng thì đây là kiểu băm kém hiệu quả nếu muốn gọi là “không xung đột”
Một lựa chọn khác là khởi chạy VM từ exe.dev
Nghe nói mặc định đã hỗ trợ truy cập trên di động.
Tôi mới chỉ dùng trên laptop, nhưng agent lập trình trên trình duyệt thấy tiện hơn terminal