25 điểm bởi GN⁺ 2026-01-05 | 4 bình luận | Chia sẻ qua WhatsApp
  • 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 tmuxthô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-startvm-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

 
ds2ilz 2026-01-06

Ừ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ỉ...

 
minmax 2026-01-06

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..

 
sam1287 2026-01-07

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.

 
GN⁺ 2026-01-05
Ý 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

    • Công nghệ này vốn dĩ phải là công cụ giải phóng chúng ta. Toàn bộ internet được chúng ta cùng nhau xây dựng nên mới có thể tạo ra những mô hình như thế này, nhưng giờ nó lại bị mắc kẹt trong một cấu trúc chỉ vận hành vì lợi ích của tư bả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 đó
    • Trước đây khi Continuous Delivery xuất hiện cũng từng có những lời chỉ trích tương tự. Nhưng trên thực tế hầu như không có công ty nào triển khai phát hành hoàn toàn tự động
      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ở
    • Tôi thấy may vì giờ mình đã gần nghỉ hưu. Từ khi còn nhỏ tôi đã thích tự tay viết code
      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ẻ
    • Tôi làm việc từ xa nhưng tuyệt đối không làm ngoài giờ.
      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ương lai có lẽ sẽ không còn lao động trí óc nữa mà chỉ còn các agent Claude cho lao động trí óc
  • 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

    • Tôi không thích Claude Code Web vì nó không có planning mode. Kết quả cũng kém hơn bản CLI
      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
    • Thật đáng ngạc nhiên khi làm việc trong môi trường “web sandbox” mà không có quyền truy cập vào source code thực tế.
      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
    • Tôi khuyên nên thử superconductor.dev mà tôi làm ra.
      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

    • Trông rất hay. Tôi sẽ thử dùng trực tiếp
  • 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

    • Tôi cũng ghét nhập dài nên dùng Dictate.
      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
    • Điện thoại hiện giờ thì bất tiện, nhưng nhu cầu kiểu này có thể dẫn tới sự trở lại của PDA hoặc laptop siêu nhỏ
      Ở những nơi như gpdstore.net thậm chí còn có cả mẫu gập hai màn hình
    • Tôi cũng từng tìm giải pháp tương tự rồi dùng tổ hợp tmux+ttyd.
      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

    • Copilot Agent và Claude Code dùng sandbox riêng nên cấu hình đơn giản, nhưng phạm vi test bị giới hạn
      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