Cách duy trì ngữ cảnh xuyên suốt các phiên làm việc với AI

Cách duy trì ngữ cảnh giữa các phiên AI theo bốn lớp: tệp hướng dẫn như CLAUDE.md và AGENTS.md, bộ nhớ tự động, tiếp tục phiên, và bản ghi công việc chung mà cả nhóm có thể đọc.

Aiden Flux

Aiden Flux

4 tháng 11 2026

Cách duy trì ngữ cảnh xuyên suốt các phiên làm việc với AI

Mỗi phiên làm việc của coding agent đều bắt đầu từ con số không. Claude Code nói rõ điều này trong tài liệu của chính nó: mỗi phiên khởi đầu với một context window hoàn toàn mới. Công cụ không nhớ bất cứ điều gì bạn nói với nó hôm qua, trừ khi có thứ gì đó bên ngoài cuộc trò chuyện mang thông tin đó theo. Vì vậy, việc duy trì ngữ cảnh xuyên suốt các phiên AI không phải là một mẹo đơn lẻ; đó là biết mỗi mẩu ngữ cảnh thuộc về lớp nào trong bốn lớp, và đặt nó vào đúng chỗ trước khi phiên kết thúc.

Bài hướng dẫn này đi qua bốn lớp theo thứ tự: các tệp hướng dẫn mà công cụ đọc khi khởi chạy, các ghi chú mà công cụ tự viết cho chính nó, khả năng khôi phục phiên, và bản ghi công việc chung mà cả ba lớp đầu đều không cung cấp. Ba lớp đầu là tính năng của Claude Code, Codex và Gemini CLI. Lớp thứ tư là nơi Sharkly phù hợp, bởi một Task chứa mục tiêu, thảo luận, các lần chạy và tiêu chí nghiệm thu chính là lớp duy nhất mà người thứ hai có thể đọc được. Nếu bạn vẫn đang cân nhắc giữa trò chuyện và giao việc, bài hướng dẫn của chúng tôi về trò chuyện với AI agent hay giao một Task là bài đồng hành.

Tóm tắt nhanh

Ngữ cảnh tồn tại qua một phiên ở bốn nơi. Các tệp hướng dẫn (CLAUDE.md, AGENTS.md, GEMINI.md) mang những quy tắc mà công cụ nên tuân thủ mọi lúc. Auto memory mang các chỉnh sửa và sở thích mà công cụ đã học được. Khôi phục phiên mang một cuộc trò chuyện tiến về phía trước cho một người trên một máy. Bản ghi công việc, tức một Task cùng phần mô tả, bình luận và nhật ký thực thi của nó, mang những gì đã được quyết định, những gì đã chạy và những gì một người đã nghiệm thu, và đây là lớp duy nhất được chia sẻ. Đặt mỗi loại ngữ cảnh vào đúng lớp của nó thì context window mới không còn là một mất mát nữa.

Lớp 1: Các tệp hướng dẫn công cụ đọc khi khởi chạy

Tệp hướng dẫn là ngữ cảnh bạn viết một lần và công cụ nạp lại mỗi phiên. Mỗi CLI lớn đều có một tệp như vậy, và chúng được phân giải theo những cách tương tự nhau.

Công cụ Tệp Cách phân giải
Claude Code CLAUDE.md (project hoặc .claude/CLAUDE.md), ~/.claude/CLAUDE.md (user), CLAUDE.local.md (cá nhân, gitignored) Nạp từ thư mục làm việc và mọi thư mục cấp trên, nối từ gốc xuống; tệp trong thư mục con được nạp theo yêu cầu
Codex AGENTS.md, với ~/.codex/AGENTS.md cho phạm vi toàn cục và AGENTS.override.md cho các ghi đè tạm thời Nối từ gốc Git trở xuống, giới hạn bởi project_doc_max_bytes, mặc định 32 KiB
Gemini CLI GEMINI.md, với ~/.gemini/GEMINI.md cho phạm vi toàn cục Phát hiện toàn cục, theo workspace và theo nhu cầu; /memory show in ra kết quả đã hợp nhất

Có hai thói quen giữ cho lớp này hữu ích. Hãy giữ tệp ngắn gọn: hướng dẫn của Claude Code nhắm đến dưới 200 dòng mỗi tệp, vì mức độ tuân thủ giảm đi khi tệp phình to. Và hãy viết ra những sự thật mà nếu không bạn sẽ phải giải thích lại, chẳng hạn các lệnh build, quy ước, và quy tắc bạn đã gõ vào chat ở phiên trước. Nếu một repository đã có AGENTS.md, thì một CLAUDE.md chỉ chứa dòng @AGENTS.md sẽ import nó, giúp cả hai công cụ cùng đọc một nguồn. Mọi thứ trong lớp này là ngữ cảnh chứ không phải sự cưỡng chế; tài liệu về memory của Claude Code nói rõ rằng thứ chặn một hành động là hook, chứ không phải instruction.

Lớp 2: Những ghi chú công cụ tự viết cho chính nó

