Bài 7 — Nhắc nhở chủ động và lập kế hoạch ngày
Đến giờ agent vẫn bị động — chỉ phản hồi khi bạn nhắn. Một trợ lý thật phải chủ động: sáng gửi kế hoạch ngày, nhắc deadline sắp tới, cảnh báo lịch trống bị bỏ phí. Bài này biến agent thành proactive assistant qua cơ chế trigger + lập kế hoạch.
Kiến trúc chủ động: Trigger → Agent → Kênh gửi
[Cron 7h sáng] ──┐
[Deadline gần] ──┼→ Agent (đọc lịch+task, ưu tiên) → soạn thông điệp
[Lịch trống] ──┘ → Telegram / Email
Agent chủ động chỉ khác agent hội thoại ở chỗ ai kích hoạt: không phải người dùng gõ, mà là một sự kiện (thời gian, điều kiện).
Các bước xây bản lập kế hoạch ngày
- Trigger lúc 7h sáng (cron / scheduler).
- Đọc
list_events(today)vàlist_tasks(). - Chạy khung ưu tiên (bài 5) → top việc trong ngày.
- Ghép lịch cứng (cuộc họp) với việc linh hoạt vào các khung trống, tôn trọng preference (deep work sáng).
- Soạn tin nhắn ngắn gọn, gửi qua kênh bạn hay dùng.
def daily_plan():
events = list_events_today()
tasks = sorted(list_tasks(), key=score, reverse=True)[:3]
prompt = f"""Lịch hôm nay: {events}
Top task: {[t['content'] for t in tasks]}
Hãy soạn kế hoạch ngày: chào buổi sáng, liệt kê cuộc họp,
đề xuất chèn 3 task vào khung trống, tôn trọng deep work 9-11h.
Ngắn gọn, có emoji tối thiểu, giọng động viên."""
plan = ask_llm(prompt)
send_telegram(plan)
Nhắc nhở theo điều kiện (không spam)
Mẹo quan trọng: nhắc đúng lúc, không lặp. Dùng cờ trạng thái để mỗi nhắc chỉ bắn một lần.
def check_deadlines(state):
for t in list_tasks():
d = t.get("due")
if d and urgency(d) >= 4 and t["id"] not in state["notified"]:
send_telegram(f"Nhắc: '{t['content']}' hạn {d}. Cần chặn giờ làm không?")
state["notified"].add(t["id"])
Lịch nhắc nhở đề xuất (checklist)
- [ ] 7:00 — Kế hoạch ngày (lịch + top 3 task).
- [ ] Trước mỗi cuộc họp 15 phút — nhắc + link.
- [ ] Khi task quá hạn/đến hạn hôm nay — nhắc một lần.
- [ ] Chiều 17:00 — điểm lại: việc chưa xong, đề xuất dời sang mai.
- [ ] Tối Chủ nhật — review tuần + phác thảo tuần tới.
Ví dụ cụ thể
7h sáng bạn nhận Telegram: "Chào buổi sáng! Hôm nay có 2 họp: 10h Standup, 15h Review Q3. Đề xuất: 9-10h dùng deep work xử lý 'Báo cáo Q3' (hạn hôm nay). 14h trước Review nên chuẩn bị slide 30 phút. Chiều trống sau 16h — muốn mình chặn cho việc học SQL không?" Bạn chỉ cần trả lời để agent hành động.
Khung tư duy: chủ động nhưng không phiền
Proactive tốt = đúng thứ, đúng lúc, đúng liều. Ba câu hỏi trước khi cho agent gửi tin: (1) Tin này có đáng gián đoạn người dùng không? (2) Đã gửi tin tương tự chưa (chống lặp)? (3) Có kèm hành động cụ thể để người dùng phản hồi 1 chạm không?
Sai lầm thường gặp
- Spam thông báo. Gửi quá nhiều khiến người dùng tắt luôn agent. Gom nhóm, đặt ngưỡng, chống lặp.
- Nhắc trùng nhiều lần. Không lưu trạng thái "đã nhắc" → mỗi vòng cron lại bắn lại. Dùng cờ
notified. - Kế hoạch bỏ qua preference. Đề xuất họp vào giờ deep work làm mất uy tín agent. Luôn đọc prefs.
- Nhắc mà không kèm hành động. "Bạn có deadline" thì vô dụng; phải kèm "chặn giờ ngay không?".
- Cron chạy nhưng agent im lặng khi lỗi. Nếu API lịch fail lúc 7h, cần log + báo lỗi, đừng để người dùng tưởng hôm nay rảnh.