Cách ngăn Claude Code bịa đặt thông tin khi không biết câu trả lời (Hướng dẫn thiết lập chi tiết)

@0x_rody
TIẾNG ANH1 tháng trước · 06 thg 6, 2026
346K
256
29
8
1.2K

TL;DR

Hướng dẫn này cung cấp một khung làm việc 4 lớp toàn diện để ngăn Claude Code tạo ra các hàm hoặc bài kiểm tra ảo bằng cách áp dụng các quy tắc trung thực nghiêm ngặt, giao thức xác minh và các công cụ kiểm tra lỗi tự động.

Claude Code nói dối bạn mỗi ngày. Các hàm bịa đặt, import ảo, "kiểm thử qua" khi chưa chạy cái nào. Giải pháp là một thiết lập 4 lớp khiến việc nói dối trở nên đắt giá.

Claude bảo bạn lỗi đã được sửa. Hai tiếng sau bạn mới phát hiện ra hàm nó gọi chưa bao giờ tồn tại.

Hầu hết các lập trình viên đều học cách kiểm tra lại mọi thứ và đổ lỗi cho mô hình. Giải pháp thực sự bắt được mọi lời nói dối trước khi nó rời khỏi máy bạn.

Đây là thiết lập trung thực hoàn chỉnh 👇

rody - inline image

Tại sao Claude lại bịa chuyện ngay từ đầu

Claude là một công cụ dự đoán văn bản. Khi nó không biết điều gì đó, nó dự đoán văn bản có vẻ đúng. Tên hàm bịa đặt trông giống như thật. Những điều vô nghĩa được đưa ra một cách tự tin cũng giống như sự thật được đưa ra một cách tự tin.

Bạn không thể phân biệt được cho đến khi code của bạn hỏng hai tiếng sau đó theo một cách mà bạn mất thêm một tiếng để gỡ lỗi.

Giải pháp không phải là một mô hình thông minh hơn. Đó là làm cho đầu ra của Claude có thể kiểm tra được trong thời gian thực và làm cho "tôi không biết" rẻ hơn việc đoán mò.

4 lớp dưới đây. Cùng nhau, chúng giảm thiểu sự bịa đặt xuống gần như bằng không.

rody - inline image

Lớp 1: Các quy tắc trung thực trong CLAUDE.md

Lớp đầu tiên là một tập hợp các quy tắc trong CLAUDE.md cho Claude biết chính xác khi nào nên thừa nhận sự không chắc chắn và chính xác bằng cách nào. Đặt cái này vào thư mục gốc dự án của bạn:

markdown
1## Quy tắc trung thực (đọc mỗi lượt)
2
3Trước khi khẳng định một hàm, lớp, hoặc import tồn tại, hãy xác minh nó bằng cách
4đọc tệp hoặc chạy grep. Không bao giờ bịa đặt các ký hiệu.
5
6Nếu bạn không thể xác minh điều gì đó, hãy nói rõ ràng "Tôi chưa xác minh điều này".
7Không viết code phụ thuộc vào khẳng định chưa được xác minh.
8
9Nếu một nhiệm vụ yêu cầu bạn sử dụng một thư viện bạn chưa từng thấy được tham chiếu trong
10dự án này, hãy hỏi trước khi thêm nó.
11
12Nếu một nhiệm vụ liên quan đến kiểm thử hoặc xây dựng, đừng khẳng định thành công trừ khi bạn
13thực sự đã chạy lệnh kiểm thử hoặc xây dựng trong phiên làm việc này.
14
15Không bao giờ bịa đặt thông báo lỗi, phản hồi API, hoặc dấu vết ngăn xếp. Nếu bạn
16không nhìn thấy chúng, hãy nói như vậy.
17
18Khi bạn thực sự không biết, câu trả lời đúng là "Tôi không biết" hoặc
19"Tôi cần kiểm tra trước." Cả hai đều tốt hơn một phỏng đoán tự tin.

Những quy tắc này có vẻ hiển nhiên.

Nhưng thực tế không phải vậy, bởi vì theo mặc định, Claude được tối ưu hóa để trông có vẻ hữu ích, và "tôi không biết" có vẻ không hữu ích trừ khi bạn cho phép nó một cách rõ ràng.

Dòng cuối cùng là quan trọng nhất. Đó là giấy phép "tôi không biết", và hầu hết mọi người không bao giờ cấp nó.

Lớp 2: Mẫu xác minh trước khi viết

Lớp thứ hai buộc Claude phải xác minh trước khi viết. Thêm cái này vào CLAUDE.md dưới các quy tắc trung thực:

markdown
1## Giao thức xác minh
2
3Trước khi viết hoặc chỉnh sửa code sử dụng một ký hiệu (hàm, lớp, kiểu,
4hằng số), hãy thực hiện một trong những việc sau:
5
61. Đọc tệp nơi nó được định nghĩa và xác nhận chữ ký
72. Chạy `grep -r "symbolName" .` hoặc sử dụng công cụ Glob để tìm nó
83. Kiểm tra package.json, requirements.txt, Cargo.toml, hoặc tương đương cho
9 dependency
10
11Nếu bạn bỏ qua xác minh, hãy thêm tiền tố vào code bằng một comment:
12`// CHƯA XÁC MINH: Tôi chưa xác nhận ký hiệu này tồn tại`
13
14Chế độ lập kế hoạch-rồi-thực thi được ưu tiên cho bất kỳ nhiệm vụ nào chạm đến nhiều hơn một
15tệp. Sử dụng Shift+Tab để vào chế độ lập kế hoạch trước khi bắt đầu.

Điều này khiến Claude tốn thêm một vài lần gọi công cụ mỗi phiên. Nhưng nó giúp bạn tiết kiệm hàng giờ mà bạn sẽ dành để gỡ lỗi các lời gọi hàm giả.

Lớp 3: Các hook bắt lỗi nói dối trong thời gian thực

Lớp thứ ba là các hook trong settings.json chạy một trình kiểm tra kiểu hoặc linter mỗi khi Claude viết một tệp. Nếu Claude bịa ra một import, trình kiểm tra sẽ thất bại ngay lập tức, và Claude phải sửa nó trước khi khẳng định nhiệm vụ đã hoàn thành.

json
1{
2 "hooks": {
3 "PostToolUse": [
4 {
5 "matcher": "Write(*.ts|*.tsx)|Edit(*.ts|*.tsx)",
6 "hooks": [
7 { "type": "command", "command": "npx tsc --noEmit --pretty false 2>&1 | head -20" }
8 ]
9 },
10 {
11 "matcher": "Write(*.py)|Edit(*.py)",
12 "hooks": [
13 { "type": "command", "command": "ruff check --quiet $file && pyright $file 2>&1 | head -20" }
14 ]
15 },
16 {
17 "matcher": "Write(*.rs)|Edit(*.rs)",
18 "hooks": [
19 { "type": "command", "command": "cargo check --message-format=short 2>&1 | head -20" }
20 ]
21 }
22 ]
23 }
24}

Đầu ra của hook được gửi lại cho Claude như ngữ cảnh. Nếu tsc nói "Không thể tìm thấy module 'foo'", Claude sẽ thấy ngay lập tức và sửa import bịa đặt. Không có code bịa đặt nào sống sót qua một lần kiểm tra PostToolUse.

Đối với các nhiệm vụ liên quan đến kiểm thử, hãy thêm một hook Stop chạy bộ kiểm thử trước khi Claude có thể tuyên bố phiên làm việc kết thúc:

json
1"Stop": [
2 {
3 "hooks": [
4 { "type": "command", "command": "npm test 2>&1 | tail -30" }
5 ]
6 }
7]

Bây giờ Claude không thể nói "xong, kiểm thử qua" mà không thực sự chạy chúng. Hook sẽ chạy chúng.

Kết quả được gửi lại cho Claude. Nếu chúng thất bại, Claude phải sửa chúng hoặc thừa nhận chúng không qua.

Lớp 4: Tác nhân phụ kiểm tra thực tế

Lớp thứ tư là một tác nhân phụ có nhiệm vụ duy nhất là xem xét các khẳng định của Claude trước khi chúng được đưa ra.

Đặt cái này vào .claude/agents/fact-checker.md:

yaml
1---
2name: fact-checker
3description: Sử dụng tác nhân này sau khi Claude đã đưa ra các khẳng định về những gì code làm, những kiểm thử nào đã qua, hoặc những gì một thư viện hỗ trợ. Gọi trước bất kỳ commit nào, trước bất kỳ bản tóm tắt nào dành cho người dùng, và sau bất kỳ nhiệm vụ nào liên quan đến các dependency mới.
4tools: Read, Grep, Glob, Bash
5model: sonnet
6---
7
8Bạn xác minh các khẳng định, bạn không viết code.
9
10Khi được gọi, hãy làm điều này:
11
121. Xác định mọi khẳng định thực tế trong cuộc trò chuyện gần đây. Ví dụ:
13 "hàm X làm Y", "các kiểm thử qua", "thư viện Z hỗ trợ W",
14 "import này là đúng".
15
162. Đối với mỗi khẳng định, hãy xác minh nó một cách độc lập:
17 - Khẳng định về code: đọc tệp thực tế và xác nhận
18 - Khẳng định về kiểm thử: tự chạy các kiểm thử
19 - Khẳng định về thư viện: kiểm tra gói thực tế hoặc tài liệu của nó
20 - Khẳng định về import: xác nhận gói có trong tệp kê khai dependency
21
223. Tạo một báo cáo:
23 - ĐÃ XÁC MINH: khẳng định, bằng chứng (tệp:dòng hoặc đầu ra lệnh)
24 - SAI: khẳng định, điều thực sự đúng
25 - KHÔNG THỂ XÁC MINH: khẳng định, lý do bạn không thể kiểm tra nó
26
27Không bao giờ chấp nhận các khẳng định kiểu "hãy tin tôi". Không bao giờ đưa ra khẳng định của riêng bạn. Nếu bạn
28không thể xác minh, đầu ra đúng là KHÔNG THỂ XÁC MINH.