Auto memory của Claude Code là lớp mà người ta quên mất là nó tồn tại. Trong lúc làm việc, Claude lưu các ghi chú về vai trò và sở thích của bạn, những chỉnh sửa bạn yêu cầu, ngữ cảnh dự án mà nó không thể suy ra từ code, và vị trí của những thứ nằm ngoài repository. Chúng nằm tại ~/.claude/projects/<project>/memory/, được đánh chỉ mục bởi một tệp MEMORY.md mà 200 dòng hoặc 25 KB đầu tiên sẽ được nạp vào đầu mỗi phiên. Các tệp theo chủ đề được nạp theo yêu cầu.

Có ba ranh giới cần lưu ý. Auto memory là theo từng repository, được chia sẻ giữa các worktree. Nó cục bộ theo máy, nên ghi chú trên máy để bàn của bạn không tồn tại trên laptop. Và nó tồn tại qua /compact, vì việc nén viết lại cuộc trò chuyện chứ không phải các tệp trên đĩa. Để xem những gì đã được lưu, chạy /memory; để tắt nó, đặt autoMemoryEnabled thành false hoặc export CLAUDE_CODE_DISABLE_AUTO_MEMORY=1.

Hãy dùng lớp này cho kiểu điều bạn nói một lần và mong nó tồn tại lâu dài: “luôn dùng pnpm,” “các bài test API cần một Redis cục bộ.” Đừng dựa vào nó cho những quyết định mà đồng đội cần biết; nó chỉ thuộc về riêng bạn.

Lớp 3: Khôi phục phiên

Đôi khi ngữ cảnh bạn cần chính là cuộc trò chuyện. Claude Code lưu các phiên trên đĩa: claude --continue mở lại cuộc trò chuyện gần nhất trong thư mục hiện tại, claude --resume <id-or-name> mở lại một phiên cụ thể, và --fork-session tạo một session ID mới để bạn có thể rẽ nhánh từ một checkpoint mà không ghi đè nó. Hãy đổi tên một phiên bằng /rename trước khi /clear để sau này còn tìm lại được. Codex cung cấp codex resume để mở lại một cuộc chat gần đây từ repository hiện tại.

Khôi phục phiên có cái giá của nó. Mỗi yêu cầu mang theo toàn bộ cuộc trò chuyện, nên một phiên sống lâu sẽ tiêu tốn nhiều hơn cho một câu hỏi một dòng so với một phiên mới. /compact kèm một chỉ dẫn trọng tâm, chẳng hạn /compact Focus on the migration plan, đánh đổi chi tiết để lấy chỗ trống. Những gì tồn tại qua nén là bản tóm tắt cộng với bất cứ thứ gì mà các tệp hướng dẫn nạp lại; bất cứ điều gì chỉ được đưa ra trong cuộc trò chuyện mà không được tóm tắt thì đã biến mất. Hãy coi khôi phục phiên như một cây cầu bắc qua giờ nghỉ trưa, chứ không phải bộ nhớ của cả nhóm.

Lớp 4: Bản ghi công việc

Không lớp nào trong ba lớp đầu trả lời được câu hỏi mà một đồng đội đặt ra vào thứ Năm: agent đã làm gì vào thứ Ba, vì sao, và ai đã nghiệm thu nó? Tệp hướng dẫn chứa quy tắc. Auto memory chứa sở thích của một người. Một phiên được khôi phục chứa cuộc trò chuyện của một người trên một máy. Quyết định, lần chạy và sự nghiệm thu cần một bản ghi chung, và bản ghi đó là một Task.

Trong Sharkly, một lần chạy gắn với task bao gồm tiêu đề và mô tả của Task, các bình luận gần đây và bình luận đã kích hoạt lần chạy, hướng dẫn và Skills của Agent, cùng các repository được cấu hình cho Task đó. Đó chính là bàn giao ngữ cảnh: lần chạy tiếp theo bắt đầu từ Task, chứ không phải từ bộ nhớ của phiên trước. Tiến độ, các sự kiện trace và kết quả được trả về Task, và nhật ký thực thi ghi lại vì sao một lần chạy được xếp hàng đợi, thời điểm bắt đầu và kết thúc, các lệnh gọi công cụ, nguồn kích hoạt, và chi tiết lỗi.

Hai quy tắc từ tài liệu sản phẩm quyết định việc gì nên đặt ở đâu, và cả hai đều là quy tắc về ranh giới chứ không phải tính năng. Các phiên Agent Chat độc lập thuộc về người đã tạo chúng và các thành viên khác không được cấp quyền truy cập; nếu cả nhóm cần một kết luận, hãy sao chép nó vào phần mô tả Task hoặc một bình luận. Và Agent chat trên một Task không phải là bình luận: nó không xuất hiện trong Activity, nên một quyết định đưa ra ở đó sẽ vô hình trừ khi có ai đó ghi lại. Bài hướng dẫn của chúng tôi về quản lý dự án với Claude Code cho thấy Task mang một thay đổi từ issue đến bước review.

