Agent chạy trên máy bạn lúc dev là một chuyện; để nó hoạt động tin cậy mỗi ngày là chuyện khác. Bài cuối tập trung vào deploy, giám sát, an toàn và xử lý những tình huống hỏng hóc thực tế.
Lựa chọn nơi chạy
| Phương án | Ưu | Nhược | Hợp với |
|---|---|---|---|
| Cron trên VPS/Raspberry Pi | Rẻ, toàn quyền | Tự lo uptime | Cá nhân, hobby |
| Serverless (Cloud Functions) | Không quản server | Cold start, giới hạn thời gian | Trigger định kỳ |
| Máy cá nhân + scheduler | Miễn phí | Tắt máy là chết | Thử nghiệm |
Các bước đưa lên chạy định kỳ
- Đóng gói agent thành script chạy được không cần bàn phím (OAuth token đã lưu sẵn
token.json). - Tách hai loại chạy: conversational (webhook Telegram) và scheduled (cron gọi
daily_plan,check_deadlines). - Thêm crontab:
0 7 * * * cd /app && /app/venv/bin/python run.py daily_plan >> log 2>&1
*/30 * * * * cd /app && /app/venv/bin/python run.py check_deadlines >> log 2>&1
- Ghi log có timestamp cho mọi hành động ghi (ai, làm gì, lúc nào).
- Đặt cảnh báo: nếu cron lỗi 2 lần liên tiếp, gửi bạn tin báo lỗi.
An toàn và chi phí — không thể bỏ qua
- Xác nhận thao tác ghi vẫn giữ, kể cả khi agent chủ động (bài 4).
- Rate limit & retry: API Google/Todoist có giới hạn; bọc gọi API với retry + backoff.
- Kiểm soát token LLM: đặt trần chi phí; đừng nhồi cả lịch tháng vào mỗi prompt.
- Bảo mật secret:
.envchmod 600, không log token, xoay khóa định kỳ. - Idempotency: cron chạy lại không được tạo trùng event/nhắc trùng.
import time
def safe_call(fn, *a, retries=3):
for i in range(retries):
try: return fn(*a)
except Exception as e:
if i == retries-1: raise
time.sleep(2**i)
Xử lý tình huống thực tế (playbook)
- API lịch sập lúc 7h: agent bắt lỗi, gửi "Không đọc được lịch sáng nay, thử lại lúc 7:30" thay vì im lặng.
- User đổi ý sau khi confirm: cung cấp lệnh "undo" — lưu id vừa tạo để xóa lại được.
- Model hiểu sai ý định: luôn cho preview trước khi ghi để user bắt lỗi.
- Token OAuth hết hạn: refresh tự động; nếu refresh fail, báo user re-auth, đừng crash lặng.
- Trùng nhắc do cron chồng: khóa file (lock) để không chạy 2 tiến trình cùng lúc.
Vòng lặp cải thiện (checklist vận hành tuần)
- [ ] Xem log: hành động nào agent làm sai/bị từ chối nhiều?
- [ ] Đọc phản hồi "OK/không" của bạn — chỗ nào bạn hay sửa tay?
- [ ] Tinh chỉnh mô tả tool / trọng số ưu tiên / preference.
- [ ] Kiểm tra chi phí token tuần này so với giá trị nhận được.
- [ ] Backup
prefs.json,token.json(đã mã hóa).
Ví dụ cụ thể
Sau 2 tuần chạy, log cho thấy agent hay đặt task "đọc email" lên top sai. Bạn xem lại: do impact mặc định = 3 quá cao cho việc vặt. Bạn thêm luật "task loại admin mặc định impact 2". Đó chính là vòng lặp cải thiện — agent tốt lên nhờ vận hành, không phải nhờ code một lần rồi quên.
Khung tư duy: "Vận hành > Tính năng"
Một agent 5 tính năng chạy tin cậy mỗi ngày hữu ích hơn nhiều một agent 20 tính năng hỏng lúc 7h sáng. Ưu tiên: đúng đắn → tin cậy → an toàn → rồi mới thêm tính năng.
Sai lầm thường gặp
- Deploy xong là quên. Không xem log, không cải thiện → agent phân rã dần khi lịch/thói quen đổi.
- Không có retry. Một lỗi mạng thoáng qua làm hỏng cả kế hoạch sáng. Bọc retry/backoff.
- Bỏ trần chi phí LLM. Một vòng lặp lỗi có thể đốt token cả tháng trong một đêm. Đặt giới hạn.
- Cron chồng chéo không khóa. Hai tiến trình cùng tạo event/nhắc → trùng lặp. Dùng lock.
- Không có đường lùi (undo). User mất niềm tin sau lần agent ghi nhầm mà không sửa được. Luôn có undo cho thao tác ghi.
Học xong bài này rồi?
Tạo tài khoản miễn phí để lưu lại — lần sau vào là biết ngay đang dở ở đâu,
và học hết khóa thì có chứng chỉ.
Lưu tiến độ của tôi