Async workflow Antigravity: giao task agent, đóng laptop, sáng nhận kết quả

Chia sẻ bài viết

Mục lục
TL;DR

Tối trước khi ngủ, giao Antigravity agent task long-running (refactor module, sinh test 100 case, scrape data, build báo cáo) qua Remote-SSH lên Cloud VPS. Agent chạy trong tmux session, đóng laptop OK. Sáng mở mac, agent đã xong, Telegram bot báo kết quả. Cách này tận dụng 8-10h dev ngủ thành productive time.

Một trong những lợi ích lớn nhất khi dùng Antigravity với Cloud VPS là pattern async workflow: dev giao task, đi làm việc khác (hoặc đi ngủ), agent tự chạy đến khi xong. Khác với workflow synchronous "gõ prompt -> chờ -> đọc kết quả", async workflow tách thời gian dev và thời gian agent ra, dev không phải block.

Bài viết này hướng dẫn setup pattern async hoàn chỉnh: từ giao task qua chat Antigravity Remote-SSH, agent chạy trong tmux trên VPS, alert qua Telegram khi xong/fail, sáng dev mở laptop chỉ việc review diff. Áp dụng được cho 5 loại task long-running phổ biến.

Yêu cầu: VPS chạy 24/7 (Cloud VPS uptime 99.9%+ là chuẩn), Antigravity Pro hoặc Free (Free vẫn được nhưng quota giới hạn cho long task), tmux cài sẵn, Telegram bot token (free).

Async vs sync workflow: khác biệt

Workflow sync truyền thống:

  • Dev gõ prompt
  • Chờ agent 30 giây - 5 phút
  • Đọc kết quả, prompt tiếp
  • Lặp

Workflow async pattern:

  • Dev gõ prompt long-running (vd "refactor toàn module auth thành interface pattern, sinh test, viết doc, push branch")
  • Detach session vào tmux, đóng laptop
  • Agent chạy 1-3 giờ
  • Telegram báo xong
  • Dev mở laptop sáng hôm sau, review

Pattern async biến 8h ngủ thành productive (cho agent), giúp dev solo achieve nhiều như team 2-3 người. Trade-off: prompt phải đủ rõ ràng vì không có cơ hội clarify giữa chừng.

5 loại task hợp pattern async

TaskThời gian ước tínhOutput mong đợi
Refactor module (5-10 file)1-2hBranch PR ready review
Sinh test coverage cao (100+ test)2-3hFile test, coverage report
Scrape data 10-50 site2-4hCSV/JSON output, log
Build báo cáo phức tạp (multi-source)1-2hMarkdown report + chart
Migrate framework (Express->NestJS)4-8hBranch migration, test pass

Task không hợp async: task cần clarify nhiều lần (vd thiết kế UX), task đụng quá nhiều file shared (conflict cao), task chưa rõ acceptance criteria.

Setup tmux session để agent chạy nền

Trên VPS, cài tmux nếu chưa có:

sudo apt install -y tmux
# Hoặc dnf install tmux trên AlmaLinux

Tạo file ~/.tmux.conf cơ bản (optional, không bắt buộc):

set -g mouse on
set -g default-terminal "screen-256color"
set -g history-limit 50000
set -g status-style 'bg=#0B1230 fg=#7A5BFF'

Trong Antigravity Remote terminal, tạo session đặt tên rõ ràng:

tmux new -s overnight-refactor
# Trong session: chạy task long-running
cd ~/projects/app-wt/refactor-auth
# ... thực hiện việc gì đó cần tay
# Ctrl+B D để detach

Detach giữ session alive trên VPS. Đóng laptop, mọi process trong session tiếp tục.

Cách giao task long-running cho Antigravity

Antigravity agent thông thường tương tác sync. Để chạy async, có 2 pattern:

Pattern 1: agent viết script, script chạy trong tmux. Dev prompt agent: "viết script bash thực hiện 4 bước A, B, C, D. Sau khi script chạy xong, gửi notification Telegram." Agent sinh script, dev review nhanh, chạy trong tmux: tmux send-keys 'bash run.sh' Enter, detach.

