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ó.



