Chuyển đến nội dung chính
Blog

Hướng dẫn AgentKitBài 17/21

Biến cloud thành nơi làm việc: VPS, Orca, OMP và nhãn `ai-handle` để agent tự nhận issue

6 phút đọc
Bài 17 trong bộ onboarding AgentKit v3. Đọc khoảng 8 phút. Nên đọc bài 9 và bài 13 trước.

Dạo này tui ít khi phải gõ prompt. Không phải tui lười hơn, mà vì công việc không còn bắt đầu bằng việc tui mở terminal. Khách báo lỗi, hệ thống tạo issue có ngữ cảnh, agent trên VPS nhận việc, chạy test, mở PR, báo về Discord. Tui chỉ duyệt kết quả.

Bài này là hướng dẫn dựng lại vòng lặp đó. Nhấn mạnh trước: đây là cách tui ghép các công cụ có sẵn, không phải một sản phẩm đóng gói. Hàng đợi, xác thực webhook và bước duyệt là phần khuyến nghị, không có sẵn trong mọi cấu hình.


1/ Vòng lặp: kích hoạt, xử lý, kiểm chứng, báo cáo

Khách / Discord / Telegram -> GitHub issue (nhãn ai-handle)
-> webhook đã xác thực -> hàng đợi -> OMP + AgentKit trên VPS
-> test + bằng chứng -> PR -> thông báo Discord -> người duyệt rồi mới merge

Điểm mấu chốt không phải chuyện chạy trên VPS. Điểm mấu chốt là có đủ bốn khâu: điểm kích hoạt, agent xử lý, kiểm chứng, báo cáo.

2/ Khi nào nên làm

  • Laptop nóng, lag, đầy ổ vì nhiều worktree và test chạy song song.

  • Muốn điều khiển agent từ điện thoại mà khỏi bật laptop 24/7.

  • Muốn issue thành đầu vào có cấu trúc cho agent.

  • Muốn môi trường Linux gần production hơn.

Chưa nên nếu bạn chưa có repo thử nghiệm riêng. Và đừng nghĩ VPS lúc nào cũng nhanh hơn máy nhà: còn tuỳ CPU thực, I/O, mạng và mức chia sẻ tài nguyên.


3/ Sáu bước dựng

Bước 1: chuẩn bị VPS riêng

Tui đang dùng VPS khoảng 40 USD/tháng, 12 vCPU, 48 GB RAM, 400 GB SSD (giá và cấu hình có thể đổi, và đây không phải cam kết uptime). Quan trọng hơn cấu hình là: đừng dùng chung với production. Agent có quyền chạy lệnh và sửa code có thể vô tình phá dịch vụ đang chạy.

Checklist tối thiểu:

  • Tạo user dev, quyền sudo giới hạn theo nhu cầu.

  • Đăng nhập bằng SSH key, tắt đăng nhập mật khẩu (đặc biệt root) sau khi đã thử key.

  • Bật firewall, chỉ mở cổng cần thiết, ưu tiên VPN hoặc Tailscale, cập nhật bảo mật.

  • Ghi cách khôi phục vào một file ghi chú, không ghi private key, token hay mật khẩu.

Đổi SSH port chỉ giảm quét tự động, không thay được key và firewall.

Bước 2: Orca để điều khiển từ Mac và iPhone

Orca là Agent IDE có bản desktop, mobile và chế độ server headless. Theo tài liệu Orca tại thời điểm viết bài gốc, trên Linux lệnh CLI thường tên orca-ide (không phải orca, tên này có thể trùng screen reader của GNOME):

orca-ide status --json
orca-ide serve --pairing-address <TAILSCALE_IP> --mobile-pairing

Link ghép nối orca://pair?... coi như mật khẩu: không commit, không dán vào chat công khai. Đừng phơi cổng remote ra internet nếu không cần. Cờ lệnh của Orca có thể đổi theo phiên bản, hãy đối chiếu tài liệu Orca.

