Bạn đổi mô hình bằng /model, chạy lại cùng một nhiệm vụ và nhận được câu trả lời khác. Nhưng agent vẫn đọc CLAUDE.md như trước, vẫn hỏi quyền trước khi chạy lệnh, và hook vẫn hoạt động như cũ. Vậy những thứ đó không nằm trong mô hình.
Hãy cùng phân biệt đâu là mô hình, đâu là chương trình bao quanh nó. Nhờ vậy, bạn sẽ biết cần kiểm tra điều gì khi agent mắc lỗi.
Mô hình và harness
Mô hình xử lý ngữ cảnh được cung cấp rồi tạo câu trả lời hoặc yêu cầu gọi công cụ. Chẳng hạn, mô hình chọn tệp cần đọc và lệnh cần chạy. Để thực hiện những việc đó, cần có một chương trình bao quanh mô hình: chương trình truy cập tệp, chạy lệnh rồi gửi kết quả lại cho mô hình.
Trong tài liệu tiếng Anh, chương trình này được gọi là harness. Theo nghĩa đen, từ này là "bộ yên cương" (đúng vậy, loại dùng cho ngựa), còn trong bài viết này ta gọi là harness của agent. Tài liệu Anthropic nói rõ: Claude Code là harness, còn Claude là mô hình bên trong. Từ này cũng xuất hiện trong các bài viết về agent nói chung, nên bạn sẽ còn gặp nó.
Trong sơ đồ, harness tập hợp ngữ cảnh, kiểm tra quyền và thực hiện yêu cầu gọi công cụ của mô hình. Mũi tên bên dưới mô hình biểu thị vòng lặp: kết quả từ công cụ được đưa trở lại ngữ cảnh, rồi mô hình chọn bước tiếp theo hoặc kết thúc câu trả lời. Câu trả lời đã hoàn tất chưa chắc nhiệm vụ đã xong: bạn vẫn cần kiểm tra kết quả.
Những gì bạn đã thiết lập
Các phần của harness xuất hiện trong Claude Code như sau. Tệp và lệnh ở cột bên phải giúp bạn tìm từng cơ chế trong dự án hoặc phiên làm việc.
| Thành phần của harness | Chức năng | Tìm ở đâu |
|---|---|---|
| Chỉ dẫn hệ thống | Claude Code thêm vào ngữ cảnh trước tin nhắn đầu tiên của bạn: cách làm việc, các công cụ hiện có và thư mục chạy phiên | dòng System prompt trong kết quả của /context |
CLAUDE.md | quy tắc của dự án mà agent đọc khi bắt đầu phiên | tệp ở thư mục gốc dự án |
| Công cụ | đọc và chỉnh sửa tệp, tìm kiếm, chạy lệnh trong terminal | các dòng như Read(...) và Bash(...) trong quá trình làm việc |
| Skills | chỉ dẫn mà mô hình có thể chọn cho nhiệm vụ, hoặc bạn có thể gọi trực tiếp | .claude/skills/, /skills |
| MCP | cầu nối đến dịch vụ bên ngoài và dữ liệu thời gian thực | /mcp |
| Subagent | một trợ lý thực thi riêng có ngữ cảnh của riêng mình | .claude/agents/ |
| Yêu cầu cấp quyền | harness kiểm tra hành động có được phép hay không, và hỏi bạn khi cần | câu hỏi trong terminal trước khi chạy lệnh hoặc chỉnh sửa |
| Hook | lệnh của bạn gắn với sự kiện trong phiên, chạy mà không cần mô hình quyết định | /hooks |
| Ngữ cảnh và phiên | những gì mô hình đang thấy và thời điểm bạn có thể quay lại | /context, /clear, /rewind |
| Vòng lặp agent | trả kết quả từ công cụ cho mô hình để chọn bước tiếp theo | nhiều hành động liên tiếp để đáp lại một yêu cầu |
CLAUDE.md và skill cung cấp chỉ dẫn cho mô hình. Mô hình có thể hiểu sai hoặc bỏ qua quy tắc. Việc kiểm tra quyền và các lệnh trong hook đã cấu hình được thực hiện bằng chương trình; kết quả phụ thuộc vào điều kiện bạn đặt ra và chính các lệnh đó.
Plugin không có trong bảng vì đó không phải thành phần riêng lẻ mà là một gói gồm nhiều skill, lệnh hoặc hook được cài cùng lúc.
Cùng một mô hình, hành vi khác nhau
Hãy lấy ví dụ một web chat không kết nối với dự án hay terminal của bạn. Nó có harness riêng: lịch sử trò chuyện, giao diện, đôi khi có tìm kiếm web hoặc tải tệp lên. Trong chat đó, mô hình có thể giải thích cách chỉnh sửa và đưa ra đoạn mã; còn Claude Code có quyền truy cập dự án thì có thể sửa trực tiếp tệp. Cùng một mô hình nhưng khả năng khác nhau vì chương trình bao quanh nó khác nhau.
Với /model thì ngược lại. Mô hình thay đổi, harness vẫn vậy, nên quy tắc, công cụ và yêu cầu cấp quyền vẫn còn nguyên.
Mô hình quyết định cách hiểu nhiệm vụ, chọn công cụ và đánh giá kết quả từ chúng. Harness tập hợp ngữ cảnh, cung cấp công cụ và kiểm tra quyền. Chẳng hạn, mô hình có thể yêu cầu một tệp còn thiếu, rồi harness sẽ đọc tệp và trả về nội dung của nó.
Agent tự tin phân tích một hàm đã bị xóa khỏi dự án từ lâu? Trước tiên, hãy kiểm tra xem mã hiện tại đã có trong ngữ cảnh chưa. Bạn có thể đưa mã vào bằng cách dùng @ cùng đường dẫn tệp, dán vào tin nhắn hoặc yêu cầu công cụ đọc tệp. Hai cách đầu có thể không tạo ra một lần gọi công cụ đọc riêng. Nếu công cụ đã được gọi, hãy xem kết quả: nội dung tệp hay lỗi về quyền truy cập hoặc đường dẫn. Nếu mã chưa có trong ngữ cảnh, hãy gửi mã hoặc yêu cầu đọc tệp. Nếu mã đã có nhưng kết luận sai, hãy đối chiếu lập luận với từng dòng cụ thể. Đổi sang mô hình khác cũng có thể hữu ích ở đây.
Nên chỉnh gì khi agent mắc lỗi
Lỗi xảy ra một lần thì dễ xử lý nhất bằng một lời nhắc: "nhầm tệp rồi, hãy xem src/utils.js". Nhưng nếu lỗi lặp lại qua nhiều phiên, hãy kiểm tra chỉ dẫn và dữ liệu agent có thể truy cập. Có thể bạn phải giải thích lại cùng một quy tắc mỗi lần.
Thường thì bạn sẽ thấy những tình huống như sau:
- phiên nào agent cũng quên quy tắc dự án, chẳng hạn kiểm thử được chạy bằng
npm test- hãy ghi quy tắc đó vàoCLAUDE.md. Lưu rõ quy tắc quan trọng trong tệp này sẽ đáng tin cậy hơn là trông chờ việc nhắc lại trong cuộc trò chuyện; - bạn đã giải thích cùng một quy trình đến lần thứ ba - đã đến lúc chuyển nó thành skill. Agent có thể nạp chỉ dẫn khi nhiệm vụ cần. Hãy kiểm tra trong lúc làm xem skill đã được gọi chưa; nếu chưa, hãy tự gọi bằng
/skill-name, thay bằng tên thật của skill; - agent đoán dữ liệu mà nó không có - hãy cung cấp dữ liệu cần thiết: thêm tệp vào ngữ cảnh qua
@hoặc kết nối dịch vụ bên ngoài qua MCP. Thuyết phục suông không chữa được chuyện đoán mò; - agent báo "xong" mà chưa chạy kiểm tra - hook gắn với sự kiện
Stopcó thể tự chạy kiểm thử, không cần mô hình quyết định. Dù vậy, chính bạn vẫn nghiệm thu công việc dựa trên kết quả lệnh, không phải báo cáo; - dữ liệu cần thiết đã có và được đọc, nhưng agent vẫn lúng túng với lập luận phức tạp - hãy thử mô hình khác bằng
/modelrồi so sánh kết quả trên cùng nhiệm vụ.
Trước tiên, hãy kiểm tra dữ liệu và công cụ cần thiết có sẵn hay không. Nếu vấn đề nằm ở khả năng lập luận, bạn có thể thử mô hình khác ngay. So sánh chất lượng kết quả và mức sử dụng trong /usage: những lần thử không thành công cũng tiêu tốn hạn mức lẫn thời gian của bạn.
GO TO FULL VERSION