RCF-099:「憑記憶斷言」家族 meta 收斂規則 + 獨立驗證層 + 旗標 logging
日期:2026-06-21 觸發條件:條件 1(新增 HARD STOP)+ 條件 4(修改核心執行步驟)→ RCF-084 全 repo 觸點掃描 作業模式:🎯 策略 / 方案多輪比較(規則式 vs agent 式對打) 來源:tasks.md L213 評估;Tim 五輪 gate(含「全面盤點檢討,不要想到什麼才做什麼」直接升規)後選「完整」
背景:評估從「加規則」翻轉為「收斂規則 + 補驗證層」
L213 原問「憑記憶斷言緩解:規則式 vs agent 式對打」。前四輪評估我自己重蹈該家族的病(A→C 組合→D 來源欄,逐輪「想到什麼加什麼」),第五輪 Tim「全面盤點」後做全 repo 觸點掃描才看到全貌:
全面盤點關鍵發現
- 規則防線已飽和:針對此失效家族的既有 RCF 至少 7 條——RCF-006(五維度)/ RCF-010(缺口導向收斂)/ RCF-035(已讀清單先行)/ RCF-036(Q7-Q11 格式化)/ RCF-038(已讀清單強制完整讀取)/ RCF-039(先列應讀再標)/ RCF-060(分析模式禁壓縮摘要)+ IAUD 合規層①+Q7+RCF-070/082/084。
- 仍復發:IMP-111 ≥16 次、IMP-166/177 跨 14 領域(improvements.md 全掃 22 處)。~10 道規則未根治。
- 系統早有 pending 正解:improvements.md 多 session「📋 升規待確認:強烈建議收斂為通用 meta 規則取代逐領域 HARD STOP」。
- 真缺口是「驗證層為零」:HQ 規則層極厚、獨立驗證層為零,唯一攔截=Tim 手動 gate。
→ 結論翻轉:不該再加第 8 條逐領域規則(含我自己推的「方案 D 來源欄」);應 (1) 收斂為 1 條 meta 規則 (2) 補唯一真缺口「獨立驗證層」(3) 旗標問題先 logging 再診斷。
三方案對打結論
| 方案 | 判定 | 理由 |
|---|---|---|
| 規則式 A(散文)/ D(來源欄結構) | ❌ 撤回 | = 第 8 條逐領域 HARD STOP,正是 improvements.md 判定無效的模式;7 條已飽和 |
| meta 收斂規則 | ✅ 主推(治本) | 系統 pending 正解;1 條取代逐領域,新缺口歸入不再新增 |
| agent 式 B 窄觸發 | ✅ 補驗證層 | 唯一真新層;限對外/SoT/不可逆;父傳檔路徑給唯讀 sub-agent 驗 claim 真偽 |
| 機械式(soplint) | ❌ | 「斷言有無工具支撐」是對話行為非檔案狀態,靜態查不到 |
| 維持現狀 | 兜底 | Tim gate + rigor loop 為上線前偵測層 |
兩失效模式切分(方案配對關鍵)
- Mode 1 漏讀(沒讀就斷言,最高頻)→ meta 規則「斷言須對應本次工具調用、無對應標【未驗證假設】」攔截。
- Mode 2 讀錯/灌水(讀了但過度宣稱)→ B 窄觸發 claim 驗證器(重讀對應檔驗矛盾)。
落地內容(三工作流)
(1) meta 收斂規則(CLAUDE.md 新 HARD STOP「查照第一輪窮舉 meta 規則(收斂層)」)
單一治本原則:「查照第一輪即結構化框架窮舉;任何現況/事實斷言必須對應本次對話實際工具調用,無對應→標【未驗證假設】;涉 SoT/規則/散落清單變更時,全 repo grep 為查照階段交付物(非執行階段)。」
- 既有 RCF-035/036/038/039/060 + IAUD①/Q7 + RCF-071/084 全 repo 掃描要求 → 皆為本 meta 規則「實例」;新缺口歸入本規則,不再新增逐領域 HARD STOP。
- 既有 RCF 為歷史決策記錄(不刪),但操作層以本 meta 規則為單一治本來源。
(2) 獨立驗證層(B 窄觸發)
對外交付 / SoT 變更 / 不可逆操作三類高風險查照,執行前可觸發「claim 驗證 sub-agent」:父傳(斷言 + 對應檔路徑)→ 唯讀 sub-agent 重讀驗真偽。治 Mode 2。
(3) 旗標 logging(knowledge-hook.py)
新增 _pending_flag.log(gitignore,runtime log)記每次 TOUCH/UNLINK + prompt 前 40 字 + 時間 → 實證旗標再生源,取代憑記憶推測。先 logging 後修(殘留未驗證點:Stop-hook 再呼叫是否走 UserPromptSubmit 重建旗標 → 待 log 累積後判定)。
影響範圍(RCF-084 觸點)
- CLAUDE.md:新 HARD STOP meta 規則 section + 快速索引 +1 列 + 版本 v4.1→v4.2
- knowledge-hook.py:flag logging(已測試通過)
- 既有 RCF-035/036/038/039/060:歷史記錄不動,操作層歸入 meta 規則
- 部門 CLAUDE.md:收尾/查照規則指針化自動繼承;主檔 meta 規則為 HARD STOP → 同步規則觸發(多數指針化)
- rejected-evaluations.md:方案 D(來源欄)+ 散文規則 A 加碼 → 記為否決
- tasks.md L213 [x]
信念變更
- from:「憑記憶斷言=缺規則 → 加規則」→ to:「規則已飽和(7+ 條仍復發 16 次)→ 收斂為 1 條 meta 規則 + 補『驗證層』才是真缺口」
- from:「規則式 vs agent 二選一」→ to:「meta 規則治 Mode 1(漏讀)+ agent 窄觸發治 Mode 2(讀錯),互補」
- trigger:Tim「全面盤點不要想到什麼才做什麼」+ 全 repo 掃描揭露規則飽和 + 系統 pending 正解
- 信心変化:+(治本方向從擴張轉收斂,對齊系統累積學習);自評:本評估前四輪自身即犯該家族病,第五輪全掃才收斂,再證 meta 規則之必要
2026-06-22 補記:收斂雙向判準(IMP-180,Tim 親自指出)
觸發:條件 1(修改 HARD STOP meta 規則)。不另鑄新 RCF 號——遵本規則自身「不為本失效家族再新增逐領域 HARD STOP」反碎片化哲學,以修記方式併入。
缺口(IMP-180)
本規則原文「輪數不是收斂依據」(RCF-010 沿用、CLAUDE.md:641)為單向表述:原意禁「用輪數判『已收斂可停』」。但 2026-06-22 L40-L44 SEO 系列,Claude 反向誤用——拿「已修正 N 次/不再加輪/已很嚴謹」當停止藉口。實證打臉:被 Claude 自評「收斂」後 Tim 每次追問都揪出真缺失(72% 高估→校準 36%;「≈0% 創作」單篇外推→58% 需起草;「36% 免簽」→168/168 開頭無標記、carve-out 100% 必要)。根因=Claude 對「自己已收斂」的自評不可靠(連 5 輪誤判),且此自評誤判在「Tim 不追問」的任務會靜默發生(無人 gate)。
修正(寫入 CLAUDE.md:641 後「收斂雙向判準」子條 + AGENTS.md 鏡像)
- 判據=正確性(真缺失歸零),非輪數(雙向:既不判「可停」、也不當「停止藉口」)。
- 宣告收斂時,承重斷言必須已『工具驗證』(grep/read/curl/實跑)而非自評——不論 Tim 是否追問(堵「自評收斂、停太早」根因,非只補 Tim-gate 反應式路徑)。
- 無工具可驗者(純判斷)→ 明標「判斷非可驗事實」+ 換角度重檢前提。
- Tim 再追問=預設「重新驗證承重斷言」,非「重述前結論/說明判斷依據」;原 RCF-010「不重跑全套」僅在承重斷言已工具驗證且零缺失時成立。
- 適用範圍=五維度「複雜任務判斷」表中需書面輸出者(簡單任務不在此列)。
- 與獨立驗證層 B 互補:B 治「讀錯/灌水」(Mode 2),本條治「自評收斂、停太早」。
自我實證(recursive)
本補記的評估自身歷 5 輪查照(v1→v5),每輪都以工具驗證(非自評)揪出真缺失:v2 補「Tim 追問重驗」但仍依賴自評(承重缺失)→ v3 改「任何收斂宣告須工具驗證」→ v4 補範圍對齊 + B 互補 → v5 實讀 CLAUDE.md:644 表發現 v4 範圍標籤「SoT/不可逆/評估型」憑記憶不符表格(IMP-111 再現)→ 對齊表格用語。正是本規則『工具驗證非自評』的最佳示範——若每輪自評早就放行錯誤版本。
信念變更
- from:「『輪數不是收斂依據』=多輪後可宣告收斂、不重跑;Claude 可自評是否收斂」→ to:「收斂唯一判據=正確性(工具驗證非自評);連續多輪每輪揪真缺失=鐵證未收斂;自評收斂不可靠,承重斷言宣告收斂時即須工具驗證(不待 Tim 追問)」
- trigger:Tim「每次都有真實缺失,不應以檢查輪數作為收斂依據,應以正確性」(親自指出)
- 信心変化:+(補單向理解漏洞,收斂判準從努力量改為工具驗證的正確性)