Tóm tắt
Anthropic kể lại một thay đổi khá mạnh trong Claude Code: với thế hệ Claude 5 như Opus 5 và Fable 5, họ xoá hơn 80% system prompt mà không thấy tụt chất lượng trên các eval coding. Lý do không phải vì context không còn quan trọng, mà vì context nên đóng vai trò thiết kế môi trường làm việc cho model: tool rõ, file hướng dẫn gọn, memory đúng chỗ, và skill được nạp khi cần.
Bài viết gọi lớp công việc này là context engineering. Khác với prompt cho từng yêu cầu, context là phần được lắp ghép từ system prompt, Skills, CLAUDE.md, memory và nhiều nguồn khác. Vì nó đi theo nhiều request, context càng dài và càng lặp thì model càng phải mất công xử lý mâu thuẫn.
Điều đã thay đổi
Trước đây Claude Code cần nhiều luật cứng để tránh hành vi xấu trong trường hợp biên, ví dụ không xoá file, hạn chế comment dài, hoặc không tạo tài liệu kế hoạch khi người dùng không yêu cầu. Khi model còn yếu hơn, những luật này là trade-off hợp lý: nó chặn lỗi nặng, dù đôi khi làm model xử lý vụng hơn.
Với model mới, Anthropic nhận ra họ đang bó Claude quá chặt. Trong transcript nội bộ, cùng một request có thể chứa nhiều thông điệp xung đột: nơi này bảo “thêm documentation khi hợp lý”, nơi khác lại bảo “không thêm comment”. Claude vẫn thường suy luận được ý định thật, nhưng phải tiêu thêm năng lực để gỡ nút do context tạo ra.
Cách viết mới chuyển từ luật chi tiết sang nguyên tắc theo ngữ cảnh. Ví dụ thay vì nhồi rule về comment, system prompt nói Claude viết code giống phần code xung quanh: giữ mật độ comment, cách đặt tên và idiom đang có trong repo.
Từ ví dụ sang interface
Một “best practice” cũ là cho model thật nhiều ví dụ dùng tool. Với model mới, Anthropic thấy ví dụ đôi khi thu hẹp không gian khám phá. Model học theo pattern mẫu quá chặt, trong khi vấn đề thật cần một cách gọi tool khác.
Thay vào đó, họ khuyên thiết kế interface tốt hơn. Tool schema, enum trạng thái, tên tham số và mô tả hành vi nên tự nói lên cách dùng. Ví dụ một Todo tool có pending, in_progress, completed đã gợi ý workflow; rule “chỉ một item in_progress” định nghĩa ràng buộc quan trọng mà không cần mười ví dụ dài.
Progressive disclosure
Claude Code từng đặt rất nhiều hướng dẫn review và verification ngay trong system prompt. Những phần này không phải lúc nào cũng cần, nhưng khi cần thì phải chính xác. Giải pháp mới là progressive disclosure: để model nạp đúng tài liệu đúng lúc.
Anthropic chuyển review, verification và các workflow riêng sang Skills. Một số tool còn dùng deferred loading: ban đầu model chỉ thấy mô tả ngắn, khi cần mới tìm schema đầy đủ qua ToolSearch. Cùng một ý tưởng áp dụng cho CLAUDE.md và Skill.md: đừng biến một file thành kho chứa mọi điều có thể xảy ra, hãy chia thành cây tài liệu nhỏ để nạp khi cần.
Memory và reference
CLAUDE.md không nên là nơi nhét mọi ký ức của dự án. Anthropic khuyên giữ file này nhẹ: nói repo dùng để làm gì, những gotcha thật sự, và các đường dẫn đến workflow chuyên biệt. Những điều model tự đọc được từ filesystem hoặc code thì không cần viết lại.
Với plan và spec, model mới xử lý được reference giàu hơn markdown đơn giản. Reference có thể là HTML artifact, mockup, test suite, hoặc code từ repo khác cần port. Rubric cũng là một dạng reference: nó giúp model kiểm tra “gu” của team về API design, UI, hoặc review quality.
Cách áp dụng cho team dev
Nếu bạn đang xây agent nội bộ, hãy audit instruction stack theo bốn câu hỏi:
- System prompt có đang chứa rule chi tiết đáng lẽ thuộc tool hoặc skill không?
- CLAUDE.md có lặp lại điều model đọc được từ repo không?
- Tool schema có đủ rõ để model tự chọn đúng hành động không?
- Các workflow hiếm như release, migration, security review đã được tách thành skill hoặc file riêng chưa?
Thông điệp chính: context engineering không phải cuộc thi nhồi token. Nó giống thiết kế API cho model làm việc. Context tốt giúp model hiểu vai trò, quyền hạn và môi trường; context xấu bắt model phân xử hàng chục rule trùng nhau trước khi viết một dòng code.