Gọi tác nhân này trước khi commit hoặc trước khi chia sẻ kết quả với nhóm của bạn. Nó bắt được những lời nói dối mà 3 lớp kia đã bỏ lỡ.

rody - inline image

Giấy phép "tôi không biết"

Claude được huấn luyện để trở nên hữu ích, và việc thừa nhận sự thiếu hiểu biết có vẻ không hữu ích. Vì vậy, nó đoán, và phỏng đoán có vẻ đúng.

Giải pháp là cấp quyền không biết. CLAUDE.md là một nửa của nó. Phản ứng của bạn là nửa còn lại. Thưởng cho "Tôi chưa xác minh điều này" bằng sự kiên nhẫn và bạn sẽ có Claude trung thực trong mọi phiên. Trừng phạt nó bằng sự thất vọng và Claude sẽ quay lại đoán mò.

Không phải là cấu hình, mà là một thói quen. Sửa lỗi bị đánh giá thấp nhất trong toàn bộ thiết lập.

Làm thế nào để biết nó thực sự hoạt động

Ba dấu hiệu trong các phiên làm việc hàng ngày của bạn.

Claude hỏi trước khi thêm dependency. "Tôi có nên thêm X hay sử dụng stdlib?" thay vì npm install im lặng.

Claude tham chiếu tệp:dòng khi nó nói về code hiện có. "validateToken trong src/auth/middleware.ts:47 làm Y" thay vì "hàm validateToken làm Y."

tsc và linter của bạn ngừng la hét. Các hook bắt được những sự bịa đặt hiếm hoi ngay lập tức và Claude tự sửa, vì vậy khi bạn nhìn, những lời nói dối đã biến mất.

Không thấy những điều này sau một hoặc hai ngày? Một lớp chưa được tải. Thường là CLAUDE.md, sai vị trí hoặc sai tên.

rody - inline image

Những sai lầm phổ biến khiến Claude tiếp tục nói dối

CLAUDE.md quá dài. Claude đọc phần đầu và lướt phần còn lại. Các quy tắc trung thực trong 50 dòng đầu tiên.

Các hook ghi log im lặng. Nếu đầu ra không đến được stdout, Claude không biết nó đã nói dối. Đảm bảo đầu ra của hook được gửi lại phiên làm việc.

Bạn bỏ qua chế độ lập kế hoạch. Đó là nơi Claude phơi bày các giả định sai trước khi viết. Bỏ qua nó và bạn bỏ lỡ thời điểm rẻ nhất để bắt lỗi nói dối.

Bạn không gọi trình kiểm tra thực tế. Một tác nhân phụ chỉ hoạt động nếu bạn thực sự gọi nó. Làm cho @fact-checker trở thành một phần của quy trình commit của bạn.

Bạn phản ứng tệ với "tôi không biết." Trừng phạt sự trung thực một lần và Claude sẽ quay lại đoán mò. 3 lớp kia sẽ không bền vững nếu thiếu lớp này.

rody - inline image

Kiểm tra trung thực trong 5 phút

1 phút: sao chép các quy tắc trung thực và giao thức xác minh của CLAUDE.md vào thư mục gốc dự án của bạn.

1 phút: sao chép khối hook vào ~/.claude/settings.json hoặc .claude/settings.json.

2 phút: tạo .claude/agents/fact-checker.md với mẫu ở trên.

1 phút: chạy một nhiệm vụ mà bạn thường kiểm tra lại. Xem đầu ra của tsc quay lại Claude. Xác nhận Claude nói rõ ràng "đã xác minh" hoặc "tôi chưa xác minh điều này".

Xong. Sự bịa đặt giảm từ "mỗi phiên khác" xuống "hiếm và bị bắt ngay lập tức." Mô hình không trở nên thông minh hơn. Thiết lập của bạn đã làm được điều đó.

Cảm ơn bạn đã đọc!

rody - inline image
Lưu một chạm

Đọc sâu bài viết viral bằng AI trong YouMind

Lưu nguồn, đặt câu hỏi tập trung, tóm tắt lập luận và biến một bài viết viral thành các ghi chú có thể tái sử dụng trong một không gian làm việc AI duy nhất.

Khám phá YouMind
Dành cho nhà sáng tạo

Biến Markdown của bạn thành bài viết 𝕏 gọn gàng

Khi bạn đăng bài viết dài của riêng mình, việc định dạng hình ảnh, bảng và khối mã cho 𝕏 rất mệt mỏi. YouMind biến cả bản nháp Markdown thành một bài viết 𝕏 gọn gàng, sẵn sàng để đăng.

Thử Markdown sang 𝕏

Thêm pattern để giải mã

Bài viết viral gần đây

Khám phá thêm bài viết viral