Trợ lý AI có con người trong vòng lặp: bài học từ GOHA YT Engage
GOHA YT Engage soạn nháp bình luận YouTube nhưng không bao giờ tự đăng. Mình chia sẻ cách vẽ ranh giới tự động hóa, kiểm soát chi phí token và đặt guardrail.

GOHA YT Engage là một Chrome extension (Manifest V3), dùng nội bộ và không phát hành công khai. Nó giúp đội mình soạn bình luận và trả lời cho một kênh YouTube về kinh tế bằng tiếng Hàn mà đội đang vận hành. Điều thú vị không nằm ở chuyện gọi LLM, mà ở chỗ nó cố ý không làm gì.
Ranh giới số một: không bao giờ tự đăng

Extension chỉ điền nội dung vào ô soạn thảo. Một con người đọc, chịu trách nhiệm, và tự bấm Gửi.
Đây là lựa chọn có chủ đích, không phải thiếu tính năng. Việc tự động đăng bình luận hàng loạt dễ đi ngược chính sách chống spam và tương tác giả của YouTube. Quan trọng hơn, một bình luận mang danh kênh là lời nói của kênh. Có người phải đứng sau nó.
Quy tắc mình rút ra: tự động hóa phần soạn, không tự động hóa phần cam kết.
Ngữ cảnh vào prompt
Extension đọc ngữ cảnh video (mô tả và phụ đề, theo kiểu best-effort, không phải video nào cũng có) rồi đưa vào prompt. Bình luận trả lời dựa vào nội dung thật của video thay vì nói chung chung.
Đầu ra là tiếng Hàn, kèm bản dịch tiếng Việt ngay bên dưới. Người vận hành là người Việt, nên họ cần hiểu từng câu mình sắp gửi đi. Đây là điểm quan trọng khi bạn để AI viết bằng ngôn ngữ mà người duyệt không đọc trôi: bản dịch chính là công cụ để con người thực sự review, không phải ký bừa.
Persona và guardrail
Persona có các rào chắn rõ ràng:
- Phi chính trị.
- Không bịa số liệu.
- Không đưa lời khuyên tài chính hay y tế.
- Chống chủ nghĩa dân tộc cực đoan (anti-jingoism).
Có 5 tone để chọn. Triết lý đi kèm là "giọng thật": không giả làm người khác, không bịa trải nghiệm cá nhân, không chèn link hay quảng cáo. Nếu AI "nhớ" một kỷ niệm chưa từng xảy ra, đó là bịa, và người đọc có quyền bị đối xử tử tế hơn thế.
Kiểm soát chi phí: phân loại cục bộ trước khi gọi model
Không phải bình luận nào cũng cần LLM. Extension phân loại bình luận ngay trên máy:
- lời cảm ơn,
- khen ngợi,
- câu hỏi,
- chỉnh sửa số liệu,
- phản biện lịch sự,
- công kích,
- chỉ có emoji.
Mỗi loại có chiến lược trả lời riêng. Các loại đơn giản (cảm ơn, khen, emoji) được trả lời từ một thư viện câu viết sẵn với 0 token. Chỉ những ca cần suy nghĩ mới tốn tiền gọi model. Đây là cách tiết kiệm đơn giản nhưng hiệu quả: câu hỏi đầu tiên không phải "dùng model nào" mà là "ca này có cần model không".
Bộ nhớ chống trùng
Mỗi bình luận đã xử lý được lưu theo ID của comment YouTube trong chrome.storage.local. Nhờ vậy cùng một bình luận không bị soạn lại hai lần, cũng không tốn token oan.
BYOK và nhà cung cấp
Người dùng tự dán API key của mình; key chỉ lưu cục bộ trong trình duyệt. Extension hỗ trợ nhiều provider: gọi trực tiếp Anthropic Messages API (Claude) và Gemini, trong đó model mặc định của tool là một model Gemini Flash. Ngoài ra có thể dùng thêm một YouTube Data API key chỉ-đọc, tùy chọn, để phân tích bình luận rộng hơn.
BYOK giúp mình không phải giữ key của ai, và chi phí nằm ở người dùng nó.
Giới hạn
- Phụ đề đôi khi không lấy được, lúc đó ngữ cảnh nghèo hơn.
- Phân loại cục bộ là heuristic; sẽ có ca xếp sai, nên mọi thứ vẫn qua mắt người.
- Đây là công cụ nội bộ, mình không coi nó là sản phẩm hoàn chỉnh.
Bài học
- Vẽ ranh giới tự động hóa ở chỗ có trách nhiệm: máy soạn, người gửi.
- Cho người duyệt hiểu được thứ họ duyệt (bản dịch đi kèm).
- Tiết kiệm token bằng cách không gọi model khi không cần.
- Guardrail là phần của sản phẩm, không phải phụ lục: viết chúng thành quy tắc cụ thể ngay trong persona.
- Giữ "giọng thật": không bịa, không giả, không chèn quảng cáo.