Suốt mười lăm năm qua, chúng ta xây dựng web systems xoay quanh một mental model đơn giản: một request đến, một response đi, và server quên tất cả. Stateless HTTP cho chúng ta horizontal scaling, fault tolerance, và khả năng lý luận đơn giản về hành vi hệ thống.
Mô hình đó đang sụp đổ dưới sức nặng của AI agents.
Khi AWS, Microsoft, Google, và Anthropic đều độc lập công bố rằng họ đang rebuild agent runtime xoay quanh session thay vì individual request, đáng để dừng lại và hiểu tại sao — và ý nghĩa của nó với các team đang xây dựng production AI systems ngày hôm nay.
Vấn Đề Của Stateless AI
Một stateless AI call rất đơn giản: gửi prompt, nhận completion, xong. Cách này hoạt động tốt cho autocomplete, classification, và Q&A đơn giản. Nhưng AI agents hiện đại không hoạt động như vậy.
Một agent được giao nhiệm vụ “research pricing của competitor và draft báo cáo so sánh” có thể thực thi một chain như sau: search web → đọc 5 trang → extract pricing data → so sánh với dữ liệu của mình → xác định gaps → cấu trúc findings → draft report → review độ chính xác → format cho Slack. Đó là 20–50 tool calls, mỗi call dựa trên kết quả của call trước.
Trong mô hình stateless, mỗi tool call bắt đầu từ đầu. Không có shared working memory. File mà agent viết ở bước 3 không tồn tại ở bước 4 trừ khi bạn truyền nó tường minh. Search results từ bước 1 phải được fetch lại hoặc nhét vào context window ngày càng phình to. Authorization credentials phải được validate lại trên mỗi call.
Mô hình stateless phá vỡ ba thứ quan trọng cho multi-step agents:
- Context continuity — intermediate results không thể chia sẻ hiệu quả
- Resource management — files, subprocesses, và network connections không thể span qua các calls
- Isolation — các agent song song can thiệp vào state của nhau
”Session” Thực Sự Có Nghĩa Gì
Một session không chỉ là conversation ID trong database table. Trong agent runtime, một session là một execution environment first-class với bốn thuộc tính:
Context persistence: Working memory của agent — tool results, intermediate outputs, reasoning traces — tồn tại xuyên suốt tất cả tool calls trong session. Agent có thể viết file ở tool call thứ 3 và đọc lại ở tool call thứ 28. Có thể tích lũy search results mà không đụng context limits.
Resource lifecycle: File system scratch space, subprocess handles, và open network connections được scope vào session. Khi session kết thúc, resources được dọn dẹp. Khi session resume, resources có thể được restore từ checkpoint.
Identity và authorization: Session mang theo identity và delegated permissions của user. Mỗi tool call thực thi trong security context của user. Agent không thể làm gì mà user không thể làm trực tiếp — và audit trail gắn mọi action với session, gắn với user.
Isolation: Session A không thể đọc hoặc ghi state của Session B, kể cả khi cả hai đang chạy trên cùng một host. Đây không phải tùy chọn. Shared mutable state giữa các agent sessions là lỗ hổng bảo mật và cơn ác mộng debug.
Các Cloud Provider Đang Implement Như Thế Nào
Sự hội tụ diễn ra vào năm 2026 thật đáng chú ý. Bốn nền tảng lớn đã độc lập đi đến cùng mô hình session-as-primitive.
AWS Bedrock Agents lưu session state trong DynamoDB và scope execution context vào S3 objects per session. IAM roles được provision per session, không phải per agent. Điều này có nghĩa là bạn có thể audit chính xác những action nào được thực hiện trong session nào, gắn với user identity nào.
Microsoft Azure AI Foundry dựa session trên Azure Cosmos DB với TTL có thể cấu hình. Mỗi session nhận một managed identity được scope vào tenant của user — agent có thể gọi Azure services với tư cách user mà user không bao giờ phải đưa credentials. Session context tồn tại qua container restarts thông qua Cosmos DB checkpointing.
Google Agent Builder giới thiệu “Playbook executions” như session primitive. Vertex AI quản lý execution graph, và mỗi playbook execution có isolated context có thể được inspect, replay, hoặc fork để debug.
Anthropic Claude Code có cách tiếp cận rõ ràng nhất: một container per session. Mỗi session có Docker container riêng với ephemeral filesystem. Changes được commit vào persistent workspace tại các checkpoint xác định. Container của session bị tear down ở cuối, nhưng outputs sống trong workspace. Đây là mô hình isolation cao nhất — session là một container.
Những Gì Team Của Bạn Cần Làm Lại
Nếu bạn đang xây dựng AI-powered product và vẫn đang treat AI calls như stateless API requests, đây là những gì cần rethink.
1. Session storage khác với caching
Redis cache có thể giữ key-value pairs đơn giản. Agent session state có cấu trúc: bao gồm tool call history, file references, subprocess outputs, và có thể hàng gigabytes intermediate data. Bạn cần session store với support cho structured data, partial updates, TTL, và efficient retrieval của specific sub-trees.
Cho hầu hết các team mới bắt đầu: lưu session metadata trong Postgres, artifacts lớn trong S3, và dùng Redis chỉ cho session lookup/routing. Đừng cố nhét tất cả vào Redis.
2. Session lifecycle management là một mối quan tâm tường minh
Sessions cần start, run, checkpoint, pause, resume, và terminate. Mỗi transition có implications:
- Start: allocate resources, provision identity, initialize workspace
- Checkpoint: snapshot state vào durable storage để session có thể resume sau khi bị interrupt
- Pause: release active compute, giữ storage
- Resume: restore từ latest checkpoint, re-establish resources
- Terminate: chạy cleanup hooks, persist final outputs, revoke session credentials
Nếu bạn không thiết kế điều này một cách tường minh, bạn sẽ có leaked resources, orphaned sessions, và lỗ hổng bảo mật từ sessions không bao giờ properly terminated.
3. Cost attribution thay đổi cơ bản
Mô hình billing per-token có ý nghĩa cho stateless requests. Sessions thay đổi phép tính. Một session chạy 30 phút, thực hiện 50 tool calls, và tiêu thụ 100k tokens là một billable unit — nhưng nó cũng tiêu thụ compute time, storage I/O, và external API quota.
Bạn cần instrument sessions với full cost attribution: tokens consumed, tool calls made, external API calls, storage used, compute time. Đây là cách bạn tìm 20% sessions tiêu thụ 80% AI budget.
4. Observability yêu cầu session-scoped correlation
Trace một stateless API call đơn giản là thẳng thắn. Trace một session với 50 tool calls trong 10 phút, có thể span qua nhiều microservices, là thử thách khác.
Session ID phải là primary correlation key của bạn, propagated qua mọi log line, mọi trace span, mọi metric. Tooling quan trọng: structured logging với session_id field, distributed tracing với session-level root spans, và dashboards cho phép bạn drill từ “session P99 latency degraded” xuống “tool call nào trong session nào gây ra nó.”
5. Multi-agent coordination yêu cầu session handoff
Case phức tạp nhất: nhiều agents cộng tác trên một task. Một researcher agent bàn giao context cho một writer agent. Một planner agent ủy thác subtasks cho năm executor agents. Điều này yêu cầu protocols tường minh cho session handoff — Agent B nhận accumulated context của Agent A như thế nào mà không phải redo tất cả công việc của Agent A?
Pattern đang nổi lên là session snapshots: Agent A tạo một bản tóm tắt có cấu trúc của session state tại thời điểm handoff. Agent B bắt đầu session mới, được khởi tạo với snapshot đó. Format snapshot đang trở thành de facto standard — một document có cấu trúc bao gồm: task objective, completed steps với results, open questions, resources created.
Code Pattern: Session-Scoped Tool Execution
Đây là TypeScript pattern giúp sessions trở nên tường minh trong tool layer của bạn:
interface AgentSession {
sessionId: string;
userId: string;
workspaceDir: string;
state: Record<string, unknown>;
}
async function executeToolInSession<T>(
session: AgentSession,
tool: (ctx: AgentSession) => Promise<T>
): Promise<T> {
// Tất cả tool calls nhận session context
const result = await tool(session);
// Checkpoint state sau mỗi tool call
await checkpointSession(session);
return result;
}
// Tools viết vào session workspace, không phải global state
async function writeResearchNotes(
session: AgentSession,
content: string
): Promise<void> {
const notesPath = path.join(session.workspaceDir, 'research-notes.md');
await fs.appendFile(notesPath, content);
// File được scope vào session — các sessions khác không thấy được
}
Kỷ luật then chốt: không có global mutable state. Mọi side effect đều đi qua session context. Mọi file write đều vào session workspace. Mọi external call đều mang theo identity của session.
Cách Áp Dụng Cho Startup Việt Nam
Hầu hết các team tôi nói chuyện vẫn đang build AI features như stateless API calls — fire request đến OpenAI hoặc Claude, nhận response, xong. Cách này hoạt động cho features đơn giản. Nó sẽ không hoạt động cho agents.
Shift sang session có nghĩa là rethink infrastructure stack của bạn:
Trước (stateless):
User request → REST endpoint → AI API call → Response
Sau (session-aware):
User request → Create/resume session → Tool chain trong session context
→ Checkpoint state → Return cho user
Cho các team bắt đầu transition này với budget infrastructure hạn chế — đặc biệt là các startup Việt Nam — đây là con đường thực tế:
Bước 1 — Thêm explicit session IDs vào mọi AI interaction. Thậm chí trước khi bạn build session storage, điều này cho bạn correlation để debug. Một UUID trong header là đủ để bắt đầu.
Bước 2 — Dùng Postgres làm session store. JSON columns xử lý structured state tốt, và bạn đã có Postgres rồi. Tạo bảng agent_sessions với session_id, user_id, state (jsonb), created_at, expires_at.
Bước 3 — Scope files vào session directories. Pattern đơn giản /tmp/sessions/{session_id}/ cho bạn isolation mà không cần containers. Với production, dùng S3 prefix per session.
Bước 4 — Implement cleanup như cron job trước. Terminate sessions cũ hơn N giờ, clean up directories của chúng. Điều này có thể là cron đơn giản chạy mỗi giờ.
Bước 5 — Thêm session-scoped logging. Mọi log line từ agent execution đều có session_id. Điều này biến debugging từ “tìm trong đống logs” thành “filter theo session ID.”
Container-per-session model mà Anthropic dùng là gold standard cho isolation, nhưng là overkill cho hầu hết teams mới bắt đầu. Build dần dần về phía đó.
Chi phí của việc không làm điều này: bạn sẽ debug race conditions giữa các agent sessions, leak resources khi sessions không cleanup đúng cách, không thể audit “agent đã làm gì trong request đó,” và không thể attribute costs về cho users hay features cụ thể.
Sự Thay Đổi Căn Bản
Mô hình stateless request đã cho chúng ta web như ngày hôm nay. Mô hình session sẽ cho chúng ta AI systems của thập kỷ tới.
Lý do tất cả bốn cloud providers lớn hội tụ về mô hình này cùng lúc không phải ngẫu nhiên — đó là vì họ đều đụng cùng một bức tường khi cố làm complex agents hoạt động trên stateless infrastructure. Bức tường đó có thật. Sessions là câu trả lời đúng.
Cho engineering teams, implication thực tế rất thẳng thắn: nếu bạn đang plan bất kỳ AI feature nào liên quan đến nhiều hơn một hoặc hai sequential steps, hãy thiết kế cho sessions từ ngày đầu. Retrofit session management vào một stateless AI system khó hơn đáng kể so với build nó vào từ đầu.
Session là unit tính toán mới. Thiết kế tương ứng.