Bước 3: cài OMP và AgentKit

Trên VPS, cài Oh My Pi (OMP) làm agent runtime và AgentKit theo agentkit.best/docs.md. Phần đăng nhập thì tự tay làm:

ssh dev@<VPS_IP>
omp # tự đăng nhập nhà cung cấp AI trong phiên riêng
ak login --api-key <YOUR_AK_KEY>
ak kit init engineer --target omp -g -y

Không dán key thật vào prompt, issue, log hay file Markdown. Tham khảo thêm bài 6 và bài 4 cho việc cài kit theo runtime.

Bước 4: nối GitHub webhook với agent

Dùng nhãn ai-handle để biến issue thành đầu vào có cấu trúc. Khi sự kiện issues.labeled với nhãn ai-handle xảy ra, webhook kích hoạt OMP trên VPS chạy workflow /ak:vibe --advice --ship --beta (trong v3 là /ak-vibe), rồi báo kết quả qua Discord.

Mấy lớp bảo vệ bắt buộc nên có, vì issue là dữ liệu không đáng tin:

  • Kiểm tra chữ ký HMAC SHA-256 trong header X-Hub-Signature-256 trước khi nhận việc.

  • Xác minh đúng repository, đúng action, đúng nhãn.

  • Chống chạy trùng (mỗi delivery chỉ tạo một job).

  • Giới hạn số job và thời gian chạy.

  • URL webhook Discord là secret, không đưa vào prompt hay log.

  • Chỉ chạy trên repo cho phép; không tự merge, không tự deploy. Để agent mở PR trước, người duyệt rồi mới merge.

Một phần phải thao tác tay trong GitHub Settings: thêm webhook, secret và quyền xác thực.

Bước 5: chạy thử bằng một issue vô hại

Tạo issue nhỏ như "cập nhật README", gắn ai-handle, rồi kiểm:

  • Webhook hợp lệ được nhận, chữ ký sai bị từ chối.

  • Đúng repo, đúng issue, đúng nhãn.

  • Agent chạy trong worktree riêng, có timeout.

  • Có test pass, link commit, PR và thông báo Discord.

  • Không chạm production.

Bước 6: cho agent tiếp nhận báo lỗi từ khách

Tui có agent Dewee trên Discord: khách báo bug, agent tra source, kiểm chứng sơ bộ rồi tạo issue đủ thông tin và gắn ai-handle. Yêu cầu từ khách vẫn phải được phân loại, giới hạn quyền và kiểm tra trước khi thành hành động ghi. Dữ liệu khách không được thành lệnh tuỳ ý.


4/ Trạng thái từng phần

Phần Nhãn
Quy trình tui đang dùng hằng ngày (VPS + Orca + OMP + AgentKit + ai-handle) ✅ tui đang chạy thật, nhưng là cách ghép tay, không phải gói cài một lệnh
Lệnh ak login, ak kit init engineer --target omp -g -y ✅ theo bài gốc, đối chiếu bài 4 nếu cú pháp khác
Hàng đợi bền vững, retry, idempotency, theo dõi chi phí 🗺️ khuyến nghị, tự dựng
"24/7 tự chủ hoàn toàn" 🗺️ không phải thứ có sẵn. Server luôn bật chỉ giải quyết availability

Tóm lại

1/ Bắt đầu từ một VPS riêng, một repo thử nghiệm, một nhãn ai-handle, một task README. Làm đúng một vòng rồi mới mở rộng.

2/ Webhook phải xác thực chữ ký. Issue là dữ liệu không đáng tin.

3/ Agent mở PR, người duyệt rồi mới merge.

4/ Chạy được không có nghĩa là an toàn. Chạy lâu cũng không có nghĩa là ổn định.


Nguồn

Tìm hiểu sâu hơn trong tài liệu

Trang tham chiếu cho từng lệnh, skill, hook và thiết lập nhắc đến trong bài.

Đọc tài liệu →

Chia sẻ bài viết