Pattern 2: agent chạy trực tiếp nhưng auto-approve. Antigravity có chế độ "auto-accept" cho phép agent thực hiện tool call mà không cần dev confirm từng bước. Bật chế độ này, prompt một task lớn, để agent loop. Risk: agent có thể đi sai hướng, mất quota.

Pattern 1 an toàn hơn cho dev mới async. Pattern 2 production hơn cho dev đã quen.

Ví dụ thực tế: async refactor module auth overnight

Buổi tối, dev mở Antigravity Remote-SSH, prompt:

Viết file refactor-auth.sh chạy các bước sau, mỗi bước
echo log rõ ràng vào refactor.log:

1. Tạo git branch refactor/auth-interface từ main
2. Tách file src/auth/auth-service.ts thành:
   - src/auth/interfaces/auth-service.interface.ts
   - src/auth/concrete/auth-service.impl.ts
3. Update mọi import file khác trong codebase
4. Chạy npm test, nếu fail thì echo "TEST FAILED" và exit 1
5. Commit changes với message "refactor(auth): split into interface"
6. Push branch lên origin
7. Curl Telegram bot với message "Refactor xong, branch refactor/auth-interface"

Đảm bảo error handling, mỗi bước fail thì notify Telegram.

Agent sinh script refactor-auth.sh trong workspace. Dev review nhanh, chạy:

tmux new -s refactor
cd ~/projects/app
bash refactor-auth.sh
# Ctrl+B D
exit  # đóng terminal Antigravity, đóng laptop

Sáng hôm sau, mở laptop, Telegram đã có 2 message: "Bước 4 OK, test pass 87 case" và "Refactor xong, branch refactor/auth-interface". Mở Github, tạo PR, merge nếu OK.

Setup Telegram bot để alert