Có một điểm phân biệt nữa đáng được trích dẫn vì nó chính xác là cái bẫy mà bài viết này nói tới. Một Crew có thể bật tính năng dùng chung thư mục Task, để lần chạy của một Agent thành viên về sau kế thừa các thay đổi cục bộ của thành viên trước đó trên cùng một Computer. Cài đặt đó chia sẻ trạng thái hệ thống tệp, chứ không chia sẻ phiên provider của Agent trước. Các tệp được truyền tiếp; cuộc trò chuyện của model thì không. Nếu Agent thứ hai cần lý luận của Agent thứ nhất, thì lý luận đó phải nằm trên Task.

Đặt từng loại ngữ cảnh vào đúng lớp của nó

Loại ngữ cảnh Lớp Ví dụ
Quy tắc áp dụng mọi phiên Tệp hướng dẫn Chạy bộ test trước khi commit
Chỉnh sửa hoặc sở thích Auto memory Dùng pnpm, không dùng npm
Khám phá còn dang dở Khôi phục phiên Luồng gỡ lỗi của hôm qua
Quy trình tái sử dụng mà nhiều Agent cùng dùng Skill Danh sách kiểm tra phát hành
Mục tiêu, phạm vi, tiêu chí nghiệm thu Mô tả Task Yêu cầu đang được xây dựng
Quyết định, bằng chứng, phát hiện khi review Bình luận trên Task Vì sao chọn phương án B
Đã chạy gì, khi nào và kết thúc ra sao Nhật ký thực thi Lần chạy migration thất bại

Skills xứng đáng có một dòng riêng. Một Skill đóng gói các hướng dẫn tái sử dụng cùng các tệp hỗ trợ cho những chỉ dẫn cần áp dụng lặp đi lặp lại, và một Skill được phát hiện trong thư mục Runtime cục bộ có thể được import vào tổ chức để nó không còn sống trên một chiếc laptop nữa. Bài hướng dẫn của chúng tôi về Skills trong Sharkly đề cập đến phạm vi và ràng buộc, còn bài coding agent skill là gì đề cập đến định dạng tệp.

Hãy dùng tệp hướng dẫn và auto memory khi ngữ cảnh nói về cách bạn làm việc. Hãy dùng một Task khi ngữ cảnh nói về những gì cả nhóm đang xây dựng và có thể có người khác cần đọc. Sharkly không thay thế Claude Code, Codex hay các công cụ thực thi khác; nó bổ sung bản ghi chung mà những công cụ đó không lưu giữ.

Câu hỏi thường gặp

/compact có làm mất CLAUDE.md của tôi không? Không. Tệp CLAUDE.md ở gốc project được đọc lại từ đĩa sau khi nén. Những hướng dẫn chỉ đưa ra trong cuộc trò chuyện có thể bị mất; hãy chuyển chúng vào tệp.

Auto memory có được chia sẻ với nhóm của tôi không? Không. Nó được lưu dưới thư mục home của bạn, theo từng repository, và không bao giờ được đồng bộ. Ngữ cảnh mà cả nhóm cần thấy nên nằm trong một tệp hướng dẫn được check-in hoặc trên một Task.

Một Agent trong Sharkly có nhớ được lần chạy trước không? Nó nhận được Task, các bình luận gần đây và bình luận kích hoạt trong mỗi lần chạy, đó chính là dạng ghi nhớ bền vững. Nó không nhận được cuộc trò chuyện riêng tư của lần chạy trước. Xem Agents trong Sharkly để biết một lần chạy bao gồm những gì.

Còn các MCP memory server thì sao? Chúng thêm một kho lưu trữ thứ năm mà model có thể truy vấn, hữu ích cho việc ghi nhớ có cấu trúc về một codebase. Chúng vẫn không ghi lại ai đã nghiệm thu một thay đổi, nên hãy dùng kèm với một bản ghi công việc thay vì thay thế nó.

Khám phá thêm

Jev là gì và vị trí của Decision Model phía trên các Coding Agent

Jev là gì và vị trí của Decision Model phía trên các Coding Agent

Jev là mô hình ra quyết định của TypeSafe AI: đầu vào là trạng thái, đầu ra là câu trả lời định kiểu kèm xác suất. Jev là gì, ba dạng câu hỏi, cùng vai trò của mô hình trong việc định tuyến và rà soát công việc của các coding agent.

5 tháng 11 2026

codebase-memory-mcp: Truy hồi cấu trúc chi phí thấp và bộ nhớ mà nó không lưu giữ

codebase-memory-mcp: Truy hồi cấu trúc chi phí thấp và bộ nhớ mà nó không lưu giữ

codebase-memory-mcp lập chỉ mục repo của bạn thành một đồ thị tri thức để các agent không còn phải grep nữa. Những con số thực tế so với những con số được quảng bá, và những gì mà đồ thị tri thức không thể biết.

4 tháng 11 2026

Claude Squad vs Conductor vs tmux: Cách tự thiết lập AI agent

Claude Squad vs Conductor vs tmux: Cách tự thiết lập AI agent

So sánh Claude Squad, Conductor và tmux để chạy các agent lập trình AI song song. Xem mỗi công cụ mạnh ở điểm nào và đâu là ranh giới để bạn chuyển lên Sharkly.

4 tháng 11 2026