TROISINH
Phát triển AgentMemory & Context nâng cao

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

MetricFlat Context (System Prompt khổng lồ)Hierarchical Context Files
Task SuccessBaseline+~4% (developer-written)
Token Waste per Session2,000-5,000 tokens lặp lại~200 tokens (references)
Attention QualityDiluted (nhiều nhiễu)Focused (signal cao)
Context Switch CostCao (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: @workspace context 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:

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:

On this page