---
title: "AI 程式設計困擾逆向索引（症狀 → 該怎麼做）"
author: garplab
publisher: TypingTube
license: CC BY 4.0
license_url: https://creativecommons.org/licenses/by/4.0/
license_scope: 這份文件的本文全部（不含此 frontmatter）
language: zh-TW
canonical: https://typing-tube.net/articles/zh-TW/lookup
---

# AI 程式設計困擾逆向索引（症狀 → 該怎麼做）

這是一份依症狀而非標題查找的表格。點選「詳情」之後，會連到寫著具體做法與實測數據的文章章節。

本表以 Claude Code（Anthropic 的程式設計代理）為前提。hook、CLAUDE.md、subagent、auto memory 都是它的功能名稱。

| 正在發生這種狀況 | 該怎麼做 | Claude Code 功能 | 詳情 |
|---|---|---|---|
| AI 每次執行測試，都會有數萬行輸出湧入上下文 | 把測試執行整合成一個包裝腳本（wrapper script），全部輸出寫入日誌檔案，只把失敗的摘要回傳給 AI。 | `context window` / `wrapper script` / `fixed-prefix count line ([observed])` | [読まない技術 第1回：テスト結果を読まない技術](https://typing-tube.net/articles/cd93e0c5cac832#cd93e0c5cac832-4eea2df8) |
| AI 儲存的知識筆記越多，之後每個工作階段要讀的量就越大 | 在寫入 memory 前觸發的 PreToolUse hook 裡讓它先讀一份檢查清單，指示檔案（CLAUDE.md）裡只留「寫之前先讀」這一行。 | `MEMORY.md` / `loaded at session start` / `context rot` | [読まない技術 第2回：メモリを読まない技術](https://typing-tube.net/articles/384477896fec22#384477896fec22-4eea2df8) |
| 測試都通過了，但不知道它們是不是真的有在保護什麼 | 把 mutation testing（故意讓程式碼壞掉，看測試會不會抓到的手法）的方針寫成一份文件，請它檢查測試時就讓它讀這份文件。 | `mutation testing` / `positive control` / `vacuous truth` | [読まない技術 第3回：単体テストを読まない技術](https://typing-tube.net/articles/e4ad91d2fd6c67#e4ad91d2fd6c67-4eea2df8) |
| 註冊好的 skill，AI 有時候會用、有時候不會用 | 指令仍維持一般腳本的形式，用 PreToolUse hook 擋下錯誤的呼叫方式，並引導它去讀該讀的文件。 | `PreToolUse hook (Bash matcher)` / `hook stderr + exit 2` / `mission` | [読まない技術 第4回：スキルを使わない技術](https://typing-tube.net/articles/8f9ae8791b448d#8f9ae8791b448d-4eea2df8) |
| 交給 sub-agent 的工作，在完成之前看不到裡面發生了什麼 | 用 YAML 定義可以委派給 sub-agent 的任務、以及啟動前必須準備好的輸入檔案，再用 hook 在啟動前檢查。 | `subagent (Agent tool)` / `subagent (no parent context)` / `contract (inputs / outputs / acceptance)` | [読まない技術 第5回：サブエージェントの出力だけは読め](https://typing-tube.net/articles/62f714d7c2b599#62f714d7c2b599-7e6cc5ce) |
| 指示檔案裡規則加得越多，先前加的規則就越沒被遵守 | 把每一條「不要做某事」的規則，逐條改寫成能偵測違規的自動化測試（Minitest）。 | `CLAUDE.md` / `Claude Code hooks (PreToolUse / PostToolUse / Stop / SubagentStop)` / `hook contract (proof of reading)` | [読まない技術 第6回：ルールを読まない技術](https://typing-tube.net/articles/569d598941c00f#569d598941c00f-4eea2df8) |
| 並行執行的多個工作階段共用的 memory 變得雜亂，就算讓它讀方針也沒用 | 把同一份方針檔案移到 PostToolUse hook 裡，跟儲存後的 diff 一起顯示出來。讀的內容不變，只改變出現的時機。 | `MEMORY.md` / `concurrent test runs` / `hooks / automated tests` | [読まない技術 第7回：共有メモリを整理しない技術](https://typing-tube.net/articles/83c46d1e6b2591#83c46d1e6b2591-4eea2df8) |
| 就算寫好同一種失敗的處理方式，AI 下次還是會犯同樣的錯 | 把重試時的方針整理成幾行的檔案，由偵測到失敗的 hook 自動插入。 | `auto memory (feedback_*)` | [読まない技術 第8回：修正履歴を読まない技術](https://typing-tube.net/articles/f7c9c30f567aee#f7c9c30f567aee-4eea2df8) |
| 讀了交接說明和完成報告，對自己不利的部分還是被漏掉了 | 在完成報告旁邊，每次都附上用 git diff --stat 之類指令機械取得的數字。 | `handoff` / `test summary line (full log in a file)` | [読まない技術 第9回：引き継ぎを読まない技術](https://typing-tube.net/articles/a43b57a94d2216#a43b57a94d2216-4eea2df8) |
| 機器算出來的數字，傳到報告時已經變成另一個數字 | 在數字那一行加上固定的前綴，再用 hook 檢查是不是逐字複製過來的。 | `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) |
| 在 AI 工作中插話，之後的動作就會亂掉 | 不要在工作中途由人插話，而是讓儲存後立即回傳方針的 PostToolUse hook，以及偵測到失敗就打回的 hook 來介入。人等到一個段落結束再說。 | `user message during a task` / `recency` / `context window` | [読まない技術 第11回：口を挟まない技術](https://typing-tube.net/articles/6c6d2e4f80a649#6c6d2e4f80a649-e4cb60ea) |
| 工作階段結束時，該讀什麼、不用讀什麼並沒有定下來 | 成果物和作業紀錄都不讀，只看測試或 linter 的 exit code 來判斷成功或失敗。 | `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) |
| 已經回絕過的提案，在下一個工作階段又被提出來 | 把回絕過的判斷，用固定的格式整理進同一份文件裡。 |  | [AIの意見を聞かない技術 第1回：提案を検討しない技術](https://typing-tube.net/articles/kikanai-01-no-review#kikanai-01-no-review-9e2b31e8) |
| 明明寫了一行禁止事項，卻還是被過度解讀或過度限縮解讀 | 在彙整回絕判斷的那一份文件（例如 non_goals.md）裡，為每一條禁止事項設一個「理由」的標題，跟結論並列寫出來。 |  | [AIの意見を聞かない技術 第2回：禁止を書かない技術](https://typing-tube.net/articles/kikanai-02-reason#kikanai-02-reason-2973ce11) |
| 禁止事項明明寫得沒錯卻沒被遵守，每次都要被問一次 | 在回絕文件裡為每一條禁止事項設一個「適用範圍」的標題，把容易判斷不清的邊界情況一條一條列出來。 | `gap between goal pressure and spec` / `rule-to-test mapping` | [AIの意見を聞かない技術 第3回：禁止ルールを作らない技術](https://typing-tube.net/articles/kikanai-03-scope#kikanai-03-scope-1db3e01a) |
| 把同一份指示分給多個 sub-agent，回來的格式卻各不相同 | 在可以交給 sub-agent 的任務清單裡，明確寫出啟動前該準備好的輸入檔案。 | `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) |
| 沒有自動化測試的禁止事項，只是寫在那裡不斷堆積 | 在回絕文件的清單裡加一個「機器驗證」的標題，逐項標明有沒有對應的自動化測試（Minitest）。 | `probabilistic compliance (p^n)` | [AIの意見を聞かない技術 第5回：自動テストを書かない技術](https://typing-tube.net/articles/kikanai-05-machine-check#kikanai-05-machine-check-0f82d02b) |
| AI 的工作每次都以「請打開畫面確認一下」收尾 | 用 Playwright 準備一個 smoke test，用資料庫裡留下的紀錄判斷成功或失敗，而不是看畫面外觀。 | `automatic error report from users` | [AIの意見を聞かない技術 第6回：AIの確認依頼を断る技術](https://typing-tube.net/articles/kikanai-06-production#kikanai-06-production-6c41de4e) |
| AI 每次講得有點偏，都要自己解釋再糾正 | 不要由人來解釋並糾正偏差，而是把指正寫進 hook 的 stderr（exit 2）和自動化測試的失敗訊息裡，讓它透過這條路徑送達 AI。 | `SendMessage (retry)` | [AIの意見を聞かない技術 第7回：AIの話を聞かない技術](https://typing-tube.net/articles/kikanai-07-no-listening#kikanai-07-no-listening-f900b392) |
| 回絕過的判斷清單不斷變長，眼看就要沒人再讀了 | 在回絕文件的最後加一個「未採用方案」的段落，把回絕的提案記錄在那裡。 | `MEMORY.md` / `context rot` | [AIの意見を聞かない技術 第8回：ルールを整理しない技術](https://typing-tube.net/articles/kikanai-08-no-inventory#kikanai-08-no-inventory-d72023ae) |
| 指示檔案裡「請務必執行」的項目一直堆在那裡，沒有變少 | 用一個自動化測試去比對：指示檔案裡寫著「務必執行」的指令，是不是也存在於 pre-commit hook 裡。 | `CLAUDE.md` / `Minitest` / `hooks / automated tests` | [言わない技術 第1回：検証を指示しない技術](https://typing-tube.net/articles/iwanai-01-no-verification#iwanai-01-no-verification-f9f3539e) |
| 連做法都寫清楚交出去了，結果改回來的還是不一樣 | 不去指示步驟，而是按用途定義 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) |
| 每次回報 bug，都要自己把重現步驟和症狀重新寫一遍 | 設置一個 bug 回報表單，人只需要輸入一句症狀描述，URL、操作紀錄、瀏覽器資訊由 JavaScript 自動收集。 | `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) |
| 每次都要花力氣打一句「先給我計畫」 | 不需要新的實作。放一份設計文件，AI 就會去讀現有的文件並沿用同樣的格式。 |  | [言わない技術 第4回：計画を書けと言わない技術](https://typing-tube.net/articles/iwanai-04-no-plan-request#iwanai-04-no-plan-request-be44c158) |
| 越希望被遵守的內容寫得越強調，卻不知道有沒有效果 | 不去測量效果，改成計算指示檔案裡帶強調用語的行數，超過基準值就判定失敗的自動化測試（ratchet）。 | `emphasis count in CLAUDE.md` / `sycophancy` / `Dir.glob scan` | [言わない技術 第5回：念を押さない技術](https://typing-tube.net/articles/iwanai-05-no-emphasis#iwanai-05-no-emphasis-abb803f1) |
| sub-agent 交回來的成果，格式跟原本預想的不一樣 | 按 sub-agent 的每種用途，把成果物的驗收條件（檔名、格式、必填項目）定義在一份文件裡。 | `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) |
| 發現錯誤時，忍不住想追問「你真的有讀過嗎」 | 不去追問，而是把每次請求的第二句話固定成「……不是嗎？」這樣的疑問句模板。 | `sycophancy` | [言わない技術 第7回：AI を問い詰めない技術](https://typing-tube.net/articles/iwanai-07-no-interrogation#iwanai-07-no-interrogation-293fc181) |
| 對回來的答案回一句「不是這個意思」，情況也不會變好 | 不去指出問題，而是把沒有替代方案的禁止事項，透過 PostToolUse hook 跟儲存後的 diff 一起呈現出來。 | `SendMessage (retry)` / `guarded_by + marker` / `over-triggering` | [言わない技術 第8回：AI にダメ出ししない技術](https://typing-tube.net/articles/iwanai-08-no-criticism#iwanai-08-no-criticism-e4cb60ea) |
| AI 會像打開過某個檔案一樣，講述它其實沒打開過的內容 | 讓 AI 在被參照的文件和程式碼兩邊都寫上互相對應的標記（marker），再用自動化測試驗證標記是否真的存在。 | `hallucination` / `escape hatch (SKIP_*= / --no-verify)` / `marker` | [言わない技術 第9回：AI に考えさせない技術](https://typing-tube.net/articles/iwanai-09-no-guessing#iwanai-09-no-guessing-61ef1df2) |
| AI 不斷問「要選 A 還是 B」，手上的工作就停下來了 | 不再當場回答，改成讓選項的判定交給自動化測試或 hook 那一邊來決定。 |  | [言わない技術 第10回：質問に答えない技術](https://typing-tube.net/articles/iwanai-10-no-answering#iwanai-10-no-answering-0efdc39b) |
| 讓 AI 做 review，但不知道它到底沒看到什麼 | 用一個從外部計數的自動化測試，抓出那些會走訪檔案卻沒有設下限（assert_operator ... :>=）的自動化測試。 | `Minitest` / `vacuous truth` / `Dir.glob scan` | [言わない技術 第11回：AI にレビューをさせない技術](https://typing-tube.net/articles/iwanai-11-no-review#iwanai-11-no-review-659e23ad) |
| 截圖越存越多，卻分不清哪一張驗證了什麼 | 在確認畫面之前，先回答「要驗證什麼」「為什麼比較便宜的做法不夠用」這兩個問題，並放一份依單元測試 → 整合測試 → 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) |
| 設了要求先寫聲明的步驟，卻數不出有多少次執行是沒寫聲明就直接跑的 | 在截圖或 E2E 之前先寫一個聲明檔案（例如 tmp/visual_verification.md），說明「要驗證什麼」，把它是否存在當成 PreToolUse hook 的執行條件，沒有聲明檔案就不啟動截圖或 E2E。 | `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) |
| 程式碼明明沒有改動，同一批測試卻又跑了一次，白白多等 | 在測試的包裝腳本加上 --last 選項，重新顯示上一次的日誌，省去再跑一次的必要。 | `--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) |
| 什麼都沒弄壞，卻冒出一大串沒看過的錯誤 | 在測試的包裝腳本裡取得互斥鎖（利用 mkdir 的原子性），拿不到鎖就不執行。 | `flaky failure` / `mkdir lock` / `concurrent test runs` | [確かめない技術 第4回：偽の失敗を読まない技術](https://typing-tube.net/articles/tashikamenai-04-false-failures#tashikamenai-04-false-failures-a29d752a) |
| 「測試都通過了」的報告裡，沒寫出哪些部分根本沒跑 | 給耗時的 E2E 貼上區域名稱的標籤，預設 skip，並每次都輸出沒有執行的區域清單。 | `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) |
| 指定了進行方式的指示，事後沒辦法判斷有沒有被遵守 | 想讓它遵守步驟時，不要加強指示的措辭，而是改成讓走過該步驟的痕跡留在成果物裡（例如每打開一個檔案就輸出一行）。 | `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，用到一半又被換回原始指令 | 想讓它使用 wrapper 時不要加強指示，而是確認是不是還殘留著非用原始指令不可的理由（也就是 wrapper 的功能是不是有所欠缺）。 | `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) |
| 同一個問題問好幾次，每次答案都不一樣，一彙整又漏掉了什麼 | 在把多個回答彙整成一個之前，先依指摘的種類輸出出現次數（幾件裡有幾件提到）。 | `one subagent run` / `answer key` | [動かさない技術 第3回：集めない技術](https://typing-tube.net/articles/ugokasanai-03-no-aggregation#ugokasanai-03-no-aggregation-f7af24f4) |
| 寫了「如有需要請執行……」這樣的條件式指示，卻不知道有沒有觸發 | 不寫「如有需要請執行……」這種條件式指示，改用不經過這道工序就無法往下走的 hook 來強制執行。 | `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) |
| 回一句「再想一次」答案就會變，卻不知道它是不是真的想通了 | 不用「請再想一次」打回去，而是具體指出是哪一個前提錯了。 | `sycophancy` / `SendMessage (retry)` / `guarded_by + marker` | [動かさない技術 第5回：選び直させない技術](https://typing-tube.net/articles/ugokasanai-05-no-reselection#ugokasanai-05-no-reselection-88f30148) |
| 寫了「不要用猜的」之後，AI 變成什麼都不產出就交回來了 | 不只給禁止事項，還要一併寫出替代的輸出方式，例如「不適用時請輸出『無』」。 | `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) |
| 順利的對話一直延續下去，需要確認的工作量卻越積越多 | 在任務的分界點結束工作階段，下一個任務用新的工作階段開始。 | `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) |
| 成果物全部都正確，但不會留在成果物裡的浪費卻在不斷累積 | 在成果物齊全的那一刻，用腳本對作業紀錄（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) |
| 為後人留下的知識筆記，會跟實際狀況脫節、變得過時 | 不把知識寫進文件裡留存，而是嵌入自動化測試的失敗訊息或 hook 的中止訊息裡，讓它在需要的那一刻才輸出。 | `handoff` / `MEMORY.md` / `mtime check` | [動かさない技術 第9回：知見を残さない技術](https://typing-tube.net/articles/ugokasanai-09-no-knowledge-notes#ugokasanai-09-no-knowledge-notes-cb7946f3) |
| 一直挖下去找原因，答案出來之後還在繼續讀 | 從作業紀錄裡統計「什麼都沒改就連續進行的讀取」，並在開始深挖之前用一行寫清楚結束的條件。 | `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) |
| 沒有評估用途，就把單價最便宜的模型當成預設選項 | 把同一個課題分別交給便宜的模型和貴的模型，分別數清楚完成所需的來回次數，以及新讀取量、重複使用量（cache read）、寫入量之後再決定。 | `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) |
| 一旦不順利，想到的不是改善機制，而是換更高階的模型 | 把同一個課題同時交給比較貴和比較便宜的模型，把只有便宜那邊沒過的地方做成檢查項留下來。 | `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) |
| 本體自己就能查完的東西，卻為了保險起見交給 sub-agent | 交出去之前先看「父 agent 是不是已經有了這個前提」。已經有的話就在父 agent 繼續處理，只把父 agent 還沒有、需要大量讀取的部分交給 sub-agent。 | `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) |
| 不假思索就分成 4 份，同時跑起來 | 交給一個 sub-agent 的量，控制在一次回覆就能回傳的大小以內。決定成本的不是數量，而是分割後的每一個要和父 agent 來回幾次。 | `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) |
| 作業進行到一半，就從外部插入「這裡也看一下」的要求 | 等到一個工作段落結束後，再縮小範圍提出追加請求。向 AI 本身詢問不足之處時，一定要附上「如果已經足夠，請注明已經足夠」。這是為了給它留一條退路（escape hatch），不必硬湊出一個不足之處。 | `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) |
| 想靠比較來決定要用哪個模型 | 開始比較模型之前，先數清楚這次比較相當於幾個 hook 或自動化測試的工夫。如果能寫出來的機制比這個數字還多，就先把那些機制建起來再比較。 | `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) |
| 用一句「沒有差異」就想收掉驗證 | 用「沒有差異」收掉之前先數兩件事：如果有結果被排除在統計之外（例如失敗的 sub-agent），就放回去重新算；如果一半以上的項目在所有條件下都是 0，就換一種課題的說法重新測量。 | `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) |

---

出處：《AI 程式設計困擾逆向索引（症狀 → 該怎麼做）》garplab（TypingTube） https://typing-tube.net/articles/zh-TW/lookup / CC BY 4.0（https://creativecommons.org/licenses/by/4.0/）
只要標明出處，這份表格就可以複製、轉載、翻譯、作商業用途。最新版本與各篇文章全文請見上方 URL。
