TL;DR

Đây là checklist 5 bước mà một developer kinh nghiệm chạy trước khi bắt đầu bất kỳ agentic project nào. Không phải "best practices" mơ hồ - là danh sách cụ thể với tên tool, lý do, và những bài học cay đắng từ thực tế. Cài đủ 5 cái này, project tiếp theo của bạn mất 2 ngày thay vì 2 tháng.

Bài Toán Thực Tế Bạn Sẽ Gặp

Hầu hết các câu chuyện kiểu "agent của tôi bị jailbreak" thực ra bắt nguồn từ một credential mà agent có quyền truy cập nhưng lẽ ra không nên có. Khi agent gặp authentication error, nó làm đúng những gì developer sẽ làm: tìm file .env trong project root, đọc nó, và dùng thông tin đó để tiếp tục. Không ai dạy nó làm vậy - nó chỉ đang cố giải quyết vấn đề.

Tương tự, câu chuyện "hoá đơn AI $4,000" mà bạn đọc trên mạng gần như luôn kết thúc bằng một câu: "chúng tôi không có proxy ở phía trước." Và câu "tôi không biết agent đang làm gì trong production" - đó là vấn đề về visibility, không phải vấn đề về code.

5 layers dưới đây giải quyết lần lượt từng vấn đề này.

Layer 1 - Privacy: direnv + Secrets Manager

Cài direnv, sau đó nối nó vào password manager của team: 1Password CLI (op run), Doppler, Infisical, hoặc Vault. direnv load environment variable theo từng folder khi bạn cd vào, và unload khi ra. Khi wiring vào secrets manager, credential không bao giờ tồn tại dạng plain text trên disk.

Điều này ngăn:

  • API key commit nhầm vào git history - pattern vi phạm phổ biến nhất năm 2026

  • Credential rò rỉ từ project này sang project khác qua shell history

  • File .env dùng chung mà một teammate lặng lẽ backup lên Dropbox

  • Secret tồn tại sau khi laptop bị đánh cắp vì chúng ngồi trong /Users/you/projects

Blast radius của mỗi compromise giảm đáng kể khi bạn scope key theo project và scope project theo folder. Tác giả đã ship 2 agent với key trong .env trước khi chuyển sang setup này.

Layer 2 - Tokens: LiteLLM hoặc Portkey Làm Model Proxy

Một URL duy nhất đứng trước mọi AI provider - Anthropic, OpenAI, Google, Mistral, local models. Toàn bộ chi tiêu chảy qua một chỗ.

LiteLLM (MIT, self-hosted, 15k GitHub stars) hỗ trợ 100+ provider qua OpenAI-compatible API, thêm chỉ 10-20ms latency. Portkey là lựa chọn enterprise với semantic caching và guardrails built-in. Cả hai đều tốt hơn rất nhiều so với việc tự build.

Những gì proxy giải quyết:

  • Response caching theo prompt hash - cắt 30-60% hoá đơn với repeat tasks

  • Automatic fallback khi rate limit: Sonnet hit 429 → Opus → GPT → local backup, không có broken user

  • Budget cap theo feature và user - block call trước khi tốn $200, không phải audit sau

  • Model routing: task đơn giản dùng Haiku, task phức tạp dùng Opus - không nhầm chiều

  • PII redaction trước khi request rời khỏi network

Tác giả đã tự build router mất 2 tuần. Thay thế bằng LiteLLM mất 20 phút.

5 layer bảo mật cho agentic system: Privacy, Tokens, Context, Visibility, Evals

Layer 3 - Context: uv + Git Commit Mỗi Khi Eval Pass

Cài uv - Python package manager viết bằng Rust bởi team Astral (cùng team làm ruff), nhanh hơn pip 10-100 lần. Sau đó commit mỗi khi eval suite PASS, với model version và pass rate trong commit message.

uv.lock đảm bảo dependency graph chính xác có thể tái tạo trên bất kỳ máy nào - không có surprise update. Git hash cho phép reproduce bất kỳ run nào trong quá khứ. Khi production vỡ, bạn có thể nói: "prompt là version X, model là Sonnet 4.6.1, pass rate eval gần nhất là 94%." Không phải "tôi nghĩ chúng tôi deploy vào thứ Ba?"

Câu đầu là incident report. Câu sau là resignation letter.

Tác giả mất nhiều agent hơn vì "thay 3 prompt trong một session và break gì đó" hơn là vì bug thực sự.

Layer 4 - Visibility: mitmproxy Trước Mọi LLM Call

mitmproxy về cơ bản là wiretap cho agent. Cài nó, trỏ agent qua nó, và bây giờ bạn thấy được mọi cuộc trò chuyện của agent với model theo thời gian thực - qua UI tự động mở trên port 8081.

Những gì thực sự hiện ra:

  • Mọi silent retry mà SDK âm thầm thực hiện khi call fail

  • Full prompt đang được gửi (kể cả credential bạn vô tình nhúng vào)

  • Model trả về gì TRƯỚC KHI code của bạn react với nó

  • Token cost chính xác theo call, theo tool, theo loop iteration

  • Response âm thầm kích hoạt code của bạn làm điều bạn không có ý định - đây là nơi prompt injection sống

Điểm quan trọng nhất mà ít người đề cập: nếu một website agent của bạn scrape đã nhúng instructions vào data, mitmproxy là cách bạn THẤY được khoảnh khắc agent quyết định làm theo. Không có layer này, bạn đang trust agent làm đúng thay vì verify.

Tác giả ship 3 agent trước khi thêm mitmproxy. Hoàn toàn không biết chúng đang làm gì trong production.

Layer 5 - Evals: inspect-ai (Framework Các Lab Thực Sự Dùng)

Eval framework là thứ cho bạn biết "agent này hoạt động" với con số thay vì cảm giác. inspect-ai là framework Anthropic, DeepMind, và UK AI Safety Institute dùng cho các eval report bạn đọc trong paper của họ. Open source, MIT license, 200+ pre-built evaluation, 100+ external contributors.

Những gì homegrown version của bạn sẽ không có:

  • Chạy cùng task trên 5 model khác nhau và so sánh score side by side

  • Pre-built test cho risky agent behavior: nói dối, manipulate, misuse tools

  • Cấu trúc đúng để evaluate tool-using agent, không chỉ chat

  • Reproducible scoring - cùng input luôn được chấm cùng cách

  • Reproducible eval seeds - test flaky là thực sự flaky, không phải chỉ unlucky

Tác giả viết eval harness riêng 4 lần trên 4 project. Bỏ cả 4 lần. Nếu bạn muốn nói "agent của tôi pass safety check" thành tiếng, check đó phải đến từ framework người khác có thể re-run. inspect-ai là framework đó.

Bonus: File /lessons.md Trong Mọi Repo

Cú pháp không phức tạp. Mọi weird agent behavior, mọi edge case, mọi config change bạn tìm ra lúc 2 giờ sáng - ghi vào đây. Bạn sẽ không nhớ được. Sau 3 tuần, file lessons.md là lý do duy nhất bạn vẫn hiểu chuyện gì đang xảy ra.

Cài đủ 5 layers này, giữ file lessons, agentic system tiếp theo của bạn mất 2 ngày thay vì 2 tháng.

Kết

Một nửa nội dung về "AI agent" trên mạng đến từ người chưa bao giờ chạy mitmproxy trên loop của họ. Họ không thực sự biết agent đang làm gì. Họ đang ship demo video. Stack 5 tools này là ranh giới giữa người build agent thật và người build demo.

via inspect-ai docs · LiteLLM proxy docs · uv GitHub