Context Files: Per-user, per-workspace, per-project — Phân tầng bộ nhớ cho AI Agent
Chiến lược phân tầng context workspace/project/session để tránh lãng phí token và giảm nhiễu attention. Giải pháp thay thế cho việc nhét mọi thứ vào system p...
Mỗi lần mở chat mới với Claude Code hay ChatGPT, bạn lại phải gõ: "Nhớ là tôi dùng TypeScript strict mode nhé. Màu brand là #FF6B35. Đây là monorepo..." — đó là context establishment tax, thuế lập lại ngữ cảnh. Context files chiến lược loại bỏ việc này bằng cách tạo hệ thống bộ nhớ phân tầng, tương tự cách con người tổ chức kiến thức trong tổ chức: có quy tắc công ty, có quy trình dự án, và có nhiệm vụ trước mắt.
Vấn đề
Cách tiếp cận context "phẳng" (flat context) trong AI agent tạo ra hai cực đoan tai hại:
Lặp lại mệt mỏi: Người dùng phải nhắc lại preference (sở thích) và constraints (ràng buộc) mỗi session, lãng phí token và thời gian. Nhét tất cả vào system prompt: Đổ 8,000 tokens quy tắc chung vào context window 10,000 tokens, chỉ còn 2,000 tokens cho nhiệm vụ thực tế. Kết quả là attention dilution — mô hình "chóng mặt" vì phải để ý đến cả thứ thay đổi theo năm (coding standards) và thứ thay đổi theo phút (sửa hàm cụ thể) trong cùng một không gian attention.
Dữ liệu cho thấy: context files do developer viết tay cải thiện tỷ lệ thành công khoảng 4% so với không dùng context. Nhưng nếu để LLM tự sinh context file, hiệu suất giảm — vì thêm nhiễu (noise) thay vì thêm tín hiệu. Vấn đề cốt lõi là temporal confusion: khi trộn lẫn dữ liệu có tốc độ thay đổi khác nhau (chính sách công ty thay đổi theo năm, schema API thay đổi theo tuần, file cụ thể thay đổi theo giây), agent không biết đâu là "background" đâu là "immediate".
Ý tưởng cốt lõi
Chiến lược context files phân tầng kiến thức theo three-tier hierarchy, tương tự variable scoping trong lập trình:
Workspace (Global Constants)
↓ inherits
Project (Module Variables)
↓ overrides
Session (Local Arguments)Workspace Level — "Global Constants"
Định nghĩa quy tắc xuyên dự án, thay đổi chậm (theo năm): coding standards (TypeScript strict mode), brand voice (tone vui vẻ nhưng professional), architectural constraints (không dùng any type, luôn dùng dependency injection).
Ví dụ trong hệ thống như Lovable hoặc Amazon Q Developer: workspace knowledge chứa 10,000 ký tự quy tắc áp dụng tự động cho mọi child project.
Project Level — "Module Variables"
Context cụ thể cho domain hiện tại, thay đổi trung bình (theo tuần/tháng): database schemas, API contracts, sprint goals hiện tại, tech stack (React + Node.js). Đây là nơi chứa AGENTS.md hoặc MEMORY.md trong repo — tách biệt với workspace để tránh "context leakage" (chi tiết dự án A lọt sang dự án B).
Session/User Level — "Local Arguments"
Ephemeral context — thay đổi nhanh (theo phút): specific files đang sửa (@mentions trong Amazon Q), temporary instructions ("hôm nay focus vào refactor authentication"), hoặc câu hỏi one-off. Đây là lớp override mạnh nhất, nhưng không persistent qua sessions.
Inheritance Model
Cơ chế override rõ ràng: Project ghi đè Workspace defaults; Session ghi đè Project defaults. Tạo "explicit precedence stack" — giống như CSS specificity nhưng cho AI context.
Khoảnh khắc "à ra vậy": Đây không phải là "sắp xếp file cho gọn", mà là attention hygiene (vệ sinh attention). Bạn đang tạo scope boundaries để ngăn "context pollution" — hiện tượng chi tiết từ dự án A (xử lý hôm qua) bị hallucinate vào response của dự án B hôm nay vì cùng chung một context window bẩn.
Tại sao nó hoạt động
Attention mechanism của transformer là zero-sum: probability mass được phân bố theo hàm mũ về phía các token gần đây. Early instructions không "bị quên" do thiếu bộ nhớ (giờ context window có thể 1M tokens), mà bị attention dilution — chúng bị chìm trong biển tokens mới.
Bằng cách tách temporal scope (phạm vi thời gian):
- Workspace: Load một lần per session (hiếm khi đổi nên cache được)
- Project: Load khi switch project (medium-term)
- Session: Load per turn (immediate)
Bạn giữ được fresh attention budget cho nhiệm vụ thực tế thay vì để model "mệt mỏi" vì phải để ý đến 40 quy tắc coding standards trong khi sửa một hàm cụ thể.
Trade-off chính: Chi phí setup ban đầu (phải viết và duy trì các file context) đổi lấy giảm 60-80% repetition trong mỗi prompt và cải thiện signal-to-noise ratio. Khác với RAG (truy xuất tài liệu), context files là governance layer — nó không chỉ "cung cấp thông tin" mà "cấu trúc lại cách agent nhìn thế giới" theo tầng lớp.
Ý nghĩa thực tế
So sánh hiệu suất
| Metric | Flat Context (System Prompt khổng lồ) | Hierarchical Context Files |
|---|---|---|
| Task Success | Baseline | +~4% (developer-written) |
| Token Waste per Session | 2,000-5,000 tokens lặp lại | ~200 tokens (references) |
| Attention Quality | Diluted (nhiều nhiễu) | Focused (signal cao) |
| Context Switch Cost | Cao (phải nhắc lại mọi thứ) | Thấp (tự động inherit) |
Ai đang dùng?
- OpenAI ChatGPT Projects: Phân tầng workspace/project với memory persistence
- Amazon Q Developer:
@workspacecontext scoping cho IDE - Lovable: Knowledge tiers (workspace vs project) trong low-code platform
- Cursor/GitHub Copilot: Implicit repo context + explicit project-level indexing
- Claude Code: SOUL.md/CLAUDE.md như project-level context, kết hợp với user preferences ở session level
Hạn chế
Context staleness: File context không tự cập nhật khi codebase thay đổi. Bạn phải có mechansim (hoặc agent cron job) để refresh định kỳ.
Context bloat: Quá nhiều rules trong workspace sẽ gây priority confusion — model không biết quy tắc nào quan trọng hơn khi có conflict.
Không thay thế RAG: Với codebase khổng lồ (100k+ files), bạn vẫn cần RAG để retrieve code cụ thể. Context files là scoping (định hướng) chứ không phải retrieval (tìm kiếm).
Setup cost: Đòi hỏi thói quen documentation kỷ luật. Team phải chịu khó viết và duy trì các file .md ở từng tầng.
Đào sâu hơn
Tài liệu chính thức:
- OpenAI Help Center — Projects in ChatGPT: Hướng dẫn phân tầng workspace hierarchical với memory persistence.
- Amazon Q Developer — IDE Chat Context: Chi tiết về
@workspacescoping và context assembly pipeline. - Lovable Documentation — Knowledge: Two-tier knowledge system (workspace vs project) cho visual development.
Bài liên quan TroiSinh:
Cùng cụm (Memory & Context):
Kiến trúc Memory: Short-term, working, long-term
Hiểu cơ chế neurologic của bộ nhớ agent — tại sao cần phân biệt sensory, working, và long-term memory
MEMORY.md Patterns: Ghi nhớ có chọn lọc qua sessions
Cách triển khai selective memory và pattern separation để tránh interference giữa các sessions
Quản lý lịch sử hội thoại: Pruning, summarization, sliding window
Kỹ thuật cắt tỉa và nén history để fit vào context window mà không mất mục tiêu dài hạn
RAG cho Agent: Khi memory không đủ, tìm kiếm thêm
Bổ sung retrieval cho massive codebases — context files không thay thế được RAG khi dữ liệu quá lớn
Đọc tiếp (Multi-agent & Security):
Agent Teams: Shared task board, delegation, handoff
Khi nhiều agent chia sẻ memory — cách xử lý shared context và handoff mà không bị pollution
5-layer Security: Rate limiting, injection detection...
Memory isolation và security boundaries khi chạy multi-tenant — cách ngăn context leak giữa users
Mở rộng:
- Context Engineering: A Methodology for Structured Human-AI Collaboration (2026): Paper định nghĩa context engineering như một discipline riêng biệt với prompt engineering.
- Agent READMEs: An Empirical Study of Context Files (2025): Nghiên cứu thực chứng về hiệu quả của context files trong production.
MEMORY.md Patterns: Ghi nhớ có chọn lọc qua sessions — Từ nhật ký sang kiến trúc nén
Kỹ thuật nén và tái hiện thông tin trong MEMORY.md giúp AI agent nhớ có chọn lọc qua các phiên làm việc, tránh bloat ngữ cảnh và nhiễu truy xuất.
Quản lý lịch sử hội thoại: Pruning, summarization, sliding window
Chiến lược nén lịch sử hội thoại cho AI Agent: sliding window, recursive summarization và pruning để tránh hiện tượng lost-in-the-middle và kiểm soát chi phí...