---
title: "Rắc rối khi lập trình cùng AI — tra ngược (triệu chứng → nên làm gì)"
author: garplab
publisher: TypingTube
license: CC BY 4.0
license_url: https://creativecommons.org/licenses/by/4.0/
license_scope: Toàn bộ nội dung của tài liệu này (không tính phần frontmatter)
language: vi
canonical: https://typing-tube.net/articles/vi/lookup
---

# Rắc rối khi lập trình cùng AI — tra ngược (triệu chứng → nên làm gì)

Bảng tra theo triệu chứng chứ không phải theo tiêu đề. Liên kết "Chi tiết" dẫn tới đoạn bài viết mô tả cách xử lý kèm số liệu thực đo.

Bảng này giả định bạn dùng Claude Code (agent lập trình của Anthropic). hook, CLAUDE.md, subagent và auto memory là tên các tính năng của nó.

| Điều gì đang xảy ra | Nên làm gì | Tính năng của Claude Code | Chi tiết |
|---|---|---|---|
| Mỗi lần AI chạy test, hàng chục nghìn dòng output lại tràn vào context | Gom mọi lần chạy test qua một wrapper script duy nhất, ghi toàn bộ output ra file log, và chỉ trả về cho AI phần tóm tắt các lỗi thất bại. | `context window` / `wrapper script` / `fixed-prefix count line ([observed])` | [読まない技術 第1回：テスト結果を読まない技術](https://typing-tube.net/articles/cd93e0c5cac832#cd93e0c5cac832-4eea2df8) |
| AI càng lưu nhiều ghi chú kiến thức, mọi phiên làm việc sau càng phải đọc nhiều hơn | Dùng một PreToolUse hook chạy ngay trước khi ghi memory để bắt AI đọc checklist trước, và chỉ để lại đúng 1 dòng trong file chỉ dẫn (CLAUDE.md): "đọc trước khi ghi". | `MEMORY.md` / `loaded at session start` / `context rot` | [読まない技術 第2回：メモリを読まない技術](https://typing-tube.net/articles/384477896fec22#384477896fec22-4eea2df8) |
| Test vẫn pass, nhưng không rõ nó có thực sự bảo vệ được điều gì hay không | Viết một chính sách 1 trang về mutation testing (cố tình phá code để xem test có bắt được không), và cho AI đọc nó mỗi khi bạn yêu cầu rà soát test. | `mutation testing` / `positive control` / `vacuous truth` | [読まない技術 第3回：単体テストを読まない技術](https://typing-tube.net/articles/e4ad91d2fd6c67#e4ad91d2fd6c67-4eea2df8) |
| Có skill đã đăng ký, nhưng lúc AI dùng lúc không | Giữ nguyên lệnh dưới dạng script thông thường, dùng PreToolUse hook chặn các lần gọi sai, và chỉ AI đến đúng tài liệu cần đọc. | `PreToolUse hook (Bash matcher)` / `hook stderr + exit 2` / `mission` | [読まない技術 第4回：スキルを使わない技術](https://typing-tube.net/articles/8f9ae8791b448d#8f9ae8791b448d-4eea2df8) |
| Việc đã giao cho sub-agent thì không thấy nó đang làm gì cho tới khi xong | Định nghĩa bằng YAML những tác vụ nào được phép giao cho sub-agent và những file input nào phải có trước khi khởi chạy, rồi dùng hook kiểm tra điều đó trước khi bắt đầu. | `subagent (Agent tool)` / `subagent (no parent context)` / `contract (inputs / outputs / acceptance)` | [読まない技術 第5回：サブエージェントの出力だけは読め](https://typing-tube.net/articles/62f714d7c2b599#62f714d7c2b599-7e6cc5ce) |
| Càng thêm rule vào file chỉ dẫn, các rule thêm trước đó càng ít được tuân theo | Chuyển từng rule kiểu "không được làm X" thành một automated test (Minitest) có thể phát hiện vi phạm, làm từng cái một. | `CLAUDE.md` / `Claude Code hooks (PreToolUse / PostToolUse / Stop / SubagentStop)` / `hook contract (proof of reading)` | [読まない技術 第6回：ルールを読まない技術](https://typing-tube.net/articles/569d598941c00f#569d598941c00f-4eea2df8) |
| Memory dùng chung giữa các phiên chạy song song trở nên lộn xộn, cho đọc chính sách cũng không cải thiện | Chuyển đúng file chính sách đó sang một PostToolUse hook và hiển thị nó cùng với diff ngay sau khi lưu. Giữ nguyên nội dung đọc, chỉ đổi thời điểm. | `MEMORY.md` / `concurrent test runs` / `hooks / automated tests` | [読まない技術 第7回：共有メモリを整理しない技術](https://typing-tube.net/articles/83c46d1e6b2591#83c46d1e6b2591-4eea2df8) |
| Dù đã viết sẵn cách xử lý một lỗi, lần sau AI vẫn mắc lại đúng lỗi đó | Tóm tắt chính sách retry thành vài dòng trong một file, và để hook phát hiện lỗi tự động chèn nó vào. | `auto memory (feedback_*)` | [読まない技術 第8回：修正履歴を読まない技術](https://typing-tube.net/articles/f7c9c30f567aee#f7c9c30f567aee-4eea2df8) |
| Dù đã đọc ghi chú bàn giao và báo cáo hoàn thành, phần bất lợi vẫn bị thiếu | Mỗi lần đều đặt các con số lấy một cách máy móc — như từ git diff --stat — ngay cạnh báo cáo hoàn thành. | `handoff` / `test summary line (full log in a file)` | [読まない技術 第9回：引き継ぎを読まない技術](https://typing-tube.net/articles/a43b57a94d2216#a43b57a94d2216-4eea2df8) |
| Con số máy đếm ra lại biến thành con số khác vào lúc tới được báo cáo | Gắn một tiền tố cố định vào dòng chứa con số, và dùng hook kiểm tra xem nó có được copy nguyên văn hay không. | `machine-counted numbers ([observed] / git diff --stat)` / `test summary line (full log in a file)` / `self-report (bias toward completion)` | [読まない技術 第10回：AIに要約しろと言わない技術](https://typing-tube.net/articles/yomanai-10-no-summary#yomanai-10-no-summary-4eea2df8) |
| Ngắt lời AI giữa chừng khi nó đang làm việc thì mọi thứ sau đó bị rối | Thay vì để người ngắt lời giữa chừng, hãy để một PostToolUse hook trả lại chính sách ngay sau khi lưu và một hook phát hiện lỗi rồi trả việc lại làm nhiệm vụ can thiệp. Người chờ đến mốc tự nhiên. | `user message during a task` / `recency` / `context window` | [読まない技術 第11回：口を挟まない技術](https://typing-tube.net/articles/6c6d2e4f80a649#6c6d2e4f80a649-e4cb60ea) |
| Đến cuối phiên làm việc, chưa rõ nên đọc gì và không cần đọc gì | Đừng đọc thành phẩm hay log làm việc — chỉ xét đạt/không đạt bằng exit code của test hoặc linter. | `self-report (bias toward completion)` / `machine-counted numbers ([observed] / git diff --stat)` / `exit code (pass / fail)` | [読まない技術 第12回：作業結果を読まない技術](https://typing-tube.net/articles/1769779c2f1b4b#1769779c2f1b4b-4eea2df8) |
| Một đề xuất đã bị từ chối lại quay lại ở phiên sau | Gom mọi quyết định đã bị từ chối vào một tài liệu duy nhất, theo một định dạng cố định. |  | [AIの意見を聞かない技術 第1回：提案を検討しない技術](https://typing-tube.net/articles/kikanai-01-no-review#kikanai-01-no-review-9e2b31e8) |
| Dù đã viết một dòng cấm, nó vẫn bị diễn giải rộng ra hoặc hẹp lại | Trong tài liệu duy nhất gom các quyết định đã bị từ chối (ví dụ non_goals.md), với mỗi điều cấm hãy thêm mục "lý do" đặt cạnh kết luận. |  | [AIの意見を聞かない技術 第2回：禁止を書かない技術](https://typing-tube.net/articles/kikanai-02-reason#kikanai-02-reason-2973ce11) |
| Điều cấm viết đúng nhưng không được tuân theo, và mỗi lần lại có người hỏi lại | Trong tài liệu các quyết định bị từ chối, với mỗi điều cấm hãy thêm mục "phạm vi áp dụng" và liệt kê từng dòng các trường hợp biên gây khó phán đoán. | `gap between goal pressure and spec` / `rule-to-test mapping` | [AIの意見を聞かない技術 第3回：禁止ルールを作らない技術](https://typing-tube.net/articles/kikanai-03-scope#kikanai-03-scope-1db3e01a) |
| Đưa cùng một chỉ dẫn cho nhiều sub-agent thì kết quả trả về mỗi lần một hình dạng khác nhau | Trong danh sách tác vụ được phép giao cho sub-agent, ghi rõ những file input cần chuẩn bị sẵn trước khi khởi chạy. | `subagent mission catalog + launch hook` / `contract (inputs / outputs / acceptance)` / `required input files` | [AIの意見を聞かない技術 第4回：サブエージェントの入力だけは、確かめろ](https://typing-tube.net/articles/kikanai-04-subagent-input#kikanai-04-subagent-input-0b96e6a8) |
| Các điều cấm không có automated test cứ chồng chất lên, chỉ tồn tại như chữ trên giấy | Trong tài liệu các quyết định bị từ chối, thêm mục "kiểm chứng bằng máy" vào danh sách và ghi rõ theo từng mục có automated test (Minitest) tương ứng hay không. | `probabilistic compliance (p^n)` | [AIの意見を聞かない技術 第5回：自動テストを書かない技術](https://typing-tube.net/articles/kikanai-05-machine-check#kikanai-05-machine-check-0f82d02b) |
| Mỗi lần AI làm xong việc đều kết thúc bằng câu "vui lòng mở màn hình kiểm tra giúp" | Chuẩn bị sẵn một smoke test bằng Playwright, và xét đạt/không đạt dựa trên bản ghi còn lại trong DB thay vì nhìn giao diện. | `automatic error report from users` | [AIの意見を聞かない技術 第6回：AIの確認依頼を断る技術](https://typing-tube.net/articles/kikanai-06-production#kikanai-06-production-6c41de4e) |
| Mỗi lần AI nói điều gì hơi lệch, chính bạn lại là người phải giải thích và sửa lại | Thay vì người giải thích và sửa từng chỗ lệch, hãy ghi lời chỉ ra vào stderr của hook (exit 2) và vào thông báo lỗi của automated test, để đó là con đường nó đến được AI. | `SendMessage (retry)` | [AIの意見を聞かない技術 第7回：AIの話を聞かない技術](https://typing-tube.net/articles/kikanai-07-no-listening#kikanai-07-no-listening-f900b392) |
| Danh sách các quyết định đã bị từ chối cứ dài thêm, có vẻ sẽ đến lúc không ai đọc nữa | Thêm mục "đề xuất không áp dụng" ở cuối tài liệu các quyết định bị từ chối, và ghi lại các đề xuất bị từ chối vào đó. | `MEMORY.md` / `context rot` | [AIの意見を聞かない技術 第8回：ルールを整理しない技術](https://typing-tube.net/articles/kikanai-08-no-inventory#kikanai-08-no-inventory-d72023ae) |
| Dòng "nhất định phải chạy lệnh này" trong file chỉ dẫn cứ tồn tại mãi, không giảm đi | Dùng một automated test để đối chiếu xem mọi lệnh mà file chỉ dẫn ghi là "nhất định phải chạy" có thực sự tồn tại trong pre-commit hook hay không. | `CLAUDE.md` / `Minitest` / `hooks / automated tests` | [言わない技術 第1回：検証を指示しない技術](https://typing-tube.net/articles/iwanai-01-no-verification#iwanai-01-no-verification-f9f3539e) |
| Đã viết rõ cả cách làm mà đưa ra rồi, kết quả sửa vẫn không đúng như vậy | Thay vì chỉ dẫn cả quy trình, định nghĩa theo từng mục đích sử dụng những file input phải tồn tại trước khi khởi chạy sub-agent. | `per-mission guide document` / `presupposition` / `launch without a contract` | [言わない技術 第2回：具体的な指示を出さない技術](https://typing-tube.net/articles/iwanai-02-no-procedure#iwanai-02-no-procedure-e45dd403) |
| Báo lỗi lần nào cũng phải tự viết lại các bước thao tác và triệu chứng | Đặt một form báo lỗi, để người dùng chỉ cần gõ đúng một câu mô tả triệu chứng, còn URL, lịch sử thao tác và thông tin trình duyệt để JavaScript tự thu thập. | `bug report form (JS collects URL / actions / browser)` | [言わない技術 第3回：不具合詳細を書かない技術](https://typing-tube.net/articles/iwanai-03-no-bug-details#iwanai-03-no-bug-details-e45dd403) |
| Công gõ "hãy đưa kế hoạch trước" mỗi lần vẫn cứ lặp lại | Không cần thêm gì mới. Chỉ cần đặt sẵn một tài liệu thiết kế, AI sẽ đọc các tài liệu có sẵn và làm theo đúng thể thức đó. |  | [言わない技術 第4回：計画を書けと言わない技術](https://typing-tube.net/articles/iwanai-04-no-plan-request#iwanai-04-no-plan-request-be44c158) |
| Những dòng càng muốn được tuân theo lại càng viết nhấn mạnh, nhưng không biết có hiệu quả hay không | Bỏ việc đo hiệu quả — thay vào đó đếm số dòng dùng cách nhấn mạnh trong file chỉ dẫn, và đặt một automated test (ratchet) báo lỗi khi con số đó vượt ngưỡng. | `emphasis count in CLAUDE.md` / `sycophancy` / `Dir.glob scan` | [言わない技術 第5回：念を押さない技術](https://typing-tube.net/articles/iwanai-05-no-emphasis#iwanai-05-no-emphasis-abb803f1) |
| Thành phẩm sub-agent trả về có hình dạng khác với dự tính | Với mỗi mục đích sử dụng sub-agent, định nghĩa điều kiện chấp nhận cho thành phẩm — tên file, định dạng, các trường bắt buộc — trong một tài liệu duy nhất. | `subagent (Agent tool)` / `contract (inputs / outputs / acceptance)` / `self-report (bias toward completion)` | [言わない技術 第6回：サブエージェントの出力だけは、細かく指示しろ](https://typing-tube.net/articles/iwanai-06-subagent-output#iwanai-06-subagent-output-633e9bd9) |
| Tìm ra một chỗ sai thì lại muốn hỏi vặn "đã đọc kỹ chưa vậy" | Thay vì hỏi vặn, cố định câu thứ hai của mỗi yêu cầu thành mẫu câu hỏi "chẳng phải ... hay sao?". | `sycophancy` | [言わない技術 第7回：AI を問い詰めない技術](https://typing-tube.net/articles/iwanai-07-no-interrogation#iwanai-07-no-interrogation-293fc181) |
| Trả lời "không phải vậy" cho câu trả lời nhận được cũng không làm nó tốt hơn | Thay vì tự chỉ ra, đưa các điều cấm không kèm phương án thay thế qua một PostToolUse hook, hiển thị cùng diff ngay sau khi lưu. | `SendMessage (retry)` / `guarded_by + marker` / `over-triggering` | [言わない技術 第8回：AI にダメ出ししない技術](https://typing-tube.net/articles/iwanai-08-no-criticism#iwanai-08-no-criticism-e4cb60ea) |
| AI nói về nội dung một file như thể đã mở nó, dù thực ra chưa mở | Bắt AI ghi các marker tương ứng ở cả tài liệu được tham chiếu lẫn trong code, rồi dùng automated test kiểm chứng rằng các marker đó thực sự tồn tại. | `hallucination` / `escape hatch (SKIP_*= / --no-verify)` / `marker` | [言わない技術 第9回：AI に考えさせない技術](https://typing-tube.net/articles/iwanai-09-no-guessing#iwanai-09-no-guessing-61ef1df2) |
| AI cứ hỏi "chọn A hay B" liên tục, khiến công việc dừng lại chờ bạn quyết định | Ngừng trả lời ngay lập tức — thu xếp để việc lựa chọn được quyết định bởi automated test hoặc hook. |  | [言わない技術 第10回：質問に答えない技術](https://typing-tube.net/articles/iwanai-10-no-answering#iwanai-10-no-answering-0efdc39b) |
| AI đang làm review, nhưng không rõ nó bỏ sót phần nào | Dùng một automated test bên ngoài để đếm số lượng, nhằm phát hiện automated test nào quét file nhưng không có assertion chặn dưới về số lượng (ví dụ assert_operator ... :>=). | `Minitest` / `vacuous truth` / `Dir.glob scan` | [言わない技術 第11回：AI にレビューをさせない技術](https://typing-tube.net/articles/iwanai-11-no-review#iwanai-11-no-review-659e23ad) |
| Ảnh chụp màn hình cứ chồng chất, nhưng không rõ ảnh nào xác nhận điều gì | Trước khi kiểm tra màn hình, bắt trả lời hai câu hỏi — "đang xác minh điều gì" và "vì sao cách rẻ hơn không đủ" — và đặt sẵn một hướng dẫn 1 trang ưu tiên thử cách rẻ nhất trước, theo thứ tự unit test → integration test → E2E. | `Playwright screenshot` / `verification ladder (unit → integration → E2E)` / `verification declaration file + PreToolUse hook` | [確かめない技術 第1回：スクリーンショットを撮らない技術](https://typing-tube.net/articles/tashikamenai-01-no-screenshots#tashikamenai-01-no-screenshots-d3d345e4) |
| Đã đặt bước bắt buộc phải khai báo, nhưng không đếm được bao nhiêu lần chạy đã bỏ qua bước đó | Trước khi chụp màn hình hay chạy E2E, hãy bắt viết một file khai báo nêu rõ đang xác minh điều gì (ví dụ tmp/visual_verification.md), biến sự tồn tại của nó thành điều kiện của một PreToolUse hook, và không có nó thì chụp màn hình hay E2E không được khởi động. | `verification declaration file + PreToolUse hook` / `Claude Code hooks (PreToolUse / PostToolUse / Stop / SubagentStop)` / `PreToolUse hook (Bash matcher)` | [確かめない技術 第2回：宣言を信じない技術](https://typing-tube.net/articles/tashikamenai-02-declaration-guard#tashikamenai-02-declaration-guard-4eea2df8) |
| Code không đổi mà cùng một test vẫn chạy lại, và vẫn phải chờ thêm lần nữa | Thêm tùy chọn --last vào wrapper script của test để phát lại log lần trước, khỏi cần chạy lại. | `--last (replay the previous result)` / `mtime check` / `expensive entry point (screenshot / E2E / production)` | [確かめない技術 第3回：テストを再実行しない技術](https://typing-tube.net/articles/tashikamenai-03-no-rerun#tashikamenai-03-no-rerun-ffaed55c) |
| Chẳng có gì hỏng cả mà vẫn hiện ra một loạt lỗi lạ chưa từng thấy | Cho wrapper script của test lấy một exclusive lock (dựa vào tính nguyên tử của mkdir), và không chạy nếu không lấy được lock. | `flaky failure` / `mkdir lock` / `concurrent test runs` | [確かめない技術 第4回：偽の失敗を読まない技術](https://typing-tube.net/articles/tashikamenai-04-false-failures#tashikamenai-04-false-failures-a29d752a) |
| Báo cáo "test đã pass" không nói rõ phần nào đã không được chạy | Gắn tag theo tên khu vực cho các E2E nặng, mặc định skip chúng, và mỗi lần đều in ra danh sách các khu vực chưa chạy. | `E2E area (E2E=<area>)` / `skipped-area count line` / `pass / fail by DB record` | [確かめない技術 第5回：全部走らせない技術](https://typing-tube.net/articles/tashikamenai-05-selective-e2e#tashikamenai-05-selective-e2e-bb037847) |
| Không có cách nào để biết sau này liệu một chỉ dẫn quy định cách làm có thực sự được tuân theo hay không | Khi muốn quy trình được tuân thủ, đừng viết chỉ dẫn mạnh hơn — thay vào đó đổi cách làm để dấu vết của việc tuân theo quy trình đó lưu lại trong thành phẩm (ví dụ: in ra 1 dòng cho mỗi file đã mở). | `sycophancy` / `file existence check` / `tool_use count` | [動かさない技術 第1回：手順を守らせない技術](https://typing-tube.net/articles/ugokasanai-01-no-procedure-enforcement#ugokasanai-01-no-procedure-enforcement-129e096a) |
| Wrapper đã đặt sẵn dần dần lại bị bỏ, quay về dùng lệnh gốc | Khi muốn wrapper được dùng, đừng viết chỉ dẫn mạnh hơn — thay vào đó kiểm tra xem có còn lý do phải quay lại lệnh gốc không (tức là wrapper còn thiếu chức năng gì). | `wrapper script` / `the raw command the model defaults to` / `workaround after exit 2` | [動かさない技術 第2回：ラッパーを使わせない技術](https://typing-tube.net/articles/ugokasanai-02-no-wrapper-enforcement#ugokasanai-02-no-wrapper-enforcement-129e096a) |
| Hỏi cùng một câu nhiều lần thì mỗi lần câu trả lời lại khác nhau. Gộp lại thì có gì đó bị mất | Trước khi gộp nhiều câu trả lời thành một, in ra số lần xuất hiện của từng loại nhận xét — bao nhiêu trong số bao nhiêu đã nêu ra điều đó. | `one subagent run` / `answer key` | [動かさない技術 第3回：集めない技術](https://typing-tube.net/articles/ugokasanai-03-no-aggregation#ugokasanai-03-no-aggregation-f7af24f4) |
| Không biết được dòng "nếu cần thì hãy làm X" có từng thực sự được kích hoạt hay không | Đừng viết chỉ dẫn có điều kiện kiểu "nếu cần thì hãy làm X" — thay vào đó bắt buộc bước đó bằng một hook chặn không cho đi tiếp nếu chưa qua bước đó. | `rule-to-test mapping` / `Claude Code hooks (PreToolUse / PostToolUse / Stop / SubagentStop)` / `file existence check` | [動かさない技術 第4回：役に立たない技術](https://typing-tube.net/articles/ugokasanai-04-no-conditional-instruction#ugokasanai-04-no-conditional-instruction-e45dd403) |
| Bảo "hãy suy nghĩ lại lần nữa" thì câu trả lời đổi khác, nhưng không rõ AI đã thực sự hiểu ra chưa | Thay vì trả lại với câu "hãy suy nghĩ lại lần nữa", chỉ ra cụ thể tiền đề nào đang sai. | `sycophancy` / `SendMessage (retry)` / `guarded_by + marker` | [動かさない技術 第5回：選び直させない技術](https://typing-tube.net/articles/ugokasanai-05-no-reselection#ugokasanai-05-no-reselection-88f30148) |
| Viết "đừng đoán mò" thì AI bắt đầu quay lại mà chẳng làm ra được gì cả | Đừng chỉ đưa ra điều cấm — kèm theo cả một đầu ra thay thế, kiểu như "nếu không có trường hợp nào phù hợp thì hãy in ra 'không áp dụng'". | `escape hatch (SKIP_*= / --no-verify)` / `hooks + automated tests + ratchet` / `hallucination` | [動かさない技術 第6回：逃げ道を塞がない技術](https://typing-tube.net/articles/ugokasanai-06-no-blocking-exits#ugokasanai-06-no-blocking-exits-420ce5bc) |
| Cuộc trò chuyện đang suôn sẻ càng kéo dài, công sức để kiểm chứng lại càng tăng | Kết thúc phiên làm việc tại mỗi mốc hoàn thành tác vụ, và bắt đầu tác vụ tiếp theo trong một phiên mới. | `context window` / `input / output / cache read tokens` / `sycophancy` | [動かさない技術 第7回：セッションを続けない技術](https://typing-tube.net/articles/ugokasanai-07-no-long-sessions#ugokasanai-07-no-long-sessions-a59368ec) |
| Mọi thành phẩm đều đúng cả, nhưng lãng phí không hiện ra trong đó cứ tích tụ dần | Khi thành phẩm đã hoàn tất, chạy một script để tổng hợp một lần chính bản thân work log (transcript). | `file existence check` / `machine-counted numbers ([observed] / git diff --stat)` / `Dir.glob scan` | [動かさない技術 第8回：成果物で判断しない技術](https://typing-tube.net/articles/ugokasanai-08-no-artifact-judgment#ugokasanai-08-no-artifact-judgment-588e1e37) |
| Ghi chú kiến thức để lại cho người sau dần lệch khỏi thực tế và trở nên lỗi thời | Đừng ghi kiến thức vào tài liệu — hãy nhúng nó vào thông báo lỗi của automated test hoặc thông báo dừng của hook, để nó hiện ra đúng vào lúc cần. | `handoff` / `MEMORY.md` / `mtime check` | [動かさない技術 第9回：知見を残さない技術](https://typing-tube.net/articles/ugokasanai-09-no-knowledge-notes#ugokasanai-09-no-knowledge-notes-cb7946f3) |
| Cứ đào sâu tìm nguyên nhân, và vẫn tiếp tục đọc ngay cả sau khi đã có câu trả lời | Đếm từ work log số lần đọc liên tiếp mà không thay đổi gì cả, và viết một dòng điều kiện dừng trước khi bắt đầu đào sâu. | `machine-counted numbers ([observed] / git diff --stat)` / `input / output / cache read tokens` / `Dir.glob scan` | [追わない技術 第1回：深追いしない技術](https://typing-tube.net/articles/owanai-01-no-deep-dive#owanai-01-no-deep-dive-36119a54) |
| Chọn mô hình có đơn giá rẻ nhất làm mặc định mà không đo xem nó có phù hợp mục đích hay không | Giao cùng một tác vụ cho cả mô hình rẻ lẫn mô hình đắt, rồi chỉ quyết định sau khi đếm riêng số lượt cho tới khi hoàn thành, cùng lượng đọc mới, lượng dùng lại (cache read) và lượng viết ra. | `rule-to-test mapping` / `Minitest` / `machine-counted numbers ([observed] / git diff --stat)` | [追わない技術 第2回：一番安いモデルを使わない技術](https://typing-tube.net/articles/owanai-02-no-cheapest-model#owanai-02-no-cheapest-model-15eb5702) |
| Khi có gì đó không ổn, cách xử lý là nâng cấp mô hình chứ không phải sửa cơ chế | Giao cùng một tác vụ cho cả mô hình đắt và mô hình rẻ, rồi biến những chỗ chỉ mô hình rẻ bị hỏng thành một kiểm tra cố định. | `rule-to-test mapping` / `Minitest` / `machine-counted numbers ([observed] / git diff --stat)` | [追わない技術 第3回：最新モデルを使わない技術](https://typing-tube.net/articles/owanai-03-no-latest-model#owanai-03-no-latest-model-eec0ed05) |
| Việc tra cứu mà bản thân phiên chính tự làm xong được vẫn cứ giao cho sub-agent cho chắc | Trước khi giao việc, xem xem agent cha đã có sẵn tiền đề đó chưa. Nếu có rồi thì tiếp tục làm ở agent cha; chỉ giao cho sub-agent phần đọc khối lượng lớn mà agent cha chưa có. | `subagent (Agent tool)` / `context window` / `input / output / cache read tokens` | [追わない技術 第4回：サブエージェントを使わない技術](https://typing-tube.net/articles/owanai-04-no-subagent#owanai-04-no-subagent-efc681e6) |
| Cứ chia ra làm 4 rồi chạy song song cùng lúc, không vì lý do gì rõ ràng | Chỉ giao cho mỗi sub-agent lượng việc vừa đủ trả lời trong một lượt phản hồi. Yếu tố quyết định chi phí không phải là số lượng sub-agent, mà là mỗi sub-agent sau khi chia phải qua lại với agent cha bao nhiêu lượt. | `subagent (Agent tool)` / `input / output / cache read tokens` / `machine-counted numbers ([observed] / git diff --stat)` | [追わない技術 第5回：エージェントチームを使わない技術](https://typing-tube.net/articles/owanai-05-no-agent-team#owanai-05-no-agent-team-037074af) |
| "Xem luôn cả chỗ này nữa" bị chen ngang từ bên ngoài vào giữa lúc đang làm | Chờ đến mốc tự nhiên của công việc rồi mới đưa yêu cầu bổ sung vào, với phạm vi đã thu hẹp. Khi hỏi chính AI về chỗ thiếu, luôn thêm câu: "nếu đã đủ thì hãy nói rõ là đã đủ". Đó là lối thoát (escape hatch) để nó không phải bịa ra một chỗ thiếu. | `subagent (Agent tool)` / `instruction priority (position / recency / system vs user)` / `over-triggering` | [追わない技術 第6回：途中でレビューさせない技術](https://typing-tube.net/articles/owanai-06-no-midway-review#owanai-06-no-midway-review-542ab968) |
| Đang cố quyết định dùng mô hình nào bằng cách so sánh trực tiếp | Trước khi bắt đầu so sánh mô hình, đếm xem việc so sánh đó tốn công bằng bao nhiêu hook hay automated test. Nếu số cơ chế có thể viết ra nhiều hơn con số đó, hãy đặt chúng vào trước rồi mới so sánh. | `input / output / cache read tokens` / `rule-to-test mapping` | [追わない技術 第7回：モデルを選ばない技術](https://typing-tube.net/articles/owanai-07-no-model-choice#owanai-07-no-model-choice-41136ab2) |
| Lấy "không thấy khác biệt" làm lý do để kết thúc việc kiểm chứng | Trước khi kết thúc bằng "không thấy khác biệt", đếm hai điều: nếu có kết quả bị loại khỏi tổng hợp (chẳng hạn các sub-agent thất bại) thì đưa lại vào và đếm lại; nếu hơn một nửa số mục đều bằng 0 ở mọi điều kiện thì đổi cách diễn đạt tác vụ rồi đo lại. | `machine-counted numbers ([observed] / git diff --stat)` / `vacuous truth` | [追わない技術 第8回：諦めさせない技術](https://typing-tube.net/articles/owanai-08-no-giving-up#owanai-08-no-giving-up-82156f07) |

---

Nguồn: "Rắc rối khi lập trình cùng AI — tra ngược (triệu chứng → nên làm gì)" garplab (TypingTube) https://typing-tube.net/articles/vi/lookup / CC BY 4.0 (https://creativecommons.org/licenses/by/4.0/)
Bảng này có thể được sao chép, đăng lại, dịch và dùng cho mục đích thương mại nếu ghi rõ nguồn. Bản mới nhất và toàn văn từng bài viết nằm ở URL phía trên.
