<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>自檢機制 on Tarragon</title><link>https://tarrragon.github.io/blog/tags/%E8%87%AA%E6%AA%A2%E6%A9%9F%E5%88%B6/</link><description>Recent content in 自檢機制 on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 26 Sep 2025 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/%E8%87%AA%E6%AA%A2%E6%A9%9F%E5%88%B6/index.xml" rel="self" type="application/rss+xml"/><item><title>Claude Code Hook 系統 Exit Code 實驗</title><link>https://tarrragon.github.io/blog/record/claude-code-hook-%E7%B3%BB%E7%B5%B1-exit-code-%E5%AF%A6%E9%A9%97/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/claude-code-hook-%E7%B3%BB%E7%B5%B1-exit-code-%E5%AF%A6%E9%A9%97/</guid><description>&lt;h2 id="研究背景">研究背景&lt;/h2>
&lt;p>在開發 Book Overview App 的過程中，我設計了一套完整的 Hook 系統防護體系，目的是&lt;strong>防止開發過程中的逃避行為和確保AI的工作品質&lt;/strong>。&lt;/p>
&lt;h3 id="-hook-防護體系設計起因">🔸 Hook 防護體系設計起因&lt;/h3>
&lt;p>AI會有逃避行為，以完成任務指標為優先而捨棄程式品質或者直接修改測試。&lt;/p>
&lt;p>我設計了以下幾種防止停止和強制繼續的 Hook 機制：&lt;/p>
&lt;h4 id="-check-todospy---todowrite-完成度檢查">&lt;strong>🔹 check-todos.py - TodoWrite 完成度檢查&lt;/strong>&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="c1"># 防止未完成工作的會話結束&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="k">if&lt;/span> &lt;span class="n">todos_pending&lt;/span> &lt;span class="ow">or&lt;/span> &lt;span class="n">todos_in_progress&lt;/span>&lt;span class="p">:&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl"> &lt;span class="n">output&lt;/span> &lt;span class="o">=&lt;/span> &lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;continue&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="kc">True&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;stopReason&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;Incomplete todos detected&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔹 &lt;strong>目的&lt;/strong>: 防止有未完成 TodoWrite 任務時意外停止&lt;/li>
&lt;li>🔹 &lt;strong>機制&lt;/strong>: 檢查 transcript 中的 TodoWrite 工具狀態&lt;/li>
&lt;li>🔹 &lt;strong>效果&lt;/strong>: 強制繼續工作直到所有對話任務完成&lt;/li>
&lt;/ul>
&lt;h4 id="-check-work-logsh---工作日誌完成度檢查">&lt;strong>🔹 check-work-log.sh - 工作日誌完成度檢查&lt;/strong>&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="c1"># 當工作狀態為進行中時，exit 2 阻止停止&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="nb">exit&lt;/span> &lt;span class="m">2&lt;/span> &lt;span class="c1"># 阻止會話結束，要求繼續工作&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔹 &lt;strong>目的&lt;/strong>: 確保當前版本的工作確實完成才允許停止&lt;/li>
&lt;li>🔹 &lt;strong>機制&lt;/strong>: 分析工作日誌的完成指標和技術債務狀況&lt;/li>
&lt;li>🔹 &lt;strong>效果&lt;/strong>: 避免「假性完成」，確保工作品質&lt;/li>
&lt;/ul>
&lt;h4 id="-check-next-objectivessh---版本系列目標檢查">&lt;strong>🔹 check-next-objectives.sh - 版本系列目標檢查&lt;/strong>&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="c1"># 當版本系列仍在進行中時，exit 2 阻止停止&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="nb">exit&lt;/span> &lt;span class="m">2&lt;/span> &lt;span class="c1"># 防止版本系列中途放棄&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔹 &lt;strong>目的&lt;/strong>: 防止版本系列開發中途放棄&lt;/li>
&lt;li>🔹 &lt;strong>機制&lt;/strong>: 檢查 todolist.md 中的版本系列完成度&lt;/li>
&lt;li>🔹 &lt;strong>效果&lt;/strong>: 確保版本系列目標達成才允許推進&lt;/li>
&lt;/ul>
&lt;h4 id="-check-5w1h-compliancepy---決策品質檢查">&lt;strong>🔹 check-5w1h-compliance.py - 決策品質檢查&lt;/strong>&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-python" data-lang="python">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="c1"># 當 5W1H 分析不合規時，阻止 TodoWrite&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="p">{&lt;/span>&lt;span class="s2">&amp;#34;decision&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;block&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span> &lt;span class="s2">&amp;#34;reason&amp;#34;&lt;/span>&lt;span class="p">:&lt;/span> &lt;span class="s2">&amp;#34;5W1H analysis required&amp;#34;&lt;/span>&lt;span class="p">}&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔹 &lt;strong>目的&lt;/strong>: 防止逃避性思考和粗糙決策&lt;/li>
&lt;li>🔹 &lt;strong>機制&lt;/strong>: PreToolUse 階段攔截並檢查 5W1H 完整性&lt;/li>
&lt;li>🔹 &lt;strong>效果&lt;/strong>: 強制深度思考，杜絕逃避行為&lt;/li>
&lt;/ul>
&lt;h3 id="-遇到的邏輯衝突問題">🔸 遇到的邏輯衝突問題&lt;/h3>
&lt;p>在開發過程中，發現了奇怪的狀況：&lt;/p>
&lt;p>&lt;strong>原問題&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>&lt;code>check-todos.py&lt;/code> 顯示 &amp;ldquo;All todos completed successfully.&amp;rdquo;&lt;/li>
&lt;li>同時系統又顯示 &amp;ldquo;Stop hook prevented continuation&amp;rdquo; 訊息&lt;/li>
&lt;li>我的問題是：已完成所有 todos 為何還阻止停止？這訊息是誰吐出來的？&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>根本原因&lt;/strong>:&lt;/p>
&lt;ul>
&lt;li>不同 Hook 腳本檢查不同的 todo 來源（會話 vs 專案）&lt;/li>
&lt;li>會話的任務已結束，但是有其他hook觸發了避免停止的機制&lt;/li>
&lt;/ul>
&lt;h3 id="設計思路">設計思路&lt;/h3>
&lt;p>&lt;strong>防護體系的核心理念&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>多層防護&lt;/strong>：從對話層、工作層、版本層、決策層建立完整防護&lt;/li>
&lt;li>&lt;strong>零逃避容忍&lt;/strong>：任何逃避行為都會被自動檢測和阻止&lt;/li>
&lt;li>&lt;strong>品質強制&lt;/strong>：不符合品質標準的工作不允許繼續&lt;/li>
&lt;li>&lt;strong>使用者指引&lt;/strong>：被阻止時提供明確的修正指引和下一步行動&lt;/li>
&lt;/ul>
&lt;h3 id="exit-code-官方定義">Exit Code 官方定義&lt;/h3>
&lt;p>根據 Claude Code 官方文件，Hook 腳本的 Exit Code 具有特定含義：&lt;/p>
&lt;h4 id="exit-0---成功執行">&lt;strong>Exit 0&lt;/strong> - 成功執行&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="nb">exit&lt;/span> &lt;span class="m">0&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔸 &lt;strong>正常成功執行&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>允許 Claude Code 繼續操作&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>不會產生任何阻止行為&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>用途&lt;/strong>: 檢查通過、條件滿足、正常完成&lt;/li>
&lt;/ul>
&lt;h4 id="exit-1---一般錯誤">&lt;strong>Exit 1&lt;/strong> - 一般錯誤&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="nb">exit&lt;/span> &lt;span class="m">1&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔸 &lt;strong>非阻塞性錯誤&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>操作仍可繼續&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>表示&lt;/strong>: 有問題但不嚴重&lt;/li>
&lt;li>🔸 &lt;strong>用途&lt;/strong>: 輕微問題、建議性警告&lt;/li>
&lt;/ul>
&lt;h4 id="exit-2---阻止停止-關鍵">&lt;strong>Exit 2&lt;/strong> - 阻止停止 (關鍵!)&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="nb">exit&lt;/span> &lt;span class="m">2&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔸 &lt;strong>阻止 Claude Code 停止會話&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>顯示 stderr 內容給 Claude&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>強制要求繼續工作&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>用途&lt;/strong>: 工作未完成、需要繼續開發&lt;/li>
&lt;li>🔸 &lt;strong>注意&lt;/strong>: 這是「阻止停止」而非「阻止繼續」&lt;/li>
&lt;/ul>
&lt;h4 id="exit-3---嚴重錯誤">&lt;strong>Exit 3+&lt;/strong> - 嚴重錯誤&lt;/h4>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-bash" data-lang="bash">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="nb">exit&lt;/span> &lt;span class="m">3&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;ul>
&lt;li>🔸 &lt;strong>嚴重錯誤狀態&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>通常阻止繼續&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>自定義錯誤類型&lt;/strong>&lt;/li>
&lt;li>🔸 &lt;strong>用途&lt;/strong>: 需要立即處理的問題&lt;/li>
&lt;/ul>
&lt;h2 id="exit-2-的真正定義">Exit 2 的真正定義&lt;/h2>
&lt;h3 id="語意澄清">語意澄清&lt;/h3>
&lt;p>&lt;strong>🔸 錯誤理解&lt;/strong>:&lt;/p></description><content:encoded><![CDATA[<h2 id="研究背景">研究背景</h2>
<p>在開發 Book Overview App 的過程中，我設計了一套完整的 Hook 系統防護體系，目的是<strong>防止開發過程中的逃避行為和確保AI的工作品質</strong>。</p>
<h3 id="-hook-防護體系設計起因">🔸 Hook 防護體系設計起因</h3>
<p>AI會有逃避行為，以完成任務指標為優先而捨棄程式品質或者直接修改測試。</p>
<p>我設計了以下幾種防止停止和強制繼續的 Hook 機制：</p>
<h4 id="-check-todospy---todowrite-完成度檢查"><strong>🔹 check-todos.py - TodoWrite 完成度檢查</strong></h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 防止未完成工作的會話結束</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="k">if</span> <span class="n">todos_pending</span> <span class="ow">or</span> <span class="n">todos_in_progress</span><span class="p">:</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">    <span class="n">output</span> <span class="o">=</span> <span class="p">{</span><span class="s2">&#34;continue&#34;</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span> <span class="s2">&#34;stopReason&#34;</span><span class="p">:</span> <span class="s2">&#34;Incomplete todos detected&#34;</span><span class="p">}</span></span></span></code></pre></div><ul>
<li>🔹 <strong>目的</strong>: 防止有未完成 TodoWrite 任務時意外停止</li>
<li>🔹 <strong>機制</strong>: 檢查 transcript 中的 TodoWrite 工具狀態</li>
<li>🔹 <strong>效果</strong>: 強制繼續工作直到所有對話任務完成</li>
</ul>
<h4 id="-check-work-logsh---工作日誌完成度檢查"><strong>🔹 check-work-log.sh - 工作日誌完成度檢查</strong></h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 當工作狀態為進行中時，exit 2 阻止停止</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nb">exit</span> <span class="m">2</span>  <span class="c1"># 阻止會話結束，要求繼續工作</span></span></span></code></pre></div><ul>
<li>🔹 <strong>目的</strong>: 確保當前版本的工作確實完成才允許停止</li>
<li>🔹 <strong>機制</strong>: 分析工作日誌的完成指標和技術債務狀況</li>
<li>🔹 <strong>效果</strong>: 避免「假性完成」，確保工作品質</li>
</ul>
<h4 id="-check-next-objectivessh---版本系列目標檢查"><strong>🔹 check-next-objectives.sh - 版本系列目標檢查</strong></h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 當版本系列仍在進行中時，exit 2 阻止停止</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="nb">exit</span> <span class="m">2</span>  <span class="c1"># 防止版本系列中途放棄</span></span></span></code></pre></div><ul>
<li>🔹 <strong>目的</strong>: 防止版本系列開發中途放棄</li>
<li>🔹 <strong>機制</strong>: 檢查 todolist.md 中的版本系列完成度</li>
<li>🔹 <strong>效果</strong>: 確保版本系列目標達成才允許推進</li>
</ul>
<h4 id="-check-5w1h-compliancepy---決策品質檢查"><strong>🔹 check-5w1h-compliance.py - 決策品質檢查</strong></h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-python" data-lang="python"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1"># 當 5W1H 分析不合規時，阻止 TodoWrite</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="p">{</span><span class="s2">&#34;decision&#34;</span><span class="p">:</span> <span class="s2">&#34;block&#34;</span><span class="p">,</span> <span class="s2">&#34;reason&#34;</span><span class="p">:</span> <span class="s2">&#34;5W1H analysis required&#34;</span><span class="p">}</span></span></span></code></pre></div><ul>
<li>🔹 <strong>目的</strong>: 防止逃避性思考和粗糙決策</li>
<li>🔹 <strong>機制</strong>: PreToolUse 階段攔截並檢查 5W1H 完整性</li>
<li>🔹 <strong>效果</strong>: 強制深度思考，杜絕逃避行為</li>
</ul>
<h3 id="-遇到的邏輯衝突問題">🔸 遇到的邏輯衝突問題</h3>
<p>在開發過程中，發現了奇怪的狀況：</p>
<p><strong>原問題</strong>:</p>
<ul>
<li><code>check-todos.py</code> 顯示 &ldquo;All todos completed successfully.&rdquo;</li>
<li>同時系統又顯示 &ldquo;Stop hook prevented continuation&rdquo; 訊息</li>
<li>我的問題是：已完成所有 todos 為何還阻止停止？這訊息是誰吐出來的？</li>
</ul>
<p><strong>根本原因</strong>:</p>
<ul>
<li>不同 Hook 腳本檢查不同的 todo 來源（會話 vs 專案）</li>
<li>會話的任務已結束，但是有其他hook觸發了避免停止的機制</li>
</ul>
<h3 id="設計思路">設計思路</h3>
<p><strong>防護體系的核心理念</strong>：</p>
<ul>
<li><strong>多層防護</strong>：從對話層、工作層、版本層、決策層建立完整防護</li>
<li><strong>零逃避容忍</strong>：任何逃避行為都會被自動檢測和阻止</li>
<li><strong>品質強制</strong>：不符合品質標準的工作不允許繼續</li>
<li><strong>使用者指引</strong>：被阻止時提供明確的修正指引和下一步行動</li>
</ul>
<h3 id="exit-code-官方定義">Exit Code 官方定義</h3>
<p>根據 Claude Code 官方文件，Hook 腳本的 Exit Code 具有特定含義：</p>
<h4 id="exit-0---成功執行"><strong>Exit 0</strong> - 成功執行</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">exit</span> <span class="m">0</span></span></span></code></pre></div><ul>
<li>🔸 <strong>正常成功執行</strong></li>
<li>🔸 <strong>允許 Claude Code 繼續操作</strong></li>
<li>🔸 <strong>不會產生任何阻止行為</strong></li>
<li>🔸 <strong>用途</strong>: 檢查通過、條件滿足、正常完成</li>
</ul>
<h4 id="exit-1---一般錯誤"><strong>Exit 1</strong> - 一般錯誤</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">exit</span> <span class="m">1</span></span></span></code></pre></div><ul>
<li>🔸 <strong>非阻塞性錯誤</strong></li>
<li>🔸 <strong>操作仍可繼續</strong></li>
<li>🔸 <strong>表示</strong>: 有問題但不嚴重</li>
<li>🔸 <strong>用途</strong>: 輕微問題、建議性警告</li>
</ul>
<h4 id="exit-2---阻止停止-關鍵"><strong>Exit 2</strong> - 阻止停止 (關鍵!)</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">exit</span> <span class="m">2</span></span></span></code></pre></div><ul>
<li>🔸 <strong>阻止 Claude Code 停止會話</strong></li>
<li>🔸 <strong>顯示 stderr 內容給 Claude</strong></li>
<li>🔸 <strong>強制要求繼續工作</strong></li>
<li>🔸 <strong>用途</strong>: 工作未完成、需要繼續開發</li>
<li>🔸 <strong>注意</strong>: 這是「阻止停止」而非「阻止繼續」</li>
</ul>
<h4 id="exit-3---嚴重錯誤"><strong>Exit 3+</strong> - 嚴重錯誤</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl"><span class="nb">exit</span> <span class="m">3</span></span></span></code></pre></div><ul>
<li>🔸 <strong>嚴重錯誤狀態</strong></li>
<li>🔸 <strong>通常阻止繼續</strong></li>
<li>🔸 <strong>自定義錯誤類型</strong></li>
<li>🔸 <strong>用途</strong>: 需要立即處理的問題</li>
</ul>
<h2 id="exit-2-的真正定義">Exit 2 的真正定義</h2>
<h3 id="語意澄清">語意澄清</h3>
<p><strong>🔸 錯誤理解</strong>:</p>
<ul>
<li>&ldquo;Stop hook prevented continuation&rdquo; = 阻止繼續工作</li>
</ul>
<p><strong>🔸 正確理解</strong>:</p>
<ul>
<li>&ldquo;Stop hook prevented continuation&rdquo; = 阻止了「停止會話」這個行為</li>
<li>實際效果在我腳本觸發的原因：當前會話還有todo清單未完成，強制繼續工作，不允許停止會話</li>
</ul>
<h3 id="實際應用場景">實際應用場景</h3>
<p>專案中的 Exit 2 使用案例：</p>
<h4 id="check-work-logsh"><strong>check-work-log.sh</strong></h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 當工作狀態為 &#34;IN_PROGRESS&#34; 時</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">if</span> <span class="o">[[</span> <span class="nv">$WORK_STATUS</span> <span class="o">==</span> <span class="s2">&#34;IN_PROGRESS&#34;</span> <span class="o">]]</span><span class="p">;</span> <span class="k">then</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="nb">echo</span> <span class="s2">&#34;工作進行中，建議完成後再推進&#34;</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="c1"># 輸出詳細說明到 stderr</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    cat &gt;<span class="p">&amp;</span><span class="m">2</span> <span class="s">&lt;&lt;EOF
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="s">🔸 版本推進暫停 - 當前工作尚未完成
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="s">🔸 停止原因：
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="s">• 工作日誌顯示工作仍在進行中
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="s">• 完成度指標不足
</span></span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="s">• todolist.md 中有待辦任務
</span></span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="s">🔸 建議的 TodoWrite 任務：
</span></span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="s">請執行以下工作項目...
</span></span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="s">EOF</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="nb">exit</span> <span class="m">2</span>  <span class="c1"># 阻止停止，要求繼續工作</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl"><span class="k">fi</span></span></span></code></pre></div><h4 id="check-next-objectivessh"><strong>check-next-objectives.sh</strong></h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 當版本系列狀態為 &#34;IN_PROGRESS&#34; 時</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">case</span> <span class="s2">&#34;</span><span class="nv">$SERIES_STATUS</span><span class="s2">&#34;</span> in
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="s2">&#34;IN_PROGRESS&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;版本系列仍在進行中&#34;</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="c1"># 提供具體的待辦任務資訊</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        cat &gt;<span class="p">&amp;</span><span class="m">2</span> <span class="s">&lt;&lt;EOF
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="s">🔸 版本推進暫停 - 當前版本系列仍在進行中
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="s">🔸 部分待完成任務範例：
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="s">• 修復UI測試中的類型問題
</span></span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="s">• 更新ViewModel層錯誤處理適配
</span></span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="s">🔸 建議的 TodoWrite 任務：
</span></span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="s">繼續版本系列開發...
</span></span></span><span class="line"><span class="ln">16</span><span class="cl"><span class="s">EOF</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">
</span></span><span class="line"><span class="ln">18</span><span class="cl">        <span class="nb">exit</span> <span class="m">2</span>  <span class="c1"># 阻止停止，要求繼續版本開發</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="p">;;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl"><span class="k">esac</span></span></span></code></pre></div><h2 id="-hook-系統邏輯衝突解決方案">🔸 Hook 系統邏輯衝突解決方案</h2>
<h3 id="問題診斷">問題診斷</h3>
<p><strong>衝突場景</strong>:</p>
<ul>
<li><code>check-todos.py</code> 檢查 TodoWrite 工具（會話級別）</li>
<li>其他 Hook 腳本檢查 <code>todolist.md</code>（專案級別）</li>
<li>結果：TodoWrite 完成但 todolist.md 仍有待辦事項</li>
</ul>
<h3 id="解決策略">解決策略</h3>
<h4 id="方案一hook-腳本提供-todowrite-建議"><strong>方案一：Hook 腳本提供 TodoWrite 建議</strong></h4>
<p>在返回 <code>exit 2</code> 的 Hook 腳本中：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="c1"># 檢查 todolist.md 中的未完成任務</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="nv">PENDING_TODOS</span><span class="o">=</span><span class="k">$(</span>grep -c <span class="s2">&#34;\[ \]&#34;</span> <span class="s2">&#34;</span><span class="nv">$PROJECT_ROOT</span><span class="s2">/docs/todolist.md&#34;</span> 2&gt;/dev/null <span class="o">||</span> <span class="nb">echo</span> <span class="s2">&#34;0&#34;</span><span class="k">)</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1"># 在 stderr 中提供 TodoWrite 建議</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">cat &gt;<span class="p">&amp;</span><span class="m">2</span> <span class="s">&lt;&lt;EOF
</span></span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="s">🔸 建議的 TodoWrite 任務：
</span></span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="s">請執行以下 TodoWrite 來管理具體工作項目：
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="s">
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="s">TodoWrite([
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="s">  {&#34;content&#34;: &#34;完成當前版本核心開發工作&#34;, &#34;status&#34;: &#34;pending&#34;, &#34;activeForm&#34;: &#34;完成當前版本核心開發工作&#34;},
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="s">  {&#34;content&#34;: &#34;執行完整測試確保100%通過率&#34;, &#34;status&#34;: &#34;pending&#34;, &#34;activeForm&#34;: &#34;執行完整測試確保100%通過率&#34;}
</span></span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="s">])
</span></span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="s">EOF</span></span></span></code></pre></div><h4 id="方案二統一狀態檢查邏輯"><strong>方案二：統一狀態檢查邏輯</strong></h4>
<p>確保所有 Hook 腳本檢查相同的狀態來源，或者建立狀態同步機制。</p>
<h2 id="實際演練">實際演練</h2>
<h3 id="exit-code-選擇原則">Exit Code 選擇原則</h3>
<ul>
<li>🔸 <strong>Exit 0</strong>: 一切正常，可以繼續</li>
<li>🔸 <strong>Exit 1</strong>: 有小問題，但可以繼續</li>
<li>🔸 <strong>Exit 2</strong>: 工作未完成，<strong>禁止停止</strong>，必須繼續</li>
<li>🔸 <strong>Exit 3+</strong>: 嚴重問題，需要立即處理</li>
</ul>
<h3 id="hook-腳本設計模式">Hook 腳本設計模式</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="cp">#!/bin/bash
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="cp"></span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl"><span class="c1"># 🔸 檢查狀態</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">check_work_status<span class="o">()</span> <span class="o">{</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    <span class="c1"># 實作狀態檢查邏輯</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="o">}</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1"># 🔸 根據狀態決定 exit code</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="k">case</span> <span class="s2">&#34;</span><span class="nv">$WORK_STATUS</span><span class="s2">&#34;</span> in
</span></span><span class="line"><span class="ln">10</span><span class="cl">    <span class="s2">&#34;COMPLETED&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;工作已完成，可推進版本&#34;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">        <span class="nb">exit</span> <span class="m">0</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">        <span class="p">;;</span>
</span></span><span class="line"><span class="ln">14</span><span class="cl">    <span class="s2">&#34;MOSTLY_COMPLETED&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">15</span><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;基本完成，建議檢查後推進&#34;</span>
</span></span><span class="line"><span class="ln">16</span><span class="cl">        <span class="nb">exit</span> <span class="m">1</span>
</span></span><span class="line"><span class="ln">17</span><span class="cl">        <span class="p">;;</span>
</span></span><span class="line"><span class="ln">18</span><span class="cl">    <span class="s2">&#34;IN_PROGRESS&#34;</span><span class="o">)</span>
</span></span><span class="line"><span class="ln">19</span><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;工作進行中，建議完成後再推進&#34;</span>
</span></span><span class="line"><span class="ln">20</span><span class="cl">
</span></span><span class="line"><span class="ln">21</span><span class="cl">        <span class="c1"># 🔸 提供詳細的使用者指引</span>
</span></span><span class="line"><span class="ln">22</span><span class="cl">        cat &gt;<span class="p">&amp;</span><span class="m">2</span> <span class="s">&lt;&lt;EOF
</span></span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="s">🔸 停止原因說明
</span></span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="s">🔸 需要採取的行動
</span></span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="s">🔸 建議的 TodoWrite 任務
</span></span></span><span class="line"><span class="ln">26</span><span class="cl"><span class="s">EOF</span>
</span></span><span class="line"><span class="ln">27</span><span class="cl">
</span></span><span class="line"><span class="ln">28</span><span class="cl">        <span class="nb">exit</span> <span class="m">2</span>  <span class="c1"># 阻止停止</span>
</span></span><span class="line"><span class="ln">29</span><span class="cl">        <span class="p">;;</span>
</span></span><span class="line"><span class="ln">30</span><span class="cl">    *<span class="o">)</span>
</span></span><span class="line"><span class="ln">31</span><span class="cl">        <span class="nb">echo</span> <span class="s2">&#34;工作未完成，需要繼續開發&#34;</span>
</span></span><span class="line"><span class="ln">32</span><span class="cl">        <span class="nb">exit</span> <span class="m">3</span>
</span></span><span class="line"><span class="ln">33</span><span class="cl">        <span class="p">;;</span>
</span></span><span class="line"><span class="ln">34</span><span class="cl"><span class="k">esac</span></span></span></code></pre></div><h3 id="使用者體驗優化">使用者體驗優化</h3>
<ul>
<li><strong>清楚的錯誤訊息</strong>: 使用 stderr 輸出詳細說明</li>
<li><strong>具體的行動指引</strong>: 告訴使用者需要做什麼</li>
<li><strong>TodoWrite 整合</strong>: 提供可執行的任務建議</li>
<li><strong>狀態一致性</strong>: 確保不同檢查機制的邏輯一致</li>
</ul>
<h2 id="-實際測試結果">🔸 實際測試結果</h2>
<h3 id="測試案例--check-work-logsh">測試案例 : check-work-log.sh</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">$ ./.claude/scripts/check-work-log.sh
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 返回 exit 3，stderr 顯示：</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">🔸 版本推進暫停 - 工作未開始或缺乏完成指標
</span></span><span class="line"><span class="ln">4</span><span class="cl">🔸 停止原因：
</span></span><span class="line"><span class="ln">5</span><span class="cl">• 工作日誌缺乏完成指標 <span class="o">(</span><span class="nv">0</span> <span class="o">=</span> 0<span class="o">)</span>
</span></span><span class="line"><span class="ln">6</span><span class="cl">• todolist.md 中有 <span class="m">240</span> 個待辦任務
</span></span><span class="line"><span class="ln">7</span><span class="cl">
</span></span><span class="line"><span class="ln">8</span><span class="cl">🔸 建議的 TodoWrite 任務：
</span></span><span class="line"><span class="ln">9</span><span class="cl">請執行以下 TodoWrite 開始系統化工作...</span></span></code></pre></div><h3 id="測試案例--check-next-objectivessh">測試案例 🔸: check-next-objectives.sh</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln">1</span><span class="cl">$ ./.claude/scripts/check-next-objectives.sh
</span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"># 返回 exit 2，stderr 顯示：</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">🔸 版本推進暫停 - 當前版本系列仍在進行中
</span></span><span class="line"><span class="ln">4</span><span class="cl">🔸 部分待完成任務範例：
</span></span><span class="line"><span class="ln">5</span><span class="cl">• 修復UI測試中的類型問題
</span></span><span class="line"><span class="ln">6</span><span class="cl">• 更新ViewModel層錯誤處理適配
</span></span><span class="line"><span class="ln">7</span><span class="cl">
</span></span><span class="line"><span class="ln">8</span><span class="cl">🔸 建議的 TodoWrite 任務：
</span></span><span class="line"><span class="ln">9</span><span class="cl">請執行以下 TodoWrite 繼續版本系列開發...</span></span></code></pre></div><h2 id="-效果評估">🔸 效果評估</h2>
<h3 id="問題解決成果">問題解決成果</h3>
<ul>
<li>🔸 <strong>邏輯一致性</strong>: Hook 系統不再產生矛盾訊息</li>
<li>🔸 <strong>使用者體驗</strong>: 清楚知道為什麼被阻止和需要做什麼</li>
<li>🔸 <strong>工作流程</strong>: TodoWrite 與 todolist.md 狀態同步</li>
</ul>
<h3 id="關鍵學習">關鍵學習</h3>
<p>🔸 <strong>Exit 2 的真實含義</strong>: 阻止停止，要求繼續工作
🔸 <strong>stderr 的重要性</strong>: Claude Code 會顯示 stderr 給使用者
🔸 <strong>狀態檢查一致性</strong>: 不同檢查機制需要協調
🔸 <strong>使用者指引</strong>: 提供可執行的具體建議比抽象說明更有效</p>
<h2 id="後續改善方向">後續改善方向</h2>
<ul>
<li><strong>Hook 腳本標準化</strong>: 建立統一的錯誤處理和訊息格式</li>
<li><strong>狀態同步機制</strong>: 建立 TodoWrite 與 todolist.md 的雙向同步</li>
<li><strong>使用者體驗測試</strong>: 收集真實使用場景的反饋</li>
<li><strong>文件完善</strong>: 將這些經驗整理成團隊開發規範</li>
</ul>
<h2 id="-參考資源">🔸 參考資源</h2>
<ul>
<li><a href="https://docs.claude.com/en/docs/claude-code/hooks-guide">Claude Code Hooks Guide</a></li>
<li><a href="https://docs.claude.com/en/docs/claude-code/hooks">Claude Code Hook Events</a></li>
<li><a href="https://www.reddit.com/r/ClaudeAI/comments/1now8n7/cc_hook_that_made_my_life_easier_today">reddit網友分享 在有todo未完成的情況下用hook偵測會話轉階段，強迫AI繼續工作不要停下來</a></li>
</ul>
<hr>
]]></content:encoded></item><item><title>AI 任務逃避偵測與預防三層防護方法論</title><link>https://tarrragon.github.io/blog/record/ai-%E4%BB%BB%E5%8B%99%E9%80%83%E9%81%BF%E5%81%B5%E6%B8%AC%E8%88%87%E9%A0%90%E9%98%B2%E4%B8%89%E5%B1%A4%E9%98%B2%E8%AD%B7%E6%96%B9%E6%B3%95%E8%AB%96/</link><pubDate>Sat, 20 Sep 2025 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/record/ai-%E4%BB%BB%E5%8B%99%E9%80%83%E9%81%BF%E5%81%B5%E6%B8%AC%E8%88%87%E9%A0%90%E9%98%B2%E4%B8%89%E5%B1%A4%E9%98%B2%E8%AD%B7%E6%96%B9%E6%B3%95%E8%AB%96/</guid><description>&lt;h2 id="背景與演進">背景與演進&lt;/h2>
&lt;p>在與 LLM AI 協作過程中，我們發現了一個關鍵問題：AI 面對複雜問題會產生逃避行為，包括簡化問題、延後處理、或使用臨時解決方案。&lt;/p></description><content:encoded><![CDATA[<h2 id="背景與演進">背景與演進</h2>
<p>在與 LLM AI 協作過程中，我們發現了一個關鍵問題：AI 面對複雜問題會產生逃避行為，包括簡化問題、延後處理、或使用臨時解決方案。</p>
<p>為了徹底解決這個問題，我們發展了<strong>三層防護機制</strong>：</p>
<ol>
<li><strong>第一層：AI 內建自檢</strong> - 在每次回應前強制執行檢查，從源頭預防逃避行為</li>
<li><strong>第二層：Hook 系統驗證</strong> - 透過自動化腳本進行事後驗證和持續監控</li>
<li><strong>第三層：修復模式</strong> - 發現問題時提供補救措施和修正指引</li>
</ol>
<p>這套方法論不只確保 AI 協作品質，也成為我們所有開發決策的指導原則。</p>
<h2 id="三層防護機制架構">三層防護機制架構</h2>
<h3 id="第一層ai-內建自檢機制">第一層：AI 內建自檢機制</h3>
<p>這是最重要的防線，AI 在生成任何回應前都必須執行以下強制檢查：</p>
<h4 id="30秒核心檢查清單">30秒核心檢查清單</h4>
<ol>
<li>
<p>三大鐵律檢查</p>
<ul>
<li>測試通過率鐵律：是否包含「測試失敗可接受」的思維？</li>
<li>永不放棄鐵律：是否想跳過、暫時處理、或延後任何問題？</li>
<li>架構債務零容忍鐵律：是否發現架構問題卻想稍後處理？</li>
</ul>
</li>
<li>
<p>逃避詞彙檢查</p>
<ul>
<li>中文禁用詞：「太複雜」「先將就」「暫時性修正」「症狀緩解」等</li>
<li>英文禁用詞：workaround, bypass, hack, quick fix 等</li>
<li>簡化妥協詞：「更簡單的方法」「簡化處理」「簡化測試」等</li>
</ul>
</li>
<li>
<p>品質標準檢查</p>
<ul>
<li>解決方案是完整的，還是妥協的？</li>
<li>是否在迴避根本問題？</li>
<li>回應是否體現專業工程師標準？</li>
</ul>
</li>
</ol>
<h4 id="檢查失敗處理">檢查失敗處理</h4>
<p>如果任何檢查項目失敗：</p>
<ol>
<li>立即停止當前回應生成</li>
<li>重新分析問題和解決方案</li>
<li>重新構思符合三大鐵律的回應</li>
<li>再次檢查直到通過所有項目</li>
</ol>
<h3 id="第二層hook-系統驗證">第二層：Hook 系統驗證</h3>
<p>自動化腳本在關鍵時刻執行檢查：</p>
<h4 id="觸發時機">觸發時機</h4>
<ul>
<li>
<p><strong>UserPromptSubmit</strong>: 每次用戶輸入時檢查工作流程合規性</p>
</li>
<li>
<p><strong>PostToolUse</strong>: 檔案編輯後檢查程式異味和品質</p>
</li>
<li>
<p><strong>PreToolUse</strong>: 工具使用前檢查是否有阻止狀態</p>
</li>
<li>
<p><strong>Stop</strong>: 回應完成後分析版本推進狀態</p>
</li>
</ul>
<h4 id="檢查項目">檢查項目</h4>
<ul>
<li>ESLint 錯誤偵測和追蹤</li>
<li>技術債務累積監控</li>
<li>任務逃避行為偵測</li>
<li>程式異味自動分析</li>
<li>效能指標監控</li>
</ul>
<h3 id="第三層修復模式">第三層：修復模式</h3>
<p>當前兩層發現問題時的補救機制：</p>
<h4 id="進入條件">進入條件</h4>
<ul>
<li>AI 自檢發現違規詞彙或思維</li>
<li>Hook 系統偵測到逃避行為</li>
<li>品質指標超過容忍閾值</li>
</ul>
<h4 id="修復流程">修復流程</h4>
<ol>
<li>停止所有開發活動</li>
<li>分析問題根因和影響範圍</li>
<li>制定具體的修正計劃</li>
<li>執行修正並驗證結果</li>
<li>記錄學習並更新防護機制</li>
</ol>
<h4 id="完成標準">完成標準</h4>
<ul>
<li>所有違規行為已修正</li>
<li>品質指標回到可接受範圍</li>
<li>問題根因已徹底解決</li>
<li>預防措施已建立</li>
</ul>
<h2 id="核心立場">核心立場</h2>
<h3 id="我們接受的計劃性延後">我們接受的：計劃性延後</h3>
<p>計劃性延後是正當的開發策略。我們接受並鼓勵以下形式的延後：</p>
<h4 id="版本規劃的延後">版本規劃的延後</h4>
<ul>
<li>v0.1 做基礎功能，v0.2 加進階功能 → <strong>正確</strong></li>
<li>明確標註「此功能於 v0.3 實作」→ <strong>正確</strong></li>
<li>每個版本有完整可用的交付物 → <strong>必要</strong></li>
</ul>
<h4 id="tdd-最小實現">TDD 最小實現</h4>
<ul>
<li>先通過測試，再優化效能 → <strong>正確</strong></li>
<li>實作最小功能，重構階段再改善 → <strong>正確</strong></li>
<li>為擴展預留介面，但不過度設計 → <strong>正確</strong></li>
</ul>
<h4 id="風險管理的優先級">風險管理的優先級</h4>
<ul>
<li>核心流程優先，邊緣案例延後 → <strong>合理</strong></li>
<li>安全問題優先，美觀問題延後 → <strong>必要</strong></li>
<li>已知範圍的問題，計劃性處理 → <strong>專業</strong></li>
</ul>
<h3 id="我們拒絕的逃避行為">我們拒絕的：逃避行為</h3>
<p>以下行為是逃避，必須立即糾正：</p>
<h4 id="模糊的拖延">模糊的拖延</h4>
<ul>
<li>「太複雜，之後再說」→ <strong>錯誤</strong></li>
<li>「暫時跳過」但無具體計劃 → <strong>錯誤</strong></li>
<li>「先將就用」沒有改善時程 → <strong>錯誤</strong></li>
</ul>
<h4 id="核心責任的迴避">核心責任的迴避</h4>
<ul>
<li>發現架構問題但繞過 → <strong>不可接受</strong></li>
<li>省略錯誤處理 → <strong>不可接受</strong></li>
<li>降低測試標準來通過 → <strong>不可接受</strong></li>
</ul>
<h4 id="債務的累積">債務的累積</h4>
<ul>
<li>TODO 沒有追蹤和時程 → <strong>失職</strong></li>
<li>臨時方案變永久 → <strong>技術腐敗</strong></li>
<li>問題擴散不處理 → <strong>專案危機</strong></li>
</ul>
<h3 id="完整違規詞彙對照表">完整違規詞彙對照表</h3>
<p>為了確保一致性執行，以下是完整的違規詞彙清單：</p>
<h4 id="品質妥協和逃避責任類">品質妥協和逃避責任類</h4>
<table>
  <thead>
      <tr>
          <th>中文違規詞彙</th>
          <th>英文違規詞彙</th>
          <th>違反原則</th>
          <th>正確替代</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「太複雜」</td>
          <td>&ldquo;too complex&rdquo;, &ldquo;too complicated&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「需要深度分析，讓我分解問題」</td>
      </tr>
      <tr>
          <td>「先將就」</td>
          <td>&ldquo;workaround&rdquo;, &ldquo;hack&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「建立完整解決方案」</td>
      </tr>
      <tr>
          <td>「暫時性修正」</td>
          <td>&ldquo;temporary fix&rdquo;, &ldquo;quick fix&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「現在就正確實作」</td>
      </tr>
      <tr>
          <td>「症狀緩解」</td>
          <td>&ldquo;bypass&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「解決根本問題」</td>
      </tr>
      <tr>
          <td>「先這樣處理」</td>
          <td>&ldquo;ignore for now&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「立即正確處理」</td>
      </tr>
      <tr>
          <td>「臨時解決方案」</td>
          <td>&ldquo;will fix later&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「永久性解決方案」</td>
      </tr>
  </tbody>
</table>
<h4 id="簡化妥協類">簡化妥協類</h4>
<table>
  <thead>
      <tr>
          <th>中文違規詞彙</th>
          <th>英文違規詞彙</th>
          <th>違反原則</th>
          <th>正確替代</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「更簡單的方法」</td>
          <td>&ldquo;simpler approach&rdquo;, &ldquo;simpler way&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「正確且完整的方法」</td>
      </tr>
      <tr>
          <td>「採用更簡單的方法」</td>
          <td>&ldquo;take the simpler approach&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「採用正確的方法」</td>
      </tr>
      <tr>
          <td>「簡化處理」</td>
          <td>&ldquo;simplify&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「完整處理」</td>
      </tr>
      <tr>
          <td>「簡單的處理方式」</td>
          <td>&ldquo;simpler method&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「專業的處理方式」</td>
      </tr>
  </tbody>
</table>
<h4 id="測試品質妥協類">測試品質妥協類</h4>
<table>
  <thead>
      <tr>
          <th>中文違規詞彙</th>
          <th>英文違規詞彙</th>
          <th>違反原則</th>
          <th>正確替代</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「簡化測試」</td>
          <td>&ldquo;simplify test&rdquo;, &ldquo;simplified test&rdquo;</td>
          <td>測試通過率鐵律</td>
          <td>「建立完整測試」</td>
      </tr>
      <tr>
          <td>「降低測試標準」</td>
          <td>&ldquo;lower test standard&rdquo;</td>
          <td>測試通過率鐵律</td>
          <td>「維持100%測試標準」</td>
      </tr>
      <tr>
          <td>「簡單測試就好」</td>
          <td>&ldquo;basic test only&rdquo;, &ldquo;simple test case&rdquo;</td>
          <td>測試通過率鐵律</td>
          <td>「全面測試覆蓋」</td>
      </tr>
      <tr>
          <td>「基本測試即可」</td>
          <td>&ldquo;minimal test&rdquo;</td>
          <td>測試通過率鐵律</td>
          <td>「完整測試套件」</td>
      </tr>
  </tbody>
</table>
<h4 id="發現問題但不解決類">發現問題但不解決類</h4>
<table>
  <thead>
      <tr>
          <th>中文違規詞彙</th>
          <th>英文違規詞彙</th>
          <th>違反原則</th>
          <th>正確替代</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「發現問題但不處理」</td>
          <td>&ldquo;ignore the issue&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「發現問題立即解決」</td>
      </tr>
      <tr>
          <td>「架構問題先不管」</td>
          <td>&ldquo;architecture debt later&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「架構問題立即修正」</td>
      </tr>
      <tr>
          <td>「只加個 TODO」</td>
          <td>&ldquo;just add todo&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「立即實作解決方案」</td>
      </tr>
      <tr>
          <td>「問題太多先跳過」</td>
          <td>&ldquo;too many issues skip&rdquo;</td>
          <td>永不放棄鐵律</td>
          <td>「逐一解決所有問題」</td>
      </tr>
  </tbody>
</table>
<h4 id="程式碼修改逃避類">程式碼修改逃避類</h4>
<table>
  <thead>
      <tr>
          <th>中文違規詞彙</th>
          <th>英文違規詞彙</th>
          <th>違反原則</th>
          <th>正確替代</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「註解掉」</td>
          <td>&ldquo;comment out&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「重構或移除」</td>
      </tr>
      <tr>
          <td>「停用功能」</td>
          <td>&ldquo;disable&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「修正後啟用」</td>
      </tr>
      <tr>
          <td>「暫時關閉」</td>
          <td>&ldquo;temporarily disable&rdquo;</td>
          <td>架構債務零容忍</td>
          <td>「立即修正並啟用」</td>
      </tr>
  </tbody>
</table>
<h4 id="模糊不精確詞彙類">模糊不精確詞彙類</h4>
<table>
  <thead>
      <tr>
          <th>中文違規詞彙</th>
          <th>英文違規詞彙</th>
          <th>違反原則</th>
          <th>正確替代</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「智能」</td>
          <td>&ldquo;smart&rdquo;, &ldquo;intelligent&rdquo;</td>
          <td>精確性原則</td>
          <td>「規則比對」「條件判斷」「算法處理」</td>
      </tr>
      <tr>
          <td>「自動」(無具體描述)</td>
          <td>&ldquo;auto&rdquo; (without details)</td>
          <td>精確性原則</td>
          <td>「Hook腳本執行」「定時任務觸發」</td>
      </tr>
      <tr>
          <td>「優化」(無具體指標)</td>
          <td>&ldquo;optimize&rdquo; (without metrics)</td>
          <td>精確性原則</td>
          <td>「減少記憶體使用50%」「提升載入速度2倍」</td>
      </tr>
  </tbody>
</table>
<h2 id="處理原則">處理原則</h2>
<h3 id="面對複雜問題">面對複雜問題</h3>
<p>複雜不是逃避的理由。我們的處理方式：</p>
<ol>
<li><strong>分解</strong>：任何複雜問題都能分解為可管理的部分</li>
<li><strong>排序</strong>：依影響和依賴關係決定處理順序</li>
<li><strong>執行</strong>：逐步解決，每步都有可驗證的成果</li>
</ol>
<h3 id="意外狀況的決策">意外狀況的決策</h3>
<p>遇到預期外的技術挑戰時：</p>
<h4 id="立即解決的情況">立即解決的情況</h4>
<ul>
<li>阻塞其他開發 → <strong>立即處理</strong></li>
<li>影響資料完整性 → <strong>立即處理</strong></li>
<li>安全漏洞 → <strong>立即處理</strong></li>
</ul>
<h4 id="可以延後的情況">可以延後的情況</h4>
<ul>
<li>效能優化（功能正常）→ <strong>可計劃延後</strong></li>
<li>UI 美化（體驗可用）→ <strong>可計劃延後</strong></li>
<li>邊緣案例（主流程正常）→ <strong>可計劃延後</strong></li>
</ul>
<h4 id="需要重新評估的情況">需要重新評估的情況</h4>
<ul>
<li>暴露設計缺陷 → <strong>停下來重新設計</strong></li>
<li>依賴關係錯誤 → <strong>調整架構</strong></li>
<li>需求理解偏差 → <strong>重新確認需求</strong></li>
</ul>
<h2 id="ai-回應前自檢機制詳解">AI 回應前自檢機制詳解</h2>
<h3 id="30秒強制檢查流程">30秒強制檢查流程</h3>
<p><strong>AI 在生成任何回應前都必須完整執行以下檢查</strong>：</p>
<h4 id="第一階段三大鐵律檢查">第一階段：三大鐵律檢查</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">1. 測試通過率鐵律檢查
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">   問：我的回應是否包含「測試失敗可接受」的思維？
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">   問：是否想要跳過測試或降低測試標準？
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">   要求：必須堅持 100% 測試通過率
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">2. 永不放棄鐵律檢查
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">   問：我是否想跳過、暫時處理、或延後任何問題？
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">   問：是否在尋找「更簡單」的方法來迴避複雜性？
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">   要求：必須面對並解決所有問題
</span></span><span class="line"><span class="ln">10</span><span class="cl">
</span></span><span class="line"><span class="ln">11</span><span class="cl">3. 架構債務零容忍鐵律檢查
</span></span><span class="line"><span class="ln">12</span><span class="cl">   問：我是否發現架構問題卻想稍後處理？
</span></span><span class="line"><span class="ln">13</span><span class="cl">   問：是否想要使用臨時方案或權宜措施？
</span></span><span class="line"><span class="ln">14</span><span class="cl">   要求：必須立即修正架構問題</span></span></code></pre></div><h4 id="第二階段逃避詞彙檢查">第二階段：逃避詞彙檢查</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-bash" data-lang="bash"><span class="line"><span class="ln"> 1</span><span class="cl">中文禁用詞彙掃描：
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">□ 「太複雜」「先將就」「暫時性修正」「症狀緩解」
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">□ 「先這樣處理」「臨時解決方案」「回避」「不想處理」
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">□ 「更簡單的方法」「簡化處理」「簡化測試」
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">□ 「發現問題但不處理」「架構問題先不管」「只加個 TODO」
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">□ 「智能」「自動」<span class="o">(</span>無具體描述<span class="o">)</span>「優化」<span class="o">(</span>無具體指標<span class="o">)</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">英文禁用詞彙掃描：
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">□ <span class="s2">&#34;workaround&#34;</span>, <span class="s2">&#34;bypass&#34;</span>, <span class="s2">&#34;hack&#34;</span>, <span class="s2">&#34;quick fix&#34;</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">□ <span class="s2">&#34;too complex&#34;</span>, <span class="s2">&#34;temporary fix&#34;</span>, <span class="s2">&#34;ignore for now&#34;</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl">□ <span class="s2">&#34;simpler approach&#34;</span>, <span class="s2">&#34;simpler way&#34;</span>, <span class="s2">&#34;easier approach&#34;</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl">□ <span class="s2">&#34;simplify test&#34;</span>, <span class="s2">&#34;basic test only&#34;</span>, <span class="s2">&#34;minimal test&#34;</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl">□ <span class="s2">&#34;comment out&#34;</span>, <span class="s2">&#34;disable&#34;</span>, <span class="s2">&#34;just add todo&#34;</span></span></span></code></pre></div><h4 id="第三階段品質標準檢查">第三階段：品質標準檢查</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">要求：解決方案完整性檢查
</span></span><span class="line"><span class="ln">2</span><span class="cl">   我的解決方案是完整的，還是妥協的？
</span></span><span class="line"><span class="ln">3</span><span class="cl">
</span></span><span class="line"><span class="ln">4</span><span class="cl">要求：根本問題檢查
</span></span><span class="line"><span class="ln">5</span><span class="cl">   我是否在迴避根本問題？
</span></span><span class="line"><span class="ln">6</span><span class="cl">
</span></span><span class="line"><span class="ln">7</span><span class="cl">要求：專業標準檢查
</span></span><span class="line"><span class="ln">8</span><span class="cl">   我的回應體現專業工程師標準嗎？
</span></span><span class="line"><span class="ln">9</span><span class="cl">   6個月後我會為這個回應感到驕傲嗎？</span></span></code></pre></div><h3 id="檢查失敗立即修正流程">檢查失敗立即修正流程</h3>
<p><strong>如果任何檢查項目失敗</strong>：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">1. 立即停止
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">   停止當前回應生成，不發送任何內容
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">2. 重新分析
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">   深入分析問題和解決方案
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">   識別導致違規的根本原因
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">3. 重新構思
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">   構思完全符合三大鐵律的回應
</span></span><span class="line"><span class="ln">10</span><span class="cl">   確保解決方案完整且專業
</span></span><span class="line"><span class="ln">11</span><span class="cl">
</span></span><span class="line"><span class="ln">12</span><span class="cl">4. 再次檢查
</span></span><span class="line"><span class="ln">13</span><span class="cl">   重新執行完整的 30 秒檢查流程
</span></span><span class="line"><span class="ln">14</span><span class="cl">   直到通過所有檢查項目才能回應</span></span></code></pre></div><h3 id="關鍵情境標準處理">關鍵情境標準處理</h3>
<h4 id="測試失敗情境">測試失敗情境</h4>
<p><strong>觸發條件</strong>：任何測試失敗、通過率 &lt; 100%</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">強制執行流程：
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">1. 立即停止所有其他工作
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">2. 啟動深度分析 agent (lavender-interface-designer)
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">3. 制定並執行完整解決方案
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">4. 驗證達到 100% 通過率
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">5. 記錄解決過程到工作日誌
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">嚴格禁止：
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">禁止：跳過失敗的測試
</span></span><span class="line"><span class="ln">10</span><span class="cl">禁止：認為 92% 通過率「已經很好」
</span></span><span class="line"><span class="ln">11</span><span class="cl">禁止：先處理其他「更重要」的工作
</span></span><span class="line"><span class="ln">12</span><span class="cl">禁止：採用臨時修補方案</span></span></code></pre></div><h4 id="複雜問題情境">複雜問題情境</h4>
<p><strong>觸發條件</strong>：問題看起來複雜、不知道解法</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">強制執行流程：
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">1. 承認複雜性，但拒絕放棄
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">2. 將複雜問題分解為可管理的子問題
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">3. 啟動相應的專業 agent
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">4. 按優先級逐一解決子問題
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">5. 記錄完整過程供未來參考
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">嚴格禁止：
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">禁止：認為問題「太複雜」而放棄
</span></span><span class="line"><span class="ln">10</span><span class="cl">禁止：尋求「權宜方案」
</span></span><span class="line"><span class="ln">11</span><span class="cl">禁止：跳過問題處理其他工作
</span></span><span class="line"><span class="ln">12</span><span class="cl">禁止：採用「暫時性」解決方案</span></span></code></pre></div><h4 id="架構問題情境">架構問題情境</h4>
<p><strong>觸發條件</strong>：發現設計缺陷、技術債務、架構不一致</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln"> 1</span><span class="cl">強制執行流程：
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">1. 立即停止功能開發
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">2. 評估影響範圍
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">3. 啟動重構專家 (cinnamon-refactor-owl)
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">4. 制定詳細修復計劃
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">5. 徹底修正後再繼續功能開發
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">嚴格禁止：
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">禁止：認為架構問題「影響不大」
</span></span><span class="line"><span class="ln">10</span><span class="cl">禁止：想要「之後再處理」
</span></span><span class="line"><span class="ln">11</span><span class="cl">禁止：繼續在有問題的架構上開發
</span></span><span class="line"><span class="ln">12</span><span class="cl">禁止：採用簡單修補而非根本性解決</span></span></code></pre></div><h2 id="執行標準">執行標準</h2>
<h3 id="延後必須有記錄">延後必須有記錄</h3>
<p>每個延後決定都要：</p>
<ul>
<li>記錄在工作日誌</li>
<li>標註預計處理時間</li>
<li>說明延後的理由</li>
</ul>
<h3 id="定期檢視累積">定期檢視累積</h3>
<ul>
<li>Sprint 結束檢查延後項目</li>
<li>版本發布前清理技術債務</li>
<li>超過兩個版本的延後必須處理</li>
</ul>
<h3 id="品質底線不妥協">品質底線不妥協</h3>
<p>無論如何都不能延後的：</p>
<ul>
<li><strong>安全性</strong>：任何安全問題</li>
<li><strong>資料完整性</strong>：可能造成資料遺失或錯誤</li>
<li><strong>核心體驗</strong>：用戶主要使用路徑</li>
</ul>
<h2 id="判別範例">判別範例</h2>
<h3 id="正例正確的延後">正例：正確的延後</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1">// TODO: v0.2 版本加入批次處理
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1">// 目前 v0.1 實作單筆處理
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="c1"></span><span class="kd">function</span> <span class="nx">processItem</span><span class="p">(</span><span class="nx">item</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">4</span><span class="cl">  <span class="k">return</span> <span class="nx">processSingle</span><span class="p">(</span><span class="nx">item</span><span class="p">);</span> <span class="c1">// 完整功能，可延後優化
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="c1"></span><span class="p">}</span></span></span></code></pre></div><p>理由：功能完整、有明確版本規劃、不影響使用。</p>
<h3 id="反例錯誤的逃避">反例：錯誤的逃避</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1">// TODO: 錯誤處理太麻煩，先不做
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"></span><span class="kd">function</span> <span class="nx">riskyOperation</span><span class="p">()</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="k">return</span> <span class="nx">doOperation</span><span class="p">();</span> <span class="c1">// 缺少錯誤處理，不可接受
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"></span><span class="p">}</span></span></span></code></pre></div><p>理由：核心責任缺失、沒有時程、影響穩定性。</p>
<h3 id="正例正確的最小實現">正例：正確的最小實現</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="kr">class</span> <span class="nx">DataProcessor</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  <span class="nx">process</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="c1">// v0.1: 同步處理
</span></span></span><span class="line"><span class="ln"> 4</span><span class="cl"><span class="c1"></span>    <span class="k">return</span> <span class="k">this</span><span class="p">.</span><span class="nx">syncProcess</span><span class="p">(</span><span class="nx">data</span><span class="p">);</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">  <span class="c1">// 預留介面給 v0.2 非同步處理
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="c1"></span>  <span class="kr">async</span> <span class="nx">processAsync</span><span class="p">(</span><span class="nx">data</span><span class="p">)</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    <span class="k">throw</span> <span class="k">new</span> <span class="nb">Error</span><span class="p">(</span><span class="s1">&#39;v0.2 功能&#39;</span><span class="p">);</span>
</span></span><span class="line"><span class="ln">10</span><span class="cl">  <span class="p">}</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="p">}</span></span></span></code></pre></div><p>理由：當前版本完整可用、為未來預留空間、有清楚邊界。</p>
<h3 id="反例錯誤的妥協">反例：錯誤的妥協</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-javascript" data-lang="javascript"><span class="line"><span class="ln">1</span><span class="cl"><span class="c1">// 測試太嚴格，先降低標準
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="c1"></span><span class="nx">test</span><span class="p">.</span><span class="nx">skip</span><span class="p">(</span><span class="s1">&#39;應該要處理邊界情況&#39;</span><span class="p">,</span> <span class="p">()</span> <span class="p">=&gt;</span> <span class="p">{</span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">  <span class="c1">// 跳過困難的測試
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="c1"></span><span class="p">});</span></span></span></code></pre></div><p>理由：降低品質標準、逃避問題、累積風險。</p>
<h2 id="文化與態度">文化與態度</h2>
<h3 id="我們的信念">我們的信念</h3>
<ul>
<li><strong>沒有解決不了的問題</strong>，只有還沒找到的方法</li>
<li><strong>延後是策略</strong>，逃避是失職</li>
<li><strong>技術債務必須管理</strong>，不是忽視</li>
</ul>
<h3 id="我們的承諾">我們的承諾</h3>
<ul>
<li>誠實面對技術挑戰</li>
<li>為決定負責並追蹤</li>
<li>維持專案的長期健康</li>
</ul>
<h3 id="我們的標準">我們的標準</h3>
<ul>
<li>每個延後都有明確計劃</li>
<li>每個問題都有解決方案</li>
<li>每個決定都能說明理由</li>
</ul>
<h2 id="執行保障三層防護機制完整架構">執行保障：三層防護機制完整架構</h2>
<h3 id="完整防護體系">完整防護體系</h3>
<p>為了確保這些原則被確實執行，我們建立了三層互補的防護機制：</p>
<h4 id="第一層ai-內建自檢主要防線">第一層：AI 內建自檢（主要防線）</h4>
<ul>
<li><strong>執行時機</strong>：每次回應前自動執行</li>
<li><strong>檢查範圍</strong>：三大鐵律、逃避詞彙、品質標準</li>
<li><strong>處理方式</strong>：檢查失敗立即停止回應生成，重新構思</li>
<li><strong>特色</strong>：源頭預防，即時阻止</li>
</ul>
<h4 id="第二層hook-系統驗證輔助驗證">第二層：Hook 系統驗證（輔助驗證）</h4>
<ul>
<li><strong>執行時機</strong>：用戶輸入、檔案編輯、工具使用前後</li>
<li><strong>檢查範圍</strong>：ESLint 錯誤、技術債務、程式異味</li>
<li><strong>處理方式</strong>：自動記錄問題、啟動 agents 處理</li>
<li><strong>特色</strong>：持續監控，事後驗證</li>
</ul>
<h4 id="第三層修復模式最後防線">第三層：修復模式（最後防線）</h4>
<ul>
<li><strong>觸發條件</strong>：前兩層發現違規行為或品質問題</li>
<li><strong>處理方式</strong>：進入修復模式，完成修正後才能繼續</li>
<li><strong>特色</strong>：強制修正，確保問題得到解決</li>
</ul>
<h3 id="三層協作機制">三層協作機制</h3>
<h4 id="正常工作流程">正常工作流程</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">用戶輸入 → AI自檢 → 通過 → 生成回應 → Hook驗證 → 正常繼續</span></span></code></pre></div><h4 id="發現問題時">發現問題時</h4>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="ln">1</span><span class="cl">AI自檢失敗 → 重新構思 → 再次檢查 → 通過後回應
</span></span><span class="line"><span class="ln">2</span><span class="cl">Hook檢測問題 → 記錄追蹤 → 必要時啟動修復模式
</span></span><span class="line"><span class="ln">3</span><span class="cl">修復模式 → 停止開發 → 修正問題 → 驗證完成 → 繼續開發</span></span></code></pre></div><h3 id="關鍵優勢">關鍵優勢</h3>
<h4 id="多重保障">多重保障</h4>
<ul>
<li>AI 自檢確保源頭品質</li>
<li>Hook 系統提供持續監控</li>
<li>修復模式確保問題解決</li>
</ul>
<h4 id="精確判斷">精確判斷</h4>
<ul>
<li>區分計劃性延後和逃避行為</li>
<li>識別技術文檔中的範例程式碼</li>
<li>理解上下文和開發階段</li>
</ul>
<h4 id="自動化執行">自動化執行</h4>
<ul>
<li>無需人工干預</li>
<li>一致性執行標準</li>
<li>即時問題發現和處理</li>
</ul>
<h3 id="防護機制效果">防護機制效果</h3>
<p>這套三層防護機制確保：</p>
<ul>
<li><strong>原則被一致執行</strong>：沒有例外情況</li>
<li><strong>問題被及時發現</strong>：多個時間點檢查</li>
<li><strong>品質不因壓力妥協</strong>：自動化強制執行</li>
<li><strong>逃避行為被根本預防</strong>：從思維層面攔截</li>
</ul>
<h2 id="結論從根本預防逃避行為的完整方法論">結論：從根本預防逃避行為的完整方法論</h2>
<p>這套方法論代表了我們在 AI 協作品質控制上的重大突破。我們從最初的 Hook 系統發展到現在的三層防護機制，實現了從<strong>事後修正</strong>到<strong>源頭預防</strong>的根本性轉變。</p>
<h3 id="核心成就">核心成就</h3>
<h4 id="從反應式到預防式">從反應式到預防式</h4>
<ul>
<li><strong>過去</strong>：Hook 系統發現問題後修正</li>
<li><strong>現在</strong>：AI 自檢在問題產生前攔截</li>
<li><strong>效果</strong>：逃避行為從源頭被消除</li>
</ul>
<h4 id="從單一防護到多層保障">從單一防護到多層保障</h4>
<ul>
<li><strong>第一層</strong>：AI 內建自檢（30秒強制檢查）</li>
<li><strong>第二層</strong>：Hook 系統驗證（持續監控）</li>
<li><strong>第三層</strong>：修復模式（強制修正）</li>
<li><strong>效果</strong>：任何逃避行為都無法逃脫檢測</li>
</ul>
<h4 id="從人工監督到自動化執行">從人工監督到自動化執行</h4>
<ul>
<li><strong>自檢機制</strong>：每次回應前自動執行</li>
<li><strong>檢查標準</strong>：三大鐵律 + 違規詞彙 + 品質標準</li>
<li><strong>處理流程</strong>：檢查失敗立即重新構思</li>
<li><strong>效果</strong>：零人工干預的品質保證</li>
</ul>
<h3 id="方法論價值">方法論價值</h3>
<p>這不只是技術工具，更是<strong>工作哲學的具體實現</strong>：</p>
<h4 id="永不妥協的品質標準">永不妥協的品質標準</h4>
<ul>
<li>計劃性延後是正當策略</li>
<li>逃避性拖延絕不容忍</li>
<li>100% 測試通過率是最低標準</li>
<li>架構問題必須立即修正</li>
</ul>
<h4 id="思維模式">思維模式</h4>
<ul>
<li>面對複雜問題不逃避，而是分解解決</li>
<li>發現問題立即處理，不推遲到未來</li>
<li>追求根本性解決，拒絕症狀緩解</li>
<li>維持長期視角，拒絕短期妥協</li>
</ul>
<h4 id="可持續的開發實踐">可持續的開發實踐</h4>
<ul>
<li>技術債務得到控制</li>
<li>程式碼品質持續提升</li>
<li>團隊標準保持一致</li>
<li>專案健康度不斷改善</li>
</ul>
<h3 id="執行承諾">執行承諾</h3>
<h4 id="這是要求不是建議這是標準不是理想">這是要求，不是建議。這是標準，不是理想</h4>
<ul>
<li>任何違反這些原則的行為，無論來自人類還是 AI，都會被三層防護機制檢測並要求修正</li>
<li>AI 每次回應前都必須通過 30 秒自檢</li>
<li>Hook 系統持續監控所有開發活動，確保品質標準</li>
<li>修復模式在發現問題時強制執行，直到問題徹底解決</li>
</ul>
<p>這套三層防護機制目標是：</p>
<ul>
<li><strong>可信賴的 AI 協作關係</strong></li>
<li><strong>可持續的品質保證體系</strong></li>
<li><strong>可擴展的開發方法論</strong></li>
<li><strong>可複製的成功模式</strong></li>
</ul>
<p>我們將持續改進這套機制，讓它成為所有 AI 協作專案的標準基礎設施，確保每個專案都能維持最高的品質標準。</p>
<p>這是品質保證系統，確保 AI 協作始終維持最高執行標準，而非放任品質下滑。</p>
<hr>]]></content:encoded></item></channel></rss>