Trên Telegram, search @BotFather, /newbot, đặt tên, lấy token. Sau đó message bot vài tin để có chat_id (lấy qua https://api.telegram.org/bot{TOKEN}/getUpdates).

Lưu token + chat_id trong ~/.tg-bot.env trên VPS:

echo 'TG_TOKEN=123456789:ABCdef...' > ~/.tg-bot.env
echo 'TG_CHAT=987654321' >> ~/.tg-bot.env
chmod 600 ~/.tg-bot.env

Tạo helper function trong ~/.bashrc:

source ~/.tg-bot.env
notify() {
  curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" 
    -d "chat_id=${TG_CHAT}" -d "text=$1" > /dev/null
}
export -f notify

Bây giờ script bash chỉ cần gọi notify "message" là Telegram nhận liền. Dev có thể notify đầu - cuối task, hoặc mỗi milestone.

Monitor session khi đang chạy

Nửa đêm thức dậy muốn check, mở điện thoại SSH client (Termius free, hoặc Putty trên iPad), connect VPS, tmux a -t refactor. Xem log realtime. Nếu thấy agent đi sai, có thể Ctrl+C dừng, fix prompt, restart.

Cách thay thế: cron task mỗi 30 phút check file log, nếu chứa "ERROR" thì notify Telegram. Dev không phải mở session, chỉ chờ alert.

*/30 * * * * grep -q "ERROR" /home/dev/projects/app/refactor.log && 
  source ~/.tg-bot.env && 
  curl -s -X POST "https://api.telegram.org/bot${TG_TOKEN}/sendMessage" 
    -d "chat_id=${TG_CHAT}" -d "text=ERROR detected in refactor.log"

Quota Antigravity cho task async

Async task dài có thể tiêu nhiều quota Antigravity API (mỗi tool call agent là 1 request). Tip tiết kiệm:

  • Prompt rõ ràng để agent ít phải clarify, ít retry
  • Dùng script bash do agent sinh, sau đó chạy script bằng bash (không qua agent), tiết kiệm quota cho phần execution
  • Cache kết quả intermediate: agent đọc file cache thay vì re-query MCP
  • Theo dõi quota qua Antigravity dashboard, set alert khi sắp hết
  • Spread task lớn ra 2-3 đêm thay vì 1 đêm (nếu quota Pro daily không đủ)

Rủi ro async và cách giảm thiểu

Rủi ro 1: agent đi sai hướng cả đêm, sáng ra thấy 200 commit không dùng được. Mitigation: dùng git branch tách biệt (refactor/xxx), branch sai chỉ việc xoá. Không cho agent push trực tiếp main.

Rủi ro 2: VPS hết disk vì agent log nhiều. Mitigation: cron daily check df -h, alert khi >80%, rotate log bằng logrotate.

Rủi ro 3: quota hết giữa đêm, task fail. Mitigation: ước lượng quota trước (mỗi tool call ~1k token), chỉ chạy task khi quota dư >50%.

Rủi ro 4: agent edit production data nhầm. Mitigation: chạy trên branch dev, database test riêng, không cho agent access production DB credential.

Pattern advanced: chain async task

Khi quen async, có thể chain nhiều task lại nhau, mỗi task trigger task kế tiếp khi xong:

  • Task 1 (22:00): refactor module, commit branch A
  • Task 2 (00:00, auto-trigger sau task 1): sinh test cho branch A, commit thêm
  • Task 3 (02:00, auto-trigger sau task 2): chạy test full, sinh coverage report
  • Task 4 (04:00, auto-trigger): viết changelog từ git log, commit
  • 06:00: Telegram báo toàn bộ chain done, branch ready PR

Implementation: mỗi script kết thúc bằng systemd-run --on-active=2h /home/dev/next-task.sh hoặc at command Linux để schedule task tiếp.

Khi nào không nên dùng async

  • Task có nhiều unknown, cần explore nhiều hướng (Should sync)
  • Task đụng production data nhạy cảm (Should manual)
  • Task agent chưa từng làm thành công trước (Should pilot sync trước)
  • Khi VPS không có snapshot/backup (rollback khó nếu fail)
  • Khi network VPS không ổn (mất connection giữa chừng)

FAQ

Antigravity Free có chạy async được không?

Có, nhưng quota giới hạn. Task ngắn (30 phút - 1 giờ) OK. Task dài 4-6 giờ thường vượt quota daily Free. Pro tier comfortable hơn.

Tmux có thay thế bằng screen được không?

Được. Screen là alternative tương đương, cú pháp khác chút. Tmux phổ biến hơn 2026, screen ổn nhưng ít cập nhật. Khuyến nghị tmux.

Có thể dùng Slack thay Telegram alert không?

Được. Slack incoming webhook free, dán URL vào script curl. Slack có ưu thế nếu team đã dùng, Telegram tiện cá nhân vì notification rõ trên điện thoại.

Agent có thể tự push code lên main không?

Có thể nhưng risky. Best practice: agent chỉ push lên branch dev/feature, dev review sáng và merge thủ công (hoặc qua Github auto-merge khi CI pass).

Nếu VPS reboot giữa đêm, tmux session có mất không?

Có, tmux session in-memory, reboot mất. Mitigation: dùng tmux-resurrect plugin tự save/restore session, hoặc dùng systemd service cho script quan trọng (auto-restart khi reboot).

Đêm Antigravity API có downtime không ảnh hưởng async task?

Google API uptime cao (99.9%+), downtime hiếm vài phút. Script nên có retry với exponential backoff (retry 3 lần, chờ 30s, 60s, 120s). Nếu vẫn fail thì notify dev qua Telegram.

Cloud VPS cho Gemini Antigravity

VPS uptime 99.9% cho async workflow overnight

Cloud VPS TND sẵn AlmaLinux 9, Ubuntu 22/24, Debian 12/13. SSD CEPH, snapshot 1-click, backup hằng ngày, network 200Mbps trong nước. VPS uptime cao giúp tmux session async chạy đêm không lo reboot bất ngờ, snapshot trước task lớn để rollback nhanh.

Xem 8 cấu hình Cloud VPS →