Prompt Hook và Agent Hook: Chêm lời nhắc hay Gọi chuyên gia?
Phân biệt hai loại hook quan trọng: Prompt Hook tự động chêm hướng dẫn và Agent Hook chuyển việc cho subagent chuyên biệt. Tối ưu workflow Claude Code đúng cách.
Định nghĩa
Prompt Hook và Agent Hook là hai kiểu "can thiệp" vào luồng làm việc của Claude Code. Prompt Hook tự động chèn thêm hướng dẫn (prompt) vào đúng thời điểm cần thiết, còn Agent Hook tự động chuyển giao công việc sang một "chuyên gia" AI (subagent) riêng biệt khi phát hiện tác vụ phức tạp. Cả hai đều hoạt động theo kiểu "khi X xảy ra, làm Y ngay lập tức" mà không cần bạn ngồi chờ và ra lệnh thủ công.
Giải thích chi tiết
Prompt Hook: Chèn lời nhắc đúng lúc
Prompt Hook giống như việc bạn để sẵn một tờ giấy nhắc việc trong túi quần, nhưng tờ giấy đó chỉ tự động nhảy ra khi bạn làm việc cụ thể nào đó. Khi Claude sắp dùng tool Edit để sửa file liên quan đến thanh toán, Prompt Hook phát hiện sự kiện PreToolUse và lập tức chêm vào context: "Nhớ kiểm tra lỗ hổng SQL injection và xác thực chữ ký request trước khi lưu".
Điểm hay của Prompt Hook là nó không làm nặng context window suốt cả session. Thay vì phải nhắc nhở AI về bảo mật trong mọi câu trả lời (lãng phí token), hệ thống chỉ "gợi ý" đúng lúc sắp chạm vào code nhạy cảm. Đây là cách giải quyết "bài toán năng lượng kích hoạt": thay vì đòi hỏi bạn phải nhớ nhắc AI mỗi lần, hệ thống tự biết khi nào cần nhắc.
Prompt Hook cũng thông minh hơn là chỉ "matching tên sự kiện". Nó có thể phân tích nội dung: chỉ kích hoạt khi file path chứa từ khóa payment, momo, hoặc auth, chứ không phải mọi lần lưu file.
Agent Hook: Thuê thầu phụ chuyên biệt
Agent Hook là cơ chế "chuyển máy" — khi phát hiện công việc vượt quá khả năng của phiên làm việc hiện tại, hệ thống tạm dừng main agent và spawn một subagent chuyên biệt.
Ví dụ: Bạn đang code thì gặp bug liên quan đến race condition trong hệ thống đặt xe (giống Grab). Thay vì để main agent cố gắng "mò" trong hàng nghìn dòng log và làm loãng ngữ cảnh hiện tại, Agent Hook tự động mở Debugger Agent — một instance riêng chỉ tập trung vào phân tích threading, stack trace, và race condition. Debugger Agent làm việc trong context window sạch sẽ, không bị "nhiễu" bởi business logic khác, sau đó trả về báo cáo ngắn gọn cho main agent.
Đây là cách giải quyết "vấn đề làm loãng ngữ cảnh". Thay vì một agent cố làm tất cả (viết code, review bảo mật, debug) trong cùng một cửa sổ trí nhớ dẫn đến AI bị phân tán, Agent Hook phân tách cognitive load sang các "công nhân" chuyên biệt. Mỗi subagent như một thầu phụ: nhận việc cụ thể, hoàn thành, biến mất, chỉ để lại kết quả sạch sẽ.
Event Registration: Khi nào thì "móc"?
Claude Code cung cấp 25 sự kiện để bạn "móc" hook vào, bao gồm PreToolUse (trước khi gọi tool), PostToolUse (sau khi gọi tool), SessionStart, Stop, và PermissionRequest.
Việc đăng ký không dùng luật cứng nhắc if-then mà dùng "trigger thông minh" — nhận diện ý định dựa trên pattern, thay đổi trạng thái, và output của tool. Ví dụ: hook có thể trigger không chỉ khi "file được lưu", mà cụ thể khi "file .env bị sửa đổi VÀ chứa từ khóa production". MCP (Model Context Protocol) đóng vai trò lớp kết nối, giúp các skill (gói gồm tool + prompt + hook) có thể chạy được trên nhiều môi trường khác nhau từ Claude Desktop đến VS Code.
Lưu ý về trạng thái và giới hạn
Khác với script tự động truyền thống "chạy xong quên luôn", Prompt Hook và Agent Hook duy trì tính liên tục qua bộ nhớ chia sẻ. Bộ nhớ ngắn hạn giữ context cuộc trò chuyện hiện tại, còn bộ nhớ dài hạn (qua CLAUDE.md hoặc MCP resources) lưu pattern đã học từ các lần trigger trước.
Tuy nhiên, hooks thêm vào độ phức tạp có thể "fail silently". Trigger có thể kích hoạt sai lúc (misfire), hoặc rơi vào vòng lặp vô hạn giữa các hook. Cũng có rủi ro bảo mật như "Prompt-to-SQL" injection — đầu vào độc hại có thể chiếm quyền điều khiển chuỗi trigger. Việc debug chuỗi hook nhiều tầng đòi hỏi theo dõi trạng thái qua nhiều ranh giới mà log truyền thống thường bỏ sót.
Ví dụ thực tế
Tự động nhắc kiểm tra bảo mật khi sửa code thanh toán (Prompt Hook)
Trong workflow thông thường, developer hay quên chạy linter hoặc quét bảo mật sau khi sửa code, dẫn đến lỗi chỉ phát hiện khi đã lên production. Prompt Hook gắn vào sự kiện PreToolUse của lệnh Edit sẽ tự động chêm nhắc nhở khi phát hiện file liên quan đến thanh toán.
Ví dụ cụ thể: Bạn sửa file vietqr-payment.ts cho startup fintech tại quận 7, TP.HCM. Ngay khi gõ lệnh sửa file, hook chèn vào: "Kiểm tra lỗ hổng PCI DSS, xác thực chữ ký SHA256, và đảm bảo không log thông tin thẻ". Claude tự động review lại đoạn code vừa sửa trước khi lưu, thay vì để bạn phải nhớ nhắc "ơi check bảo mật giùm" mỗi lần.
Chuyển sang Security Auditor khi phát hiện API key (Agent Hook)
Khi developer mở file chứa chuỗi sk_live_, api_key_shopee, hoặc configuration kết nối Momo/ZaloPay, Agent Hook nhận ra đây là code nhạy cảm và tạm dừng main agent. Thay vì để main agent vừa code vừa lo bảo mật, hệ thống spawn SecurityCheckAgent — subagent chỉ tập trung vào PCI compliance, OWASP Top 10, và secret detection.
Agent này chạy trong context window riêng, đọc toàn bộ file và các file phụ thuộc, sau đó trả về báo cáo rủi ro dạng bullet point cho main agent. Trong dự án miniERP 8 giờ build, khi module tính lương BHXH được chỉnh sửa, Agent Hook tự động chuyển sang Compliance Agent kiểm tra tính đúng đắn của công thức bảo hiểm theo luật Việt Nam mà không làm gián đoạn luồng code chính.
Gỡ lỗi production tự động (Agent Hook + MCP)
Khi hệ thống phân tích log production phát hiện lỗi (thông qua MCP kết nối CloudWatch hoặc Datadog), Agent Hook tự động spawn Debugger Agent. Subagent này có quyền truy cập read-only vào database, phân tích stack trace, và so sánh với lần deploy gần nhất trên GitHub. Sau khi tìm ra nguyên nhân (ví dụ: thiếu index trong query liên quan đến đơn hàng Shopee), Debugger Agent trả về báo cáo ngắn gọn đề xuất fix, trong khi bạn vẫn đang ngủ hoặc họp với khách hàng.
Ứng dụng
Developer cá nhân và Freelancer: Tự động hóa workflow hàng ngày mà không cần ngồi chờ. Prompt Hook giúp "set và quên" các quy tắc như "luôn thêm JSDoc khi sửa TypeScript", còn Agent Hook cho phép ủy thác task nặng (như refactor đổi từ JavaScript sang TypeScript cho cả dự án startup) sang background agent và nhận kết quả sau khi đi uống cà phê.
Team Lead và Tech Lead trong Startup VN: Thiết lập "cổng kiểm soát" auto-code review. Khi developer push commit, Agent Hook tự động chuyển sang Reviewer Agent với context riêng, đảm bảo tuân thủ convention nội bộ (quy tắc đặt tên biến tiếng Việt không dấu, chuẩn React hooks của công ty) được kiểm tra bởi "chuyên gia" AI trước khi đến tay senior dev, giải quyết bottleneck ở khâu review cho team outsource 20 người.
Doanh nghiệp và DevOps (CSKH, ERP): Xây dựng pipeline event-driven cho hệ thống phân tích chất lượng CSKH. Khi detect sentiment tiêu cực trong ticket hỗ trợ (qua MCP kết nối hệ thống ticket), Agent Hook tự động spawn Escalation Agent để phân tích độ khẩn cấp, tạo ticket ưu tiên cao và notify qua Zalo OA cho team lead — toàn bộ quy trình không cần can thiệp thủ công cho đến khi có kết luận cuối.
So sánh
| Đặc điểm | Prompt Hook | Agent Hook |
|---|---|---|
| Cơ chế kích hoạt | Chèn thêm hướng dẫn vào context hiện tại | Chuyển giao sang subagent mới |
| Phạm vi ảnh hưởng | Thay đổi hành vi trong cùng session | Tạo context window riêng, chuyên biệt |
| Thời điểm trigger | Trước/sau dùng tool, các sự kiện vòng đời | Khi phát hiện thay đổi trạng thái hoặc phân loại task |
| Chi phí token | Nhẹ (chỉ thêm vài dòng text, dưới 500 tokens) | Tạo subagent mới (tốn khoảng 2000+ tokens cho context mới) |
| Use case điển hình | Format code, thêm rule kiểm tra, bổ sung ngữ cảnh | Ủy thác cho chuyên gia, phân tích sâu, chạy sandbox |
| Quản lý trạng thái | Chia sẻ context với main agent | Tách biệt context, chỉ trả về tóm tắt |
| Rủi ro | Trigger sai lúc, làm nặng context nếu chèn quá nhiều | Tạo quá nhiều agent (sprawl), độ trễ cao, phức tạp khi merge kết quả |
Kết luận: Prompt Hook phù hợp cho việc "tinh chỉnh" hành vi AI trong cùng một luồng làm việc thông qua việc chêm hướng dẫn đúng lúc, trong khi Agent Hook phù hợp cho việc "phân cấp" task phức tạp sang các worker chuyên biệt để tránh làm loãng ngữ cảnh. Cả hai đều giúp biến Claude Code từ trợ lý thụ động thành hệ thống tự động chủ động, giúp developer Việt Nam tối ưu workflow mà không cần đầu tư hạ tầng automation phức tạp.
Bài viết liên quan
Cùng cụm (Event-driven Automation):
- Hooks là gì? 25 events và 4 loại hook — Tổng quan kiến trúc hook trong Claude Code
- PreToolUse Hook: Chặn lệnh nguy hiểm trước khi chạy — Bảo mật với PreToolUse hook
- PostToolUse Hook: Auto-format, log, notify sau mỗi action — Xử lý sau sự kiện tool
- Session Hooks: SessionStart, Stop, StopFailure — Quản lý vòng đời session
- PermissionRequest Hook: Tự động approve hoặc route đến WhatsApp — Xử lý permission tự động
- 8 hook thực tế: format-code, security-scan, context-tracker... — Ví dụ thực chiến triển khai hook
Đọc tiếp (Pro Automation):
- Pro Automation: CI/CD và Auto Mode — Triển khai automation ở cấp doanh nghiệp với Claude Code, tích hợp hooks vào pipeline CI/CD
PermissionRequest Hook: Tự động phê duyệt hoặc gửi Zalo xin phép
Tự động phê duyệt lệnh an toàn hoặc gửi Zalo/Slack xin phép CTO khi Claude Code chạy thao tác nguy hiểm. Cân bằng tự động hóa và kiểm soát cho team Việt Nam.
8 mẫu Hook Claude Code thực chiến: Auto-format, chặn SQLi, tối ưu context
8 mẫu hook Claude Code từ format code tự động đến security scan và context tracking — giải pháp automation thực chiến cho developer Việt Nam.