<?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>Writing on Tarragon</title><link>https://tarrragon.github.io/blog/tags/writing/</link><description>Recent content in Writing on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Fri, 26 Jun 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/writing/index.xml" rel="self" type="application/rss+xml"/><item><title>降一級寫法：用矩陣框架讓技術讀者讀懂商業分析</title><link>https://tarrragon.github.io/blog/business/reading-frameworks/writing-down-a-level/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/business/reading-frameworks/writing-down-a-level/</guid><description>&lt;p>降一級寫法的核心目的是讓目標讀者比文章原本預設讀者低一級的人也能讀懂。寫商業 case-analyses 時、寫作者常不自覺把目標讀者預設成「跟自己同行的 VC / 創辦人 / 策略人」（&lt;a href="https://tarrragon.github.io/blog/business/reading-frameworks/reader-purpose-matrix/" data-link-title="媒介—讀者—目的矩陣" data-link-desc="用媒介、讀者、目的三軸定位一篇商業分析的類型，避免把策略分析誤讀成投資建議或把產業內幕誤讀成大眾財經">矩陣&lt;/a> 的「深度部落格」層）、但實際讀者是「工程背景、想理解商業分析」（接近「MBA 教材」層）。一級的落差不大、但累積起來會讓讀者在每段都需要回去查術語跟拆因果鏈、閱讀成本爆增。&lt;/p>
&lt;h2 id="為什麼會寫超過目標讀者一級">為什麼會寫超過目標讀者一級&lt;/h2>
&lt;p>寫商業分析的常見陷阱是把「自己熟悉的術語密度」當預設。寫作者跟 VC / 創辦人對 &lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/cac/" data-link-title="CAC" data-link-desc="說明獲客成本及其對商業模式可行性的決定作用">CAC&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/unit-economics/" data-link-title="Unit Economics" data-link-desc="說明單位經濟模型與其判斷一家公司是否賺錢的責任">單位經濟&lt;/a>、&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/gross-margin/" data-link-title="Gross Margin" data-link-desc="說明毛利率與其對商業模式可行性的決定作用">毛利&lt;/a> 是日常詞彙、一句話三個術語也通順；但對技術背景讀者、這些術語都需要查、一句話三個術語就成了「停下來查三次」。&lt;/p>
&lt;p>實際 case：&lt;a href="https://tarrragon.github.io/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal 之後&lt;/a> 第一層擠壓段原本寫成：&lt;/p>
&lt;blockquote>
&lt;p>毛利下降是讓 P&amp;amp;L 跑不過去的差距。PLG 的數學算不過來、要轉成 Sales-led 或 FDE、但這又拉高 CAC。兩頭夾擊—單位經濟受傷、估值倍數被壓。&lt;/p>&lt;/blockquote>
&lt;p>3 句話塞了 6 個術語（毛利、P&amp;amp;L、PLG、Sales-led、FDE、CAC、單位經濟、估值倍數）。對 VC / 創辦人來說 3 秒讀完；對工程背景讀者來說每句都要停下來解碼、整段讀完得花 2-3 分鐘。&lt;/p>
&lt;h2 id="降一級的四個策略">降一級的四個策略&lt;/h2>
&lt;h3 id="策略一拆因果鏈每個邏輯-step-獨立成句">策略一：拆因果鏈、每個邏輯 step 獨立成句&lt;/h3>
&lt;p>原版把「毛利下降 → PLG 數學算不過來 → 要轉 Sales-led 或 FDE → CAC 拉高 → 兩頭夾擊 → 單位經濟受傷 → 估值倍數被壓」這個 7 步推論壓進 3 句話。每步邏輯跳躍對熟悉領域的人是省力、對讀者是要在腦中補完跳過的步驟。&lt;/p>
&lt;p>降一級的做法是把每個邏輯 step 獨立成段、用「第一 / 第二 / 第三」結構讓讀者跟得上：&lt;/p>
&lt;ul>
&lt;li>第一、賺到的錢不夠付業務跟行銷（毛利下降的直接後果）&lt;/li>
&lt;li>第二、免費試用變成燒錢（為什麼 PLG 數學算不過來）&lt;/li>
&lt;li>第三、被迫轉成更貴的銷售模式（為什麼要轉 Sales-led / FDE）&lt;/li>
&lt;/ul>
&lt;p>每段獨立、讀者一次處理一個概念、不用在腦中疊三個跳躍。&lt;/p>
&lt;h3 id="策略二術語首次出現時-unpack">策略二：術語首次出現時 unpack&lt;/h3>
&lt;p>原版的「&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG&lt;/a>」連結到卡片、技術上沒問題、但讀者要中斷閱讀去點連結看卡片才能繼續。&lt;/p>
&lt;p>降一級的做法是首次出現時直接在括號裡解釋一句：&lt;/p>
&lt;blockquote>
&lt;p>&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG&lt;/a>（Product-Led Growth、靠產品自己吸引用戶上來、不靠業務推銷）&lt;/p>&lt;/blockquote>
&lt;p>讀者讀到這裡不用點開連結、括號裡的一句話就夠跟上後續論證。卡片連結保留、是給想深入的讀者用、不是預設動作。&lt;/p>
&lt;h3 id="策略三加具體算式--數字">策略三：加具體算式 / 數字&lt;/h3>
&lt;p>原版的「毛利下降」「兩頭夾擊」「估值倍數被壓」都是抽象描述。降一級的做法是配具體數字：&lt;/p>
&lt;ul>
&lt;li>毛利下降 → 「從 70-80% 掉到 50% 出頭、30 個百分點差距」&lt;/li>
&lt;li>兩頭夾擊 → 「收入端毛利從 70% 掉到 50%、支出端 CAC 從幾十美元跳到幾千甚至幾萬美元」&lt;/li>
&lt;li>估值倍數被壓 → 沒有直接數字、但前後的因果鏈讓讀者能自己推導&lt;/li>
&lt;/ul>
&lt;p>抽象描述對熟悉領域的人是「我知道你在說什麼」、對讀者是「我不知道這個尺度多大」。具體數字提供尺度感。&lt;/p>
&lt;h3 id="策略四避免術語連發術語之間用白話橋連接">策略四：避免術語連發、術語之間用「白話橋」連接&lt;/h3>
&lt;p>原版「PLG 的數學算不過來、要轉成 Sales-led 或 FDE、但這又拉高 CAC」是 4 個術語連發、白話讀者要在腦中組裝因果。&lt;/p>
&lt;p>降一級的做法是用白話句連接術語：&lt;/p>
&lt;blockquote>
&lt;p>PLG 不能用、改回業務面對面賣（Sales-led）、或乾脆派工程師駐點客戶辦公室（FDE、Forward Deployed Engineer）&lt;/p>&lt;/blockquote>
&lt;p>「改回業務面對面賣」「乾脆派工程師駐點客戶辦公室」這兩句白話橋讓讀者看到從 PLG 轉到 Sales-led 或 FDE 的具體畫面、不是術語對術語的跳躍。&lt;/p>
&lt;h2 id="對照示範">對照示範&lt;/h2>
&lt;p>同一段內容、用兩個 register 寫：&lt;/p>
&lt;p>&lt;strong>原版（深度部落格 / VC、創辦人）&lt;/strong>：&lt;/p>
&lt;blockquote>
&lt;p>毛利下降是讓 &lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/pnl/" data-link-title="P&amp;amp;L" data-link-desc="說明損益表的結構與商業判讀作用">P&amp;amp;L&lt;/a> 跑不過去的差距。&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG&lt;/a> 的數學算不過來、要轉成 Sales-led 或 &lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/fde/" data-link-title="FDE" data-link-desc="說明前線部署工程師模式的成立條件">FDE&lt;/a>、但這又拉高 &lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/cac/" data-link-title="CAC" data-link-desc="說明獲客成本及其對商業模式可行性的決定作用">CAC&lt;/a>。兩頭夾擊—&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/unit-economics/" data-link-title="Unit Economics" data-link-desc="說明單位經濟模型與其判斷一家公司是否賺錢的責任">單位經濟&lt;/a> 受傷、&lt;a href="https://tarrragon.github.io/blog/business/knowledge-cards/valuation/" data-link-title="Valuation" data-link-desc="說明估值的構成與商業判讀作用">估值&lt;/a> 倍數被壓。&lt;/p>&lt;/blockquote>
&lt;p>3 句、約 100 字。&lt;/p>
&lt;p>&lt;strong>降一級（MBA 教材 / 學生、經理人 / 工程背景讀者）&lt;/strong>：&lt;/p></description><content:encoded><![CDATA[<p>降一級寫法的核心目的是讓目標讀者比文章原本預設讀者低一級的人也能讀懂。寫商業 case-analyses 時、寫作者常不自覺把目標讀者預設成「跟自己同行的 VC / 創辦人 / 策略人」（<a href="/blog/business/reading-frameworks/reader-purpose-matrix/" data-link-title="媒介—讀者—目的矩陣" data-link-desc="用媒介、讀者、目的三軸定位一篇商業分析的類型，避免把策略分析誤讀成投資建議或把產業內幕誤讀成大眾財經">矩陣</a> 的「深度部落格」層）、但實際讀者是「工程背景、想理解商業分析」（接近「MBA 教材」層）。一級的落差不大、但累積起來會讓讀者在每段都需要回去查術語跟拆因果鏈、閱讀成本爆增。</p>
<h2 id="為什麼會寫超過目標讀者一級">為什麼會寫超過目標讀者一級</h2>
<p>寫商業分析的常見陷阱是把「自己熟悉的術語密度」當預設。寫作者跟 VC / 創辦人對 <a href="/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG</a>、<a href="/blog/business/knowledge-cards/cac/" data-link-title="CAC" data-link-desc="說明獲客成本及其對商業模式可行性的決定作用">CAC</a>、<a href="/blog/business/knowledge-cards/unit-economics/" data-link-title="Unit Economics" data-link-desc="說明單位經濟模型與其判斷一家公司是否賺錢的責任">單位經濟</a>、<a href="/blog/business/knowledge-cards/gross-margin/" data-link-title="Gross Margin" data-link-desc="說明毛利率與其對商業模式可行性的決定作用">毛利</a> 是日常詞彙、一句話三個術語也通順；但對技術背景讀者、這些術語都需要查、一句話三個術語就成了「停下來查三次」。</p>
<p>實際 case：<a href="/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal 之後</a> 第一層擠壓段原本寫成：</p>
<blockquote>
<p>毛利下降是讓 P&amp;L 跑不過去的差距。PLG 的數學算不過來、要轉成 Sales-led 或 FDE、但這又拉高 CAC。兩頭夾擊—單位經濟受傷、估值倍數被壓。</p></blockquote>
<p>3 句話塞了 6 個術語（毛利、P&amp;L、PLG、Sales-led、FDE、CAC、單位經濟、估值倍數）。對 VC / 創辦人來說 3 秒讀完；對工程背景讀者來說每句都要停下來解碼、整段讀完得花 2-3 分鐘。</p>
<h2 id="降一級的四個策略">降一級的四個策略</h2>
<h3 id="策略一拆因果鏈每個邏輯-step-獨立成句">策略一：拆因果鏈、每個邏輯 step 獨立成句</h3>
<p>原版把「毛利下降 → PLG 數學算不過來 → 要轉 Sales-led 或 FDE → CAC 拉高 → 兩頭夾擊 → 單位經濟受傷 → 估值倍數被壓」這個 7 步推論壓進 3 句話。每步邏輯跳躍對熟悉領域的人是省力、對讀者是要在腦中補完跳過的步驟。</p>
<p>降一級的做法是把每個邏輯 step 獨立成段、用「第一 / 第二 / 第三」結構讓讀者跟得上：</p>
<ul>
<li>第一、賺到的錢不夠付業務跟行銷（毛利下降的直接後果）</li>
<li>第二、免費試用變成燒錢（為什麼 PLG 數學算不過來）</li>
<li>第三、被迫轉成更貴的銷售模式（為什麼要轉 Sales-led / FDE）</li>
</ul>
<p>每段獨立、讀者一次處理一個概念、不用在腦中疊三個跳躍。</p>
<h3 id="策略二術語首次出現時-unpack">策略二：術語首次出現時 unpack</h3>
<p>原版的「<a href="/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG</a>」連結到卡片、技術上沒問題、但讀者要中斷閱讀去點連結看卡片才能繼續。</p>
<p>降一級的做法是首次出現時直接在括號裡解釋一句：</p>
<blockquote>
<p><a href="/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG</a>（Product-Led Growth、靠產品自己吸引用戶上來、不靠業務推銷）</p></blockquote>
<p>讀者讀到這裡不用點開連結、括號裡的一句話就夠跟上後續論證。卡片連結保留、是給想深入的讀者用、不是預設動作。</p>
<h3 id="策略三加具體算式--數字">策略三：加具體算式 / 數字</h3>
<p>原版的「毛利下降」「兩頭夾擊」「估值倍數被壓」都是抽象描述。降一級的做法是配具體數字：</p>
<ul>
<li>毛利下降 → 「從 70-80% 掉到 50% 出頭、30 個百分點差距」</li>
<li>兩頭夾擊 → 「收入端毛利從 70% 掉到 50%、支出端 CAC 從幾十美元跳到幾千甚至幾萬美元」</li>
<li>估值倍數被壓 → 沒有直接數字、但前後的因果鏈讓讀者能自己推導</li>
</ul>
<p>抽象描述對熟悉領域的人是「我知道你在說什麼」、對讀者是「我不知道這個尺度多大」。具體數字提供尺度感。</p>
<h3 id="策略四避免術語連發術語之間用白話橋連接">策略四：避免術語連發、術語之間用「白話橋」連接</h3>
<p>原版「PLG 的數學算不過來、要轉成 Sales-led 或 FDE、但這又拉高 CAC」是 4 個術語連發、白話讀者要在腦中組裝因果。</p>
<p>降一級的做法是用白話句連接術語：</p>
<blockquote>
<p>PLG 不能用、改回業務面對面賣（Sales-led）、或乾脆派工程師駐點客戶辦公室（FDE、Forward Deployed Engineer）</p></blockquote>
<p>「改回業務面對面賣」「乾脆派工程師駐點客戶辦公室」這兩句白話橋讓讀者看到從 PLG 轉到 Sales-led 或 FDE 的具體畫面、不是術語對術語的跳躍。</p>
<h2 id="對照示範">對照示範</h2>
<p>同一段內容、用兩個 register 寫：</p>
<p><strong>原版（深度部落格 / VC、創辦人）</strong>：</p>
<blockquote>
<p>毛利下降是讓 <a href="/blog/business/knowledge-cards/pnl/" data-link-title="P&amp;L" data-link-desc="說明損益表的結構與商業判讀作用">P&amp;L</a> 跑不過去的差距。<a href="/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG</a> 的數學算不過來、要轉成 Sales-led 或 <a href="/blog/business/knowledge-cards/fde/" data-link-title="FDE" data-link-desc="說明前線部署工程師模式的成立條件">FDE</a>、但這又拉高 <a href="/blog/business/knowledge-cards/cac/" data-link-title="CAC" data-link-desc="說明獲客成本及其對商業模式可行性的決定作用">CAC</a>。兩頭夾擊—<a href="/blog/business/knowledge-cards/unit-economics/" data-link-title="Unit Economics" data-link-desc="說明單位經濟模型與其判斷一家公司是否賺錢的責任">單位經濟</a> 受傷、<a href="/blog/business/knowledge-cards/valuation/" data-link-title="Valuation" data-link-desc="說明估值的構成與商業判讀作用">估值</a> 倍數被壓。</p></blockquote>
<p>3 句、約 100 字。</p>
<p><strong>降一級（MBA 教材 / 學生、經理人 / 工程背景讀者）</strong>：</p>
<blockquote>
<p>這個毛利下降會連動三件事。</p>
<p><strong>第一、賺到的錢不夠付業務跟行銷。</strong> 傳統 SaaS 賣 100 元、扣掉伺服器費用後剩 70-80 元（毛利 70-80%）、即使花 30% 在業務跟行銷也還能賺；AI 應用賣 100 元、要付給上游模型供應商的 token 費後只剩 50 元出頭（毛利 50%）、同樣花 30% 在業務跟行銷只剩 20% 利潤、<a href="/blog/business/knowledge-cards/pnl/" data-link-title="P&amp;L" data-link-desc="說明損益表的結構與商業判讀作用">損益表 P&amp;L</a>（公司一段期間內賺賠的財務報表）從正轉負。</p>
<p><strong>第二、免費試用變成燒錢。</strong> 傳統 SaaS 的「免費試用」幾乎零成本—多開帳號伺服器頂多多用一點；AI 應用的免費試用每次都在燒 GPU 算力、是真實的成本支出。<a href="/blog/business/knowledge-cards/plg/" data-link-title="PLG" data-link-desc="說明產品自助成長模式與其經濟前提">PLG</a>（Product-Led Growth、靠產品自己吸引用戶上來、不靠業務推銷）模式靠的就是「免費試用零成本」這個前提、毛利掉到 50% 時這套數學就跑不下去了。</p>
<p><strong>第三、被迫轉成更貴的銷售模式。</strong> PLG 不能用、改回業務面對面賣（Sales-led）、或乾脆派工程師駐點客戶辦公室（<a href="/blog/business/knowledge-cards/fde/" data-link-title="FDE" data-link-desc="說明前線部署工程師模式的成立條件">FDE</a>、Forward Deployed Engineer）、但這兩條路都讓 <a href="/blog/business/knowledge-cards/cac/" data-link-title="CAC" data-link-desc="說明獲客成本及其對商業模式可行性的決定作用">CAC</a>（Customer Acquisition Cost、獲取一個新客戶要花的所有成本）從 PLG 的幾十美元跳到 Sales-led 的幾千美元、再到 FDE 的幾萬甚至幾十萬美元。</p>
<p>收入端（毛利從 70% 掉到 50%）被壓縮、支出端（CAC 上升 100 倍）被拉高—兩頭夾擊讓 <a href="/blog/business/knowledge-cards/unit-economics/" data-link-title="Unit Economics" data-link-desc="說明單位經濟模型與其判斷一家公司是否賺錢的責任">單位經濟</a>（每個客戶能不能帶來足夠收入回本獲客成本）受傷。投資人計算 <a href="/blog/business/knowledge-cards/valuation/" data-link-title="Valuation" data-link-desc="說明估值的構成與商業判讀作用">估值</a> 倍數時看到這個結構性壓縮、給的估值就低、新創 <a href="/blog/business/knowledge-cards/burn-rate/" data-link-title="Burn Rate" data-link-desc="說明燒錢速度及其對新創存活的決定作用">burn rate</a>（每月燒錢速度）變相加速、生存難度提高。</p></blockquote>
<p>5 段、約 500 字。長度增 5 倍、但讀者一次處理一個概念、不用中斷查術語。</p>
<h2 id="篇幅成本跟對齊讀者的取捨">篇幅成本跟對齊讀者的取捨</h2>
<p>降一級的代價是篇幅 3-5 倍。寫作者要判斷這個代價值不值：</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>降一級策略</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>文章定位 = 教學知識庫、目標讀者跨領域</td>
          <td>降一級、值得篇幅成本</td>
      </tr>
      <tr>
          <td>文章定位 = 給同行看的策略分析、讀者已熟悉</td>
          <td>不降級、保留術語密度</td>
      </tr>
      <tr>
          <td>同篇文章中段落定位不同</td>
          <td>核心論點段降一級、輔助段不降</td>
      </tr>
      <tr>
          <td>同一概念在文章中第二次出現</td>
          <td>第一次降級 unpack、後續直接用詞</td>
      </tr>
  </tbody>
</table>
<p>判別線：「我希望讀者直接吸收還是先學術語」。前者降級、後者保留密度。</p>
<h2 id="跨領域應用技術文章降級給商業讀者">跨領域應用：技術文章降級給商業讀者</h2>
<p>降一級寫法不只用在「商業降給工程師」這個方向、反方向也成立。寫技術文章給商業讀者看時、同樣的策略適用：</p>
<ul>
<li>拆因果鏈：把「Eventually Consistency 導致 stale read」拆成「資料更新後不會立刻所有人都看到、可能會看到舊版」</li>
<li>Unpack 術語：「Eventual Consistency（最終一致性、資料更新會慢慢傳到所有副本）」</li>
<li>加具體數字 / 例子：「副本之間最多差 100 毫秒、千分之一的請求會讀到舊版」</li>
<li>用白話橋連接術語：「資料庫一寫入、其他副本可能要 100 毫秒才同步過來、這段時間讀到的是舊版」</li>
</ul>
<p>矩陣框架的可遷移性：判別目標讀者層級 → 降一級寫法 → 對照原版檢查篇幅 vs 易讀性的取捨。任何跨領域知識傳達都適用。</p>
<h2 id="完稿時的降級檢查">完稿時的「降級檢查」</h2>
<p>寫完一段後跑：</p>
<ol>
<li>數一下這段塞了幾個術語（縮寫、行話、領域特定詞）</li>
<li>三個以上術語連發、考慮拆段或加白話橋</li>
<li>因果鏈跳躍超過 2 步、考慮用「第一 / 第二 / 第三」結構拆細</li>
<li>術語首次出現時、考慮在括號裡加一句解釋</li>
<li>抽象描述（「夾擊」「擠壓」「鬆動」）配具體數字或例子</li>
</ol>
<p>完稿後找一個目標讀者層級的人試讀、看哪段需要解釋、就是降級沒做夠的地方。</p>
<h2 id="延伸閱讀">延伸閱讀</h2>
<ul>
<li><a href="/blog/business/reading-frameworks/reader-purpose-matrix/" data-link-title="媒介—讀者—目的矩陣" data-link-desc="用媒介、讀者、目的三軸定位一篇商業分析的類型，避免把策略分析誤讀成投資建議或把產業內幕誤讀成大眾財經">媒介—讀者—目的矩陣</a> — 識別文章類型跟目標讀者</li>
<li><a href="/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal 之後</a> — 採用降一級寫法的 case-analyses 示範</li>
</ul>
]]></content:encoded></item><item><title>Writing 的 multi-pass review：N 輪 review、每輪換 frame</title><link>https://tarrragon.github.io/blog/report/writing-multi-pass-review/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/writing-multi-pass-review/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>寫文字（文章 / 註解 / doc / prompt / commit message）的 ROI 來自 &lt;strong>N 輪不同 frame 的 re-read&lt;/strong>、不是單次「寫對」。每輪 catch 上一輪 frame miss 的東西：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>輪次&lt;/th>
 &lt;th>Frame&lt;/th>
 &lt;th>抓什麼&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>1&lt;/td>
 &lt;td>生成&lt;/td>
 &lt;td>把 idea 變字、預期會有錯&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>2&lt;/td>
 &lt;td>對意圖（&lt;a href="../ease-of-writing-vs-intent-alignment/">#67&lt;/a>）&lt;/td>
 &lt;td>寫出來跟原意對齊嗎、有沒有便利驅動的偏移&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>3&lt;/td>
 &lt;td>機會成本語氣&lt;/td>
 &lt;td>有沒有「應該」「不行」「正確」絕對主義？是不是該翻成「在 X 情境下 A 較好、Y 情境 B 較好」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>4&lt;/td>
 &lt;td>Grep-ability / 命名&lt;/td>
 &lt;td>關鍵字前置嗎？AI 能單次 grep 命中嗎？&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>5&lt;/td>
 &lt;td>反例 / 邊界&lt;/td>
 &lt;td>「何時不適用」段寫了嗎？反模式列了嗎？&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>每輪用「跟前一輪不同的眼睛」看同一份文字 — 才能 catch 不同層的問題。&lt;strong>第 1 輪的 frame 不可能同時 catch 所有層&lt;/strong>（&lt;a href="../literal-interception-vs-behavioral-refinement/">#82&lt;/a> 字面 vs 行為的 ceiling）。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼一輪寫不出全部維度">為什麼一輪寫不出全部維度&lt;/h2>
&lt;p>寫的時候 working memory 有限、必須 collapse 多個維度去專注其中之一：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>生成 frame&lt;/strong> 在意 idea 完整 → 顧不上語氣&lt;/li>
&lt;li>&lt;strong>語氣 frame&lt;/strong> 在意「機會成本 vs 絕對主義」→ 顧不上 grep-ability&lt;/li>
&lt;li>&lt;strong>grep frame&lt;/strong> 在意關鍵字前置 → 顧不上反例&lt;/li>
&lt;/ul>
&lt;p>要求一輪同時 catch 所有 = 認知超載。實際結果是「每個維度都做一半」。&lt;/p>
&lt;p>&lt;strong>多輪設計接受 working memory 限制、用 N 輪解 N 維&lt;/strong>。每輪只專注一個 frame、效率反而高。&lt;/p>
&lt;hr>
&lt;h2 id="五輪-review-的具體-checklist">五輪 review 的具體 checklist&lt;/h2>
&lt;h3 id="輪-1生成">輪 1：生成&lt;/h3>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> idea 從頭寫到尾、不停下來改&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 預期會有 typo、結構亂、語氣不對 — 不在這輪修&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 跑得到結尾比寫得漂亮重要&lt;/li>
&lt;/ul>
&lt;h3 id="輪-2對意圖67">輪 2：對意圖（&lt;a href="../ease-of-writing-vs-intent-alignment/">#67&lt;/a>）&lt;/h3>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 開頭一句講清「這段在說什麼」嗎？&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 有沒有 #67 的「便利驅動偏移」— 寫得順但其實偏題了？&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 段落順序是不是「好寫」決定的、不是「易讀」決定的？&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 有沒有「為了補滿格式」寫的廢段？&lt;/li>
&lt;/ul>
&lt;h3 id="輪-3機會成本語氣">輪 3：機會成本語氣&lt;/h3>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 跑 grep 抓「應該 / 必須 / 不行 / 不可以 / 正確的方式 / 唯一」這些絕對詞&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 每個絕對詞檢查：是物理 / 法律 / 安全事實嗎？不是的話翻成「在 X 情境下 A 較好、Y 情境下 B 較好」&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 反模式表的「為什麼不好」寫到「違反某個原則」、不寫「就是不對」&lt;/li>
&lt;/ul>
&lt;h3 id="輪-4grep-ability--命名">輪 4：Grep-ability / 命名&lt;/h3>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 關鍵字在段首、不在段中&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 表格欄位用 grep 友善的分隔（&lt;code>:&lt;/code> &lt;code>|&lt;/code> &lt;code>→&lt;/code>）&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 檔名 / slug 跟 title 對應、不要用流水號&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 命名能用單次 grep 命中、不需要語意推理&lt;/li>
&lt;/ul>
&lt;h3 id="輪-5反例--邊界">輪 5：反例 / 邊界&lt;/h3>
&lt;ul>
&lt;li>&lt;input disabled="" type="checkbox"> 「何時不適用」段寫了嗎？&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 反模式表給「為什麼不好 + 修法」嗎、還是只給警告？&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 跨卡 cross-link 補了嗎？&lt;/li>
&lt;li>&lt;input disabled="" type="checkbox"> 有沒有 over-claim、把「在多數情境下」說成「總是」？&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="套用到不同-output-類型">套用到不同 output 類型&lt;/h2>
&lt;p>每類有特化的輪次組合：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>寫文字（文章 / 註解 / doc / prompt / commit message）的 ROI 來自 <strong>N 輪不同 frame 的 re-read</strong>、不是單次「寫對」。每輪 catch 上一輪 frame miss 的東西：</p>
<table>
  <thead>
      <tr>
          <th>輪次</th>
          <th>Frame</th>
          <th>抓什麼</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>生成</td>
          <td>把 idea 變字、預期會有錯</td>
      </tr>
      <tr>
          <td>2</td>
          <td>對意圖（<a href="../ease-of-writing-vs-intent-alignment/">#67</a>）</td>
          <td>寫出來跟原意對齊嗎、有沒有便利驅動的偏移</td>
      </tr>
      <tr>
          <td>3</td>
          <td>機會成本語氣</td>
          <td>有沒有「應該」「不行」「正確」絕對主義？是不是該翻成「在 X 情境下 A 較好、Y 情境 B 較好」</td>
      </tr>
      <tr>
          <td>4</td>
          <td>Grep-ability / 命名</td>
          <td>關鍵字前置嗎？AI 能單次 grep 命中嗎？</td>
      </tr>
      <tr>
          <td>5</td>
          <td>反例 / 邊界</td>
          <td>「何時不適用」段寫了嗎？反模式列了嗎？</td>
      </tr>
  </tbody>
</table>
<p>每輪用「跟前一輪不同的眼睛」看同一份文字 — 才能 catch 不同層的問題。<strong>第 1 輪的 frame 不可能同時 catch 所有層</strong>（<a href="../literal-interception-vs-behavioral-refinement/">#82</a> 字面 vs 行為的 ceiling）。</p>
<hr>
<h2 id="為什麼一輪寫不出全部維度">為什麼一輪寫不出全部維度</h2>
<p>寫的時候 working memory 有限、必須 collapse 多個維度去專注其中之一：</p>
<ul>
<li><strong>生成 frame</strong> 在意 idea 完整 → 顧不上語氣</li>
<li><strong>語氣 frame</strong> 在意「機會成本 vs 絕對主義」→ 顧不上 grep-ability</li>
<li><strong>grep frame</strong> 在意關鍵字前置 → 顧不上反例</li>
</ul>
<p>要求一輪同時 catch 所有 = 認知超載。實際結果是「每個維度都做一半」。</p>
<p><strong>多輪設計接受 working memory 限制、用 N 輪解 N 維</strong>。每輪只專注一個 frame、效率反而高。</p>
<hr>
<h2 id="五輪-review-的具體-checklist">五輪 review 的具體 checklist</h2>
<h3 id="輪-1生成">輪 1：生成</h3>
<ul>
<li><input disabled="" type="checkbox"> idea 從頭寫到尾、不停下來改</li>
<li><input disabled="" type="checkbox"> 預期會有 typo、結構亂、語氣不對 — 不在這輪修</li>
<li><input disabled="" type="checkbox"> 跑得到結尾比寫得漂亮重要</li>
</ul>
<h3 id="輪-2對意圖67">輪 2：對意圖（<a href="../ease-of-writing-vs-intent-alignment/">#67</a>）</h3>
<ul>
<li><input disabled="" type="checkbox"> 開頭一句講清「這段在說什麼」嗎？</li>
<li><input disabled="" type="checkbox"> 有沒有 #67 的「便利驅動偏移」— 寫得順但其實偏題了？</li>
<li><input disabled="" type="checkbox"> 段落順序是不是「好寫」決定的、不是「易讀」決定的？</li>
<li><input disabled="" type="checkbox"> 有沒有「為了補滿格式」寫的廢段？</li>
</ul>
<h3 id="輪-3機會成本語氣">輪 3：機會成本語氣</h3>
<ul>
<li><input disabled="" type="checkbox"> 跑 grep 抓「應該 / 必須 / 不行 / 不可以 / 正確的方式 / 唯一」這些絕對詞</li>
<li><input disabled="" type="checkbox"> 每個絕對詞檢查：是物理 / 法律 / 安全事實嗎？不是的話翻成「在 X 情境下 A 較好、Y 情境下 B 較好」</li>
<li><input disabled="" type="checkbox"> 反模式表的「為什麼不好」寫到「違反某個原則」、不寫「就是不對」</li>
</ul>
<h3 id="輪-4grep-ability--命名">輪 4：Grep-ability / 命名</h3>
<ul>
<li><input disabled="" type="checkbox"> 關鍵字在段首、不在段中</li>
<li><input disabled="" type="checkbox"> 表格欄位用 grep 友善的分隔（<code>:</code> <code>|</code> <code>→</code>）</li>
<li><input disabled="" type="checkbox"> 檔名 / slug 跟 title 對應、不要用流水號</li>
<li><input disabled="" type="checkbox"> 命名能用單次 grep 命中、不需要語意推理</li>
</ul>
<h3 id="輪-5反例--邊界">輪 5：反例 / 邊界</h3>
<ul>
<li><input disabled="" type="checkbox"> 「何時不適用」段寫了嗎？</li>
<li><input disabled="" type="checkbox"> 反模式表給「為什麼不好 + 修法」嗎、還是只給警告？</li>
<li><input disabled="" type="checkbox"> 跨卡 cross-link 補了嗎？</li>
<li><input disabled="" type="checkbox"> 有沒有 over-claim、把「在多數情境下」說成「總是」？</li>
</ul>
<hr>
<h2 id="套用到不同-output-類型">套用到不同 output 類型</h2>
<p>每類有特化的輪次組合：</p>
<h3 id="文章contentpostscontentreport">文章（content/posts、content/report）</h3>
<p>完整跑 1-5 輪。額外加：</p>
<ul>
<li><strong>輪 6</strong>：跨卡 cross-link 健康度（單向引用 vs 雙向）</li>
<li><strong>輪 7</strong>：放回 <code>_index.md</code> 的索引條描述對應到內容嗎</li>
</ul>
<h3 id="程式註解doc-comment--inline">程式註解（doc comment / inline）</h3>
<p>跑 1-3 輪 + 額外：</p>
<ul>
<li><strong>輪 4&rsquo;</strong>：grep-ability 改成「介面 vs 實作分層」— doc comment 不洩漏 impl、inline comment 講 why 不講 what</li>
<li><strong>輪 5&rsquo;</strong>：反例改成「這個註解 5 個月後讀還看得懂嗎」（時間軸 robust）</li>
</ul>
<h3 id="naming變數--函式--檔名--slug">Naming（變數 / 函式 / 檔名 / slug）</h3>
<p>→ 見 <a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact</a>、有特化的 4 輪設計。</p>
<h3 id="prompt給-llm-的指令">Prompt（給 LLM 的指令）</h3>
<p>跑 1-3 輪 + 額外：</p>
<ul>
<li><strong>輪 4&rsquo;&rsquo;</strong>：模糊指令（<a href="/blog/skills/requirement-protocol/clarifying-ambiguous-instructions/" data-link-title="Clarifying Ambiguous Instructions — 模糊指令澄清協議" data-link-desc="requirement-protocol reference：空間 / 相對位置 / 隔離 / 決定權 / 篩選五類模糊指令的澄清模板 &#43; visible 三問判準 &#43; 篩選三問。">clarifying-ambiguous-instructions</a>）— 「對齊」「靠近」這類詞翻成具體數字 / 條件</li>
<li><strong>輪 5&rsquo;&rsquo;</strong>：「邊界 case 預期行為」明示了嗎</li>
</ul>
<hr>
<h2 id="stakes-conditional-追加輪epistemic-rigor">Stakes-conditional 追加輪：Epistemic Rigor</h2>
<p>5 輪基本 frame 是 frame 軸（生成 / 意圖 / 語氣 / grep / 反例）；<strong>高 stakes 內容</strong>（reader 照做後錯誤不可逆 / 系統層 / 不可分批 ship 修正）追加 stakes 軸的 <strong>輪 E：epistemic rigor</strong>——比照學術 peer review 的 claim / evidence / method / threats / citation 五個 sub-check、確認論述強度足以承擔 reader 直接 implement 的下游風險。</p>
<h3 id="啟動條件opt-in不污染預設">啟動條件（opt-in、不污染預設）</h3>
<table>
  <thead>
      <tr>
          <th>內容類型</th>
          <th>是否跑輪 E</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>一般技術文章（layout / refactor / debug 教學）</td>
          <td>不跑（5 輪夠）</td>
      </tr>
      <tr>
          <td>資安 / cryptography / 防護 mitigation 教學</td>
          <td><strong>跑</strong></td>
      </tr>
      <tr>
          <td>Concurrency 正確性 / memory model claims</td>
          <td><strong>跑</strong></td>
      </tr>
      <tr>
          <td>Distributed consistency / consensus 演算法</td>
          <td><strong>跑</strong></td>
      </tr>
      <tr>
          <td>Financial 計算 / accounting / settlement</td>
          <td><strong>跑</strong></td>
      </tr>
      <tr>
          <td>Medical / safety-critical 計算</td>
          <td><strong>跑</strong></td>
      </tr>
      <tr>
          <td>任何「reader 照做後錯誤不可逆 / 系統層」的內容</td>
          <td><strong>跑</strong></td>
      </tr>
  </tbody>
</table>
<p>判別啟動的核心問題：「<strong>reader 照這段實作會不會在生產系統留 silent gap、且不能靠後續 ship 修補</strong>？」——會 → 跑輪 E、不會 → 5 輪即可。動機論證見 <a href="../security-teaching-rigor-asymmetry/">#99 資安教學審查標準對應風險不對稱</a>。</p>
<h3 id="輪-eepistemic-rigor-的-5-個-sub-check">輪 E：Epistemic Rigor 的 5 個 sub-check</h3>
<table>
  <thead>
      <tr>
          <th>Sub-check</th>
          <th>問題</th>
          <th>對應 audit 維度</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>E.1 Claim</td>
          <td>每個結論可拆 falsifiable 子句嗎？</td>
          <td><a href="../false-sense-of-security-as-primary-failure/">#100 false sense of security</a></td>
      </tr>
      <tr>
          <td>E.2 Evidence</td>
          <td>claim → evidence 推論鏈完整、有 mechanism 嗎？</td>
          <td><a href="../mitigation-threat-alignment/">#102 mitigation 對位</a></td>
      </tr>
      <tr>
          <td>E.3 Method</td>
          <td>reader 照 method 做能反向驗證嗎？</td>
          <td><a href="../threat-model-explicitness/">#101 threat model 明確性</a> + <a href="../mitigation-threat-alignment/">#102</a></td>
      </tr>
      <tr>
          <td>E.4 Threats</td>
          <td>什麼前提失效會 invalidate？</td>
          <td><a href="../mitigation-context-dependence/">#103 context-dependence</a></td>
      </tr>
      <tr>
          <td>E.5 Citation</td>
          <td>版本 / 句意 / current best practice 都對嗎？</td>
          <td><a href="../security-citation-currency-and-precision/">#104 citation 時效精確</a></td>
      </tr>
  </tbody>
</table>
<h3 id="輪-e-的產出格式">輪 E 的產出格式</h3>
<p>跑完輪 E、每個 weakness 對應到一個 dimension + tier、見 <a href="../security-audit-recommendation-tiers/">#105 audit recommendation 層級</a>：</p>
<ul>
<li><strong>Accept</strong>：無 weakness 或在容忍範圍</li>
<li><strong>Minor revise</strong>：補 boundary / contrast / 版本標記類小改、不阻擋 ship</li>
<li><strong>Major revise</strong>：結構性 false sense、需重寫、ship 前必須修</li>
<li><strong>Withdraw</strong>：教錯主動誤導 reader（過時 crypto 沒標 deprecated / 扭曲 citation 反向違反現行標準 / defense theater 當示範），保留 = 增加生產系統 risk、必須移除或全換</li>
</ul>
<p>withdraw tier 是高 stakes 內容跟一般內容的關鍵差異——一般內容 review 沒有「保留 = 增加 risk」的硬決策、高 stakes 必須有。</p>
<h3 id="跟-5-輪基本-frame-的分工">跟 5 輪基本 frame 的分工</h3>
<table>
  <thead>
      <tr>
          <th>軸</th>
          <th>5 輪基本 frame</th>
          <th>輪 E（高 stakes 追加）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>軸定位</td>
          <td>Frame 軸：每輪換一個寫作品質視角</td>
          <td>Stakes 軸：論述強度檢查</td>
      </tr>
      <tr>
          <td>觸發</td>
          <td>預設全跑（依 output 類型可跳少數輪）</td>
          <td>高 stakes 內容才 opt-in</td>
      </tr>
      <tr>
          <td>找的問題</td>
          <td>typo / 偏題 / 絕對主義 / grep / 邊界缺</td>
          <td>claim 空降 / 對位失效 / context 缺 / citation 過時 / withdraw-level 教錯</td>
      </tr>
      <tr>
          <td>失敗後果</td>
          <td>文字品質低、reader 用力讀</td>
          <td>reader 照做後實作出生產破口、silent failure</td>
      </tr>
  </tbody>
</table>
<p>兩軸正交、不取代——高 stakes 內容兩軸都跑（5 輪 frame + 輪 E stakes）、一般內容只跑 5 輪。輪 E 不在 5 輪裡是因為：把 epistemic rigor 設為預設會讓一般文章 over-audit、稀釋 review 紀律；設為 conditional opt-in 才能讓高 stakes 場景拉到學術級而不污染日常寫作。</p>
<p>→ 詳細維度展開（threat model 對稱 / mitigation 對位 mechanism / context-dependence / citation 時效）跟 audit recommendation tier 判準、見 <a href="../security-teaching-rigor-asymmetry/">#99</a> → <a href="../false-sense-of-security-as-primary-failure/">#100</a> → <a href="../threat-model-explicitness/">#101-104</a> → <a href="../security-audit-recommendation-tiers/">#105</a> 系列。</p>
<hr>
<h2 id="反模式跳輪的代價">反模式：跳輪的代價</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>寫完直接 ship、跳過所有 review 輪</td>
          <td>第 1 輪生成 frame 沒抓到的全部漏</td>
      </tr>
      <tr>
          <td>每輪用同個 frame review</td>
          <td>角度沒換、重複 catch 同類錯、新類錯不會浮現</td>
      </tr>
      <tr>
          <td>「我邊寫邊改」融合多輪</td>
          <td>working memory 超載、每維都做一半</td>
      </tr>
      <tr>
          <td>跳過輪 3 機會成本語氣</td>
          <td>絕對主義教讀者規則、不教思考</td>
      </tr>
      <tr>
          <td>跳過輪 4 grep</td>
          <td>AI 找不到、文字變孤兒</td>
      </tr>
      <tr>
          <td>跳過輪 5 反例</td>
          <td>看起來是教條、不是 trade-off</td>
      </tr>
      <tr>
          <td>「下次寫的時候多注意」當 review 取代</td>
          <td><a href="../external-trigger-for-high-roi-work/">#72 高 ROI 無觸發</a> 紀律失效</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="何時可以跳某些輪">何時可以跳某些輪</h2>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>可跳的輪</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>內部 quick note、不會有人看</td>
          <td>跳 4 + 5（grep + 反例）</td>
      </tr>
      <tr>
          <td>Commit message</td>
          <td>跳 4 + 5、留 1-3</td>
      </tr>
      <tr>
          <td>Slack / chat 即時對話</td>
          <td>只跑輪 1</td>
      </tr>
      <tr>
          <td>引言 / 標題</td>
          <td>1-4 都跑、5 可省</td>
      </tr>
      <tr>
          <td>摘要 / TL;DR</td>
          <td>1-3 + 5（反例不適用、但語氣很重要）</td>
      </tr>
      <tr>
          <td>純資料填寫（schema / config）</td>
          <td>跳 3、其他都跑</td>
      </tr>
  </tbody>
</table>
<p>四類共通：<strong>ROI 不同、輪次組合不同</strong>。Production 文件 / 卡片 / 註解 全跑、即時通訊只跑核心。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度</a></td>
          <td>輪 2 的核心判準 — 為什麼便利寫法 ≠ 對齊意圖</td>
      </tr>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td>本卡是 #82 在「寫」這個動作的具體實例 — review 是 multi-pass、不是 hook</td>
      </tr>
      <tr>
          <td><a href="../cards-as-living-system-iteration/">#81 卡片系統的迭代浮現</a></td>
          <td>spiral 浮現本身就是寫作的 multi-pass 範例（卡片 → meta → reference）</td>
      </tr>
      <tr>
          <td><a href="../decision-dialogue-dimensions/">#79 決策對話的五維度</a></td>
          <td>寫決策呈現要用 #79 self-check + 本卡的輪 2 一起跑</td>
      </tr>
      <tr>
          <td><a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact</a></td>
          <td>本卡的輪 4 在 naming 場景的特化</td>
      </tr>
      <tr>
          <td><a href="../methodology-multi-pass-embedding/">#85 Methodology 的 multi-pass 該 embed 在 pillar</a></td>
          <td>本卡的 5 輪設計就是 compositional-writing 該 embed 為「第 6 原則」的內容</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>寫完直接 commit、覺得「OK 應該夠」</td>
          <td>跑五輪、每輪都會抓到東西</td>
      </tr>
      <tr>
          <td>每次 review 都「看不出哪裡可改」</td>
          <td>Frame 沒換、改用下一輪的 frame 看</td>
      </tr>
      <tr>
          <td>「這次先這樣、下次寫好一點」</td>
          <td>是 <a href="../external-trigger-for-high-roi-work/">#72 結構性跳過</a>、補 trigger（pre-commit / template / pair）</td>
      </tr>
      <tr>
          <td>反模式段空白</td>
          <td>跳了輪 5、補</td>
      </tr>
      <tr>
          <td>找不到自己寫過的卡</td>
          <td>輪 4 沒做、grep-ability 漏掉</td>
      </tr>
      <tr>
          <td>文字看起來像教條</td>
          <td>輪 3 的絕對主義詞沒翻、補</td>
      </tr>
      <tr>
          <td>段落開頭看不出在說什麼</td>
          <td>輪 2 的意圖顯性沒做</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：Writing 的 ROI 來自<strong>多輪不同 frame</strong>、不是單次「寫得仔細」。要寫得仔細的部分太多、超過 working memory、必須分輪。<strong>跳輪的代價是某維度永遠做一半、累積成「看起來都對但其實有漏」的低品質文字</strong>。</p>
]]></content:encoded></item><item><title>視覺手段對齊錯誤層次：CSS / emoji 修不到語意 / 邏輯問題</title><link>https://tarrragon.github.io/blog/report/visual-tool-error-layer-alignment/</link><pubDate>Tue, 28 Apr 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/visual-tool-error-layer-alignment/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>寫作 / UI 中的問題分三層、不同層需要不同修法：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>問題層次&lt;/th>
 &lt;th>例子&lt;/th>
 &lt;th>適合手段&lt;/th>
 &lt;th>不適合手段&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>邏輯&lt;/td>
 &lt;td>概念劃分混亂、論證不完整、兩個概念擠在一行&lt;/td>
 &lt;td>重新分概念、改結構&lt;/td>
 &lt;td>CSS / 排版 / emoji（蓋不到根因）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>語意&lt;/td>
 &lt;td>用 emoji 作為唯一區分、用顏色傳達唯一資訊、用視覺替代結構&lt;/td>
 &lt;td>改表達結構、用文本標記、加分段&lt;/td>
 &lt;td>CSS 規則（false confidence）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>視覺&lt;/td>
 &lt;td>容器寬度、字體大小、顏色對比、跨瀏覽器排版&lt;/td>
 &lt;td>CSS、media query、渲染工具&lt;/td>
 &lt;td>改文章結構（過殺）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心&lt;/strong>：修視覺工具預設&lt;strong>錯誤就在視覺層&lt;/strong>。當症狀其實來自語意 / 邏輯層、用視覺工具修 = 蓋掉表面、根因還在 + 作者誤以為解決了（false confidence、跟 &lt;a href="../literal-interception-vs-behavioral-refinement/">#82&lt;/a> 的 hook 心理同病）。&lt;/p>
&lt;p>修法的順序是 &lt;strong>深層 → 淺層&lt;/strong>：先問「是不是邏輯 / 語意層的下游症狀」、是的話改結構；確認純視覺、再用視覺工具。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼視覺工具對語意--邏輯問題無能為力">為什麼視覺工具對語意 / 邏輯問題無能為力&lt;/h2>
&lt;p>視覺工具（CSS、emoji、顏色、字體、間距、圖示）的本質是 &lt;strong>呈現層的調整&lt;/strong> — 它能改變字怎麼顯示、不能改變字本身代表的概念。能改的、跟改不到的、有清楚的界線：&lt;/p>
&lt;p>&lt;strong>能改的（純呈現）&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>文字在窄視窗會不會換行&lt;/li>
&lt;li>兩個區塊的視覺距離&lt;/li>
&lt;li>不同類型用什麼顏色標&lt;/li>
&lt;/ul>
&lt;p>&lt;strong>改不到的（結構 / 語意 / 邏輯）&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>兩個概念該不該擠在同一行（結構層）&lt;/li>
&lt;li>用 emoji 區分是否足夠承載語意（語意層）&lt;/li>
&lt;li>論證有沒有完整（邏輯層）&lt;/li>
&lt;/ul>
&lt;p>當作者試圖用視覺工具解語意 / 邏輯問題、結果是 &lt;strong>症狀被表面平整、但下次同類問題會用新形狀冒出來&lt;/strong> — 因為根因（概念混淆 / 結構錯位）沒動。&lt;/p>
&lt;hr>
&lt;h2 id="反模式用視覺修補蓋住下游症狀">反模式：用視覺修補蓋住下游症狀&lt;/h2>
&lt;h3 id="false-confidence-比沒修更危險">False confidence 比沒修更危險&lt;/h3>
&lt;p>修了 CSS 之後、心理上會覺得「處理完了」。實際上 CSS 只擋了表面斷行、語意混淆照舊存在 — 但作者不再警覺、因為「我修過了」。&lt;/p>
&lt;p>下一個讀者在不同 viewport / 不同設備 / 用螢幕閱讀器時、同樣的語意問題會用不同形狀重新出現（換行錯位、TTS 讀錯、複製貼上格式跑掉）。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>狀態&lt;/th>
 &lt;th>警覺度&lt;/th>
 &lt;th>同類問題復發率&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>沒修任何東西&lt;/td>
 &lt;td>高（看到症狀）&lt;/td>
 &lt;td>中&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CSS 修了視覺、根因（語意混淆）還在&lt;/td>
 &lt;td>低（誤以為修了）&lt;/td>
 &lt;td>&lt;strong>高&lt;/strong>（換 context 就復發）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>改結構修了根因&lt;/td>
 &lt;td>適中&lt;/td>
 &lt;td>低&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>第二行是最危險組合 — 跟 &lt;a href="../literal-interception-vs-behavioral-refinement/">#82&lt;/a> 的「Hook 抓不到的範圍誤以為有保護」同病。&lt;/p>
&lt;h3 id="症狀堆疊再加一條-css-規則永遠補不完">症狀堆疊：「再加一條 CSS 規則」永遠補不完&lt;/h3>
&lt;p>視覺修補的直覺反應是「加一條規則」。但語意 / 邏輯下游的症狀無限多、規則永遠補不完。實際軌跡：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">emoji 在窄 viewport 斷行
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl"> → 加 white-space: nowrap
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl"> → 文字溢出容器
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl"> → 加 overflow: hidden
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl"> → 文字被截斷看不見
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl"> → 加 text-overflow: ellipsis
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl"> → 螢幕閱讀器讀出「...」沒語意
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl"> → 加 aria-label 補語意
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl"> → 翻譯版本 aria-label 沒翻
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl"> → ...&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>每加一層 CSS、根因（兩個概念擠在一行）更深埋、修起來更貴。&lt;/p>
&lt;p>→ CSS 規則膨脹是「用錯工具」的訊號、不是「規則寫得不夠細」的訊號。跟 &lt;a href="../literal-interception-vs-behavioral-refinement/">#82&lt;/a> 的 hook 規則膨脹同骨。&lt;/p>
&lt;hr>
&lt;h2 id="三層優先序邏輯--語意--視覺">三層優先序：邏輯 → 語意 → 視覺&lt;/h2>
&lt;h3 id="為什麼是這個順序">為什麼是這個順序&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>層次&lt;/th>
 &lt;th>影響範圍&lt;/th>
 &lt;th>修起來成本&lt;/th>
 &lt;th>修不修的代價&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>邏輯&lt;/td>
 &lt;td>整篇 / 整個 feature 的可理解性&lt;/td>
 &lt;td>高（要重新分概念）&lt;/td>
 &lt;td>高（讀者根本看不懂、抓不到重點）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>語意&lt;/td>
 &lt;td>段落 / 區塊的表達精度&lt;/td>
 &lt;td>中（要改結構）&lt;/td>
 &lt;td>中（讀者抓得到但要花力氣推）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>視覺&lt;/td>
 &lt;td>局部呈現&lt;/td>
 &lt;td>低（改 CSS / 排版）&lt;/td>
 &lt;td>低（讀者覺得醜、但能讀）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>深層問題的影響範圍大、修不到根因的代價高&lt;/strong>。所以修法順序是先問深層、確認沒問題再修淺層。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>寫作 / UI 中的問題分三層、不同層需要不同修法：</p>
<table>
  <thead>
      <tr>
          <th>問題層次</th>
          <th>例子</th>
          <th>適合手段</th>
          <th>不適合手段</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>邏輯</td>
          <td>概念劃分混亂、論證不完整、兩個概念擠在一行</td>
          <td>重新分概念、改結構</td>
          <td>CSS / 排版 / emoji（蓋不到根因）</td>
      </tr>
      <tr>
          <td>語意</td>
          <td>用 emoji 作為唯一區分、用顏色傳達唯一資訊、用視覺替代結構</td>
          <td>改表達結構、用文本標記、加分段</td>
          <td>CSS 規則（false confidence）</td>
      </tr>
      <tr>
          <td>視覺</td>
          <td>容器寬度、字體大小、顏色對比、跨瀏覽器排版</td>
          <td>CSS、media query、渲染工具</td>
          <td>改文章結構（過殺）</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：修視覺工具預設<strong>錯誤就在視覺層</strong>。當症狀其實來自語意 / 邏輯層、用視覺工具修 = 蓋掉表面、根因還在 + 作者誤以為解決了（false confidence、跟 <a href="../literal-interception-vs-behavioral-refinement/">#82</a> 的 hook 心理同病）。</p>
<p>修法的順序是 <strong>深層 → 淺層</strong>：先問「是不是邏輯 / 語意層的下游症狀」、是的話改結構；確認純視覺、再用視覺工具。</p>
<hr>
<h2 id="為什麼視覺工具對語意--邏輯問題無能為力">為什麼視覺工具對語意 / 邏輯問題無能為力</h2>
<p>視覺工具（CSS、emoji、顏色、字體、間距、圖示）的本質是 <strong>呈現層的調整</strong> — 它能改變字怎麼顯示、不能改變字本身代表的概念。能改的、跟改不到的、有清楚的界線：</p>
<p><strong>能改的（純呈現）</strong>：</p>
<ul>
<li>文字在窄視窗會不會換行</li>
<li>兩個區塊的視覺距離</li>
<li>不同類型用什麼顏色標</li>
</ul>
<p><strong>改不到的（結構 / 語意 / 邏輯）</strong>：</p>
<ul>
<li>兩個概念該不該擠在同一行（結構層）</li>
<li>用 emoji 區分是否足夠承載語意（語意層）</li>
<li>論證有沒有完整（邏輯層）</li>
</ul>
<p>當作者試圖用視覺工具解語意 / 邏輯問題、結果是 <strong>症狀被表面平整、但下次同類問題會用新形狀冒出來</strong> — 因為根因（概念混淆 / 結構錯位）沒動。</p>
<hr>
<h2 id="反模式用視覺修補蓋住下游症狀">反模式：用視覺修補蓋住下游症狀</h2>
<h3 id="false-confidence-比沒修更危險">False confidence 比沒修更危險</h3>
<p>修了 CSS 之後、心理上會覺得「處理完了」。實際上 CSS 只擋了表面斷行、語意混淆照舊存在 — 但作者不再警覺、因為「我修過了」。</p>
<p>下一個讀者在不同 viewport / 不同設備 / 用螢幕閱讀器時、同樣的語意問題會用不同形狀重新出現（換行錯位、TTS 讀錯、複製貼上格式跑掉）。</p>
<table>
  <thead>
      <tr>
          <th>狀態</th>
          <th>警覺度</th>
          <th>同類問題復發率</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>沒修任何東西</td>
          <td>高（看到症狀）</td>
          <td>中</td>
      </tr>
      <tr>
          <td>CSS 修了視覺、根因（語意混淆）還在</td>
          <td>低（誤以為修了）</td>
          <td><strong>高</strong>（換 context 就復發）</td>
      </tr>
      <tr>
          <td>改結構修了根因</td>
          <td>適中</td>
          <td>低</td>
      </tr>
  </tbody>
</table>
<p>第二行是最危險組合 — 跟 <a href="../literal-interception-vs-behavioral-refinement/">#82</a> 的「Hook 抓不到的範圍誤以為有保護」同病。</p>
<h3 id="症狀堆疊再加一條-css-規則永遠補不完">症狀堆疊：「再加一條 CSS 規則」永遠補不完</h3>
<p>視覺修補的直覺反應是「加一條規則」。但語意 / 邏輯下游的症狀無限多、規則永遠補不完。實際軌跡：</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">emoji 在窄 viewport 斷行
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">  → 加 white-space: nowrap
</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">  → 加 overflow: hidden
</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">  → 加 text-overflow: ellipsis
</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">  → 加 aria-label 補語意
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">  → 翻譯版本 aria-label 沒翻
</span></span><span class="line"><span class="ln">10</span><span class="cl">  → ...</span></span></code></pre></div><p>每加一層 CSS、根因（兩個概念擠在一行）更深埋、修起來更貴。</p>
<p>→ CSS 規則膨脹是「用錯工具」的訊號、不是「規則寫得不夠細」的訊號。跟 <a href="../literal-interception-vs-behavioral-refinement/">#82</a> 的 hook 規則膨脹同骨。</p>
<hr>
<h2 id="三層優先序邏輯--語意--視覺">三層優先序：邏輯 → 語意 → 視覺</h2>
<h3 id="為什麼是這個順序">為什麼是這個順序</h3>
<table>
  <thead>
      <tr>
          <th>層次</th>
          <th>影響範圍</th>
          <th>修起來成本</th>
          <th>修不修的代價</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>邏輯</td>
          <td>整篇 / 整個 feature 的可理解性</td>
          <td>高（要重新分概念）</td>
          <td>高（讀者根本看不懂、抓不到重點）</td>
      </tr>
      <tr>
          <td>語意</td>
          <td>段落 / 區塊的表達精度</td>
          <td>中（要改結構）</td>
          <td>中（讀者抓得到但要花力氣推）</td>
      </tr>
      <tr>
          <td>視覺</td>
          <td>局部呈現</td>
          <td>低（改 CSS / 排版）</td>
          <td>低（讀者覺得醜、但能讀）</td>
      </tr>
  </tbody>
</table>
<p><strong>深層問題的影響範圍大、修不到根因的代價高</strong>。所以修法順序是先問深層、確認沒問題再修淺層。</p>
<h3 id="修法的順序">修法的順序</h3>





<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">這是語意層問題嗎？（依賴視覺標記傳達唯一資訊？emoji 是唯一區分？）
</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">   是 → CSS / media query / 渲染配置</span></span></code></pre></div><p><strong>反向（從視覺往邏輯推）會 false confidence</strong>：先用 CSS 補了、表面平整、誤以為解決了、下次換 context 復發。</p>
<hr>
<h2 id="何時視覺修補真的足夠">何時視覺修補真的足夠</h2>
<p>某些情境純視覺就夠、用 CSS 是對的：</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>為什麼 CSS 夠</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>跨 viewport 排版適配（手機 / 桌面）</td>
          <td>內容沒變、只是顯示尺寸要適配</td>
      </tr>
      <tr>
          <td>字體大小 / 行高 / 顏色對比</td>
          <td>純呈現參數</td>
      </tr>
      <tr>
          <td>容器溢出 / 滾動條 / 換行控制</td>
          <td>layout 行為</td>
      </tr>
      <tr>
          <td>跨瀏覽器渲染差異</td>
          <td>引擎差異、不是內容問題</td>
      </tr>
      <tr>
          <td>主題切換（dark / light mode）</td>
          <td>純呈現變數</td>
      </tr>
  </tbody>
</table>
<p>五類共通：<strong>內容本身沒爭議、只是顯示方式要調</strong>。其他情境視覺工具都會在某個時點走到 ceiling。</p>
<hr>
<h2 id="識別-ceiling什麼時候該換手段">識別 ceiling：什麼時候該換手段</h2>
<p>ceiling 訊號：</p>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該換的手段</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「修了 CSS、換個 viewport / 設備又壞了」</td>
          <td>不是純視覺、有結構問題、改結構</td>
      </tr>
      <tr>
          <td>「加了 CSS rule 但又冒出新症狀」</td>
          <td>症狀堆疊、退回問層次</td>
      </tr>
      <tr>
          <td>「emoji / 顏色 / 圖示是唯一區分方式」</td>
          <td>語意層問題、加文本標記</td>
      </tr>
      <tr>
          <td>「需要 aria-label 補語意才能讀懂」</td>
          <td>結構層問題、aria 是補丁、根本要重排</td>
      </tr>
      <tr>
          <td>「同樣的內容、列表 vs 引用區塊閱讀差很多」</td>
          <td>結構層問題、選擇承載結構錯了</td>
      </tr>
      <tr>
          <td>「螢幕閱讀器讀出來的順序跟視覺順序不同」</td>
          <td>視覺順序跟邏輯順序錯位、改 DOM order</td>
      </tr>
      <tr>
          <td>「複製貼上後格式跑掉、語意也跟著跑掉」</td>
          <td>依賴視覺渲染傳語意、把語意寫進文本</td>
      </tr>
  </tbody>
</table>
<p>看到任一訊號、不是「再加一條 CSS / 換個 emoji」、是 <strong>接受視覺工具對這個層次的問題無能為力、改修結構</strong>。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td><strong>本卡的 sibling</strong> — #82 是「驗證工具 vs 錯誤層次」、本卡是「呈現工具 vs 內容層次」、同骨不同領域</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing 的 multi-pass review</a></td>
          <td><strong>本卡是 #83 缺的垂直軸</strong> — #83 的 5 輪是 horizontal frame、本卡的 3 層是 vertical layer、兩軸正交</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>用 emoji 區分概念是「便利寫法」、改結構是「對齊意圖」 — 本卡是 #67 在呈現選擇上的具體實例</td>
      </tr>
      <tr>
          <td><a href="../single-source-of-truth/">#44 Single Source of Truth</a></td>
          <td>用 emoji 替代結構區分 = 把語意分散在「文字 + emoji」兩處、違反 SSoT、emoji 不渲染時語意就遺失</td>
      </tr>
      <tr>
          <td><a href="../native-html-over-aria-role/">#39 Native HTML 優先於 ARIA role</a></td>
          <td>同骨：semantic HTML 把語意寫進結構、ARIA 是補丁；emoji 是視覺補丁、文本標記 / 列表是 semantic 結構</td>
      </tr>
      <tr>
          <td><a href="../visual-completion-vs-functional-completion/">#56 視覺完成 ≠ 功能完成</a></td>
          <td>本卡是 #56 在「呈現層」的擴展 — 視覺驗收訊號早於語意驗收成立、容易誤判修好</td>
      </tr>
      <tr>
          <td><a href="../yes-no-binary-collapse/">#80 Yes/No 二選是隱式 collapse</a></td>
          <td>「emoji 區分」是把多概念 collapse 進視覺維度、跟 yes/no collapse 同骨（多維度被壓成 1 維）</td>
      </tr>
  </tbody>
</table>
<p>本卡是 <a href="../literal-interception-vs-behavioral-refinement/">#82</a> 的 sibling — 兩者都在說「<strong>工具有能擋的層 / 擋不到的層、超出 ceiling 是 false confidence</strong>」。組合理解：</p>
<table>
  <thead>
      <tr>
          <th>軸</th>
          <th>#82</th>
          <th>本卡</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>領域</td>
          <td>驗證 / 防呆</td>
          <td>呈現 / 寫作</td>
      </tr>
      <tr>
          <td>工具</td>
          <td>hook / lint / CI</td>
          <td>CSS / emoji / 顏色 / 排版</td>
      </tr>
      <tr>
          <td>該擋的層</td>
          <td>字面（typo / schema）</td>
          <td>視覺（容器 / 字體 / 顏色）</td>
      </tr>
      <tr>
          <td>抓不到的層</td>
          <td>行為（思考偏差）</td>
          <td>語意 / 邏輯（概念 / 結構）</td>
      </tr>
      <tr>
          <td>False confidence</td>
          <td>「CI 通過 = 沒事」</td>
          <td>「視覺修了 = 沒事」</td>
      </tr>
      <tr>
          <td>規則膨脹</td>
          <td>「再加一條 lint 規則」</td>
          <td>「再加一條 CSS rule」</td>
      </tr>
      <tr>
          <td>正解</td>
          <td>multi-pass review / spiral</td>
          <td>改結構 / 重新分概念</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="套用到本系統的-case">套用到本系統的 case</h2>
<h3 id="case-1blog-文章-mermaid--emoji-圖例">Case 1：blog 文章 mermaid + emoji 圖例</h3>
<p>寫 <a href="../../work-log/git_move_partial_change_to_earlier_commit/">git rebase 搬部分檔案</a> 文章時、用 mermaid gitGraph 配 emoji 圖例：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="k">&gt; </span><span class="ge">🟢 HIGHLIGHT = 接收檔案變更的目標 commit（A）
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="ge"></span>&gt; 🔴 REVERSE = 含有不該屬於它的檔案變更的 commit（C）</span></span></code></pre></div><p>某 viewport 下 emoji 跟文字之間斷行錯位、🔴 在前一行、REVERSE = &hellip; 在下一行。</p>
<p><strong>第一直覺（錯）</strong>：修 emoji 渲染、加 white-space: nowrap。</p>
<p><strong>追問層次</strong>：</p>
<ul>
<li>視覺層：emoji 斷行 → 改 CSS 可以擋</li>
<li>語意層：HIGHLIGHT 跟 REVERSE 是兩個獨立概念、被擠在 <code>&gt; 引用區塊</code> 的兩行 + 用 emoji 作為唯一區分 — emoji 不渲染（終端 / 老瀏覽器）就完全失語意</li>
<li>邏輯層：兩個獨立概念本就不該擠在引用區塊裡、引用區塊的語意是「附加說明」、但兩個概念都是主要資訊</li>
</ul>
<p><strong>根因在邏輯層</strong>：兩個概念該分開承載。</p>
<p><strong>正解</strong>：拆成獨立列表項、每項獨立一個概念：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">**四個 commit 的角色**：
</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 class="k">-</span> **A**（接收目標）：commit C 中對檔案的修訂應該屬於這裡
</span></span><span class="line"><span class="ln">4</span><span class="cl">- <span class="gs">**C**</span>（變更來源）：同時改了目標檔案和其他 6 個檔案</span></span></code></pre></div><p>修了之後、emoji 斷行、aria-label、複製貼上格式、螢幕閱讀器順序等所有下游症狀同時消失 — 因為根因被處理了。</p>
<h3 id="case-2mermaid-gitgraph-type-顏色設定">Case 2：mermaid gitGraph type 顏色設定</h3>
<p>跟 Case 1 同篇文章的另一個議題：mermaid 的 <code>type: HIGHLIGHT</code> / <code>type: REVERSE</code> 自訂顏色不渲染（<a href="/blog/posts/mermaid_gitgraph_type_color_config/" data-link-title="Mermaid gitGraph：自訂 commit type 顏色不渲染的配置補洞" data-link-desc="Hugo &#43; Mermaid gitGraph 的 type: HIGHLIGHT / REVERSE 顏色不生效時的根因與修復。升級 Mermaid 版本時顏色變數命名會變、要重驗。">mermaid_gitgraph_type_color_config</a>）。</p>
<p>這個 <strong>是</strong> 純視覺問題 — 內容本身沒爭議、只是 mermaid themeVariables 缺配置。修 CSS / themeVariables 是對的。</p>
<p>兩個議題在同一篇文章、但層次不同 — 一個是邏輯層下游症狀（誤判為視覺）、一個是真視覺問題（CSS 修對位）。<strong>判讀層次比修法重要</strong>。</p>
<h3 id="case-3multi-pass-review-的層次盲點">Case 3：multi-pass review 的層次盲點</h3>
<p><a href="../writing-multi-pass-review/">#83</a> 的 5 輪 frame（生成 / 意圖 / 語氣 / grep / 反例）是 horizontal — 同一份文字、5 個視角輪流看。但這 5 輪都可能落在同一個 vertical layer（例如全部在看視覺層）、漏掉語意 / 邏輯層。</p>
<p>本卡補的是垂直軸：<strong>每輪 frame 內、要意識到問題在哪一層</strong>。第 1 輪生成可能寫出語意混淆、第 2 輪對意圖如果只看視覺呈現、整個 review 就停在視覺層。</p>
<p>實際軌跡：blog 文章寫完跑了 #83 的多輪 review、catch 到 emoji 斷行（視覺層）、但沒 catch 到 HIGHLIGHT/REVERSE 概念混淆（語意層）— 因為每輪 frame 都沒把 layer 當成獨立檢查維度。</p>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>看到視覺異常、第一直覺是改 CSS</td>
          <td>先問「換個 viewport / 設備會不會復發」、會的話是更深層</td>
      </tr>
      <tr>
          <td>用 emoji / 顏色 / 圖示作為唯一區分</td>
          <td>語意層問題、加文本標記 + 改結構</td>
      </tr>
      <tr>
          <td>加了 CSS 但又冒出新視覺症狀</td>
          <td>症狀堆疊、退回問層次、根因在更深層</td>
      </tr>
      <tr>
          <td>「需要 aria-label 補語意才能讀懂」</td>
          <td>結構層問題、改 DOM order / 重排</td>
      </tr>
      <tr>
          <td>Multi-pass review 跑了、但只 catch 視覺問題</td>
          <td>layer 沒當獨立維度、補垂直軸檢查</td>
      </tr>
      <tr>
          <td>一個改動「視覺好了、但語意感覺怪」</td>
          <td>語意層問題沒解、別停手</td>
      </tr>
      <tr>
          <td>「之後在不同設備 / 螢幕閱讀器再驗證」</td>
          <td>是 <a href="../external-trigger-for-high-roi-work/">#72</a> 結構性跳過、補 trigger</td>
      </tr>
      <tr>
          <td>Commit 訊息只寫「fix layout / fix emoji」</td>
          <td>訊息層級停在視覺、檢查根因是不是更深</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：視覺工具的 ROI = <strong>跟問題層次對齊</strong> × <strong>不超出 ceiling</strong>。<strong>CSS / emoji / 顏色不會理解語意、所以只能擋呈現</strong>；<strong>語意 / 邏輯問題需要改結構 / 改概念分組、不靠視覺工具</strong>。試圖用視覺工具蓋語意 / 邏輯問題 = 假裝修了、實際比沒修更危險（false confidence 阻止下次警覺）。</p>
]]></content:encoded></item><item><title>用 Next-action frame 取代 Disclaimer：把 prohibition 翻成 actionable chain</title><link>https://tarrragon.github.io/blog/report/next-action-frame-over-disclaimer/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/next-action-frame-over-disclaimer/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>&lt;strong>Audit / risk 識別 reader 不該做 X 後、寫作回應的 frame 決定整段自然 positive 還是 disclaimer。&lt;/strong> 兩個 frame：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Frame&lt;/th>
 &lt;th>段落主體&lt;/th>
 &lt;th>Reader 拿到&lt;/th>
 &lt;th>自然句法&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Disclaimer frame&lt;/td>
 &lt;td>告訴 reader「不要 X / X is dangerous」&lt;/td>
 &lt;td>Prohibition + warning&lt;/td>
 &lt;td>Negative phrasing&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Next-action frame&lt;/td>
 &lt;td>告訴 reader「沿 chain 做 Y / Z」&lt;/td>
 &lt;td>Chain 步驟 + 完成判準&lt;/td>
 &lt;td>Positive phrasing&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩 frame 對應同一個 risk、但 reader 拿到的東西不同。Disclaimer frame 自然產出負面陳述；逐句翻成正向句法後 frame 仍是 disclaimer、後續 multi-pass review 會繼續 catch 到負面殘餘。&lt;strong>整段 reframe 成 next-action chain 才是根治、不是字面換句。&lt;/strong>&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>實際 case：對資安 problem-node 章節跑 audit、找到 D2 Major weakness——「reader 拿章節層 control name 直接 ship、會產生 false sense of security」。寫作回應的選擇：&lt;/p>
&lt;p>&lt;strong>v1（Disclaimer frame，直覺選擇）&lt;/strong>：&lt;/p>
&lt;blockquote>
&lt;p>章節給的是 routing layer、不是 implementation layer。判讀完成 ≠ 控制面實作完成。Reader 拿章節層 control 名稱直接 ship、會產生 false sense of security。&lt;/p>&lt;/blockquote>
&lt;p>「不是」「≠」「會產生」一連串負面陳述。Multi-pass review catch 到、要求正向改寫。&lt;/p>
&lt;p>&lt;strong>v2（Disclaimer frame + 字面正向化）&lt;/strong>：&lt;/p>
&lt;blockquote>
&lt;p>判讀完成代表 routing 階段交付；實作完成要靠 mechanism 層跟下游模組接續。Reader 拿章節層 control 名稱直接 ship、會建立 false sense of security——routing 跟 implementation 是兩個分開的交付里程碑。&lt;/p>&lt;/blockquote>
&lt;p>字面去掉「不是」「≠」、但 frame 仍是 disclaimer——主軸是「警告 reader 別把 routing 當 implementation」、reader 拿到的仍是 prohibition + warning、actionable next step 隱含在「靠下游接續」一句。&lt;/p>
&lt;p>&lt;strong>v3（Next-action frame，reframe 後）&lt;/strong>：&lt;/p>
&lt;blockquote>
&lt;p>本章交付三樣：問題節點清單、判讀訊號、控制面 link。判讀完成後沿兩條 chain 進入 implementation：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Mechanism chain&lt;/strong>：點問題節點表的 &lt;code>[control-name]&lt;/code> link 進 knowledge-card、那層展開機制 / 邊界 / context-dependence。&lt;/li>
&lt;li>&lt;strong>Delivery chain&lt;/strong>：「交接路由」欄位指向下游模組（05 / 06 / 08 視章節而定）、接配置 / 驗證 / 處置交付。&lt;/li>
&lt;/ol>
&lt;p>Implementation 強度取決於兩條 chain 的完成度。&lt;/p>&lt;/blockquote>
&lt;p>整段 positive、不需 contrast。Reader 拿到兩條 actionable chain + 完成判準。Risk 仍被處理（chain 不走完 = implementation 沒交付）、用「該做什麼」取代「不要做什麼」。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;p>寫 audit response 段前先問 frame：&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p><strong>Audit / risk 識別 reader 不該做 X 後、寫作回應的 frame 決定整段自然 positive 還是 disclaimer。</strong> 兩個 frame：</p>
<table>
  <thead>
      <tr>
          <th>Frame</th>
          <th>段落主體</th>
          <th>Reader 拿到</th>
          <th>自然句法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Disclaimer frame</td>
          <td>告訴 reader「不要 X / X is dangerous」</td>
          <td>Prohibition + warning</td>
          <td>Negative phrasing</td>
      </tr>
      <tr>
          <td>Next-action frame</td>
          <td>告訴 reader「沿 chain 做 Y / Z」</td>
          <td>Chain 步驟 + 完成判準</td>
          <td>Positive phrasing</td>
      </tr>
  </tbody>
</table>
<p>兩 frame 對應同一個 risk、但 reader 拿到的東西不同。Disclaimer frame 自然產出負面陳述；逐句翻成正向句法後 frame 仍是 disclaimer、後續 multi-pass review 會繼續 catch 到負面殘餘。<strong>整段 reframe 成 next-action chain 才是根治、不是字面換句。</strong></p>
<hr>
<h2 id="情境">情境</h2>
<p>實際 case：對資安 problem-node 章節跑 audit、找到 D2 Major weakness——「reader 拿章節層 control name 直接 ship、會產生 false sense of security」。寫作回應的選擇：</p>
<p><strong>v1（Disclaimer frame，直覺選擇）</strong>：</p>
<blockquote>
<p>章節給的是 routing layer、不是 implementation layer。判讀完成 ≠ 控制面實作完成。Reader 拿章節層 control 名稱直接 ship、會產生 false sense of security。</p></blockquote>
<p>「不是」「≠」「會產生」一連串負面陳述。Multi-pass review catch 到、要求正向改寫。</p>
<p><strong>v2（Disclaimer frame + 字面正向化）</strong>：</p>
<blockquote>
<p>判讀完成代表 routing 階段交付；實作完成要靠 mechanism 層跟下游模組接續。Reader 拿章節層 control 名稱直接 ship、會建立 false sense of security——routing 跟 implementation 是兩個分開的交付里程碑。</p></blockquote>
<p>字面去掉「不是」「≠」、但 frame 仍是 disclaimer——主軸是「警告 reader 別把 routing 當 implementation」、reader 拿到的仍是 prohibition + warning、actionable next step 隱含在「靠下游接續」一句。</p>
<p><strong>v3（Next-action frame，reframe 後）</strong>：</p>
<blockquote>
<p>本章交付三樣：問題節點清單、判讀訊號、控制面 link。判讀完成後沿兩條 chain 進入 implementation：</p>
<ol>
<li><strong>Mechanism chain</strong>：點問題節點表的 <code>[control-name]</code> link 進 knowledge-card、那層展開機制 / 邊界 / context-dependence。</li>
<li><strong>Delivery chain</strong>：「交接路由」欄位指向下游模組（05 / 06 / 08 視章節而定）、接配置 / 驗證 / 處置交付。</li>
</ol>
<p>Implementation 強度取決於兩條 chain 的完成度。</p></blockquote>
<p>整段 positive、不需 contrast。Reader 拿到兩條 actionable chain + 完成判準。Risk 仍被處理（chain 不走完 = implementation 沒交付）、用「該做什麼」取代「不要做什麼」。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<p>寫 audit response 段前先問 frame：</p>
<h3 id="frame-選擇判準">Frame 選擇判準</h3>
<h4 id="1-本段給-reader-什麼">1. 本段給 reader 什麼</h4>
<ul>
<li>「不要做 X」→ disclaimer frame（避開）</li>
<li>「做 Y / Z」→ next-action frame（採用）</li>
</ul>
<h4 id="2-能否把不要-x翻成該做-y--z">2. 能否把「不要 X」翻成「該做 Y / Z」</h4>
<ul>
<li>多數 case 可以、因為 risk 通常對應 missing action</li>
<li>例：「不要把 routing 當 implementation」= 「沿 mechanism + delivery 兩條 chain 走完」</li>
<li>例：「不要用 universal mitigation」= 「對稱寫 in-scope + out-of-scope + 補強路由」（<a href="../threat-model-explicitness/">#101</a>）</li>
<li>例：「不要用名稱層 mitigation 對位」= 「補 mechanism + 前提兩層」（<a href="../mitigation-threat-alignment/">#102</a>）</li>
</ul>
<h4 id="3-段落主體寫-y--z-chaincompleteness-判準明示">3. 段落主體寫 Y / Z chain、completeness 判準明示</h4>
<ul>
<li>Chain 步驟具體可執行</li>
<li>完成判準明示（reader 知道何時 chain 走完）</li>
</ul>
<h4 id="4-若必須提到-risk放段落結尾subordinate-結構">4. 若必須提到 risk、放段落結尾、subordinate 結構</h4>
<ul>
<li>Risk 是 chain 不走完的後果、放段尾一行</li>
<li>Main flow 仍是 chain、risk 是 chain 失敗的描述</li>
<li>例：「兩條 chain 走完，控制面交付完整。Chain 走不完，章節閱讀只完成 routing 階段。」</li>
</ul>
<h3 id="跟-94-的分工">跟 #94 的分工</h3>
<p><a href="../positive-rewrite-preserves-contrast/">#94 正向改寫保留對照論據</a> 處理「保留 contrast 怎麼正向」——適用於 contrast 是論述完整性必需的 case（X、不是 Y 是讀者直覺替代）。本卡處理「整段能否不需 contrast」——適用於 disclaimer frame 整段。</p>
<p>兩卡互補：</p>
<ul>
<li>先跑本卡：能否 reframe 成 next-action？能 → 不需 contrast、整段自然 positive</li>
<li>再跑 #94：必須保留 contrast 的 case（reader 直覺替代是 Y、明確排除）→ 用「X、不是 Y」+ reasoning 結構</li>
</ul>
<p>順序錯（先跑 #94 再考慮 reframe）= 在 disclaimer frame 內逐句正向化、frame 沒動、surface fix。</p>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="disclaimer-段反覆陷入字面-surface-fix">Disclaimer 段反覆陷入字面 surface fix</h3>
<p>整段 frame 是「不要 X」、逐句改 positive 後仍是「不要 X」變體。Multi-pass review 會反覆 catch 到負面殘餘、每次只改字面、frame 沒動。跟 <a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a> 同骨——字面層補丁不解行為層問題。</p>
<h3 id="reader-拿到-prohibition不知道-actionable-next-step">Reader 拿到 prohibition、不知道 actionable next step</h3>
<p>Disclaimer 給 reader 的 actionable 是「不要做」、但「該做什麼」reader 自己腦補。多 reader 各自腦補不同 next step、結果各不相同。Next-action frame 把 next step 寫進文字、跨 reader 一致。</p>
<h3 id="self-case本系列實際遇到">Self-case：本系列實際遇到</h3>
<p>寫資安章節「從本章到實作」段時：</p>
<ol>
<li>第一次 batch（v1，8 章）：disclaimer frame、negative phrasing</li>
<li>Multi-pass review catch、第二次 batch（v2，8 章 sed 換句）：字面去否定詞、frame 仍 disclaimer</li>
<li>User 指出「應該重新思考為什麼這樣寫」：浮現 frame 議題、reframe v3</li>
</ol>
<p>兩次 batch 改 8 章是高 cost surface fix；frame 反思在 v1 之前就該做、避開兩次無效 batch。<strong>Disclaimer 段一出現、第一反應該是「能不能 reframe」、不是「怎麼把否定詞翻正向」。</strong></p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../positive-rewrite-preserves-contrast/">#94 正向改寫保留對照論據</a></td>
          <td><strong>本卡是 #94 的上游</strong> — #94 處理「contrast 是論述完整性必需時怎麼正向」、本卡處理「整段能否不需 contrast」；frame 選對、#94 議題自然消失</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>Disclaimer 是寫作便利（從 audit 警告語言抄）、跟 reader 意圖（actionable next step）反向；本卡是 #67 在 audit response 維度的展現</td>
      </tr>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td>把「不是」改「兩個分開」是字面 fix、reframe 整段是行為層 fix；本卡是 #82 在寫作 frame 的具體實例</td>
      </tr>
      <tr>
          <td><a href="../false-sense-of-security-as-primary-failure/">#100 False sense of security 主要失敗模式</a></td>
          <td>Audit 識別 reader 風險、寫作端該翻成 actionable next step、不該照搬 audit 警告語言當 disclaimer</td>
      </tr>
      <tr>
          <td><a href="../transformation-at-outer-layer-when-engine-closed/">#88 Engine 不可調時把 transformation 移到外層</a></td>
          <td>同骨 transformation 邏輯——prohibition 改 next-action 是把 transformation 移到 reader 動作層、不停在警告層</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-scope-must-cover-risk-zone/">#95 Multi-pass scope 要蓋同類風險區</a></td>
          <td>Disclaimer frame 在多章重複時、batch surface fix 會在每章踩同樣 frame issue；reframe 要蓋整個 scope corpus、不只首章</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing 的 multi-pass review</a></td>
          <td>本卡補 multi-pass review 的 frame 軸——輪 3 機會成本語氣只 catch 字面絕對詞、frame 議題要在生成階段就反思、不能完全靠後輪 review</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>徵兆</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段落出現「不是」「≠」「不要」「不可以」連串</td>
          <td>字面換句之前先檢查段落 frame 是否 disclaimer</td>
      </tr>
      <tr>
          <td>整段在告訴 reader「X 是 dangerous / 會產生 Y」</td>
          <td>Reframe：把 X 對應的 missing action 寫進段落主體</td>
      </tr>
      <tr>
          <td>字面翻成 positive 後、段落仍像警告</td>
          <td>Frame 沒換、reframe 整段為 next-action chain</td>
      </tr>
      <tr>
          <td>Reader 讀完不知道下一步該做什麼</td>
          <td>Disclaimer 沒給 actionable next step、補 chain</td>
      </tr>
      <tr>
          <td>同模板段在多章重複出現、每章都是負面 frame</td>
          <td>Frame 議題系統性、不是個案；改 frame + 考慮 SSoT 化（單一定義 + 各章引用）</td>
      </tr>
      <tr>
          <td>Multi-pass review 反覆 catch 同段「絕對詞太多」</td>
          <td>字面 fix 不解、reframe 段落</td>
      </tr>
      <tr>
          <td>Audit findings 直接抄進章節當警告</td>
          <td>Audit 語言是 reviewer 視角、章節 reader 需要 actionable chain</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="適用範圍與邊界">適用範圍與邊界</h2>
<ul>
<li><strong>適用</strong>：寫 audit / risk 的回應段、prohibition 段、warning 段、disclaimer 段；任何起手是「告訴 reader 不要做 X」的段落</li>
<li><strong>不適用</strong>：純 reference 段（不傳達 risk、純列 fact）、合規必填 disclaimer（法律 / 合約必須照規定文字）、安全告警（值班場景需要強烈警示語、reader 已是 expert）</li>
<li><strong>邊界</strong>：「Reframe 成 next-action」≠「刪掉所有警示」——risk 嚴重 / actionable 不明時、保留 warning subordinate 在段落結尾、main flow 仍是 next-action chain；判別準則：「reader 讀完段落、能否列出 next step？」能 → frame OK、不能 → 仍是 disclaimer</li>
<li><strong>過度應用反例</strong>：所有段都 reframe 成 next-action、把 reference / 規格段也改成「該做 Y」、reader 找不到 fact reference；frame 選擇對應段落責任、不是普世 rule</li>
</ul>
<hr>
<h2 id="對-multi-pass-review-的補丁">對 multi-pass review 的補丁</h2>
<p><a href="../writing-multi-pass-review/">#83 multi-pass review</a> 的輪 3「機會成本語氣」目前只跑 grep 抓絕對詞（應該 / 必須 / 不行 / 不可以 / 正確）、catch 不到 frame 議題——disclaimer frame 段落的字面可能全 positive、但整段仍是 prohibition。</p>
<p>補丁：輪 3 加一條 frame 檢查問題：「<strong>段落主體在告訴 reader 該做什麼、還是不該做什麼？</strong>」——告訴不該做 → reframe；告訴該做 → frame OK。</p>
<p>這條檢查放在輪 3 是因為 frame 議題跟「絕對主義語氣」同軸、都是「告訴 reader 規則 vs 教 reader 思考」的延伸。<strong>Frame 議題的根因檢查在輪 1 生成時更便宜</strong>（生成段落時就問 frame）、輪 3 是 fallback safety net。</p>
]]></content:encoded></item><item><title>術語翻譯要保留原文錨點</title><link>https://tarrragon.github.io/blog/report/terminology-keeps-original-anchor/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/terminology-keeps-original-anchor/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>術語翻譯要保留原文錨點：第一次出現用「中文術語（original term）」建立雙錨點，後續可依語境使用中文或原文。中文名稱負責讓段落可讀，原文名稱負責讓概念可回溯到來源、搜尋結果與跨語言討論。&lt;/p>
&lt;p>這次 &lt;code>paternalism&lt;/code> 被翻成「父權式保護」就是典型風險。中文詞把 reader 帶向 gender / patriarchy 的語意場，但原詞在倫理與決策脈絡裡更接近「家長主義」或「家長作風」：替他人決定什麼對他好。保留 &lt;code>paternalism&lt;/code> 讓 reviewer 能立刻發現中文錨點偏移。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼只留中文會漂移">為什麼只留中文會漂移&lt;/h2>
&lt;p>中文翻譯常同時承擔「自然語感」與「術語對位」兩個責任，兩者不一定一致。自然語感好的詞可能帶入額外文化語意；術語對位準的詞可能不夠口語。只留中文時，讀者看不到原概念邊界，reviewer 也難判斷翻譯是否偏移。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>情境&lt;/th>
 &lt;th>只留中文的風險&lt;/th>
 &lt;th>加原文錨點後的效果&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>學術 / 倫理術語&lt;/td>
 &lt;td>中文詞帶入不同學派或文化語意&lt;/td>
 &lt;td>reviewer 能回到原始概念判斷翻譯是否準確&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>工程方法論術語&lt;/td>
 &lt;td>中文詞看似通順、實際少了既有社群脈絡&lt;/td>
 &lt;td>reader 可用英文搜尋更多案例與反例&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>AI / 工具鏈新術語&lt;/td>
 &lt;td>中文翻譯尚未穩定、不同社群各翻一套&lt;/td>
 &lt;td>原文維持 grep / search / citation 可回溯性&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>跨文件共用核心概念&lt;/td>
 &lt;td>各篇各自翻譯、同概念變多個中文名稱&lt;/td>
 &lt;td>原文成為概念單一真實來源&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>翻譯是把 reader 從原文帶到中文語境。原文錨點是這條路的回程票。&lt;/p>
&lt;hr>
&lt;h2 id="翻譯檢查先看句內邏輯">翻譯檢查先看句內邏輯&lt;/h2>
&lt;p>翻譯問題先是句內邏輯問題，再是術語問題。把譯名放回原句後，要檢查它跟主詞、動詞、修飾語、因果關係是否成立；如果譯名讓句子多出原文沒有的前提，或讓後面的論證方向改變，這個翻譯就有問題。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>檢查層&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;th>&lt;code>父權式保護&lt;/code> 的失效點&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>主詞角色&lt;/td>
 &lt;td>這個詞描述的是誰的行為或關係？&lt;/td>
 &lt;td>句子在談規則對自主性的介入，不是在談父權&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修飾語關係&lt;/td>
 &lt;td>中文修飾語是否引入額外前提？&lt;/td>
 &lt;td>「父權式」引入 gender / patriarchy 前提&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>動詞搭配&lt;/td>
 &lt;td>這個詞能自然承接後面的動作嗎？&lt;/td>
 &lt;td>「通過父權式保護 4 條件測試」語意卡住&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>因果方向&lt;/td>
 &lt;td>這個詞是否支撐段落原本的因果？&lt;/td>
 &lt;td>原因是「替對方決定」，不是「父權結構」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者追問方向&lt;/td>
 &lt;td>reader 看到這個詞會問哪個問題？&lt;/td>
 &lt;td>會問「父權在哪」，不是問「自主性在哪」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這類錯誤容易犯，是因為第一版翻譯常由三個便利訊號驅動：字根聯想、上下文補完、中文順口度。三者都能產生看似合理的詞，但句內邏輯檢查會暴露它們是否真的承接原文概念。&lt;/p>
&lt;hr>
&lt;h2 id="case家長主義為什麼漂成父權式保護">Case：家長主義為什麼漂成父權式保護&lt;/h2>
&lt;p>&lt;code>paternalism&lt;/code> 容易被誤翻成「父權式保護」，是因為譯者同時看到 &lt;code>paternal&lt;/code> 的父系字根與「保護他人」的語境，於是把兩個表面訊號合成一個看似順口的中文詞。這個合成跳過了術語層檢查：&lt;code>paternalism&lt;/code> 在倫理、政治哲學與決策設計裡的核心是「以對方利益之名限制對方自主」，跟性別權力無關。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>層次&lt;/th>
 &lt;th>錯誤路徑&lt;/th>
 &lt;th>合理路徑&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>字根聯想&lt;/td>
 &lt;td>&lt;code>paternal&lt;/code> → 父親 / 父系&lt;/td>
 &lt;td>字根只提供線索，不直接決定術語譯名&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>語境補完&lt;/td>
 &lt;td>保護使用者 → 父權式保護&lt;/td>
 &lt;td>替他人決定何者對他好 → 家長主義&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>概念責任&lt;/td>
 &lt;td>性別 / patriarchy 權力結構&lt;/td>
 &lt;td>自主性（autonomy）與介入正當性的邊界&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>reviewer 訊號&lt;/td>
 &lt;td>讀者問「這跟父權有什麼關係？」&lt;/td>
 &lt;td>回到 &lt;code>paternalism&lt;/code>，檢查常見譯名與學術用法&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>「父權式保護」不是完全無法理解，但它放回句子後會讓邏輯多出一個沒有來源的前提：這裡似乎有父權或性別權力結構。原段落真正需要承接的是 autonomy、consent、intervention、best-interest justification；中文譯名一旦讓 reader 問「父權在哪」，就表示它沒有通過句內邏輯檢查。&lt;/p>
&lt;p>這個案例的修法是先定義概念責任，再選中文譯名：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">家長主義（paternalism）在本文指「以對方利益之名限制對方自主」。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">常見譯名也包含「家長作風」；本文統一用「家長主義」。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這樣寫保留三個訊號：中文有穩定常見譯名、英文可回溯原概念、定義句把 reader 從「父權」導回「自主性與介入正當性」。&lt;/p>
&lt;hr>
&lt;h2 id="判斷什麼算術語">判斷什麼算術語&lt;/h2>
&lt;p>術語是跨段落、跨文件或跨社群會被重複引用的概念單位。判斷重點是讀者是否需要用同一個 label 追蹤同一個概念，跟它是不是英文無關。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>判斷&lt;/th>
 &lt;th>寫法&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>來自學術、標準、框架、方法論&lt;/td>
 &lt;td>是術語&lt;/td>
 &lt;td>中文術語（original term）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者可能需要搜尋外部案例&lt;/td>
 &lt;td>是術語&lt;/td>
 &lt;td>保留英文方便搜尋&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>中文翻譯存在多種常見說法&lt;/td>
 &lt;td>需要對位檢查&lt;/td>
 &lt;td>選一個中文 + 原文括號&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>只是普通英文動詞或工具操作&lt;/td>
 &lt;td>通常不是術語&lt;/td>
 &lt;td>直接中文化或保留工具名稱&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>專案內部自造名詞且尚未穩定&lt;/td>
 &lt;td>先當候選術語&lt;/td>
 &lt;td>暫用中文 + 英文或 slug 錨點&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>例如 &lt;code>paternalism&lt;/code>、&lt;code>narrow framing&lt;/code>、&lt;code>premortem&lt;/code>、&lt;code>dark pattern&lt;/code> 都是術語；&lt;code>run&lt;/code>、&lt;code>write&lt;/code>、&lt;code>read&lt;/code> 在一般句子裡多半不是術語。&lt;code>tool&lt;/code> 若在討論 LLM tool selection 的決策偏誤時，才升格為術語錨點。&lt;/p>
&lt;hr>
&lt;h2 id="寫作規則">寫作規則&lt;/h2>
&lt;p>術語第一次出現時用中文在前、英文在括號後：&lt;code>家長主義（paternalism）&lt;/code>。中文是讀者入口，英文是概念邊界。若英文是縮寫，第一次寫全名加縮寫：&lt;code>概念驗證（proof of concept, POC）&lt;/code>，後續再用 &lt;code>POC&lt;/code>。&lt;/p>
&lt;p>同一篇文章內保持一個中文譯名。若需要提到其他常見譯名，把它放在定義段，不在正文來回切換：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">家長主義（paternalism）在本文指「替他人決定什麼對他好」。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">常見譯名也包含「家長作風」；本文統一用「家長主義」。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>翻譯不確定時，保留原文比假裝中文已穩定更可靠。下一輪 review 可改中文譯名，但原文錨點能維持搜尋與 cross-link 穩定。&lt;/p>
&lt;hr>
&lt;h2 id="multi-pass-裡怎麼察覺翻譯邏輯錯位">Multi-pass 裡怎麼察覺翻譯邏輯錯位&lt;/h2>
&lt;p>翻譯檢查需要在多輪檢查中獨立成一個子 pass，重點不是問「這個中文順不順」，而是問「這個中文放回句子後，邏輯是否仍然成立」。一般命名 review 會問 grep、長度、一致性；翻譯邏輯 review 要額外問句內角色、修飾關係、因果方向與讀者追問。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Pass&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;th>操作&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>術語枚舉&lt;/td>
 &lt;td>哪些中文詞是由英文概念翻來的？&lt;/td>
 &lt;td>grep 英文括號、標題、表格第一欄、index entry&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>原文錨點&lt;/td>
 &lt;td>第一次出現是否保留 original term？&lt;/td>
 &lt;td>補「中文術語（original term）」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>句內角色檢查&lt;/td>
 &lt;td>中文詞在句中扮演的角色是否對？&lt;/td>
 &lt;td>把句子主詞、動詞、受詞標出來，確認譯名能承接&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修飾語檢查&lt;/td>
 &lt;td>中文修飾語是否引入原文沒有的前提？&lt;/td>
 &lt;td>問「這個修飾語從原文哪裡來？」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>因果方向檢查&lt;/td>
 &lt;td>譯名是否改變段落後面的推論方向？&lt;/td>
 &lt;td>用一句話說明「因為 X 所以 Y」，看 X 是否被換掉&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者追問檢查&lt;/td>
 &lt;td>reader 看到中文會追問正確的問題嗎？&lt;/td>
 &lt;td>問「他會問 A 還是 B？」；問錯方向就重譯&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Surface 同步&lt;/td>
 &lt;td>metadata / navigation 是否也使用同一術語？&lt;/td>
 &lt;td>掃 title、description、heading、link label、MOC&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>翻譯 pass 的關鍵問題是：「這個中文詞是否讓句子說了一個原文沒有說的東西？」會的話，這是邏輯錯位，需要重譯。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>術語翻譯要保留原文錨點：第一次出現用「中文術語（original term）」建立雙錨點，後續可依語境使用中文或原文。中文名稱負責讓段落可讀，原文名稱負責讓概念可回溯到來源、搜尋結果與跨語言討論。</p>
<p>這次 <code>paternalism</code> 被翻成「父權式保護」就是典型風險。中文詞把 reader 帶向 gender / patriarchy 的語意場，但原詞在倫理與決策脈絡裡更接近「家長主義」或「家長作風」：替他人決定什麼對他好。保留 <code>paternalism</code> 讓 reviewer 能立刻發現中文錨點偏移。</p>
<hr>
<h2 id="為什麼只留中文會漂移">為什麼只留中文會漂移</h2>
<p>中文翻譯常同時承擔「自然語感」與「術語對位」兩個責任，兩者不一定一致。自然語感好的詞可能帶入額外文化語意；術語對位準的詞可能不夠口語。只留中文時，讀者看不到原概念邊界，reviewer 也難判斷翻譯是否偏移。</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>只留中文的風險</th>
          <th>加原文錨點後的效果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>學術 / 倫理術語</td>
          <td>中文詞帶入不同學派或文化語意</td>
          <td>reviewer 能回到原始概念判斷翻譯是否準確</td>
      </tr>
      <tr>
          <td>工程方法論術語</td>
          <td>中文詞看似通順、實際少了既有社群脈絡</td>
          <td>reader 可用英文搜尋更多案例與反例</td>
      </tr>
      <tr>
          <td>AI / 工具鏈新術語</td>
          <td>中文翻譯尚未穩定、不同社群各翻一套</td>
          <td>原文維持 grep / search / citation 可回溯性</td>
      </tr>
      <tr>
          <td>跨文件共用核心概念</td>
          <td>各篇各自翻譯、同概念變多個中文名稱</td>
          <td>原文成為概念單一真實來源</td>
      </tr>
  </tbody>
</table>
<p>翻譯是把 reader 從原文帶到中文語境。原文錨點是這條路的回程票。</p>
<hr>
<h2 id="翻譯檢查先看句內邏輯">翻譯檢查先看句內邏輯</h2>
<p>翻譯問題先是句內邏輯問題，再是術語問題。把譯名放回原句後，要檢查它跟主詞、動詞、修飾語、因果關係是否成立；如果譯名讓句子多出原文沒有的前提，或讓後面的論證方向改變，這個翻譯就有問題。</p>
<table>
  <thead>
      <tr>
          <th>檢查層</th>
          <th>問題</th>
          <th><code>父權式保護</code> 的失效點</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>主詞角色</td>
          <td>這個詞描述的是誰的行為或關係？</td>
          <td>句子在談規則對自主性的介入，不是在談父權</td>
      </tr>
      <tr>
          <td>修飾語關係</td>
          <td>中文修飾語是否引入額外前提？</td>
          <td>「父權式」引入 gender / patriarchy 前提</td>
      </tr>
      <tr>
          <td>動詞搭配</td>
          <td>這個詞能自然承接後面的動作嗎？</td>
          <td>「通過父權式保護 4 條件測試」語意卡住</td>
      </tr>
      <tr>
          <td>因果方向</td>
          <td>這個詞是否支撐段落原本的因果？</td>
          <td>原因是「替對方決定」，不是「父權結構」</td>
      </tr>
      <tr>
          <td>讀者追問方向</td>
          <td>reader 看到這個詞會問哪個問題？</td>
          <td>會問「父權在哪」，不是問「自主性在哪」</td>
      </tr>
  </tbody>
</table>
<p>這類錯誤容易犯，是因為第一版翻譯常由三個便利訊號驅動：字根聯想、上下文補完、中文順口度。三者都能產生看似合理的詞，但句內邏輯檢查會暴露它們是否真的承接原文概念。</p>
<hr>
<h2 id="case家長主義為什麼漂成父權式保護">Case：家長主義為什麼漂成父權式保護</h2>
<p><code>paternalism</code> 容易被誤翻成「父權式保護」，是因為譯者同時看到 <code>paternal</code> 的父系字根與「保護他人」的語境，於是把兩個表面訊號合成一個看似順口的中文詞。這個合成跳過了術語層檢查：<code>paternalism</code> 在倫理、政治哲學與決策設計裡的核心是「以對方利益之名限制對方自主」，跟性別權力無關。</p>
<table>
  <thead>
      <tr>
          <th>層次</th>
          <th>錯誤路徑</th>
          <th>合理路徑</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>字根聯想</td>
          <td><code>paternal</code> → 父親 / 父系</td>
          <td>字根只提供線索，不直接決定術語譯名</td>
      </tr>
      <tr>
          <td>語境補完</td>
          <td>保護使用者 → 父權式保護</td>
          <td>替他人決定何者對他好 → 家長主義</td>
      </tr>
      <tr>
          <td>概念責任</td>
          <td>性別 / patriarchy 權力結構</td>
          <td>自主性（autonomy）與介入正當性的邊界</td>
      </tr>
      <tr>
          <td>reviewer 訊號</td>
          <td>讀者問「這跟父權有什麼關係？」</td>
          <td>回到 <code>paternalism</code>，檢查常見譯名與學術用法</td>
      </tr>
  </tbody>
</table>
<p>「父權式保護」不是完全無法理解，但它放回句子後會讓邏輯多出一個沒有來源的前提：這裡似乎有父權或性別權力結構。原段落真正需要承接的是 autonomy、consent、intervention、best-interest justification；中文譯名一旦讓 reader 問「父權在哪」，就表示它沒有通過句內邏輯檢查。</p>
<p>這個案例的修法是先定義概念責任，再選中文譯名：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">家長主義（paternalism）在本文指「以對方利益之名限制對方自主」。
</span></span><span class="line"><span class="ln">2</span><span class="cl">常見譯名也包含「家長作風」；本文統一用「家長主義」。</span></span></code></pre></div><p>這樣寫保留三個訊號：中文有穩定常見譯名、英文可回溯原概念、定義句把 reader 從「父權」導回「自主性與介入正當性」。</p>
<hr>
<h2 id="判斷什麼算術語">判斷什麼算術語</h2>
<p>術語是跨段落、跨文件或跨社群會被重複引用的概念單位。判斷重點是讀者是否需要用同一個 label 追蹤同一個概念，跟它是不是英文無關。</p>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>判斷</th>
          <th>寫法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>來自學術、標準、框架、方法論</td>
          <td>是術語</td>
          <td>中文術語（original term）</td>
      </tr>
      <tr>
          <td>讀者可能需要搜尋外部案例</td>
          <td>是術語</td>
          <td>保留英文方便搜尋</td>
      </tr>
      <tr>
          <td>中文翻譯存在多種常見說法</td>
          <td>需要對位檢查</td>
          <td>選一個中文 + 原文括號</td>
      </tr>
      <tr>
          <td>只是普通英文動詞或工具操作</td>
          <td>通常不是術語</td>
          <td>直接中文化或保留工具名稱</td>
      </tr>
      <tr>
          <td>專案內部自造名詞且尚未穩定</td>
          <td>先當候選術語</td>
          <td>暫用中文 + 英文或 slug 錨點</td>
      </tr>
  </tbody>
</table>
<p>例如 <code>paternalism</code>、<code>narrow framing</code>、<code>premortem</code>、<code>dark pattern</code> 都是術語；<code>run</code>、<code>write</code>、<code>read</code> 在一般句子裡多半不是術語。<code>tool</code> 若在討論 LLM tool selection 的決策偏誤時，才升格為術語錨點。</p>
<hr>
<h2 id="寫作規則">寫作規則</h2>
<p>術語第一次出現時用中文在前、英文在括號後：<code>家長主義（paternalism）</code>。中文是讀者入口，英文是概念邊界。若英文是縮寫，第一次寫全名加縮寫：<code>概念驗證（proof of concept, POC）</code>，後續再用 <code>POC</code>。</p>
<p>同一篇文章內保持一個中文譯名。若需要提到其他常見譯名，把它放在定義段，不在正文來回切換：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">家長主義（paternalism）在本文指「替他人決定什麼對他好」。
</span></span><span class="line"><span class="ln">2</span><span class="cl">常見譯名也包含「家長作風」；本文統一用「家長主義」。</span></span></code></pre></div><p>翻譯不確定時，保留原文比假裝中文已穩定更可靠。下一輪 review 可改中文譯名，但原文錨點能維持搜尋與 cross-link 穩定。</p>
<hr>
<h2 id="multi-pass-裡怎麼察覺翻譯邏輯錯位">Multi-pass 裡怎麼察覺翻譯邏輯錯位</h2>
<p>翻譯檢查需要在多輪檢查中獨立成一個子 pass，重點不是問「這個中文順不順」，而是問「這個中文放回句子後，邏輯是否仍然成立」。一般命名 review 會問 grep、長度、一致性；翻譯邏輯 review 要額外問句內角色、修飾關係、因果方向與讀者追問。</p>
<table>
  <thead>
      <tr>
          <th>Pass</th>
          <th>問題</th>
          <th>操作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>術語枚舉</td>
          <td>哪些中文詞是由英文概念翻來的？</td>
          <td>grep 英文括號、標題、表格第一欄、index entry</td>
      </tr>
      <tr>
          <td>原文錨點</td>
          <td>第一次出現是否保留 original term？</td>
          <td>補「中文術語（original term）」</td>
      </tr>
      <tr>
          <td>句內角色檢查</td>
          <td>中文詞在句中扮演的角色是否對？</td>
          <td>把句子主詞、動詞、受詞標出來，確認譯名能承接</td>
      </tr>
      <tr>
          <td>修飾語檢查</td>
          <td>中文修飾語是否引入原文沒有的前提？</td>
          <td>問「這個修飾語從原文哪裡來？」</td>
      </tr>
      <tr>
          <td>因果方向檢查</td>
          <td>譯名是否改變段落後面的推論方向？</td>
          <td>用一句話說明「因為 X 所以 Y」，看 X 是否被換掉</td>
      </tr>
      <tr>
          <td>讀者追問檢查</td>
          <td>reader 看到中文會追問正確的問題嗎？</td>
          <td>問「他會問 A 還是 B？」；問錯方向就重譯</td>
      </tr>
      <tr>
          <td>Surface 同步</td>
          <td>metadata / navigation 是否也使用同一術語？</td>
          <td>掃 title、description、heading、link label、MOC</td>
      </tr>
  </tbody>
</table>
<p>翻譯 pass 的關鍵問題是：「這個中文詞是否讓句子說了一個原文沒有說的東西？」會的話，這是邏輯錯位，需要重譯。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
          <th>修法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>只留中文、不留原文</td>
          <td>翻譯偏移時 reviewer 難發現</td>
          <td>第一次出現補原文括號</td>
      </tr>
      <tr>
          <td>只留英文、不給中文</td>
          <td>讀者每段都要自行翻譯、閱讀負擔升高</td>
          <td>補中文入口</td>
      </tr>
      <tr>
          <td>同一術語多個中文譯名混用</td>
          <td>reader 以為是多個概念</td>
          <td>選一個 canonical 中文譯名</td>
      </tr>
      <tr>
          <td>中文譯名帶入額外政治 / 文化場</td>
          <td>概念邊界被不相關語意污染</td>
          <td>回原文檢查語境，必要時換譯名</td>
      </tr>
      <tr>
          <td>英文括號放在多個不同中文後面</td>
          <td>表示中文端沒有 SSoT，搜尋與理解都會分裂</td>
          <td>建術語表或在段首定義 canonical</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact</a></td>
          <td>術語翻譯是命名的一種；第一版中文譯名常基於當下語境，必須接受 reviewer 修正。</td>
      </tr>
      <tr>
          <td><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍</a></td>
          <td>title、description、index entry 若使用術語，也要保留同一組中文 / 原文錨點。</td>
      </tr>
      <tr>
          <td><a href="../single-source-of-truth/">#44 Single Source of Truth</a></td>
          <td>原文術語可作為跨中文譯名的概念 SSoT；中文譯名可以調整，原概念錨點不可漂移。</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 Security 標準引用的時效性與精確度</a></td>
          <td>高 stakes 領域的標準術語若翻譯漂移，會把 conditional / scope 一起翻錯；原文錨點降低扭曲風險。</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>reviewer 問「這個中文是什麼意思」</td>
          <td>補原文錨點，重新檢查譯名是否對位</td>
      </tr>
      <tr>
          <td>同一英文可翻成兩個以上中文</td>
          <td>在定義段列常見譯名，正文選一個 canonical</td>
      </tr>
      <tr>
          <td>中文詞帶出不相關聯想</td>
          <td>回原文語境，換成較中性的中文</td>
      </tr>
      <tr>
          <td>文章需要讀者搜尋外部資料</td>
          <td>第一次出現保留英文，讓搜尋 query 可直接使用</td>
      </tr>
      <tr>
          <td>術語出現在標題 / index entry</td>
          <td>metadata surface 也要補雙錨點，不只正文補</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：術語翻譯是概念對位，不是字面替換。中文讓文章可讀，原文讓概念可查、可驗、可被修正。少任一邊，reader 都會付額外成本。</p>
]]></content:encoded></item><item><title>中文壓縮術語要保留完整名詞頭</title><link>https://tarrragon.github.io/blog/report/compressed-chinese-terms-need-head-noun/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/compressed-chinese-terms-need-head-noun/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>中文壓縮術語要保留完整名詞頭：壓縮後的詞仍要能獨立回答「這是什麼」。技術文章可以把長概念縮短，但縮短後至少保留一個明確 head noun，例如「盲點」「風險」「偏誤」「檢查」「模式」「策略」。&lt;/p>
&lt;p>這次「多步驟 perplexity 盲」的問題在中文最後只剩「盲」一個字，中英混用本身不構成障礙。讀者無法判斷它是「盲點」「盲區」「盲測」還是形容詞式比喻；改成「多步驟成功率盲點」後，概念角色才完整：它是一種盲點，不是一個未完成的片語。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼單字壓縮會斷語意">為什麼單字壓縮會斷語意&lt;/h2>
&lt;p>中文可以高度省略，但技術寫作的省略成本由 reader 承擔。口語裡靠語境補完的詞，在文件裡會被單獨搜尋、引用、放進表格、出現在 index entry。當詞失去名詞頭，離開原句就失去語意。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>壓縮形式&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;th>完整形式&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>多步驟 perplexity 盲&lt;/td>
 &lt;td>「盲」不是穩定名詞頭&lt;/td>
 &lt;td>多步驟成功率盲點&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Anchor&lt;/td>
 &lt;td>不知是錨定、錨點、anchor check&lt;/td>
 &lt;td>既有結論錨定（Anchor）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>autopilot&lt;/td>
 &lt;td>不知是狀態、模式、失敗類型&lt;/td>
 &lt;td>自動駕駛模式（autopilot）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>POC&lt;/td>
 &lt;td>不知是文件、測試、最小實作&lt;/td>
 &lt;td>概念驗證（POC）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>toolification&lt;/td>
 &lt;td>不知是行為、偏誤、設計策略&lt;/td>
 &lt;td>工具化偏誤（toolification）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>壓縮後的詞會被拿去做段首、表格列名、索引條與 grep query。它必須在這些位置都能獨立成立。&lt;/p>
&lt;hr>
&lt;h2 id="head-noun-檢查">Head noun 檢查&lt;/h2>
&lt;p>Head noun 是術語最後承擔分類責任的名詞。它告訴 reader 這個概念屬於哪一類東西：偏誤、風險、模式、策略、檢查、條件、訊號、盲點。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>問題&lt;/th>
 &lt;th>判斷&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>這個詞拿出句子後還知道是什麼嗎？&lt;/td>
 &lt;td>知道 → head noun 足夠；不知道 → 補名詞頭&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>這個詞能放進表格第一欄嗎？&lt;/td>
 &lt;td>可以 → 可作分類；不可以 → 只是句中修飾片段&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>reader 能用它問問題嗎？&lt;/td>
 &lt;td>「如何處理 X 盲點」成立；「如何處理 X 盲」不成立&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>它能跟同類詞並列嗎？&lt;/td>
 &lt;td>「偏誤 / 風險 / 盲點」可並列；單字修飾不可並列&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>常用 head noun 應該具體對應概念責任：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Head noun&lt;/th>
 &lt;th>適用情境&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>盲點&lt;/td>
 &lt;td>決策者看不到的資訊或推論缺口&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>偏誤&lt;/td>
 &lt;td>系統性推理傾向&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>風險&lt;/td>
 &lt;td>可能造成損失但尚未發生的條件&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>模式&lt;/td>
 &lt;td>反覆出現的行為結構&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>檢查&lt;/td>
 &lt;td>可操作的 review 動作&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>策略&lt;/td>
 &lt;td>可選擇的處理路徑&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>訊號&lt;/td>
 &lt;td>用來判讀何時觸發下一步的觀察&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="改寫路徑">改寫路徑&lt;/h2>
&lt;p>改寫壓縮詞時，先判斷它要扮演哪種概念角色，再補 head noun，不先追求短。&lt;/p>
&lt;ol>
&lt;li>先問：「這是偏誤、風險、盲點、模式，還是檢查？」&lt;/li>
&lt;li>保留最能定位來源的核心詞。&lt;/li>
&lt;li>把英文原詞放在中文後括號，避免中文壓縮造成歧義。&lt;/li>
&lt;li>對同一篇文章跑 grep，確認同概念沒有多個中文變體。&lt;/li>
&lt;/ol>
&lt;p>例如「多步驟 perplexity 盲」可拆成：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>元件&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;th>改寫&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>多步驟&lt;/td>
 &lt;td>保留，說明失效情境&lt;/td>
 &lt;td>多步驟&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>perplexity&lt;/td>
 &lt;td>在此語境其實指成功率估計&lt;/td>
 &lt;td>成功率&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>盲&lt;/td>
 &lt;td>單字不完整&lt;/td>
 &lt;td>盲點&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>完整術語&lt;/td>
 &lt;td>缺 head noun、原文也不精準&lt;/td>
 &lt;td>多步驟成功率盲點&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>若原文術語本身重要，寫成「多步驟成功率盲點（multi-step success-rate blind spot）」比硬塞半段英文更穩。&lt;/p>
&lt;hr>
&lt;h2 id="反模式">反模式&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>反模式&lt;/th>
 &lt;th>後果&lt;/th>
 &lt;th>修法&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>為了短，刪掉最後名詞頭&lt;/td>
 &lt;td>reader 不知道概念類型&lt;/td>
 &lt;td>補「盲點 / 偏誤 / 風險」等類型&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>中英混在同一個未完成片語&lt;/td>
 &lt;td>中英文都無法提供完整語意&lt;/td>
 &lt;td>中文完整名詞 + 英文括號&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>表格欄位用口語縮寫&lt;/td>
 &lt;td>離開上下文後不可讀&lt;/td>
 &lt;td>欄位名稱完整化&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>用流行詞取代分類詞&lt;/td>
 &lt;td>看起來有風格，實際無法判斷下一步&lt;/td>
 &lt;td>改成可操作分類&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>每處各自補完不同名詞頭&lt;/td>
 &lt;td>同一概念變成多個術語&lt;/td>
 &lt;td>選 canonical 名詞頭後全篇統一&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原則&lt;/th>
 &lt;th>關係&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact&lt;/a>&lt;/td>
 &lt;td>壓縮術語是命名問題；第一版為了快常少 head noun，第二輪要從 reader 與 grep 角度重命名。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../writing-multi-pass-review/">#83 Writing 的 multi-pass review&lt;/a>&lt;/td>
 &lt;td>這是輪 4 grep-ability / 命名的子檢查；術語能否獨立搜尋與引用，要另跑一眼。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../terminology-keeps-original-anchor/">#107 術語翻譯要保留原文錨點&lt;/a>&lt;/td>
 &lt;td>原文錨點解決概念來源，head noun 解決中文句內可讀性；兩者要一起做。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關&lt;/a>&lt;/td>
 &lt;td>短詞通常比較好寫，但不一定對齊讀者理解；完整名詞頭是用字數換認知穩定。&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>該做的事&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>reviewer 問「這個 X 是什麼」&lt;/td>
 &lt;td>補 head noun，讓術語自己回答概念類型&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>術語最後一字是形容詞或單字&lt;/td>
 &lt;td>檢查是否缺「點 / 區 / 型 / 法 / 策略」等名詞&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>表格第一欄看起來像句子殘片&lt;/td>
 &lt;td>改成完整分類名詞&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>同一概念被補成多種詞尾&lt;/td>
 &lt;td>選 canonical head noun，全篇替換&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>中英混用後仍不能搜尋&lt;/td>
 &lt;td>改成中文完整術語 + 英文完整原詞&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心&lt;/strong>：壓縮是最後一步，不是第一步。術語先要完整、可分類、可搜尋，再決定能不能縮短。少了 head noun 的短詞不是精煉，是把補完成本丟給 reader。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>中文壓縮術語要保留完整名詞頭：壓縮後的詞仍要能獨立回答「這是什麼」。技術文章可以把長概念縮短，但縮短後至少保留一個明確 head noun，例如「盲點」「風險」「偏誤」「檢查」「模式」「策略」。</p>
<p>這次「多步驟 perplexity 盲」的問題在中文最後只剩「盲」一個字，中英混用本身不構成障礙。讀者無法判斷它是「盲點」「盲區」「盲測」還是形容詞式比喻；改成「多步驟成功率盲點」後，概念角色才完整：它是一種盲點，不是一個未完成的片語。</p>
<hr>
<h2 id="為什麼單字壓縮會斷語意">為什麼單字壓縮會斷語意</h2>
<p>中文可以高度省略，但技術寫作的省略成本由 reader 承擔。口語裡靠語境補完的詞，在文件裡會被單獨搜尋、引用、放進表格、出現在 index entry。當詞失去名詞頭，離開原句就失去語意。</p>
<table>
  <thead>
      <tr>
          <th>壓縮形式</th>
          <th>問題</th>
          <th>完整形式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>多步驟 perplexity 盲</td>
          <td>「盲」不是穩定名詞頭</td>
          <td>多步驟成功率盲點</td>
      </tr>
      <tr>
          <td>Anchor</td>
          <td>不知是錨定、錨點、anchor check</td>
          <td>既有結論錨定（Anchor）</td>
      </tr>
      <tr>
          <td>autopilot</td>
          <td>不知是狀態、模式、失敗類型</td>
          <td>自動駕駛模式（autopilot）</td>
      </tr>
      <tr>
          <td>POC</td>
          <td>不知是文件、測試、最小實作</td>
          <td>概念驗證（POC）</td>
      </tr>
      <tr>
          <td>toolification</td>
          <td>不知是行為、偏誤、設計策略</td>
          <td>工具化偏誤（toolification）</td>
      </tr>
  </tbody>
</table>
<p>壓縮後的詞會被拿去做段首、表格列名、索引條與 grep query。它必須在這些位置都能獨立成立。</p>
<hr>
<h2 id="head-noun-檢查">Head noun 檢查</h2>
<p>Head noun 是術語最後承擔分類責任的名詞。它告訴 reader 這個概念屬於哪一類東西：偏誤、風險、模式、策略、檢查、條件、訊號、盲點。</p>
<table>
  <thead>
      <tr>
          <th>問題</th>
          <th>判斷</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>這個詞拿出句子後還知道是什麼嗎？</td>
          <td>知道 → head noun 足夠；不知道 → 補名詞頭</td>
      </tr>
      <tr>
          <td>這個詞能放進表格第一欄嗎？</td>
          <td>可以 → 可作分類；不可以 → 只是句中修飾片段</td>
      </tr>
      <tr>
          <td>reader 能用它問問題嗎？</td>
          <td>「如何處理 X 盲點」成立；「如何處理 X 盲」不成立</td>
      </tr>
      <tr>
          <td>它能跟同類詞並列嗎？</td>
          <td>「偏誤 / 風險 / 盲點」可並列；單字修飾不可並列</td>
      </tr>
  </tbody>
</table>
<p>常用 head noun 應該具體對應概念責任：</p>
<table>
  <thead>
      <tr>
          <th>Head noun</th>
          <th>適用情境</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>盲點</td>
          <td>決策者看不到的資訊或推論缺口</td>
      </tr>
      <tr>
          <td>偏誤</td>
          <td>系統性推理傾向</td>
      </tr>
      <tr>
          <td>風險</td>
          <td>可能造成損失但尚未發生的條件</td>
      </tr>
      <tr>
          <td>模式</td>
          <td>反覆出現的行為結構</td>
      </tr>
      <tr>
          <td>檢查</td>
          <td>可操作的 review 動作</td>
      </tr>
      <tr>
          <td>策略</td>
          <td>可選擇的處理路徑</td>
      </tr>
      <tr>
          <td>訊號</td>
          <td>用來判讀何時觸發下一步的觀察</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="改寫路徑">改寫路徑</h2>
<p>改寫壓縮詞時，先判斷它要扮演哪種概念角色，再補 head noun，不先追求短。</p>
<ol>
<li>先問：「這是偏誤、風險、盲點、模式，還是檢查？」</li>
<li>保留最能定位來源的核心詞。</li>
<li>把英文原詞放在中文後括號，避免中文壓縮造成歧義。</li>
<li>對同一篇文章跑 grep，確認同概念沒有多個中文變體。</li>
</ol>
<p>例如「多步驟 perplexity 盲」可拆成：</p>
<table>
  <thead>
      <tr>
          <th>元件</th>
          <th>問題</th>
          <th>改寫</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>多步驟</td>
          <td>保留，說明失效情境</td>
          <td>多步驟</td>
      </tr>
      <tr>
          <td>perplexity</td>
          <td>在此語境其實指成功率估計</td>
          <td>成功率</td>
      </tr>
      <tr>
          <td>盲</td>
          <td>單字不完整</td>
          <td>盲點</td>
      </tr>
      <tr>
          <td>完整術語</td>
          <td>缺 head noun、原文也不精準</td>
          <td>多步驟成功率盲點</td>
      </tr>
  </tbody>
</table>
<p>若原文術語本身重要，寫成「多步驟成功率盲點（multi-step success-rate blind spot）」比硬塞半段英文更穩。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
          <th>修法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>為了短，刪掉最後名詞頭</td>
          <td>reader 不知道概念類型</td>
          <td>補「盲點 / 偏誤 / 風險」等類型</td>
      </tr>
      <tr>
          <td>中英混在同一個未完成片語</td>
          <td>中英文都無法提供完整語意</td>
          <td>中文完整名詞 + 英文括號</td>
      </tr>
      <tr>
          <td>表格欄位用口語縮寫</td>
          <td>離開上下文後不可讀</td>
          <td>欄位名稱完整化</td>
      </tr>
      <tr>
          <td>用流行詞取代分類詞</td>
          <td>看起來有風格，實際無法判斷下一步</td>
          <td>改成可操作分類</td>
      </tr>
      <tr>
          <td>每處各自補完不同名詞頭</td>
          <td>同一概念變成多個術語</td>
          <td>選 canonical 名詞頭後全篇統一</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact</a></td>
          <td>壓縮術語是命名問題；第一版為了快常少 head noun，第二輪要從 reader 與 grep 角度重命名。</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing 的 multi-pass review</a></td>
          <td>這是輪 4 grep-ability / 命名的子檢查；術語能否獨立搜尋與引用，要另跑一眼。</td>
      </tr>
      <tr>
          <td><a href="../terminology-keeps-original-anchor/">#107 術語翻譯要保留原文錨點</a></td>
          <td>原文錨點解決概念來源，head noun 解決中文句內可讀性；兩者要一起做。</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>短詞通常比較好寫，但不一定對齊讀者理解；完整名詞頭是用字數換認知穩定。</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>reviewer 問「這個 X 是什麼」</td>
          <td>補 head noun，讓術語自己回答概念類型</td>
      </tr>
      <tr>
          <td>術語最後一字是形容詞或單字</td>
          <td>檢查是否缺「點 / 區 / 型 / 法 / 策略」等名詞</td>
      </tr>
      <tr>
          <td>表格第一欄看起來像句子殘片</td>
          <td>改成完整分類名詞</td>
      </tr>
      <tr>
          <td>同一概念被補成多種詞尾</td>
          <td>選 canonical head noun，全篇替換</td>
      </tr>
      <tr>
          <td>中英混用後仍不能搜尋</td>
          <td>改成中文完整術語 + 英文完整原詞</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：壓縮是最後一步，不是第一步。術語先要完整、可分類、可搜尋，再決定能不能縮短。少了 head noun 的短詞不是精煉，是把補完成本丟給 reader。</p>
]]></content:encoded></item><item><title>術語翻譯要保留概念角色</title><link>https://tarrragon.github.io/blog/report/translation-must-preserve-concept-role/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/translation-must-preserve-concept-role/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>術語翻譯要保留概念角色：先判斷原詞在段落中承擔的是「論證方法」「檢查動作」「偏誤名稱」還是「流程階段」，再選中文名詞頭。中文譯名如果改變了概念類型，即使句子仍然順口，也會讓 reader 用錯誤方式理解後續操作。&lt;/p>
&lt;p>這次 &lt;code>Steelman&lt;/code> 被翻成「最強版本測試」就是這類問題。這個譯名抓到 WRAP checklist 裡的使用情境，卻把概念角色從「重建對方最強論點」壓成「通過一個測試」。較穩的寫法是「最強版本論證（Steelman）」：中文保留論證角色，英文保留可回溯來源。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼概念角色會被翻掉">為什麼概念角色會被翻掉&lt;/h2>
&lt;p>翻譯容易把術語放到當下文件的局部用途裡命名。當術語出現在 checklist、流程表或標題中，譯者會自然把它翻成「測試」「檢查」「步驟」；但原詞可能是一種論證姿態或推理方法，被壓成了測試動作。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>層次&lt;/th>
 &lt;th>「最強版本測試」的問題&lt;/th>
 &lt;th>「最強版本論證」保留的角色&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>概念類型&lt;/td>
 &lt;td>把 &lt;code>Steelman&lt;/code> 壓成 checklist 動作&lt;/td>
 &lt;td>保留「建構最強反方論點」的方法角色&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>動詞搭配&lt;/td>
 &lt;td>讀者會問「怎樣算測試通過」&lt;/td>
 &lt;td>讀者會問「有沒有公平重建反方論點」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>來源對位&lt;/td>
 &lt;td>不利於對照 steelmanning 社群用法&lt;/td>
 &lt;td>可回到 &lt;code>Steelman&lt;/code> / &lt;code>steelmanning&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>後續推論&lt;/td>
 &lt;td>容易只做形式檢查&lt;/td>
 &lt;td>會回到理解反方與降低確認偏誤&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;code>Steelman&lt;/code> 的核心不是「測出是否正確」，而是「把反方論點講到比原支持者更完整」。&lt;a href="https://www.lesswrong.com/w/steelmanning">LessWrong 的 steelmanning 條目&lt;/a>與 &lt;a href="https://en.wiktionary.org/wiki/steelman">Wiktionary 的 steelman 定義&lt;/a>都把它放在論證與辯論脈絡，而不是一般測試脈絡。中文若只寫「測試」，會把 reader 的注意力移到通過條件，而不是反方論證的重建品質。&lt;/p>
&lt;hr>
&lt;h2 id="casesteelman-為什麼不宜翻成最強版本測試">Case：Steelman 為什麼不宜翻成最強版本測試&lt;/h2>
&lt;p>&lt;code>Steelman&lt;/code> 常被中文社群譯成「鋼人論證」或「鋼鐵人論證」，也常直接保留英文。這些譯名各有成本：「鋼鐵人」容易被聯想到角色 IP，「鋼人」對未接觸者不直觀；但它們至少保留了「論證」這個角色。若改成「最強版本測試」，中文更直覺，卻把概念從論證方法改成檢核動作。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>譯法&lt;/th>
 &lt;th>優點&lt;/th>
 &lt;th>風險&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>鋼人論證（Steelman）&lt;/td>
 &lt;td>貼近 steelman 對偶&lt;/td>
 &lt;td>中文不夠直觀&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>鋼鐵人論證（Steelman）&lt;/td>
 &lt;td>常見、容易記&lt;/td>
 &lt;td>可能引入 Iron Man 聯想&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>最強版本論證（Steelman）&lt;/td>
 &lt;td>直接說出操作與角色&lt;/td>
 &lt;td>不是最常見固定譯名&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>最強版本測試（Steelman）&lt;/td>
 &lt;td>適合 checklist 語境&lt;/td>
 &lt;td>把論證方法誤壓成測試&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>建構對方論點的最強版本&lt;/td>
 &lt;td>最清楚&lt;/td>
 &lt;td>太長，不適合作為表格欄位&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>因此在 WRAP 文章中，canonical 用語採「最強版本論證（Steelman）」。第一次出現可補一句定義：「本文指先把被放棄選項或反方立場重建成最有力版本，再檢查自己的選擇是否仍站得住腳。」後續 checklist 可以寫「最強版本論證是否完成」，而不是把術語本身改成「測試」。&lt;/p>
&lt;hr>
&lt;h2 id="檢查流程">檢查流程&lt;/h2>
&lt;p>術語翻譯的概念角色檢查，要放在「句內邏輯」之後、「surface 同步」之前。先確認中文沒有多出原文沒有的前提，再確認中文名詞頭沒有把概念換類。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>檢查&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;th>失效訊號&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>來源角色&lt;/td>
 &lt;td>原詞在來源語境中是方法、偏誤、測試還是階段？&lt;/td>
 &lt;td>中文名詞頭跟來源類型不同&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>本文角色&lt;/td>
 &lt;td>這個詞在本文用來命名概念，還是命名局部操作？&lt;/td>
 &lt;td>因為放在 checklist，就翻成「測試」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者追問&lt;/td>
 &lt;td>reader 看到中文會追問哪件事？&lt;/td>
 &lt;td>追問通過條件，而不是追問論證品質&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>動詞搭配&lt;/td>
 &lt;td>中文能承接本文要求的動作嗎？&lt;/td>
 &lt;td>「做測試」可行，但「重建論點」消失&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Surface 面&lt;/td>
 &lt;td>title、heading、表格欄位是否傳播同一概念角色？&lt;/td>
 &lt;td>正文改對，checklist 仍保留舊角色&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>最低修法是：中文名詞頭要對應概念角色，英文括號要保留來源錨點。若中文沒有穩定固定譯名，採解釋型中文也可以，但不能把方法翻成測試、把偏誤翻成狀態、把流程階段翻成工具。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原則&lt;/th>
 &lt;th>關係&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="../terminology-keeps-original-anchor/">#107 術語翻譯要保留原文錨點&lt;/a>&lt;/td>
 &lt;td>原文錨點讓 reviewer 能回到來源；本卡補「中文名詞頭要保留來源裡的概念角色」。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../compressed-chinese-terms-need-head-noun/">#108 中文壓縮術語要保留完整名詞頭&lt;/a>&lt;/td>
 &lt;td>#108 處理名詞頭缺失；本卡處理名詞頭存在但類型錯誤，例如把「論證」改成「測試」。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact&lt;/a>&lt;/td>
 &lt;td>術語中文名是命名成果；第一版常被局部語境拉偏，需要在第二輪用來源角色與本文角色重新校準。&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍&lt;/a>&lt;/td>
 &lt;td>術語角色錯誤常殘留在 heading、checklist、index entry；surface review 要同步掃概念角色。&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>該做的事&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>術語出現在 checklist 就被翻成測試&lt;/td>
 &lt;td>回來源確認它是否本來就是 test&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>reviewer 問「這是測什麼」&lt;/td>
 &lt;td>檢查中文名詞頭是否把方法誤改成檢核動作&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>中文譯名比原文多一個操作類型&lt;/td>
 &lt;td>問這個操作類型是否來自原文，而非本文版面&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>同一術語在標題與表格中用不同名詞頭&lt;/td>
 &lt;td>選 canonical 角色，全篇同步&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>常見譯名不直觀，解釋型譯名較清楚&lt;/td>
 &lt;td>保留英文括號，中文用「說明角色」而非硬直譯&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心&lt;/strong>：翻譯術語時，中文要讓 reader 知道「這個概念是哪一類東西」。概念角色一旦翻錯，後續 checklist 再完整，也是在檢查錯的東西。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>術語翻譯要保留概念角色：先判斷原詞在段落中承擔的是「論證方法」「檢查動作」「偏誤名稱」還是「流程階段」，再選中文名詞頭。中文譯名如果改變了概念類型，即使句子仍然順口，也會讓 reader 用錯誤方式理解後續操作。</p>
<p>這次 <code>Steelman</code> 被翻成「最強版本測試」就是這類問題。這個譯名抓到 WRAP checklist 裡的使用情境，卻把概念角色從「重建對方最強論點」壓成「通過一個測試」。較穩的寫法是「最強版本論證（Steelman）」：中文保留論證角色，英文保留可回溯來源。</p>
<hr>
<h2 id="為什麼概念角色會被翻掉">為什麼概念角色會被翻掉</h2>
<p>翻譯容易把術語放到當下文件的局部用途裡命名。當術語出現在 checklist、流程表或標題中，譯者會自然把它翻成「測試」「檢查」「步驟」；但原詞可能是一種論證姿態或推理方法，被壓成了測試動作。</p>
<table>
  <thead>
      <tr>
          <th>層次</th>
          <th>「最強版本測試」的問題</th>
          <th>「最強版本論證」保留的角色</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>概念類型</td>
          <td>把 <code>Steelman</code> 壓成 checklist 動作</td>
          <td>保留「建構最強反方論點」的方法角色</td>
      </tr>
      <tr>
          <td>動詞搭配</td>
          <td>讀者會問「怎樣算測試通過」</td>
          <td>讀者會問「有沒有公平重建反方論點」</td>
      </tr>
      <tr>
          <td>來源對位</td>
          <td>不利於對照 steelmanning 社群用法</td>
          <td>可回到 <code>Steelman</code> / <code>steelmanning</code></td>
      </tr>
      <tr>
          <td>後續推論</td>
          <td>容易只做形式檢查</td>
          <td>會回到理解反方與降低確認偏誤</td>
      </tr>
  </tbody>
</table>
<p><code>Steelman</code> 的核心不是「測出是否正確」，而是「把反方論點講到比原支持者更完整」。<a href="https://www.lesswrong.com/w/steelmanning">LessWrong 的 steelmanning 條目</a>與 <a href="https://en.wiktionary.org/wiki/steelman">Wiktionary 的 steelman 定義</a>都把它放在論證與辯論脈絡，而不是一般測試脈絡。中文若只寫「測試」，會把 reader 的注意力移到通過條件，而不是反方論證的重建品質。</p>
<hr>
<h2 id="casesteelman-為什麼不宜翻成最強版本測試">Case：Steelman 為什麼不宜翻成最強版本測試</h2>
<p><code>Steelman</code> 常被中文社群譯成「鋼人論證」或「鋼鐵人論證」，也常直接保留英文。這些譯名各有成本：「鋼鐵人」容易被聯想到角色 IP，「鋼人」對未接觸者不直觀；但它們至少保留了「論證」這個角色。若改成「最強版本測試」，中文更直覺，卻把概念從論證方法改成檢核動作。</p>
<table>
  <thead>
      <tr>
          <th>譯法</th>
          <th>優點</th>
          <th>風險</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>鋼人論證（Steelman）</td>
          <td>貼近 steelman 對偶</td>
          <td>中文不夠直觀</td>
      </tr>
      <tr>
          <td>鋼鐵人論證（Steelman）</td>
          <td>常見、容易記</td>
          <td>可能引入 Iron Man 聯想</td>
      </tr>
      <tr>
          <td>最強版本論證（Steelman）</td>
          <td>直接說出操作與角色</td>
          <td>不是最常見固定譯名</td>
      </tr>
      <tr>
          <td>最強版本測試（Steelman）</td>
          <td>適合 checklist 語境</td>
          <td>把論證方法誤壓成測試</td>
      </tr>
      <tr>
          <td>建構對方論點的最強版本</td>
          <td>最清楚</td>
          <td>太長，不適合作為表格欄位</td>
      </tr>
  </tbody>
</table>
<p>因此在 WRAP 文章中，canonical 用語採「最強版本論證（Steelman）」。第一次出現可補一句定義：「本文指先把被放棄選項或反方立場重建成最有力版本，再檢查自己的選擇是否仍站得住腳。」後續 checklist 可以寫「最強版本論證是否完成」，而不是把術語本身改成「測試」。</p>
<hr>
<h2 id="檢查流程">檢查流程</h2>
<p>術語翻譯的概念角色檢查，要放在「句內邏輯」之後、「surface 同步」之前。先確認中文沒有多出原文沒有的前提，再確認中文名詞頭沒有把概念換類。</p>
<table>
  <thead>
      <tr>
          <th>檢查</th>
          <th>問題</th>
          <th>失效訊號</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>來源角色</td>
          <td>原詞在來源語境中是方法、偏誤、測試還是階段？</td>
          <td>中文名詞頭跟來源類型不同</td>
      </tr>
      <tr>
          <td>本文角色</td>
          <td>這個詞在本文用來命名概念，還是命名局部操作？</td>
          <td>因為放在 checklist，就翻成「測試」</td>
      </tr>
      <tr>
          <td>讀者追問</td>
          <td>reader 看到中文會追問哪件事？</td>
          <td>追問通過條件，而不是追問論證品質</td>
      </tr>
      <tr>
          <td>動詞搭配</td>
          <td>中文能承接本文要求的動作嗎？</td>
          <td>「做測試」可行，但「重建論點」消失</td>
      </tr>
      <tr>
          <td>Surface 面</td>
          <td>title、heading、表格欄位是否傳播同一概念角色？</td>
          <td>正文改對，checklist 仍保留舊角色</td>
      </tr>
  </tbody>
</table>
<p>最低修法是：中文名詞頭要對應概念角色，英文括號要保留來源錨點。若中文沒有穩定固定譯名，採解釋型中文也可以，但不能把方法翻成測試、把偏誤翻成狀態、把流程階段翻成工具。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../terminology-keeps-original-anchor/">#107 術語翻譯要保留原文錨點</a></td>
          <td>原文錨點讓 reviewer 能回到來源；本卡補「中文名詞頭要保留來源裡的概念角色」。</td>
      </tr>
      <tr>
          <td><a href="../compressed-chinese-terms-need-head-noun/">#108 中文壓縮術語要保留完整名詞頭</a></td>
          <td>#108 處理名詞頭缺失；本卡處理名詞頭存在但類型錯誤，例如把「論證」改成「測試」。</td>
      </tr>
      <tr>
          <td><a href="../naming-as-iterated-artifact/">#84 Naming 是 iterated artifact</a></td>
          <td>術語中文名是命名成果；第一版常被局部語境拉偏，需要在第二輪用來源角色與本文角色重新校準。</td>
      </tr>
      <tr>
          <td><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍</a></td>
          <td>術語角色錯誤常殘留在 heading、checklist、index entry；surface review 要同步掃概念角色。</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>術語出現在 checklist 就被翻成測試</td>
          <td>回來源確認它是否本來就是 test</td>
      </tr>
      <tr>
          <td>reviewer 問「這是測什麼」</td>
          <td>檢查中文名詞頭是否把方法誤改成檢核動作</td>
      </tr>
      <tr>
          <td>中文譯名比原文多一個操作類型</td>
          <td>問這個操作類型是否來自原文，而非本文版面</td>
      </tr>
      <tr>
          <td>同一術語在標題與表格中用不同名詞頭</td>
          <td>選 canonical 角色，全篇同步</td>
      </tr>
      <tr>
          <td>常見譯名不直觀，解釋型譯名較清楚</td>
          <td>保留英文括號，中文用「說明角色」而非硬直譯</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：翻譯術語時，中文要讓 reader 知道「這個概念是哪一類東西」。概念角色一旦翻錯，後續 checklist 再完整，也是在檢查錯的東西。</p>
]]></content:encoded></item><item><title>案例引用深度跟著 case 類型走</title><link>https://tarrragon.github.io/blog/report/case-type-graded-citation-depth/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/case-type-graded-citation-depth/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>案例引用深度是寫作層的紀律工具：把 case 分成 skeleton / medium / rich 三類、各類對應不同承接句型、讓引用斷言能反向 trace 回 case 原文。誤判類型會引發 over-extrapolation（編造 case 沒寫的細節）或 under-citation（漏掉 case 揭露的 mechanism）、reviewer 抓出後修正成本高。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Case 類型&lt;/th>
 &lt;th>行數&lt;/th>
 &lt;th>內容密度&lt;/th>
 &lt;th>承接句型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Skeleton case&lt;/td>
 &lt;td>10-30 行&lt;/td>
 &lt;td>只給方向、無具體數字 / taxonomy&lt;/td>
 &lt;td>「揭露 X 方向、以下基於通用工程知識補充」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Medium case&lt;/td>
 &lt;td>30-50 行&lt;/td>
 &lt;td>結構化 mechanism + 訊號名稱、無具體數字&lt;/td>
 &lt;td>「揭露 N 個機制 — A、B、C、D」用 mechanism 名稱精準引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Rich case&lt;/td>
 &lt;td>50-200 行&lt;/td>
 &lt;td>含具體數字（RPS / 延遲 / TPS）、設計細節&lt;/td>
 &lt;td>「揭露 X 觀察 + 作者判讀 Y（明示分層）」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>跨類型混合引用要分層處理 — 同段內若引兩類 case、先寫 rich case fact 作為支撐、再用 skeleton case 補方向、不混合成單一斷言。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>LLM 從 case 反推內容時、訓練資料的「通用知識」會自動補進章節。當 case 沒寫的 mechanism / 數字 / taxonomy 被寫成「對應 [case]：揭露 X」斷言、讀者回查 case 時會發現章節說的「揭露」實際是 LLM 編造。&lt;/p>
&lt;p>backend/01-07 七模組驗證（&lt;a href="../../posts/case-first-agent-team-review-workflow/">case-first workflow&lt;/a> 的 case fidelity reviewer 抓的數據）：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>模組&lt;/th>
 &lt;th>主要 case 類型&lt;/th>
 &lt;th>Case fidelity&lt;/th>
 &lt;th>主要失分類型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>backend/02 cache&lt;/td>
 &lt;td>Skeleton&lt;/td>
 &lt;td>78%&lt;/td>
 &lt;td>三層 cache latency 編造、ops/sec 編造&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/03 msgq&lt;/td>
 &lt;td>Skeleton&lt;/td>
 &lt;td>70%（最低）&lt;/td>
 &lt;td>三方向擴寫成「4 個誤配場景」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/04 obs&lt;/td>
 &lt;td>Skeleton&lt;/td>
 &lt;td>92.9%（最高）&lt;/td>
 &lt;td>嚴守「揭露方向、通用補充」紀律&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/05 deploy&lt;/td>
 &lt;td>Skeleton + Rich&lt;/td>
 &lt;td>80%&lt;/td>
 &lt;td>Rich case 判讀層被當 fact 引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/06 reliability&lt;/td>
 &lt;td>Medium 全套&lt;/td>
 &lt;td>88%&lt;/td>
 &lt;td>Medium case 實作層擴寫過頭&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>backend/07 batch 1&lt;/td>
 &lt;td>Medium + Skeleton&lt;/td>
 &lt;td>81%&lt;/td>
 &lt;td>跨 case 合成 frame 升級成 case 揭露&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>最高的 92.9% 跟最低的 70% 差 23 個百分點 — 關鍵變數是引用紀律、案例品質本身只佔次要因素。Skeleton case 嚴守「揭露方向」、不擴寫成 rich case 樣式、就能達到 90%+。&lt;/p>
&lt;hr>
&lt;h2 id="三類-case-的判讀條件">三類 case 的判讀條件&lt;/h2>
&lt;h3 id="skeleton-case揭露-x-方向通用補充">Skeleton case：「揭露 X 方向、通用補充」&lt;/h3>
&lt;p>典型：模組內部 N.Cx 案例庫中只有 frame、無具體數字的短篇 case。內容深度 10-30 行、給「議題」「視角」、不給「實作細節」。&lt;/p>
&lt;p>承接紀律：&lt;/p>
&lt;ul>
&lt;li>引用為「揭露 X 方向」、不引用為「揭露 N 個具體場景數量」&lt;/li>
&lt;li>後面補「以下展開基於通用工程知識補充」明示分層&lt;/li>
&lt;li>不為了「整齊的 4 個攻擊面」「3 個攻擊向量」這種數字感、把 case 沒寫的 taxonomy 寫成 case 揭露&lt;/li>
&lt;/ul>
&lt;p>例：Meta Cache Consistency case 只給「promotion、shard move、故障恢復」三個方向 → 引用為「揭露三個方向」、不引用為「揭露具體 inconsistency window 數字」。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>案例引用深度是寫作層的紀律工具：把 case 分成 skeleton / medium / rich 三類、各類對應不同承接句型、讓引用斷言能反向 trace 回 case 原文。誤判類型會引發 over-extrapolation（編造 case 沒寫的細節）或 under-citation（漏掉 case 揭露的 mechanism）、reviewer 抓出後修正成本高。</p>
<table>
  <thead>
      <tr>
          <th>Case 類型</th>
          <th>行數</th>
          <th>內容密度</th>
          <th>承接句型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Skeleton case</td>
          <td>10-30 行</td>
          <td>只給方向、無具體數字 / taxonomy</td>
          <td>「揭露 X 方向、以下基於通用工程知識補充」</td>
      </tr>
      <tr>
          <td>Medium case</td>
          <td>30-50 行</td>
          <td>結構化 mechanism + 訊號名稱、無具體數字</td>
          <td>「揭露 N 個機制 — A、B、C、D」用 mechanism 名稱精準引用</td>
      </tr>
      <tr>
          <td>Rich case</td>
          <td>50-200 行</td>
          <td>含具體數字（RPS / 延遲 / TPS）、設計細節</td>
          <td>「揭露 X 觀察 + 作者判讀 Y（明示分層）」</td>
      </tr>
  </tbody>
</table>
<p>跨類型混合引用要分層處理 — 同段內若引兩類 case、先寫 rich case fact 作為支撐、再用 skeleton case 補方向、不混合成單一斷言。</p>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>LLM 從 case 反推內容時、訓練資料的「通用知識」會自動補進章節。當 case 沒寫的 mechanism / 數字 / taxonomy 被寫成「對應 [case]：揭露 X」斷言、讀者回查 case 時會發現章節說的「揭露」實際是 LLM 編造。</p>
<p>backend/01-07 七模組驗證（<a href="../../posts/case-first-agent-team-review-workflow/">case-first workflow</a> 的 case fidelity reviewer 抓的數據）：</p>
<table>
  <thead>
      <tr>
          <th>模組</th>
          <th>主要 case 類型</th>
          <th>Case fidelity</th>
          <th>主要失分類型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>backend/02 cache</td>
          <td>Skeleton</td>
          <td>78%</td>
          <td>三層 cache latency 編造、ops/sec 編造</td>
      </tr>
      <tr>
          <td>backend/03 msgq</td>
          <td>Skeleton</td>
          <td>70%（最低）</td>
          <td>三方向擴寫成「4 個誤配場景」</td>
      </tr>
      <tr>
          <td>backend/04 obs</td>
          <td>Skeleton</td>
          <td>92.9%（最高）</td>
          <td>嚴守「揭露方向、通用補充」紀律</td>
      </tr>
      <tr>
          <td>backend/05 deploy</td>
          <td>Skeleton + Rich</td>
          <td>80%</td>
          <td>Rich case 判讀層被當 fact 引用</td>
      </tr>
      <tr>
          <td>backend/06 reliability</td>
          <td>Medium 全套</td>
          <td>88%</td>
          <td>Medium case 實作層擴寫過頭</td>
      </tr>
      <tr>
          <td>backend/07 batch 1</td>
          <td>Medium + Skeleton</td>
          <td>81%</td>
          <td>跨 case 合成 frame 升級成 case 揭露</td>
      </tr>
  </tbody>
</table>
<p>最高的 92.9% 跟最低的 70% 差 23 個百分點 — 關鍵變數是引用紀律、案例品質本身只佔次要因素。Skeleton case 嚴守「揭露方向」、不擴寫成 rich case 樣式、就能達到 90%+。</p>
<hr>
<h2 id="三類-case-的判讀條件">三類 case 的判讀條件</h2>
<h3 id="skeleton-case揭露-x-方向通用補充">Skeleton case：「揭露 X 方向、通用補充」</h3>
<p>典型：模組內部 N.Cx 案例庫中只有 frame、無具體數字的短篇 case。內容深度 10-30 行、給「議題」「視角」、不給「實作細節」。</p>
<p>承接紀律：</p>
<ul>
<li>引用為「揭露 X 方向」、不引用為「揭露 N 個具體場景數量」</li>
<li>後面補「以下展開基於通用工程知識補充」明示分層</li>
<li>不為了「整齊的 4 個攻擊面」「3 個攻擊向量」這種數字感、把 case 沒寫的 taxonomy 寫成 case 揭露</li>
</ul>
<p>例：Meta Cache Consistency case 只給「promotion、shard move、故障恢復」三個方向 → 引用為「揭露三個方向」、不引用為「揭露具體 inconsistency window 數字」。</p>
<h3 id="medium-case揭露-n-個機制--abc">Medium case：「揭露 N 個機制 — A、B、C」</h3>
<p>典型：模組內部 case 庫中、含結構化「決策機制」+「可觀測訊號」表、但無具體數字的中篇 case。內容深度 30-50 行、含 mechanism 名稱 + 訊號名稱、但不給 RPS / 延遲數字。</p>
<p>承接紀律：</p>
<ul>
<li>用 case 直接列出的 <em>mechanism 名稱</em> 精準引用、比 skeleton 精準、比 rich 保守</li>
<li>不擴寫到 case 沒提的具體實作層（會踩「實作層擴寫過頭」失分）</li>
<li>「決策機制」段通常是 fact 層、「常見陷阱」段可能含作者判讀層、引用時也要分層</li>
</ul>
<p>例：Amazon Shuffle Sharding case 揭露 cell boundary / shuffle sharding / static stability / constant work 四機制 → 引用四機制名稱、但不擴寫到「具體 shard 數量」「具體 cell 大小」等 case 沒提的細節。</p>
<h3 id="rich-case揭露具體-x-數字--設計">Rich case：「揭露具體 X 數字 / 設計」</h3>
<p>典型：跨模組 case 庫中含具體數字、設計細節、遷移路徑的長篇 case。內容深度 50-200 行、含具體 fact + 引用源。</p>
<p>承接紀律：</p>
<ul>
<li>可直接引用為事實、case 揭露的具體數字（RPS、延遲、TPS、stale window）可放進章節</li>
<li>但 rich case 內常含「觀察層」（具體 fact）跟「判讀層」（作者推論）、引用時要分層（見 <a href="../fact-vs-derive-citation-layering/">#116 fact-vs-derive 分層引用</a>）</li>
<li>引用判讀層時用「揭露 X 觀察 + 作者判讀 Y」明示分層、避免把推論寫成 fact</li>
</ul>
<p>例：Amazon Ads case「90M RPS + 5M writes/sec + 99.999%」 → 可直接寫進 KV 章節作為 reference。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Skeleton case 引用寫成「揭露 4 個具體場景」</td>
          <td>編造 case 沒寫的 taxonomy、reviewer B 抓 critical</td>
      </tr>
      <tr>
          <td>Skeleton case 引用補具體數字（從通用知識補進去）</td>
          <td>「Tubi 三層 cache L1 &lt; 1ms / L2 &lt; 10ms / L3 10-100ms」這類編造數字</td>
      </tr>
      <tr>
          <td>Medium case 引用擴寫到 case 沒提的實作細節</td>
          <td>「具體 shard 數量」「具體 partition key 數量」這類 over-extrapolation</td>
      </tr>
      <tr>
          <td>Rich case 引用合併觀察 + 判讀層</td>
          <td>「揭露 35ms latency 反推 region 部署」（35ms 是觀察、reasoning 是判讀）</td>
      </tr>
      <tr>
          <td>引用時不標 case 類型、寫稿時憑感覺承接深度</td>
          <td>跨章累積失分、reviewer 抓出後修正成本高</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="stage-1-抽-findings-時的判讀步驟">Stage 1 抽 findings 時的判讀步驟</h2>
<p>寫教學內容前、stage 1 audit case 庫時要 <em>標明 case 類型</em>：</p>
<ol>
<li>看 case 行數 + 內容密度、初判類型</li>
<li>看是否有具體數字 / 設計細節、確認 Rich case</li>
<li>看是否只給方向 / 議題、確認 Skeleton case</li>
<li>介於中間時、傾向保守判讀為 Skeleton（避免過度承接）</li>
<li>把類型寫進 findings 列表、stage 2 寫作時依類型決定承接深度</li>
</ol>
<p>跨類型混合引用：</p>
<ul>
<li>同一段內若引兩類 case、先寫 rich case fact 作為支撐、再用 skeleton case 補方向</li>
<li>不要把 skeleton case 的方向跟 rich case 的數字混合成單一斷言</li>
<li>跨類型引用時 disclaimer 要明示哪段屬通用、哪段屬 case fact</li>
</ul>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 Fact vs Derive 分層引用</a></td>
          <td>case 內部 fact / derive 分層 — 本卡看 case 整體類型、#116 看 case 內部結構</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨 case 合成 frame 必須標明</a></td>
          <td>第三類失分 — 章節抽象 frame 不能升級成 case 揭露</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Citation 三大 surface 中的 standard surface — 本卡跟 #116/#117 是 case citation surface、三者並列為 citation 紀律的不同 surface</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>case fidelity 是輪 5（反例 / 邊界）+ stakes 軸（輪 E.5 citation）的具體實作</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern 在 case 引用 surface 的展現 — 便利的引用句型（補通用知識、不分層）跟 case fidelity 反向</td>
      </tr>
      <tr>
          <td><a href="../single-source-of-truth/">#44 Single Source of Truth</a></td>
          <td>同骨 pattern 在不同 surface 的展現 — #44 處理 engineering value 的住址、本卡處理 narrative attribution 的住址</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>寫到「揭露 N 個」時不確定 N 是不是 case 真的列了</td>
          <td>回 case 原文 grep、不確定就降級為「揭露 X 方向」</td>
      </tr>
      <tr>
          <td>Skeleton case 引用突然出現具體數字（從 LLM 記憶湧現）</td>
          <td>數字幾乎一定是編造、立即刪掉或標 disclaimer</td>
      </tr>
      <tr>
          <td>Rich case 引用句含「才是 / 必須 / 一定 / 關鍵是」</td>
          <td>通常是把作者判讀升級成 fact、退回 case 原文找條件性表述</td>
      </tr>
      <tr>
          <td>同段引用兩類 case 但語氣一致</td>
          <td>分層遺失、重寫成「rich case 補 fact + skeleton case 補方向」</td>
      </tr>
      <tr>
          <td>Findings 列表沒標 case 類型</td>
          <td>Stage 1 紀律失效、回 case 補類型再寫</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：誤判 case 類型 = 引用深度錯位 = case fidelity 失分。Stage 1 抽 findings 時花 30 秒判類型、能省 stage 4 修正 5-10 分鐘 / 案例。</p>
]]></content:encoded></item><item><title>引用案例要分觀察層 / 判讀層、強化詞是錯位訊號</title><link>https://tarrragon.github.io/blog/report/fact-vs-derive-citation-layering/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/fact-vs-derive-citation-layering/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Fact vs Derive 分層是 rich case 引用的內部紀律：case 內容分成觀察層（具體事實）跟判讀層（作者推論）兩層、章節引用時要各自標明來源、避免把作者判讀升級為 case fact。具體分層：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>層別&lt;/th>
 &lt;th>來源&lt;/th>
 &lt;th>引用紀律&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>觀察層（Fact）&lt;/td>
 &lt;td>case 直接寫的具體事實、數字、設計細節&lt;/td>
 &lt;td>直接引用為事實、可放章節作為支撐&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>判讀層（Derive）&lt;/td>
 &lt;td>case 作者的推論段、「我們判讀」「這意味著」「關鍵是」「核心是」「才是」等詞引出&lt;/td>
 &lt;td>用「作者判讀」「（case 中 X 屬作者推論層、本章引用此推論）」明示分層&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩層在章節引用時要分層標明 — 一旦把判讀升級為 fact、章節就失去 case 支撐、讀者回查 case 時會發現章節說的「揭露」實際是作者推論。&lt;/p>
&lt;hr>
&lt;h2 id="跟case-類型決定引用深度的差別">跟「Case 類型決定引用深度」的差別&lt;/h2>
&lt;p>&lt;a href="../case-type-graded-citation-depth/">#115 case 類型決定引用深度&lt;/a> 看 case 整體類型（skeleton / medium / rich）、決定承接深度。本卡看 case 內部結構（觀察 vs 判讀）、決定引用時要不要分層。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>#115 case 類型決定引用深度&lt;/th>
 &lt;th>#116 fact vs derive 分層（本卡）&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>看什麼&lt;/td>
 &lt;td>case 整體（行數 + 內容密度）&lt;/td>
 &lt;td>case 內部結構（觀察段 vs 判讀段）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>主要風險&lt;/td>
 &lt;td>Skeleton 擴寫成 rich case（編造數字）&lt;/td>
 &lt;td>Rich case 內判讀層被當 fact 引用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>應用範圍&lt;/td>
 &lt;td>所有 case 引用都要先判類型&lt;/td>
 &lt;td>主要適用 rich case + medium case 的判讀段&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>對應的失分類型&lt;/td>
 &lt;td>over-extrapolation（編造）&lt;/td>
 &lt;td>fact-derive 錯位（強化詞 / 漏條件）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩者互補：&lt;/p>
&lt;ul>
&lt;li>Skeleton case：主要是前者風險（擴寫成 fact）&lt;/li>
&lt;li>Rich case：兩個風險都要防（先判類型、再分層引用）&lt;/li>
&lt;li>Medium case：前者風險低（mechanism 名稱明確）、後者風險中（「常見陷阱」段可能含判讀）&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>LLM 寫作引用 rich case 時、容易把兩層壓縮成「揭露 X」、把作者判讀升級為 case fact。讀者回查 case 時會發現章節說的「fact」實際是作者判讀、章節的論述失去 case 支撐。&lt;/p>
&lt;p>backend/05 deployment 模組驗證、case fidelity reviewer 抓出 4 個 high issue 都屬此類：&lt;/p>
&lt;h3 id="實證-1riot-games-35ms-延遲">實證 1：Riot Games 35ms 延遲&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Case 觀察段&lt;/strong>：「35ms 是競技遊戲（VALORANT、League）的可接受上限」&lt;/li>
&lt;li>&lt;strong>Case 判讀段&lt;/strong>：「從這個門檻反推：玩家所在 region 不能跨洲、需要區域 cluster」&lt;/li>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「揭露 35ms latency 反推 region 部署」← 合併兩層、把判讀寫成揭露&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「揭露 35ms 延遲門檻 + Local Zones / Outposts 區域部署、可推得『延遲門檻反推 region 部署數量』」← 分層標明&lt;/li>
&lt;/ul>
&lt;h3 id="實證-2gcp-k8s-130k-scale">實證 2：GCP K8s 130K scale&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Case 觀察段&lt;/strong>：「control plane 極限取決於 storage backend」+「GCP 用 Spanner 替換 etcd」（兩個分開的點）&lt;/li>
&lt;li>&lt;strong>Case 判讀段&lt;/strong>：「把 storage 從瓶頸變成『showed no signs of not being able to support higher scales』」&lt;/li>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「揭露 Spanner 替 etcd 才是 K8s 規模極限的關鍵」← 把判讀升級成硬性結論、強化詞「才是」是訊號&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「揭露 control plane vs data plane 容量規劃要分開、storage backend（GCP 用 Spanner 替代 etcd）是 K8s 規模極限的核心瓶頸層」← 保留條件性表述&lt;/li>
&lt;/ul>
&lt;h3 id="實證-3riot-games-漏歷史轉折">實證 3：Riot Games 漏歷史轉折&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>Case 觀察段&lt;/strong>：「關鍵架構決策：從 multi-tenant cluster 模型改成 single-tenant per game」&lt;/li>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「揭露 single-tenant per game 的多 cluster 策略」← 漏掉轉折、只保留終態&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「揭露架構決策從 multi-tenant cluster 改成 single-tenant per game」← 保留 case 揭露的關鍵歷史&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="引用句型對照">引用句型對照&lt;/h2>
&lt;h3 id="skeleton-case-引用">Skeleton case 引用&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">對應 [X.CN case-title]：揭露 X / Y / Z 三個方向（case 直接列出）；
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">以下展開基於通用工程知識補充。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="rich-case-引用單層純觀察">Rich case 引用（單層、純觀察）&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">對應 [X.CN case-title]：揭露 X 具體數字 / 設計（case 觀察層）。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="rich-case-引用含作者判讀">Rich case 引用（含作者判讀）&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">對應 [X.CN case-title]：揭露 X 觀察 + 作者判讀 Y（case 中 Y 屬判讀層、
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">本章引用此推論）。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="rich-case-引用避免硬性結論">Rich case 引用（避免硬性結論）&lt;/h3>
&lt;p>避免使用「才是 / 必須 / 一定 / 關鍵是」這類強化詞、保留 case 原文的條件性表述（「取決於」「核心瓶頸」「主要驅動」）。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Fact vs Derive 分層是 rich case 引用的內部紀律：case 內容分成觀察層（具體事實）跟判讀層（作者推論）兩層、章節引用時要各自標明來源、避免把作者判讀升級為 case fact。具體分層：</p>
<table>
  <thead>
      <tr>
          <th>層別</th>
          <th>來源</th>
          <th>引用紀律</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>觀察層（Fact）</td>
          <td>case 直接寫的具體事實、數字、設計細節</td>
          <td>直接引用為事實、可放章節作為支撐</td>
      </tr>
      <tr>
          <td>判讀層（Derive）</td>
          <td>case 作者的推論段、「我們判讀」「這意味著」「關鍵是」「核心是」「才是」等詞引出</td>
          <td>用「作者判讀」「（case 中 X 屬作者推論層、本章引用此推論）」明示分層</td>
      </tr>
  </tbody>
</table>
<p>兩層在章節引用時要分層標明 — 一旦把判讀升級為 fact、章節就失去 case 支撐、讀者回查 case 時會發現章節說的「揭露」實際是作者推論。</p>
<hr>
<h2 id="跟case-類型決定引用深度的差別">跟「Case 類型決定引用深度」的差別</h2>
<p><a href="../case-type-graded-citation-depth/">#115 case 類型決定引用深度</a> 看 case 整體類型（skeleton / medium / rich）、決定承接深度。本卡看 case 內部結構（觀察 vs 判讀）、決定引用時要不要分層。</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>#115 case 類型決定引用深度</th>
          <th>#116 fact vs derive 分層（本卡）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>看什麼</td>
          <td>case 整體（行數 + 內容密度）</td>
          <td>case 內部結構（觀察段 vs 判讀段）</td>
      </tr>
      <tr>
          <td>主要風險</td>
          <td>Skeleton 擴寫成 rich case（編造數字）</td>
          <td>Rich case 內判讀層被當 fact 引用</td>
      </tr>
      <tr>
          <td>應用範圍</td>
          <td>所有 case 引用都要先判類型</td>
          <td>主要適用 rich case + medium case 的判讀段</td>
      </tr>
      <tr>
          <td>對應的失分類型</td>
          <td>over-extrapolation（編造）</td>
          <td>fact-derive 錯位（強化詞 / 漏條件）</td>
      </tr>
  </tbody>
</table>
<p>兩者互補：</p>
<ul>
<li>Skeleton case：主要是前者風險（擴寫成 fact）</li>
<li>Rich case：兩個風險都要防（先判類型、再分層引用）</li>
<li>Medium case：前者風險低（mechanism 名稱明確）、後者風險中（「常見陷阱」段可能含判讀）</li>
</ul>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>LLM 寫作引用 rich case 時、容易把兩層壓縮成「揭露 X」、把作者判讀升級為 case fact。讀者回查 case 時會發現章節說的「fact」實際是作者判讀、章節的論述失去 case 支撐。</p>
<p>backend/05 deployment 模組驗證、case fidelity reviewer 抓出 4 個 high issue 都屬此類：</p>
<h3 id="實證-1riot-games-35ms-延遲">實證 1：Riot Games 35ms 延遲</h3>
<ul>
<li><strong>Case 觀察段</strong>：「35ms 是競技遊戲（VALORANT、League）的可接受上限」</li>
<li><strong>Case 判讀段</strong>：「從這個門檻反推：玩家所在 region 不能跨洲、需要區域 cluster」</li>
<li><strong>章節（錯）</strong>：「揭露 35ms latency 反推 region 部署」← 合併兩層、把判讀寫成揭露</li>
<li><strong>章節（對）</strong>：「揭露 35ms 延遲門檻 + Local Zones / Outposts 區域部署、可推得『延遲門檻反推 region 部署數量』」← 分層標明</li>
</ul>
<h3 id="實證-2gcp-k8s-130k-scale">實證 2：GCP K8s 130K scale</h3>
<ul>
<li><strong>Case 觀察段</strong>：「control plane 極限取決於 storage backend」+「GCP 用 Spanner 替換 etcd」（兩個分開的點）</li>
<li><strong>Case 判讀段</strong>：「把 storage 從瓶頸變成『showed no signs of not being able to support higher scales』」</li>
<li><strong>章節（錯）</strong>：「揭露 Spanner 替 etcd 才是 K8s 規模極限的關鍵」← 把判讀升級成硬性結論、強化詞「才是」是訊號</li>
<li><strong>章節（對）</strong>：「揭露 control plane vs data plane 容量規劃要分開、storage backend（GCP 用 Spanner 替代 etcd）是 K8s 規模極限的核心瓶頸層」← 保留條件性表述</li>
</ul>
<h3 id="實證-3riot-games-漏歷史轉折">實證 3：Riot Games 漏歷史轉折</h3>
<ul>
<li><strong>Case 觀察段</strong>：「關鍵架構決策：從 multi-tenant cluster 模型改成 single-tenant per game」</li>
<li><strong>章節（錯）</strong>：「揭露 single-tenant per game 的多 cluster 策略」← 漏掉轉折、只保留終態</li>
<li><strong>章節（對）</strong>：「揭露架構決策從 multi-tenant cluster 改成 single-tenant per game」← 保留 case 揭露的關鍵歷史</li>
</ul>
<hr>
<h2 id="引用句型對照">引用句型對照</h2>
<h3 id="skeleton-case-引用">Skeleton case 引用</h3>





<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">對應 [X.CN case-title]：揭露 X / Y / Z 三個方向（case 直接列出）；
</span></span><span class="line"><span class="ln">2</span><span class="cl">以下展開基於通用工程知識補充。</span></span></code></pre></div><h3 id="rich-case-引用單層純觀察">Rich case 引用（單層、純觀察）</h3>





<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">對應 [X.CN case-title]：揭露 X 具體數字 / 設計（case 觀察層）。</span></span></code></pre></div><h3 id="rich-case-引用含作者判讀">Rich case 引用（含作者判讀）</h3>





<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">對應 [X.CN case-title]：揭露 X 觀察 + 作者判讀 Y（case 中 Y 屬判讀層、
</span></span><span class="line"><span class="ln">2</span><span class="cl">本章引用此推論）。</span></span></code></pre></div><h3 id="rich-case-引用避免硬性結論">Rich case 引用（避免硬性結論）</h3>
<p>避免使用「才是 / 必須 / 一定 / 關鍵是」這類強化詞、保留 case 原文的條件性表述（「取決於」「核心瓶頸」「主要驅動」）。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用句含「才是 / 必須 / 一定 / 關鍵是 / 唯一」這類絕對詞</td>
          <td>通常是把作者判讀升級成 fact</td>
      </tr>
      <tr>
          <td>跨越兩段 case 內容（觀察 + 判讀）寫成單一斷言</td>
          <td>應分層、否則 reviewer B 抓 high issue</td>
      </tr>
      <tr>
          <td>引用後直接展開細節、沒給「以下基於通用工程知識補充」承接</td>
          <td>容易把通用知識掛到 case 名下</td>
      </tr>
      <tr>
          <td>漏掉 case 揭露的歷史轉折、只保留終態</td>
          <td>把 case 的「決策轉折」教訓抹平、讀者失去歷史 context</td>
      </tr>
      <tr>
          <td>Stage 1 抽 findings 不標來源層（觀察 / 判讀）</td>
          <td>Stage 2 寫作時無 mark、必踩 fact-derive 錯位</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="stage-1-抽-findings-的標明格式">Stage 1 抽 findings 的標明格式</h2>
<p>抽 findings 時、rich case 的 finding 要標明來源層：</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">Finding: 線性擴展是 OLTP 設計最高目標、coordinator 是傳統 OLTP 的擴展瓶頸
</span></span><span class="line"><span class="ln">2</span><span class="cl">來源: 9.C10 Spanner 案例
</span></span><span class="line"><span class="ln">3</span><span class="cl">- 觀察層：「2 nodes → 45K reads/sec, 4 nodes → 90K reads/sec」段（case fact）
</span></span><span class="line"><span class="ln">4</span><span class="cl">- 判讀層：作者「線性擴展是最高目標」是推論（case 中標為判讀）
</span></span><span class="line"><span class="ln">5</span><span class="cl">章節: 1.11 全球分散式 OLTP
</span></span><span class="line"><span class="ln">6</span><span class="cl">引用方式: 觀察層直接引用、判讀層用「作者判讀」明示</span></span></code></pre></div><p>Stage 2 寫作時依照 finding 列表的層別標記決定引用句型。</p>
<hr>
<h2 id="自掃描提示">自掃描提示</h2>
<p>寫作完後、檢查每處 rich case 引用是否：</p>
<ol>
<li>用了「才是 / 必須 / 一定 / 關鍵是 / 唯一」等強化詞 → 通常是把判讀升級成 fact</li>
<li>跨越兩段 case 內容（觀察 + 判讀）卻寫成單一斷言 → 應分層</li>
<li>引用後直接展開細節、沒給「以下基於通用工程知識補充」承接 → 容易把通用知識掛到 case 名下</li>
<li>漏掉 case 揭露的歷史轉折 / 條件 / 邊界 → 重讀 case「決策段」補回</li>
</ol>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>互補 — #115 看 case 整體類型、本卡看 case 內部結構</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨 case 合成 frame 必須標明</a></td>
          <td>第三類失分 — 章節 derive 升級成 case 揭露（07 新發現）</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Citation 三大 surface 中的 standard surface — 本卡是 case citation surface、兩者並列為 citation 紀律的不同 surface（standard / internal-link / case）</td>
      </tr>
      <tr>
          <td><a href="../colloquial-rhetoric-erodes-technical-precision/">#111 口語化修辭稀釋技術精度</a></td>
          <td>強化詞屬「結局描述代替契約描述」、跟本卡的判讀層升級為 fact 同類</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>高 stakes 內容輪 E.5 citation 精確度檢查包含本卡紀律</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 便利的引用句型（壓縮兩層成「揭露 X」、補強化詞）跟 case fidelity 紀律反向</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用句含強化詞（才是 / 必須 / 一定）</td>
          <td>回 case 原文確認是 fact 還是 derive、derive 要降級或標明</td>
      </tr>
      <tr>
          <td>找不到 case 原文的對應段</td>
          <td>引用是 LLM 推論、不是 case 揭露、退回「揭露 X 方向」</td>
      </tr>
      <tr>
          <td>Rich case 引用沒分層、整段平鋪</td>
          <td>用「揭露 X 觀察 + 作者判讀 Y」重寫</td>
      </tr>
      <tr>
          <td>章節 + 通用工程知識段沒明確分隔</td>
          <td>補「以下基於通用工程知識補充」承接</td>
      </tr>
      <tr>
          <td>Reviewer B 抓 high issue 集中在 rich case</td>
          <td>紀律失效、整章節重審所有 rich case 引用</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：Fact 跟 derive 的差別在「來源是 case 還是作者」、跟內容對錯無關。讀者回查 case 時、要能反向 trace 章節的每個斷言到 case 原文的對應段、找不到的就是錯位。</p>
]]></content:encoded></item><item><title>跨多個 case 合成的 frame 必須標為章節合成、非 case 原文</title><link>https://tarrragon.github.io/blog/report/cross-case-synthesized-frame-must-be-labeled/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/cross-case-synthesized-frame-must-be-labeled/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>跨 case 合成 frame 必須標為章節合成、非 case 原文揭露。這層紀律規範「章節把多個 case 的失效訊號抽象為更高層概念」時的引用語氣 — 抽象 frame 在 case 原文 grep 不到時、要 explicit 標「本章合成」、避免讀者把章節 derive 當 case fact。兩種寫法的差別：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>情境&lt;/th>
 &lt;th>引用紀律&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Case 原文段直接寫此 frame&lt;/td>
 &lt;td>「兩 case 共同標明 X」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>章節從多個 case 失效訊號抽象&lt;/td>
 &lt;td>「本章把兩者抽象為 X 是 YYY 視角的合成 frame、非 case 原文框架」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩種寫法的差別在 case fidelity 紀律 — 不只是修辭層的選擇 — reviewer B 對照原文時、會抓「揭露 X」斷言是否有 case 原文支撐。&lt;/p>
&lt;hr>
&lt;h2 id="跟既有-fact-vs-derive-分層的差別">跟既有 fact-vs-derive 分層的差別&lt;/h2>
&lt;p>&lt;a href="../fact-vs-derive-citation-layering/">#116 fact vs derive 分層&lt;/a> 處理 &lt;em>單一 case 內部&lt;/em> 的觀察層 vs 判讀層分層。本卡處理 &lt;em>跨多個 case&lt;/em> 抽象出更高層 frame 的失分類型 — 屬於 fact-derive 紀律的第三類風險：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>類型&lt;/th>
 &lt;th>風險&lt;/th>
 &lt;th>範例&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Skeleton 擴寫&lt;/td>
 &lt;td>case 沒提的細節（具體數字、taxonomy）被寫成 case 揭露&lt;/td>
 &lt;td>case 說「異常查詢偵測維度」、章節寫「query 體積 1MB → 10GB / 天」（編造）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Rich case fact-derive 混淆&lt;/td>
 &lt;td>case 有提、但屬作者判讀層的內容被寫成 case fact&lt;/td>
 &lt;td>case 把「35ms」放觀察、「反推 region 部署」放判讀；章節合併（升級判讀）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>跨 case 合成 frame&lt;/strong>（本卡）&lt;/td>
 &lt;td>case &lt;em>單獨&lt;/em> 寫的訊號被章節 &lt;em>跨 case 合成&lt;/em> 抽象為更高層 frame、frame 本身不在任一 case 原文&lt;/td>
 &lt;td>Uber 寫「告警串接不足」、Slack 寫「訊號未匯流」、章節合成「跨工具回查壓力」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>LLM 寫教學內容時容易把多個 case 的相似訊號抽象成 frame、讓段落結構更清楚。但 &lt;em>標明 frame 來源&lt;/em> 直接決定 case fidelity：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Case 真的揭露 frame&lt;/strong>：case 原文段直接寫此 frame、可寫「兩 case 共同標明 X」（屬合法 fact 引用）&lt;/li>
&lt;li>&lt;strong>章節從 case 失效訊號抽象&lt;/strong>：case 寫的是 &lt;em>單獨&lt;/em> 訊號、章節把多個訊號抽象成更高層 frame、要明示「本章合成、非 case 原文」&lt;/li>
&lt;/ul>
&lt;p>漏掉這層 disclaimer、讀者把章節 derive 當成 case fact、回查 case 時會找不到 frame、章節失去 case 支撐。&lt;/p>
&lt;hr>
&lt;h2 id="實證案例">實證案例&lt;/h2>
&lt;p>backend/07 batch 1 模組驗證、case fidelity reviewer 抓的 2 個 high issue 都屬此類：&lt;/p>
&lt;h3 id="實證-177-跨工具回查壓力">實證 1：7.7 跨工具回查壓力&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「對應 [Uber 2022] 跟 [Slack 2022]：兩個案例都揭露『身分事件後的跨工具回查壓力』」&lt;/li>
&lt;li>&lt;strong>Case 原文&lt;/strong>：Uber 失效控制面寫「身分異常事件與值班告警串接不足」、Slack 寫「程式碼資產存取異常訊號未快速匯流」— 都是 &lt;em>單工具內&lt;/em> 的訊號失效、「跨工具」這個 axis 是章節合成&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「兩個案例分別在身分監控層揭露同類失效訊號 — Uber 標明 X、Slack 標明 Y。本章把兩者抽象為『跨工具回查壓力』是稽核視角的合成 frame、非 case 原文框架。」&lt;/li>
&lt;/ul>
&lt;h3 id="實證-277-平台責任切分">實證 2：7.7 平台責任切分&lt;/h3>
&lt;ul>
&lt;li>&lt;strong>章節（錯）&lt;/strong>：「對應 [SolarWinds 2020]：揭露的『供應鏈事件中的平台責任切分』是稽核層的代表壓力場景」&lt;/li>
&lt;li>&lt;strong>Case 原文&lt;/strong>：失效控制面寫「更新來源信任過於單點」「行為監測難以區分合法元件」「供應鏈異常缺隔離流程」— 都是供應鏈信任議題、不是「平台 vs 產品的 audit 責任分離」&lt;/li>
&lt;li>&lt;strong>章節（對）&lt;/strong>：「案例的失效控制面標明 X / Y / Z。本章把這幾條失效面從供應鏈信任視角延伸到稽核視角、抽象為『平台 vs 產品的責任邊界判讀壓力』— 此 frame 為本章合成、非 case 原文。」&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="反例case-真的揭露-frame不需-disclaimer">反例：case 真的揭露 frame（不需 disclaimer）&lt;/h2>
&lt;p>跨 case 引用是否要標「本章合成」、取決於 frame 在 case 原文是否能 grep 找到。當 case 原文段直接寫此 frame、可直接引用：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>跨 case 合成 frame 必須標為章節合成、非 case 原文揭露。這層紀律規範「章節把多個 case 的失效訊號抽象為更高層概念」時的引用語氣 — 抽象 frame 在 case 原文 grep 不到時、要 explicit 標「本章合成」、避免讀者把章節 derive 當 case fact。兩種寫法的差別：</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>引用紀律</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Case 原文段直接寫此 frame</td>
          <td>「兩 case 共同標明 X」</td>
      </tr>
      <tr>
          <td>章節從多個 case 失效訊號抽象</td>
          <td>「本章把兩者抽象為 X 是 YYY 視角的合成 frame、非 case 原文框架」</td>
      </tr>
  </tbody>
</table>
<p>兩種寫法的差別在 case fidelity 紀律 — 不只是修辭層的選擇 — reviewer B 對照原文時、會抓「揭露 X」斷言是否有 case 原文支撐。</p>
<hr>
<h2 id="跟既有-fact-vs-derive-分層的差別">跟既有 fact-vs-derive 分層的差別</h2>
<p><a href="../fact-vs-derive-citation-layering/">#116 fact vs derive 分層</a> 處理 <em>單一 case 內部</em> 的觀察層 vs 判讀層分層。本卡處理 <em>跨多個 case</em> 抽象出更高層 frame 的失分類型 — 屬於 fact-derive 紀律的第三類風險：</p>
<table>
  <thead>
      <tr>
          <th>類型</th>
          <th>風險</th>
          <th>範例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Skeleton 擴寫</td>
          <td>case 沒提的細節（具體數字、taxonomy）被寫成 case 揭露</td>
          <td>case 說「異常查詢偵測維度」、章節寫「query 體積 1MB → 10GB / 天」（編造）</td>
      </tr>
      <tr>
          <td>Rich case fact-derive 混淆</td>
          <td>case 有提、但屬作者判讀層的內容被寫成 case fact</td>
          <td>case 把「35ms」放觀察、「反推 region 部署」放判讀；章節合併（升級判讀）</td>
      </tr>
      <tr>
          <td><strong>跨 case 合成 frame</strong>（本卡）</td>
          <td>case <em>單獨</em> 寫的訊號被章節 <em>跨 case 合成</em> 抽象為更高層 frame、frame 本身不在任一 case 原文</td>
          <td>Uber 寫「告警串接不足」、Slack 寫「訊號未匯流」、章節合成「跨工具回查壓力」</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>LLM 寫教學內容時容易把多個 case 的相似訊號抽象成 frame、讓段落結構更清楚。但 <em>標明 frame 來源</em> 直接決定 case fidelity：</p>
<ul>
<li><strong>Case 真的揭露 frame</strong>：case 原文段直接寫此 frame、可寫「兩 case 共同標明 X」（屬合法 fact 引用）</li>
<li><strong>章節從 case 失效訊號抽象</strong>：case 寫的是 <em>單獨</em> 訊號、章節把多個訊號抽象成更高層 frame、要明示「本章合成、非 case 原文」</li>
</ul>
<p>漏掉這層 disclaimer、讀者把章節 derive 當成 case fact、回查 case 時會找不到 frame、章節失去 case 支撐。</p>
<hr>
<h2 id="實證案例">實證案例</h2>
<p>backend/07 batch 1 模組驗證、case fidelity reviewer 抓的 2 個 high issue 都屬此類：</p>
<h3 id="實證-177-跨工具回查壓力">實證 1：7.7 跨工具回查壓力</h3>
<ul>
<li><strong>章節（錯）</strong>：「對應 [Uber 2022] 跟 [Slack 2022]：兩個案例都揭露『身分事件後的跨工具回查壓力』」</li>
<li><strong>Case 原文</strong>：Uber 失效控制面寫「身分異常事件與值班告警串接不足」、Slack 寫「程式碼資產存取異常訊號未快速匯流」— 都是 <em>單工具內</em> 的訊號失效、「跨工具」這個 axis 是章節合成</li>
<li><strong>章節（對）</strong>：「兩個案例分別在身分監控層揭露同類失效訊號 — Uber 標明 X、Slack 標明 Y。本章把兩者抽象為『跨工具回查壓力』是稽核視角的合成 frame、非 case 原文框架。」</li>
</ul>
<h3 id="實證-277-平台責任切分">實證 2：7.7 平台責任切分</h3>
<ul>
<li><strong>章節（錯）</strong>：「對應 [SolarWinds 2020]：揭露的『供應鏈事件中的平台責任切分』是稽核層的代表壓力場景」</li>
<li><strong>Case 原文</strong>：失效控制面寫「更新來源信任過於單點」「行為監測難以區分合法元件」「供應鏈異常缺隔離流程」— 都是供應鏈信任議題、不是「平台 vs 產品的 audit 責任分離」</li>
<li><strong>章節（對）</strong>：「案例的失效控制面標明 X / Y / Z。本章把這幾條失效面從供應鏈信任視角延伸到稽核視角、抽象為『平台 vs 產品的責任邊界判讀壓力』— 此 frame 為本章合成、非 case 原文。」</li>
</ul>
<hr>
<h2 id="反例case-真的揭露-frame不需-disclaimer">反例：case 真的揭露 frame（不需 disclaimer）</h2>
<p>跨 case 引用是否要標「本章合成」、取決於 frame 在 case 原文是否能 grep 找到。當 case 原文段直接寫此 frame、可直接引用：</p>
<h3 id="反例-1邊界設備三同步-mechanism">反例 1：邊界設備三同步 mechanism</h3>
<ul>
<li><strong>章節</strong>：「對應 [Citrix Bleed 2023] 跟 [PAN-OS 2024]：兩個案例的『mechanism 總綱』段共同標明這個三同步原則」</li>
<li><strong>Case 原文</strong>：兩個 case 文末「mechanism 總綱」段確實寫「邊界事件的核心是讓『漏洞修補』『會話 / 憑證失效』『異常痕跡清查』三件事同步發生」</li>
<li><strong>判讀</strong>：frame 在 case 原文、可引用「兩 case 共同標明」、不需 disclaimer</li>
</ul>
<p>差別判斷：</p>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該怎麼寫</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Frame 文字在 case 原文 grep 找得到</td>
          <td>「兩 case 共同標明 X」</td>
      </tr>
      <tr>
          <td>Frame 是章節從 case 失效訊號抽象出</td>
          <td>「本章把 X 抽象為 Y 是 Z 視角的合成 frame」</td>
      </tr>
      <tr>
          <td>部分 case 揭露 frame、部分章節抽象</td>
          <td>兩段拆開、各自標明</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="為什麼-llm-容易踩">為什麼 LLM 容易踩</h2>
<p>從 LLM 寫教學內容的視角看、跨 case 合成 frame 是「自然湧現」的模式：</p>
<ol>
<li>LLM 讀完多個 case 後、會自動抽象出共通 pattern（這是 LLM 的訓練優勢）</li>
<li>寫章節時、章節結構需要 frame 把多個 case 組織起來（教學結構需求）</li>
<li>合成 frame 寫成「兩 case 都揭露 X」最順、不寫 disclaimer 最省字數</li>
<li>結果是 <em>frame 本身不在 case 原文</em>、但章節寫得像 case 揭露</li>
</ol>
<p>LLM 沒辦法 self-detect 這個盲點 — 因為從 LLM 視角、「合成」跟「揭露」在語意上很接近、需要對照 case 原文才能分辨。</p>
<hr>
<h2 id="防範路徑">防範路徑</h2>
<h3 id="stage-2-寫作時主動防範">Stage 2 寫作時主動防範</h3>
<p>每寫一個跨 case 合成 frame、跑「frame 在 case 原文 grep 得到嗎」檢查：</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">rg <span class="s2">&#34;&lt;frame 文字&gt;&#34;</span> &lt;<span class="k">case</span> file&gt;</span></span></code></pre></div><p>抓不到 → 用「本章合成、非 case 原文」disclaimer
抓得到 → 直接引用「兩 case 共同標明」</p>
<h3 id="stage-3-reviewer-b-prompt-補強">Stage 3 reviewer B prompt 補強</h3>
<p>設計 reviewer B prompt 時、要明示「跨 case 合成 frame 必須標為本章合成、非 case 原文」是 high 級 issue 抓取項。沒明示時、reviewer B 容易把這類問題降級為 medium、累積失分。</p>
<p>prompt 應包含：</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">特別檢查：當引用句說「兩個 case 都揭露 X」時、確認 X 是 case 原文寫的、
</span></span><span class="line"><span class="ln">2</span><span class="cl">還是章節跨 case 合成的。後者要在引用句明示「本章合成 / 非 case 原文框架」。</span></span></code></pre></div><hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「兩個案例都揭露 X」但 X 在原文 grep 不到</td>
          <td>章節 derive 升級成 case fact、reviewer B 抓 high issue</td>
      </tr>
      <tr>
          <td>跨 case 引用沒 disclaimer、直接寫「揭露」</td>
          <td>讀者回查 case 找不到對應、章節失去支撐</td>
      </tr>
      <tr>
          <td>Case 失效訊號是單獨 mechanism、章節抽象成上位 frame 但寫得像 case 揭露</td>
          <td>把「合成」包裝成「揭露」、案例驅動寫作的紀律失效</td>
      </tr>
      <tr>
          <td>Stage 3 reviewer B prompt 沒明示此類為 high</td>
          <td>reviewer 容易降級為 medium、累積失分不被優先處理</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>上游卡 — 先判 case 類型、再判跨 case 合成 frame 是否成立</td>
      </tr>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 Fact vs Derive 分層引用</a></td>
          <td>同類紀律 — case 內部 fact-derive 分層的延伸、應用到跨 case 情境</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>輪 5（反例 / 邊界）跟輪 E.2（claim → evidence 推論鏈完整）的具體實作</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass frame 顆粒度盲點</a></td>
          <td>同類盲點 — 一個是同 reviewer 多輪 catch 同類錯、本卡是跨 case 合成的章節盲點</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 合成 frame 寫成「兩 case 都揭露 X」最順、不寫 disclaimer 最省字數、便利跟 fidelity 反向</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Citation 三大 surface 中的 standard surface — 本卡跟 #116 是 case citation surface、三者並列為 citation 紀律的不同 surface</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>引用句說「兩個 case 都揭露 X」</td>
          <td>grep case 原文、X 沒寫的話補「本章合成」disclaimer</td>
      </tr>
      <tr>
          <td>Frame 寫得很順但 case 原文沒這個詞</td>
          <td>章節 derive、改成「本章把 X 抽象為 Y」</td>
      </tr>
      <tr>
          <td>Reviewer B 抓 high issue 集中在「跨 case 引用」</td>
          <td>紀律失效、整章節重審跨 case 引用</td>
      </tr>
      <tr>
          <td>寫多 case 比較時想用「兩個都揭露 X」結構</td>
          <td>先 grep 確認、抓不到的話改用「兩個分別揭露 X1 / X2、本章合成 Y」</td>
      </tr>
      <tr>
          <td>Case 是 medium / rich 類型但「揭露 frame」是抽象詞</td>
          <td>通常是合成、不是 case 原文 frame</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：跨 case 合成 frame 本身是合法的寫作技巧、問題在 <em>不標明</em>。一句 disclaimer（「本章合成、非 case 原文」）就能把 fact-derive 紀律補回來、修法成本極低。</p>
]]></content:encoded></item><item><title>Standard-driven 取代 Case-driven 適用 standard framework 比 case 庫成熟的領域</title><link>https://tarrragon.github.io/blog/report/standard-driven-vs-case-driven-domain-judgment/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/standard-driven-vs-case-driven-domain-judgment/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Standard-driven 是 case-first 的替代策略、適用 standard framework 比 case 庫成熟的領域（如 LLM 安全）。判斷該用哪種策略看四維度：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>Case-driven 適用&lt;/th>
 &lt;th>Standard-driven 適用&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>議題穩定度&lt;/td>
 &lt;td>高（5+ 年穩定）&lt;/td>
 &lt;td>低（&amp;lt; 1 年快速演進）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Case 公開度&lt;/td>
 &lt;td>高（充分的事故公告）&lt;/td>
 &lt;td>中或低（vendor disclosure 偏 marketing）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Standard 成熟度&lt;/td>
 &lt;td>中（多用 case 而非 standard）&lt;/td>
 &lt;td>高（standard framework 已成型）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>維護半衰期&lt;/td>
 &lt;td>長&lt;/td>
 &lt;td>短（6 個月過時）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>典型對照&lt;/strong>：&lt;/p>
&lt;ul>
&lt;li>&lt;em>Case-driven 領域&lt;/em>：分散式系統 / 安全控制面 / 可靠性 / 訊息佇列（案例公開充分、半衰期 5+ 年）&lt;/li>
&lt;li>&lt;em>Standard-driven 領域&lt;/em>：LLM 安全（OWASP LLM Top 10 / MITRE ATLAS 已成型、案例 6 個月過時）、新興 compliance（NIST AI RMF）、cloud-native 標準（CNCF baseline）&lt;/li>
&lt;/ul>
&lt;p>Standard-driven 跟 case-driven 是平行的選項、依領域特性選用 — 兩者各自有適用情境、沒有退化 / 進階關係。誤套會導致 case 庫過早建構（standard-driven 領域）或章節停在教科書級（case-driven 領域）。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這個-axis-重要">為什麼這個 axis 重要&lt;/h2>
&lt;p>之前的 case-first workflow 預設「沒 case 庫的新主題、要先建 case 庫」— 這暗示缺 case 庫一定要先補。LLM 安全章節驗證了 &lt;em>第三條路&lt;/em>：&lt;/p>
&lt;p>當該領域的 &lt;em>標準框架&lt;/em>（如 OWASP LLM Top 10 2025 / NIST AI RMF 1.0 / MITRE ATLAS）已涵蓋 threat 分類、且 case 維護半衰期短於 standard、章節應 &lt;em>用 standard-driven 取代 case-driven&lt;/em>。&lt;/p>
&lt;p>誤套的代價：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>誤套 case-driven 到 standard-driven 領域&lt;/strong>：建 case 庫 8-12 小時、6 個月後 case 過時、變成維護負擔&lt;/li>
&lt;li>&lt;strong>誤套 standard-driven 到 case-driven 領域&lt;/strong>：章節停留在標準引用、漏掉真實事故才會浮現的議題、scope 盲點&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="standard-driven-章節的寫作策略">Standard-driven 章節的寫作策略&lt;/h2>
&lt;p>當判讀領域屬 standard-driven、章節採以下策略：&lt;/p>
&lt;h3 id="1-章節對齊-standard-framework-分類">1. 章節對齊 standard framework 分類&lt;/h3>
&lt;p>用 framework 章節 ID 標明（如 OWASP LLM01 / NIST AI-1.1）取代「對應 [case] —」斷言。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">本章的 threat scope 對應 OWASP LLM Top 10 LLM01（Prompt Injection）+
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">LLM02（Insecure Output Handling）、NIST AI RMF 1.0 MEASURE-2.7。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="2-加-last-reviewed-cadence">2. 加 Last reviewed cadence&lt;/h3>
&lt;p>每 quarter 重評估 standard 版本跟章節對應、寫進 frontmatter：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-yaml" data-lang="yaml">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">title&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;...&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">date&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2026-05-12&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">description&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;...&amp;#34;&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">tags&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="p">[&lt;/span>&lt;span class="s2">&amp;#34;backend&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;security&amp;#34;&lt;/span>&lt;span class="p">,&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="s2">&amp;#34;llm&amp;#34;&lt;/span>&lt;span class="p">]&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nn">---&lt;/span>&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">7&lt;/span>&lt;span class="cl">&lt;span class="w">
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">8&lt;/span>&lt;span class="cl">&lt;span class="w">&lt;/span>&lt;span class="nt">&amp;gt; Last reviewed&lt;/span>&lt;span class="p">:&lt;/span>&lt;span class="w"> &lt;/span>&lt;span class="ld">2026-05-12&lt;/span>&lt;span class="l">（對齊 OWASP LLM Top 10 2025）&lt;/span>&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="3案例觸發參考段標明公開案例累積中值得追蹤的方向">3.「案例觸發參考」段標明「公開案例累積中、值得追蹤的方向」&lt;/h3>
&lt;p>不寫「對應 [case] 揭露」斷言、避免引用源不穩定：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Standard-driven 是 case-first 的替代策略、適用 standard framework 比 case 庫成熟的領域（如 LLM 安全）。判斷該用哪種策略看四維度：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>Case-driven 適用</th>
          <th>Standard-driven 適用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>議題穩定度</td>
          <td>高（5+ 年穩定）</td>
          <td>低（&lt; 1 年快速演進）</td>
      </tr>
      <tr>
          <td>Case 公開度</td>
          <td>高（充分的事故公告）</td>
          <td>中或低（vendor disclosure 偏 marketing）</td>
      </tr>
      <tr>
          <td>Standard 成熟度</td>
          <td>中（多用 case 而非 standard）</td>
          <td>高（standard framework 已成型）</td>
      </tr>
      <tr>
          <td>維護半衰期</td>
          <td>長</td>
          <td>短（6 個月過時）</td>
      </tr>
  </tbody>
</table>
<p><strong>典型對照</strong>：</p>
<ul>
<li><em>Case-driven 領域</em>：分散式系統 / 安全控制面 / 可靠性 / 訊息佇列（案例公開充分、半衰期 5+ 年）</li>
<li><em>Standard-driven 領域</em>：LLM 安全（OWASP LLM Top 10 / MITRE ATLAS 已成型、案例 6 個月過時）、新興 compliance（NIST AI RMF）、cloud-native 標準（CNCF baseline）</li>
</ul>
<p>Standard-driven 跟 case-driven 是平行的選項、依領域特性選用 — 兩者各自有適用情境、沒有退化 / 進階關係。誤套會導致 case 庫過早建構（standard-driven 領域）或章節停在教科書級（case-driven 領域）。</p>
<hr>
<h2 id="為什麼這個-axis-重要">為什麼這個 axis 重要</h2>
<p>之前的 case-first workflow 預設「沒 case 庫的新主題、要先建 case 庫」— 這暗示缺 case 庫一定要先補。LLM 安全章節驗證了 <em>第三條路</em>：</p>
<p>當該領域的 <em>標準框架</em>（如 OWASP LLM Top 10 2025 / NIST AI RMF 1.0 / MITRE ATLAS）已涵蓋 threat 分類、且 case 維護半衰期短於 standard、章節應 <em>用 standard-driven 取代 case-driven</em>。</p>
<p>誤套的代價：</p>
<ul>
<li><strong>誤套 case-driven 到 standard-driven 領域</strong>：建 case 庫 8-12 小時、6 個月後 case 過時、變成維護負擔</li>
<li><strong>誤套 standard-driven 到 case-driven 領域</strong>：章節停留在標準引用、漏掉真實事故才會浮現的議題、scope 盲點</li>
</ul>
<hr>
<h2 id="standard-driven-章節的寫作策略">Standard-driven 章節的寫作策略</h2>
<p>當判讀領域屬 standard-driven、章節採以下策略：</p>
<h3 id="1-章節對齊-standard-framework-分類">1. 章節對齊 standard framework 分類</h3>
<p>用 framework 章節 ID 標明（如 OWASP LLM01 / NIST AI-1.1）取代「對應 [case] —」斷言。</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">本章的 threat scope 對應 OWASP LLM Top 10 LLM01（Prompt Injection）+
</span></span><span class="line"><span class="ln">2</span><span class="cl">LLM02（Insecure Output Handling）、NIST AI RMF 1.0 MEASURE-2.7。</span></span></code></pre></div><h3 id="2-加-last-reviewed-cadence">2. 加 Last reviewed cadence</h3>
<p>每 quarter 重評估 standard 版本跟章節對應、寫進 frontmatter：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-yaml" data-lang="yaml"><span class="line"><span class="ln">1</span><span class="cl"><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="w"></span><span class="nt">title</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;...&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="w"></span><span class="nt">date</span><span class="p">:</span><span class="w"> </span><span class="ld">2026-05-12</span><span class="w">
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="w"></span><span class="nt">description</span><span class="p">:</span><span class="w"> </span><span class="s2">&#34;...&#34;</span><span class="w">
</span></span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="w"></span><span class="nt">tags</span><span class="p">:</span><span class="w"> </span><span class="p">[</span><span class="s2">&#34;backend&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;security&#34;</span><span class="p">,</span><span class="w"> </span><span class="s2">&#34;llm&#34;</span><span class="p">]</span><span class="w">
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="w"></span><span class="nn">---</span><span class="w">
</span></span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="w">
</span></span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="w"></span><span class="nt">&gt; Last reviewed</span><span class="p">:</span><span class="w"> </span><span class="ld">2026-05-12</span><span class="l">（對齊 OWASP LLM Top 10 2025）</span></span></span></code></pre></div><h3 id="3案例觸發參考段標明公開案例累積中值得追蹤的方向">3.「案例觸發參考」段標明「公開案例累積中、值得追蹤的方向」</h3>
<p>不寫「對應 [case] 揭露」斷言、避免引用源不穩定：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="gu">## 案例觸發參考
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">LLM agent prompt injection 的公開案例累積中、值得追蹤的方向：
</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="k">-</span> email assistant 場景：閱讀含 injection 的郵件、誘導 agent 觸發外送或洩漏
</span></span><span class="line"><span class="ln"> 6</span><span class="cl"><span class="k">-</span> coding agent 場景：讀含 injection 的 PR / issue、誘導 agent 修改非預期檔案
</span></span><span class="line"><span class="ln"> 7</span><span class="cl"><span class="k">-</span> 跨 agent chain：injection 在 sub-agent 累積、影響 parent agent 決策
</span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="k">
</span></span></span><span class="line"><span class="ln"> 9</span><span class="cl"><span class="k">&gt; </span><span class="ge">**事實查核註**：LLM agent prompt injection 是 2024-2025 快速演進的研究領域、
</span></span></span><span class="line"><span class="ln">10</span><span class="cl"><span class="ge"></span><span class="k">&gt; </span><span class="ge">攻擊形態、防禦模式、公開案例都在累積中。建議引用前以 OWASP LLM Top 10、
</span></span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="ge"></span>&gt; 近期論文跟主流 vendor 的 incident 公告為準。</span></span></code></pre></div><h3 id="4-引用標準時用版本號">4. 引用標準時用版本號</h3>
<p>OWASP LLM Top 10 <strong>2025</strong> / NIST AI RMF <strong>1.0</strong> / MITRE ATLAS <strong>continuous</strong> — framework 改版要 trigger 章節重審。</p>
<p>引用源規範見 <a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a>。</p>
<hr>
<h2 id="何時要從-standard-driven-轉回-case-driven">何時要從 standard-driven 轉回 case-driven</h2>
<p>下列 tripwire 出現時、重新評估：</p>
<table>
  <thead>
      <tr>
          <th>Tripwire</th>
          <th>行動</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>該領域累積 5+ 個高可信度 case（vendor + academic + CVE 三來源交叉）</td>
          <td>補完整 case 庫、走 case-first workflow</td>
      </tr>
      <tr>
          <td>跨章 frame 重複出現、SSoT 衝突明顯</td>
          <td>case-driven mechanism 深化能解 SSoT 衝突</td>
      </tr>
      <tr>
          <td>出現「等級類似 SolarWinds」的 incident</td>
          <td>補單個 case、視為 high-impact reference</td>
      </tr>
      <tr>
          <td>讀者反饋章節太抽象、需要具體 case 才能理解 mechanism</td>
          <td>補 single high-impact case、不全建庫</td>
      </tr>
  </tbody>
</table>
<p>不滿足任一條件時、繼續走 standard-driven、不勉強建 case 庫。</p>
<hr>
<h2 id="07-llm-章節實證">07 LLM 章節實證</h2>
<p>backend/07 batch 2（LLM 安全 5 章）驗證 standard-driven 策略：</p>
<ul>
<li>章節 113-137 行、含完整 threat scope + 問題節點表 + 風險邊界</li>
<li>引用 OWASP LLM Top 10 + NIST AI RMF + MITRE ATLAS 取代個別 case 引用</li>
<li>加 <code>Last reviewed: 2026-05-12</code> cadence</li>
<li>「案例觸發參考」段寫「公開案例累積中、值得追蹤的方向」+「事實查核註」</li>
<li>完全不寫「對應 [case] —」斷言、不存在 case fidelity reviewer 該抓的準確性問題</li>
</ul>
<p>對照 backend/01-07 batch 1 的 case-driven 章節、LLM 章節是 <em>用不同方法達到同樣品質</em> — scope 涵蓋真實 production 議題（KV cache 跨租戶、shared prefix optimization、batch 推論順序敏感）、不停在教科書級內容。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>假設「沒 case 庫一定要先建」</td>
          <td>在 standard-driven 領域過早投入建 case 庫、6 個月後過時</td>
      </tr>
      <tr>
          <td>Standard-driven 章節沒加 Last reviewed cadence</td>
          <td>Standard 改版時章節未更新、引用變過時</td>
      </tr>
      <tr>
          <td>Standard-driven 章節寫「對應 [case] —」斷言</td>
          <td>引用源不穩定（vendor disclosure 偏 marketing）、case fidelity 風險高</td>
      </tr>
      <tr>
          <td>Case-driven 領域只用 framework 引用、不用案例</td>
          <td>漏掉真實事故議題、章節停在教科書級</td>
      </tr>
      <tr>
          <td>沒判讀領域類型、直接套 case-first workflow</td>
          <td>浪費 8-12 小時建 case 庫、得不到對應 ROI</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>Case-driven 適用時的 prerequisite — 先判 case 類型再決定承接深度</td>
      </tr>
      <tr>
          <td><a href="../routing-layer-chapter-recognition/">#119 章節已有 routing skeleton 走補強段</a></td>
          <td>本卡的下游 — 領域判為 case-driven 後、單章還要再判結構類型（routing layer / 空白 / 導讀）</td>
      </tr>
      <tr>
          <td><a href="../security-citation-currency-and-precision/">#104 security citation 時效精確</a></td>
          <td>Standard-driven 章節的 citation 紀律核心</td>
      </tr>
      <tr>
          <td><a href="../security-teaching-rigor-asymmetry/">#99 security teaching 嚴格度對應風險不對稱</a></td>
          <td>高 stakes 內容（含 LLM 安全）的審查標準</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>Standard-driven 章節跑輪 E（高 stakes）+ standard 版本對齊（輪 E.5）</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>想寫某領域章節、找不到合適 case 庫</td>
          <td>先判四維度、可能該走 standard-driven、不是先建 case 庫</td>
      </tr>
      <tr>
          <td>Case 引用 6 個月後發現過時、要重寫</td>
          <td>領域屬 standard-driven、改用 framework + Last reviewed cadence</td>
      </tr>
      <tr>
          <td>Standard framework 改版（OWASP 出新版）</td>
          <td>章節 Last reviewed 重審、補對應 framework ID</td>
      </tr>
      <tr>
          <td>該領域累積 5+ 個高可信度 case</td>
          <td>Tripwire 觸發、考慮從 standard-driven 轉回 case-driven</td>
      </tr>
      <tr>
          <td>Vendor disclosure 多偏 marketing、case fidelity 低</td>
          <td>該領域 case 可信度不足、走 standard-driven 更穩定</td>
      </tr>
      <tr>
          <td>想引用 case 但找不到 academic / CVE 三來源交叉</td>
          <td>Case 公開度不足、改用 standard framework</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：寫教學內容的策略要依領域性質選擇 — case-driven 適合議題穩定 + case 公開的領域、standard-driven 適合 framework 比 case 庫成熟的領域。沒有預設策略。</p>
]]></content:encoded></item><item><title>章節已有 routing skeleton 走補強段、不空白擴章</title><link>https://tarrragon.github.io/blog/report/routing-layer-chapter-recognition/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/routing-layer-chapter-recognition/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Routing layer 章節辨識是擴章策略選擇的前置紀律。章節分三類、各對應不同擴章策略：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>章節類型&lt;/th>
 &lt;th>訊號&lt;/th>
 &lt;th>擴章策略&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>空白章節&lt;/td>
 &lt;td>缺 threat scope / 問題節點表 / 風險邊界、structure 待建&lt;/td>
 &lt;td>走 case-driven 大幅擴章、建完整結構&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Routing layer 章節&lt;/td>
 &lt;td>已有 threat scope + 問題節點表 + 風險邊界 + 案例觸發段&lt;/td>
 &lt;td>走 &lt;em>補強段&lt;/em> 策略（在現有結構內補 mechanism 深化）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>導讀 / 標準引用章節&lt;/td>
 &lt;td>用 framework（OWASP / NIST）為主、案例為輔&lt;/td>
 &lt;td>走 standard-driven、加 Last reviewed cadence、不擴章&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>擴章策略要對應章節結構 — 在 routing layer 章節空白擴章會引發 frame 重複展開或章節失衡。誤判章節類型是 backend/07 batch 1 三個 H issue 的共同根因。&lt;/p>
&lt;hr>
&lt;h2 id="跟-standard-driven-領域判讀的差別">跟 standard-driven 領域判讀的差別&lt;/h2>
&lt;p>&lt;a href="../standard-driven-vs-case-driven-domain-judgment/">#118 standard-driven vs case-driven 領域判讀&lt;/a> 看 &lt;em>領域整體&lt;/em> 該用哪種策略。本卡看 &lt;em>單一章節&lt;/em> 的結構類型決定擴章策略。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>#118 領域判讀（領域級別）&lt;/th>
 &lt;th>#119 章節辨識（章節級別、本卡）&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>看什麼&lt;/td>
 &lt;td>領域整體性質（議題穩定度 / standard 成熟度）&lt;/td>
 &lt;td>單一章節的結構（routing layer / 空白 / 標準引用）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>影響範圍&lt;/td>
 &lt;td>整個模組的寫作策略&lt;/td>
 &lt;td>單章的擴章方式&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>互動關係&lt;/td>
 &lt;td>領域判讀為 standard-driven 時、所有章節走 standard-driven&lt;/td>
 &lt;td>領域判讀為 case-driven 時、章節仍可能是 routing layer（走補強段）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩者互補：&lt;/p>
&lt;ul>
&lt;li>領域 + 章節同 case-driven：走完整 case-first workflow（空白擴章）&lt;/li>
&lt;li>領域 case-driven + 章節 routing layer：走補強段（在現有結構內補深化）&lt;/li>
&lt;li>領域 standard-driven：所有章節用 standard 引用 + Last reviewed cadence&lt;/li>
&lt;/ul>
&lt;hr>
&lt;h2 id="為什麼章節結構決定擴章策略">為什麼章節結構決定擴章策略&lt;/h2>
&lt;p>case-first workflow 之前預設「章節空白、case 庫驅動擴章」— 但實務中常遇到 &lt;em>章節已有 routing layer skeleton&lt;/em> 的情境（如 backend/07 batch 1 紅隊核心安全 7 章）：&lt;/p>
&lt;ul>
&lt;li>章節已有 &lt;em>threat scope&lt;/em>（In-scope / Out-of-scope 路由）&lt;/li>
&lt;li>已有 &lt;em>問題節點表&lt;/em>（4-6 個問題節點 + 判讀訊號 + 風險後果 + 前置控制面）&lt;/li>
&lt;li>已有 &lt;em>風險邊界&lt;/em>（4-6 條升級條件）&lt;/li>
&lt;li>已有 &lt;em>案例觸發參考&lt;/em>（已 link 3-5 個 case）&lt;/li>
&lt;/ul>
&lt;p>這種章節屬 &lt;em>routing layer&lt;/em> 結構 — 完整 skeleton 已存在、case 引用段已 link 既有 case。空白擴章會：&lt;/p>
&lt;ul>
&lt;li>跟既有問題節點表結構衝突&lt;/li>
&lt;li>把章節擴成厚重 case-driven 章節、失衡 routing 性質&lt;/li>
&lt;li>引發 frame 重複展開（既有節點 + 新擴章節點都寫一遍）&lt;/li>
&lt;/ul>
&lt;p>正確策略：&lt;em>補強段&lt;/em> — 在現有結構內補 mechanism 深化段、不重建結構。&lt;/p>
&lt;hr>
&lt;h2 id="routing-layer-章節的判讀訊號">Routing layer 章節的判讀訊號&lt;/h2>
&lt;p>掃描章節時、看以下訊號判斷是否為 routing layer：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Routing layer 章節辨識是擴章策略選擇的前置紀律。章節分三類、各對應不同擴章策略：</p>
<table>
  <thead>
      <tr>
          <th>章節類型</th>
          <th>訊號</th>
          <th>擴章策略</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>空白章節</td>
          <td>缺 threat scope / 問題節點表 / 風險邊界、structure 待建</td>
          <td>走 case-driven 大幅擴章、建完整結構</td>
      </tr>
      <tr>
          <td>Routing layer 章節</td>
          <td>已有 threat scope + 問題節點表 + 風險邊界 + 案例觸發段</td>
          <td>走 <em>補強段</em> 策略（在現有結構內補 mechanism 深化）</td>
      </tr>
      <tr>
          <td>導讀 / 標準引用章節</td>
          <td>用 framework（OWASP / NIST）為主、案例為輔</td>
          <td>走 standard-driven、加 Last reviewed cadence、不擴章</td>
      </tr>
  </tbody>
</table>
<p>擴章策略要對應章節結構 — 在 routing layer 章節空白擴章會引發 frame 重複展開或章節失衡。誤判章節類型是 backend/07 batch 1 三個 H issue 的共同根因。</p>
<hr>
<h2 id="跟-standard-driven-領域判讀的差別">跟 standard-driven 領域判讀的差別</h2>
<p><a href="../standard-driven-vs-case-driven-domain-judgment/">#118 standard-driven vs case-driven 領域判讀</a> 看 <em>領域整體</em> 該用哪種策略。本卡看 <em>單一章節</em> 的結構類型決定擴章策略。</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>#118 領域判讀（領域級別）</th>
          <th>#119 章節辨識（章節級別、本卡）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>看什麼</td>
          <td>領域整體性質（議題穩定度 / standard 成熟度）</td>
          <td>單一章節的結構（routing layer / 空白 / 標準引用）</td>
      </tr>
      <tr>
          <td>影響範圍</td>
          <td>整個模組的寫作策略</td>
          <td>單章的擴章方式</td>
      </tr>
      <tr>
          <td>互動關係</td>
          <td>領域判讀為 standard-driven 時、所有章節走 standard-driven</td>
          <td>領域判讀為 case-driven 時、章節仍可能是 routing layer（走補強段）</td>
      </tr>
  </tbody>
</table>
<p>兩者互補：</p>
<ul>
<li>領域 + 章節同 case-driven：走完整 case-first workflow（空白擴章）</li>
<li>領域 case-driven + 章節 routing layer：走補強段（在現有結構內補深化）</li>
<li>領域 standard-driven：所有章節用 standard 引用 + Last reviewed cadence</li>
</ul>
<hr>
<h2 id="為什麼章節結構決定擴章策略">為什麼章節結構決定擴章策略</h2>
<p>case-first workflow 之前預設「章節空白、case 庫驅動擴章」— 但實務中常遇到 <em>章節已有 routing layer skeleton</em> 的情境（如 backend/07 batch 1 紅隊核心安全 7 章）：</p>
<ul>
<li>章節已有 <em>threat scope</em>（In-scope / Out-of-scope 路由）</li>
<li>已有 <em>問題節點表</em>（4-6 個問題節點 + 判讀訊號 + 風險後果 + 前置控制面）</li>
<li>已有 <em>風險邊界</em>（4-6 條升級條件）</li>
<li>已有 <em>案例觸發參考</em>（已 link 3-5 個 case）</li>
</ul>
<p>這種章節屬 <em>routing layer</em> 結構 — 完整 skeleton 已存在、case 引用段已 link 既有 case。空白擴章會：</p>
<ul>
<li>跟既有問題節點表結構衝突</li>
<li>把章節擴成厚重 case-driven 章節、失衡 routing 性質</li>
<li>引發 frame 重複展開（既有節點 + 新擴章節點都寫一遍）</li>
</ul>
<p>正確策略：<em>補強段</em> — 在現有結構內補 mechanism 深化段、不重建結構。</p>
<hr>
<h2 id="routing-layer-章節的判讀訊號">Routing layer 章節的判讀訊號</h2>
<p>掃描章節時、看以下訊號判斷是否為 routing layer：</p>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>屬 routing layer 章節</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>含「## 本章寫作邊界」段</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 本章 threat scope」段（In-scope / Out-of-scope）</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 從本章到實作」段（Mechanism + Delivery chain）</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 問題節點（案例觸發式）」表格</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 跨章議題交叉引用」段</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 常見風險邊界」段</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 案例觸發參考」段</td>
          <td>是</td>
      </tr>
      <tr>
          <td>含「## 下一步路由」段</td>
          <td>是</td>
      </tr>
      <tr>
          <td>章節行數 80-120 行（已有完整結構但不厚重）</td>
          <td>是</td>
      </tr>
  </tbody>
</table>
<p>含 4+ 個訊號 → 屬 routing layer 章節、走補強段策略。</p>
<hr>
<h2 id="補強段策略">補強段策略</h2>
<p>在 routing layer 章節內補 case-driven 深化段、遵守以下紀律：</p>
<h3 id="1-補強段位置">1. 補強段位置</h3>
<p>通常放在「問題節點表」後、「常見風險邊界」前：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gu">## 問題節點（案例觸發式）
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gu"></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="gu">## [新增補強段：對應某問題節點的 mechanism 深化]
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">7</span><span class="cl">[補強內容、case 引用三段式]
</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></code></pre></div><h3 id="2-補強段的範圍紀律">2. 補強段的範圍紀律</h3>
<ul>
<li>每個補強段對應 1-2 個既有問題節點、不擴新議題</li>
<li>不重建 threat scope / 問題節點表（保留 routing 性質）</li>
<li>補的 mechanism 深化要明示「本節聚焦 X 視角、canonical 在 Y 章」（避免 frame 重複）</li>
</ul>
<h3 id="3-cross-link-密度上升">3. Cross-link 密度上升</h3>
<p>補強段要明示「跟其他章節的視角分工」、否則 reviewer C 會抓 frame 重複展開：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gu">## 高權限工具的會話收斂節奏
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">身分被取得後、token 撤銷跟 session kill 的時間窗口直接決定攻擊者可觸及的
</span></span><span class="line"><span class="ln">4</span><span class="cl">資產面積、是初始落點橫向擴散的關鍵節流點。會話收斂節奏的 canonical 在
</span></span><span class="line"><span class="ln">5</span><span class="cl">[<span class="nt">7.5 § 會話重放跟全域失效</span>](<span class="na">../transport-trust-and-certificate-lifecycle/#會話重放跟全域失效canonical</span>)、
</span></span><span class="line"><span class="ln">6</span><span class="cl">本節從身分層補 token 撤銷窗口的 specific 訊號。
</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">對應 [Slack 2022 case]：...</span></span></code></pre></div><hr>
<h2 id="07-batch-1-實證">07 batch 1 實證</h2>
<p>backend/07 batch 1 七章節（identity-access / secrets / entrypoint / transport / credential-rotation / audit / workload-identity）走補強段策略：</p>
<ul>
<li>章節原本 80-100 行、補強後 100-140 行（+20-40 行 / 章）</li>
<li>每章補 2-3 個 mechanism 深化段、對應既有問題節點</li>
<li>三個 H issue（C-H1/H2/H3）都是 frame 重複展開、補強段紀律失效引起</li>
<li>修正後加 cross-link 明示「canonical 在 X 章、本節補 Y 視角」、frame 重複收斂</li>
</ul>
<p>對照 backend/06 reliability 模組（章節空白擴章）：</p>
<ul>
<li>章節原本 30-50 行、擴章後 80-90 行</li>
<li>每章建 mechanism + 訊號 + 反模式完整結構</li>
<li>沒有 routing skeleton 衝突問題</li>
</ul>
<p>兩種策略對應不同章節初始狀態、不互斥。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>在 routing layer 章節空白擴章、忽略既有問題節點表</td>
          <td>Frame 重複展開、章節失衡</td>
      </tr>
      <tr>
          <td>補強段沒明示「canonical 在 X 章、本節補 Y 視角」</td>
          <td>Reviewer C 抓 H issue、SSoT 不清</td>
      </tr>
      <tr>
          <td>補強段重建 threat scope / 問題節點表</td>
          <td>章節結構衝突、原 routing 性質被破壞</td>
      </tr>
      <tr>
          <td>沒先判章節類型、直接套 stage 2 寫作</td>
          <td>走錯策略、擴章失敗</td>
      </tr>
      <tr>
          <td>Routing layer 章節擴成厚重 case-driven 章節</td>
          <td>失衡 routing 性質、跨章導讀路徑斷掉</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../standard-driven-vs-case-driven-domain-judgment/">#118 Standard-driven vs Case-driven 領域判讀</a></td>
          <td>本卡的上游 — 先判讀領域為 case-driven、本卡才適用（standard-driven 領域走 standard 引用、不需章節結構判讀）</td>
      </tr>
      <tr>
          <td><a href="../single-source-of-truth/">#44 Single Source of Truth</a></td>
          <td>同骨 pattern 在不同 surface 的展現 — #44 處理 engineering value 的住址、本卡處理 narrative frame 的章節住址（補強段要明示「canonical 在 X 章」）</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>空白擴章比補強段便利、但便利會偏離意圖（routing 性質）</td>
      </tr>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>補強段內 case 引用紀律的 prerequisite</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>輪 2（對意圖）的具體實作 — 寫補強段時要對齊章節原有 routing 意圖</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>章節已有完整 threat scope / 問題節點表 / 風險邊界</td>
          <td>走補強段、不空白擴章</td>
      </tr>
      <tr>
          <td>章節 80-120 行、結構完整但內容不厚重</td>
          <td>Routing layer 章節、補強段策略</td>
      </tr>
      <tr>
          <td>章節 30-50 行、缺結構</td>
          <td>空白章節、走 case-driven 大幅擴章</td>
      </tr>
      <tr>
          <td>Reviewer C 抓 frame 重複展開 H issue</td>
          <td>補強段紀律失效、補「canonical 在 X 章」cross-link</td>
      </tr>
      <tr>
          <td>章節擴章後失衡 routing 性質</td>
          <td>退回原章節、補強段重寫、保留 routing layer 結構</td>
      </tr>
      <tr>
          <td>想在 routing layer 章節重建 threat scope</td>
          <td>紀律失效訊號、改用補強段策略</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：擴章策略對應章節結構 — 空白章節走 case-driven 擴章、routing layer 章節走補強段、導讀章節走 standard-driven。三類策略各自有適用情境、選錯會引發 frame 重複展開或章節失衡。</p>
]]></content:encoded></item><item><title>案例引用三段式段落結構：概念定義 → case 引用 → 通用展開</title><link>https://tarrragon.github.io/blog/report/case-citation-three-part-structure/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/case-citation-three-part-structure/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Case 引用段落要走三段式結構紀律 — 段首是概念定義句、case 引用退到第二位置、最後通用工程知識展開。讓段落結構反映「概念 → 案例 → 操作」的論證流、不是「案例 → 概念 → 操作」的反向流。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>段位&lt;/th>
 &lt;th>內容&lt;/th>
 &lt;th>反模式&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>段首&lt;/td>
 &lt;td>概念定義句：該概念是什麼、承擔什麼責任&lt;/td>
 &lt;td>「對應 [case] 揭露 X」段首取代核心概念&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>第二位置&lt;/td>
 &lt;td>Case 引用：「對應 [case]：揭露 N 個機制 — &amp;hellip;」&lt;/td>
 &lt;td>跨章 13+ 段同句構、case 引用變儀式&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>通用展開&lt;/td>
 &lt;td>「以下基於通用工程知識補充」+ 具體操作&lt;/td>
 &lt;td>通用知識直接掛在 case 名下、沒明示分層&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>違反三段式最常見的形式是「概念定義句缺位、case 引用直接當段首」— 讀者尚未理解概念就被丟入案例細節。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他-case-引用紀律的差別">跟其他 case 引用紀律的差別&lt;/h2>
&lt;p>本卡跟 #115 / #116 / #117 是 case 引用紀律的不同 axis、互相正交：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>卡&lt;/th>
 &lt;th>Axis&lt;/th>
 &lt;th>看什麼&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>#115 案例引用深度跟著 case 類型走&lt;/td>
 &lt;td>引用「深度」&lt;/td>
 &lt;td>Case 整體類型（skeleton / medium / rich）決定承接深度&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>#116 Fact vs Derive 分層引用&lt;/td>
 &lt;td>引用「分層」&lt;/td>
 &lt;td>Case 內部結構（觀察層 / 判讀層）決定要不要分層標明&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>#117 跨 case 合成 frame 必須標明&lt;/td>
 &lt;td>引用「合成」&lt;/td>
 &lt;td>跨多 case 抽象 frame 時要 explicit 標「本章合成」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>#120 案例引用三段式（本卡）&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>引用「結構」&lt;/strong>&lt;/td>
 &lt;td>&lt;strong>段落順序：概念 → case → 通用&lt;/strong>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>四 axis 組合起來覆蓋 case 引用的完整紀律。寫每段 case 引用時、四個 axis 都要過一遍。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這層紀律重要">為什麼這層紀律重要&lt;/h2>
&lt;p>backend/06 模組 reviewer 抓出 11/12 新段都犯「case 引用取代概念定義」的問題、屬最大宗 systemic 違規。原因：&lt;/p>
&lt;ol>
&lt;li>LLM 從 case 反推內容時、容易把 case 揭露當概念出發點&lt;/li>
&lt;li>Case 引用句構單一（「對應 [X]：揭露 N 個機制」）、跨章讀感同質&lt;/li>
&lt;li>概念定義被推到第二段、商業邏輯先於 case 的原則被推翻&lt;/li>
&lt;/ol>
&lt;p>三段式紀律的價值是把「概念」「案例」「展開」三層分離、讓讀者依層級理解。&lt;/p>
&lt;hr>
&lt;h2 id="三段式範例">三段式範例&lt;/h2>
&lt;h3 id="正確結構">正確結構&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">&lt;span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl">失效局部化是把單一依賴退化限制在最小可影響範圍的能力。把「依賴 budget」
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl">從統一全域帳本拆成 per-cell 可用度結構、是這層治理的核心責任。失效局部
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl">化要解四個子問題：擴散邊界、熱點重疊、控制面解耦、失敗模式工作量恆定。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl">對應 [&lt;span class="nt">A1 Amazon Shuffle Sharding 與 Cell 邊界&lt;/span>](&lt;span class="na">.../shuffle-sharding-and-cell-boundary/&lt;/span>)：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl">揭露四個機制對應上述四個子問題 — cell 邊界（擴散邊界）、shuffle sharding
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl">（熱點重疊）、static stability（控制面解耦）、constant work（失敗模式工作
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">量恆定）。這四個機制把恢復策略從「全域搶救」轉為「分批收斂」。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">12&lt;/span>&lt;span class="cl">以下基於通用工程知識補充的具體操作 ...&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;h3 id="錯誤結構">錯誤結構&lt;/h3>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">依賴 budget 的另一個面向是把失效影響限制在局部、不擴散到全域。多租戶
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">服務跟共享資源服務若沒有明確邊界，單一依賴退化會觸發整體退化。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">對應 [A1 Amazon Shuffle Sharding 與 Cell 邊界]：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">7&lt;/span>&lt;span class="cl">揭露四個機制 — cell 邊界、shuffle sharding、static stability、constant work。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>差異：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Case 引用段落要走三段式結構紀律 — 段首是概念定義句、case 引用退到第二位置、最後通用工程知識展開。讓段落結構反映「概念 → 案例 → 操作」的論證流、不是「案例 → 概念 → 操作」的反向流。</p>
<table>
  <thead>
      <tr>
          <th>段位</th>
          <th>內容</th>
          <th>反模式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首</td>
          <td>概念定義句：該概念是什麼、承擔什麼責任</td>
          <td>「對應 [case] 揭露 X」段首取代核心概念</td>
      </tr>
      <tr>
          <td>第二位置</td>
          <td>Case 引用：「對應 [case]：揭露 N 個機制 — &hellip;」</td>
          <td>跨章 13+ 段同句構、case 引用變儀式</td>
      </tr>
      <tr>
          <td>通用展開</td>
          <td>「以下基於通用工程知識補充」+ 具體操作</td>
          <td>通用知識直接掛在 case 名下、沒明示分層</td>
      </tr>
  </tbody>
</table>
<p>違反三段式最常見的形式是「概念定義句缺位、case 引用直接當段首」— 讀者尚未理解概念就被丟入案例細節。</p>
<hr>
<h2 id="跟其他-case-引用紀律的差別">跟其他 case 引用紀律的差別</h2>
<p>本卡跟 #115 / #116 / #117 是 case 引用紀律的不同 axis、互相正交：</p>
<table>
  <thead>
      <tr>
          <th>卡</th>
          <th>Axis</th>
          <th>看什麼</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>#115 案例引用深度跟著 case 類型走</td>
          <td>引用「深度」</td>
          <td>Case 整體類型（skeleton / medium / rich）決定承接深度</td>
      </tr>
      <tr>
          <td>#116 Fact vs Derive 分層引用</td>
          <td>引用「分層」</td>
          <td>Case 內部結構（觀察層 / 判讀層）決定要不要分層標明</td>
      </tr>
      <tr>
          <td>#117 跨 case 合成 frame 必須標明</td>
          <td>引用「合成」</td>
          <td>跨多 case 抽象 frame 時要 explicit 標「本章合成」</td>
      </tr>
      <tr>
          <td><strong>#120 案例引用三段式（本卡）</strong></td>
          <td><strong>引用「結構」</strong></td>
          <td><strong>段落順序：概念 → case → 通用</strong></td>
      </tr>
  </tbody>
</table>
<p>四 axis 組合起來覆蓋 case 引用的完整紀律。寫每段 case 引用時、四個 axis 都要過一遍。</p>
<hr>
<h2 id="為什麼這層紀律重要">為什麼這層紀律重要</h2>
<p>backend/06 模組 reviewer 抓出 11/12 新段都犯「case 引用取代概念定義」的問題、屬最大宗 systemic 違規。原因：</p>
<ol>
<li>LLM 從 case 反推內容時、容易把 case 揭露當概念出發點</li>
<li>Case 引用句構單一（「對應 [X]：揭露 N 個機制」）、跨章讀感同質</li>
<li>概念定義被推到第二段、商業邏輯先於 case 的原則被推翻</li>
</ol>
<p>三段式紀律的價值是把「概念」「案例」「展開」三層分離、讓讀者依層級理解。</p>
<hr>
<h2 id="三段式範例">三段式範例</h2>
<h3 id="正確結構">正確結構</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">失效局部化是把單一依賴退化限制在最小可影響範圍的能力。把「依賴 budget」
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">從統一全域帳本拆成 per-cell 可用度結構、是這層治理的核心責任。失效局部
</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 class="nt">A1 Amazon Shuffle Sharding 與 Cell 邊界</span>](<span class="na">.../shuffle-sharding-and-cell-boundary/</span>)：
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">揭露四個機制對應上述四個子問題 — cell 邊界（擴散邊界）、shuffle sharding
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">（熱點重疊）、static stability（控制面解耦）、constant work（失敗模式工作
</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><h3 id="錯誤結構">錯誤結構</h3>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gu">## 失效局部化：cell 邊界跟 shuffle sharding
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl">依賴 budget 的另一個面向是把失效影響限制在局部、不擴散到全域。多租戶
</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">對應 [A1 Amazon Shuffle Sharding 與 Cell 邊界]：
</span></span><span class="line"><span class="ln">7</span><span class="cl">揭露四個機制 — cell 邊界、shuffle sharding、static stability、constant work。</span></span></code></pre></div><p>差異：</p>
<ul>
<li><strong>正確</strong>：段首「失效局部化是&hellip;的能力」直接給概念定義、case 揭露的四機制對應到「四個子問題」、讀者懂概念才看到案例</li>
<li><strong>錯誤</strong>：段首用「另一個面向」鋪墊、case 直接列四機制、讀者尚未理解就被丟入案例細節</li>
</ul>
<hr>
<h2 id="案例引用句構分流07-模組強化">案例引用句構分流（07 模組強化）</h2>
<p>即使遵守三段式紀律、跨章 case 引用句構仍會同質化。07 batch 1 驗證 13 處 case 引用 11 處用同一句構「揭露 N 層失效控制面 — A、B、C」、讀者跨章連讀時把 case 引用當儀式而非論證。</p>
<p>分流原則：句構跟著 case 類型走、用 case 自身結構決定引用方式：</p>
<table>
  <thead>
      <tr>
          <th>Case 結構</th>
          <th>適用句構</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Case 直接列 N 個 mechanism</td>
          <td>「揭露 N 層失效控制面 — A、B、C」</td>
      </tr>
      <tr>
          <td>Case 主寫單一壓力場景</td>
          <td>「補的失效訊號是 X、mechanism 是 Y」</td>
      </tr>
      <tr>
          <td>Case 揭露歷史轉折</td>
          <td>「從 X 改成 Y 的關鍵架構決策」</td>
      </tr>
      <tr>
          <td>Case 揭露對比結構</td>
          <td>「揭露兩個層次的對照：A vs B」</td>
      </tr>
      <tr>
          <td>多 case 並列補不同層</td>
          <td>「A case 補 X、B case 補 Y」</td>
      </tr>
      <tr>
          <td>Case 揭露 mechanism 可引用範圍</td>
          <td>「案例『可落地檢查點』直接列出 mechanism 屬可引用範圍」</td>
      </tr>
  </tbody>
</table>
<p>寫多章時刻意變化句構、避免讀者連讀數章感「每段開頭都長一樣」。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首直接是「對應 [case]」、沒概念定義句</td>
          <td>商業邏輯先於 case 原則被推翻、讀者尚未理解就被丟入案例細節</td>
      </tr>
      <tr>
          <td>段首用「另一個面向」「不只是 X、是 Y」鋪墊取代概念定義</td>
          <td>推進論證骨架取代概念先行</td>
      </tr>
      <tr>
          <td>三段式中段（case 引用）擴寫成具體實作細節</td>
          <td>把通用工程知識掛在 case 名下、case fidelity 失分</td>
      </tr>
      <tr>
          <td>通用展開段沒明示「以下基於通用工程知識補充」</td>
          <td>讀者誤以為展開內容也來自 case</td>
      </tr>
      <tr>
          <td>跨章 5+ 段用同一句構「揭露 N 層失效控制面」</td>
          <td>Case 引用變儀式、讀者連讀感同質</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="stage-2-自查清單">Stage 2 自查清單</h2>
<p>寫完每章 case 引用後、檢查：</p>
<ol>
<li><strong>段首是否是概念定義句</strong>？（不是 case 引用、不是「另一個面向」鋪墊）</li>
<li><strong>Case 引用是否在第二位置</strong>？（不是段首）</li>
<li><strong>通用展開是否有「以下基於通用工程知識補充」承接</strong>？</li>
<li><strong>句構是否跟前面章節相同</strong>？（同模組超過 3 章用同句構就該變化）</li>
</ol>
<p>掃描指令：</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"># 找段首是 case 引用的段（最嚴格）</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">rg -n <span class="s2">&#34;^對應 \[&#34;</span> &lt;module-paths&gt;
</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"># 找 ## 標題後緊接 case 引用的段（要手動 review）</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">rg -B0 -A3 -n <span class="s2">&#34;^## &#34;</span> &lt;file&gt; <span class="p">|</span> rg <span class="s2">&#34;對應 \[&#34;</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"># 找句構同質化（跨檔抓「揭露 N 層失效控制面」出現次數）</span>
</span></span><span class="line"><span class="ln">8</span><span class="cl">rg -c <span class="s2">&#34;揭露[^。]*失效控制面&#34;</span> &lt;module-paths&gt;</span></span></code></pre></div><p><strong>False positive 警示</strong>：<code>^對應 \[</code> 在三段分離結構（概念定義段 → 空行 → case 引用獨立段）下會 false positive、要用 awk 看 prev line 是否為實質概念段：</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">awk <span class="s1">&#39;/^對應 \[/{prev_blank=(prev==&#34;&#34;); print FILENAME &#34;:&#34; NR &#34;: prev_blank=&#34; prev_blank} {prev=$0}&#39;</span> &lt;file&gt;</span></span></code></pre></div><p>prev_blank=1 + 前段有實質概念定義 → 屬規範允許（三段分離）。</p>
<hr>
<h2 id="polish-pass-修法">Polish pass 修法</h2>
<p>如果 stage 3 reviewer 抓出大量「case 引用段首」issue、polish pass 的修法：</p>
<ol>
<li>每個有 issue 的段、在 case 引用前補一句「概念定義 + 核心責任」</li>
<li>不重寫整段、只加 lead sentence（保留 case 引用本身）</li>
<li>變化 case 引用句構：把 11/12 段同一句構打散成 3-4 種變化</li>
<li>修完跑自掃描確認段首不再是 case 引用</li>
</ol>
<p>修法成本：每段補 1-2 句概念定義、單章約 5-10 分鐘、整模組 1-2 小時。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../case-type-graded-citation-depth/">#115 案例引用深度跟著 case 類型走</a></td>
          <td>互補 — 不同 axis、#115 看引用深度、本卡看引用結構</td>
      </tr>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 Fact vs Derive 分層引用</a></td>
          <td>互補 — 不同 axis、#116 看 case 內部分層、本卡看段落順序</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨 case 合成 frame 必須標明</a></td>
          <td>互補 — 不同 axis、#117 看跨 case 合成、本卡看單段結構</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>互補 — #83 是 review 流程跨輪 frame、本卡是寫作當下段落順序</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 「對應 [case]」當段首最順、不寫概念定義最省字、便利跟意圖對齊反向</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass review 的 frame 顆粒度盲點</a></td>
          <td>句構同質化是 #114 在 case 引用 surface 的具體展現</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首是「對應 [case] 揭露 X」</td>
          <td>補概念定義句、case 引用退到第二位置</td>
      </tr>
      <tr>
          <td>段首用「另一個面向」「不只是 X、是 Y」鋪墊</td>
          <td>改成概念定義先行、不用對比骨架推進</td>
      </tr>
      <tr>
          <td>跨章 5+ 段用同句構「揭露 N 層失效控制面」</td>
          <td>Stage 5 polish pass 句構分流</td>
      </tr>
      <tr>
          <td>Reviewer A 抓出「case 引用段首」issue 多</td>
          <td>三段式紀律失效、整模組重審</td>
      </tr>
      <tr>
          <td>通用展開段沒明示「以下基於通用工程知識補充」</td>
          <td>補承接句、讓讀者知道展開內容是通用知識</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：三段式紀律的價值是把「概念 → 案例 → 操作」三層分離、讓讀者依層級理解。段首被 case 引用取代會推翻商業邏輯先於 case 的原則、是 LLM 寫教學內容的系統性傾向。</p>
]]></content:encoded></item><item><title>Agent team context 隔離設計：用不同 instance 換 frame、平行 background 保護主 context</title><link>https://tarrragon.github.io/blog/report/agent-team-context-isolation/</link><pubDate>Wed, 13 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/agent-team-context-isolation/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>Agent team context 隔離是 LLM-era review 工具設計的核心模式 — 用 N 個獨立 reviewer instance 各自跑 background、各自寫 output file、主 context 只接精煉摘要、不被 reviewer 細節污染。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>設計面&lt;/th>
 &lt;th>紀律&lt;/th>
 &lt;th>效果&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Instance 隔離&lt;/td>
 &lt;td>N 個專責 reviewer 各自獨立 context&lt;/td>
 &lt;td>維度盲點分開處理、不互相干擾&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Background 平行&lt;/td>
 &lt;td>不阻塞主 context、可同時跑 3-5 個 reviewer&lt;/td>
 &lt;td>時間從序列 30 分鐘縮到平行 10 分鐘&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>輸出檔案隔離&lt;/td>
 &lt;td>Reviewer 寫 output file、不污染主 conversation&lt;/td>
 &lt;td>主 context 增量 ~3K token、節省 ~80% context&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>主 context 只接摘要&lt;/td>
 &lt;td>Reviewer 完成後回傳精煉彙整&lt;/td>
 &lt;td>修正循環時 context 留給判讀、不被 raw issue 列表佔滿&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>跟 multi-pass review（#83）的差別：#83 是 &lt;em>同一 reviewer 換輪次 frame&lt;/em>（生成 / 對意圖 / 機會成本 / grep / 反例）；本卡是 &lt;em>不同 reviewer instance 各自獨立&lt;/em>（規範 / 案例準確 / 跨章一致 / compositional-writing 等）。兩者正交、可疊加。&lt;/p>
&lt;hr>
&lt;h2 id="跟-multi-pass-review-的差別">跟 multi-pass review 的差別&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>#83 Multi-pass review&lt;/th>
 &lt;th>#121 Agent team context 隔離（本卡）&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>軸定位&lt;/td>
 &lt;td>Frame 軸（一個 reviewer N 輪不同 frame）&lt;/td>
 &lt;td>Instance 軸（N 個 reviewer 各自獨立）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>解決問題&lt;/td>
 &lt;td>Working memory 限制（一輪 catch 不到所有層）&lt;/td>
 &lt;td>Context 污染（單一 reviewer context 被 raw input 佔滿）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>適用對象&lt;/td>
 &lt;td>Author / 單一 reviewer 跑多輪&lt;/td>
 &lt;td>Agent team / 自動化平行 review&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>失敗模式&lt;/td>
 &lt;td>跳輪 → 某維度永遠做一半&lt;/td>
 &lt;td>Instance 數量不足 → 維度覆蓋不全&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩軸正交、可疊加 — 同一 reviewer instance 內跑 multi-pass（#83）、跨 reviewer instance 各自獨立（本卡）。Case-first stage 3 設計同時用兩軸：3 個 reviewer instance 各自獨立 + 每個 reviewer 內部跑多輪 frame check。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這層設計重要">為什麼這層設計重要&lt;/h2>
&lt;p>單一 reviewer 同時處理多維度有兩個限制：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>維度盲點&lt;/strong>：一個 reviewer 同時看寫作規範 + 案例準確性 + 跨章一致性、容易維度互相干擾、最後每個維度都看不深&lt;/li>
&lt;li>&lt;strong>Context 污染&lt;/strong>：reviewer 讀完整 commit + 所有案例 + 所有章節後、自身 context 被佔滿、給的建議也對應主 context 跟著沉重&lt;/li>
&lt;/ol>
&lt;p>Context 隔離解這兩個問題：&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>Agent team context 隔離是 LLM-era review 工具設計的核心模式 — 用 N 個獨立 reviewer instance 各自跑 background、各自寫 output file、主 context 只接精煉摘要、不被 reviewer 細節污染。</p>
<table>
  <thead>
      <tr>
          <th>設計面</th>
          <th>紀律</th>
          <th>效果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Instance 隔離</td>
          <td>N 個專責 reviewer 各自獨立 context</td>
          <td>維度盲點分開處理、不互相干擾</td>
      </tr>
      <tr>
          <td>Background 平行</td>
          <td>不阻塞主 context、可同時跑 3-5 個 reviewer</td>
          <td>時間從序列 30 分鐘縮到平行 10 分鐘</td>
      </tr>
      <tr>
          <td>輸出檔案隔離</td>
          <td>Reviewer 寫 output file、不污染主 conversation</td>
          <td>主 context 增量 ~3K token、節省 ~80% context</td>
      </tr>
      <tr>
          <td>主 context 只接摘要</td>
          <td>Reviewer 完成後回傳精煉彙整</td>
          <td>修正循環時 context 留給判讀、不被 raw issue 列表佔滿</td>
      </tr>
  </tbody>
</table>
<p>跟 multi-pass review（#83）的差別：#83 是 <em>同一 reviewer 換輪次 frame</em>（生成 / 對意圖 / 機會成本 / grep / 反例）；本卡是 <em>不同 reviewer instance 各自獨立</em>（規範 / 案例準確 / 跨章一致 / compositional-writing 等）。兩者正交、可疊加。</p>
<hr>
<h2 id="跟-multi-pass-review-的差別">跟 multi-pass review 的差別</h2>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>#83 Multi-pass review</th>
          <th>#121 Agent team context 隔離（本卡）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>軸定位</td>
          <td>Frame 軸（一個 reviewer N 輪不同 frame）</td>
          <td>Instance 軸（N 個 reviewer 各自獨立）</td>
      </tr>
      <tr>
          <td>解決問題</td>
          <td>Working memory 限制（一輪 catch 不到所有層）</td>
          <td>Context 污染（單一 reviewer context 被 raw input 佔滿）</td>
      </tr>
      <tr>
          <td>適用對象</td>
          <td>Author / 單一 reviewer 跑多輪</td>
          <td>Agent team / 自動化平行 review</td>
      </tr>
      <tr>
          <td>失敗模式</td>
          <td>跳輪 → 某維度永遠做一半</td>
          <td>Instance 數量不足 → 維度覆蓋不全</td>
      </tr>
  </tbody>
</table>
<p>兩軸正交、可疊加 — 同一 reviewer instance 內跑 multi-pass（#83）、跨 reviewer instance 各自獨立（本卡）。Case-first stage 3 設計同時用兩軸：3 個 reviewer instance 各自獨立 + 每個 reviewer 內部跑多輪 frame check。</p>
<hr>
<h2 id="為什麼這層設計重要">為什麼這層設計重要</h2>
<p>單一 reviewer 同時處理多維度有兩個限制：</p>
<ol>
<li><strong>維度盲點</strong>：一個 reviewer 同時看寫作規範 + 案例準確性 + 跨章一致性、容易維度互相干擾、最後每個維度都看不深</li>
<li><strong>Context 污染</strong>：reviewer 讀完整 commit + 所有案例 + 所有章節後、自身 context 被佔滿、給的建議也對應主 context 跟著沉重</li>
</ol>
<p>Context 隔離解這兩個問題：</p>
<ul>
<li>用 N 個專責 reviewer、各自只處理一個維度 → 維度深度提升</li>
<li>Reviewer 各自 background、不污染主 context → 主 context 保留判讀空間</li>
<li>Reviewer 寫 output file、不傳 raw 內容到主 context → 主 context 增量極少</li>
</ul>
<hr>
<h2 id="設計紀律何時用幾個-reviewer">設計紀律：何時用幾個 reviewer</h2>
<p>Reviewer 數量決定取決於審查對象的維度複雜度：</p>
<table>
  <thead>
      <tr>
          <th>審查對象</th>
          <th>Reviewer 數</th>
          <th>維度分配</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Case-driven 章節擴章</td>
          <td>3 個</td>
          <td>A 寫作規範 / B 案例引用準確性 / C 跨章一致性</td>
      </tr>
      <tr>
          <td>方法論 / 自我審查</td>
          <td>4 個</td>
          <td>A 寫作規範 / B 三方自一致性 / C 概念邊界 / D compositional-writing 6 原則</td>
      </tr>
      <tr>
          <td>一般 PR review</td>
          <td>1-2 個</td>
          <td>規範 + correctness、不需要 case fidelity 維度</td>
      </tr>
      <tr>
          <td>高 stakes 內容（資安 / financial）</td>
          <td>4-5 個</td>
          <td>加 epistemic rigor reviewer（claim / evidence / threats）</td>
      </tr>
  </tbody>
</table>
<p>維度設計要對審查對象客製、不要固定一套維度套所有任務。</p>
<hr>
<h2 id="平行-background-的具體實作">平行 background 的具體實作</h2>
<p>Case-first stage 3 的實作 pattern：</p>





<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"># Agent tool spawn 平行 background</span>
</span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="k">for</span> <span class="n">reviewer_id</span> <span class="ow">in</span> <span class="p">[</span><span class="s1">&#39;A&#39;</span><span class="p">,</span> <span class="s1">&#39;B&#39;</span><span class="p">,</span> <span class="s1">&#39;C&#39;</span><span class="p">]:</span>
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">    <span class="n">Agent</span><span class="p">({</span>
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">        <span class="n">description</span><span class="p">:</span> <span class="sa">f</span><span class="s2">&#34;Reviewer </span><span class="si">{</span><span class="n">reviewer_id</span><span class="si">}</span><span class="s2">: </span><span class="si">{</span><span class="n">dimension</span><span class="si">}</span><span class="s2">&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">        <span class="n">subagent_type</span><span class="p">:</span> <span class="s2">&#34;general-purpose&#34;</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">        <span class="n">run_in_background</span><span class="p">:</span> <span class="kc">True</span><span class="p">,</span>
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">        <span class="n">prompt</span><span class="p">:</span> <span class="n">get_reviewer_prompt</span><span class="p">(</span><span class="n">reviewer_id</span><span class="p">)</span>
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    <span class="p">})</span>
</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 class="c1"># 主 context 不阻塞、繼續其他工作</span>
</span></span><span class="line"><span class="ln">11</span><span class="cl"><span class="c1"># Reviewer 完成時主 context 接通知（task-notification）</span>
</span></span><span class="line"><span class="ln">12</span><span class="cl"><span class="c1"># Reviewer 各自寫 output 到 /tmp/reviewer-{id}-report.md</span>
</span></span><span class="line"><span class="ln">13</span><span class="cl"><span class="c1"># 主 context 讀 output 彙整、不讀 raw conversation transcript</span></span></span></code></pre></div><p>關鍵設計選擇：</p>
<ol>
<li><strong><code>run_in_background: true</code></strong>：平行跑、不阻塞</li>
<li><strong>Reviewer 寫 output file</strong>：報告寫 <code>/tmp/...</code> 不污染主 conversation</li>
<li><strong>主 context 不讀 reviewer transcript</strong>：只讀 task-notification 的 summary + 最後讀 output file</li>
<li><strong>Reviewer prompt 含「不要佔我主 context、報告寫進檔即可」明示</strong>：避免 reviewer 把 raw issue 都吐回主 conversation</li>
</ol>
<hr>
<h2 id="reviewer-維度設計跟著任務客製化">Reviewer 維度設計：跟著任務客製化</h2>
<p>Reviewer 維度不該固定 — backend/07 batch 1 案例驅動章節用「規範 / 案例 / 跨章一致」三維度、方法論審查用「規範 / 三方自一致 / 概念邊界 / compositional-writing」四維度。</p>
<p>設計原則：</p>
<ul>
<li><strong>拆 axis 不重疊</strong>：每個 reviewer 的維度跟其他 reviewer 互斥（如「規範」vs「案例準確性」是不同 axis）</li>
<li><strong>覆蓋審查對象的關鍵風險</strong>：審查 case-driven 章節要 case fidelity reviewer、審查方法論要三方自一致性 reviewer</li>
<li><strong>預期 issue baseline 設好</strong>：每 reviewer 給 prompt 預期數量、reviewer 不要過度抓 / 漏抓</li>
<li><strong>prompt 含主 context 保護指令</strong>：「報告寫到 /tmp/X-report.md、不要在主 conversation 吐 raw issue」</li>
</ul>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>單一 reviewer 處理所有維度</td>
          <td>維度盲點 + context 污染、品質下降</td>
      </tr>
      <tr>
          <td>Reviewer 不寫 output file、直接在 conversation 吐 raw issue</td>
          <td>主 context 被 issue 列表佔滿、修正循環沒空間</td>
      </tr>
      <tr>
          <td>Reviewer 維度固定不變、套所有任務</td>
          <td>維度跟審查對象不對齊、漏抓關鍵風險</td>
      </tr>
      <tr>
          <td>Reviewer 不平行、序列跑</td>
          <td>時間成本高、序列 30 分鐘 vs 平行 10 分鐘</td>
      </tr>
      <tr>
          <td>Reviewer prompt 沒明示 baseline</td>
          <td>Reviewer 抓 5 個或 50 個都「完成」、無法判讀品質</td>
      </tr>
      <tr>
          <td>主 context 直接 Read reviewer transcript</td>
          <td>把 raw conversation 拉進主 context、context 污染</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>互補 — #83 是 frame 軸（一個 reviewer N 輪）、本卡是 instance 軸（N 個 reviewer 各自獨立）、兩軸正交可疊加</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass review 的 frame 顆粒度盲點</a></td>
          <td>解同類問題的不同手法 — #114 用「keyword bank / reader simulation / self-criticism」三機制擴大覆蓋、本卡用 instance 隔離擴大覆蓋</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>同骨 pattern — 單一 reviewer 處理多維度最便利（不用 spawn / coordinate）、但意圖（深度 review）失準</td>
      </tr>
      <tr>
          <td><a href="../two-occurrence-threshold/">#42 兩次門檻</a></td>
          <td>跨機制 — 同 reviewer 多輪 catch 同類錯（#114）跟跨 reviewer instance（本卡）都是「換工具」的具體實作</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Reviewer 給的建議「對應主 context 也沉重」</td>
          <td>Reviewer context 被污染、改 background instance 隔離</td>
      </tr>
      <tr>
          <td>主 context 修正循環時、不知道從哪個 issue 開始</td>
          <td>Reviewer 報告沒精煉、補 reviewer prompt 要求 summary 開頭</td>
      </tr>
      <tr>
          <td>多個 reviewer 抓到同類 issue</td>
          <td>維度設計重疊、調整 reviewer 維度分配</td>
      </tr>
      <tr>
          <td>Reviewer 序列跑、單次 review 30 分鐘以上</td>
          <td>改平行 background、預期縮到 10 分鐘</td>
      </tr>
      <tr>
          <td>主 context tokens 在 review 階段增長過快</td>
          <td>Reviewer 沒用 output file、改 prompt 明示「報告寫進檔」</td>
      </tr>
      <tr>
          <td>想複用 reviewer prompt 到不同任務</td>
          <td>維度該重新設計、不是固定一套</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：Agent team context 隔離是 LLM-era review 工具的設計模式 — 用 instance 隔離換維度深度跟 context 保護。維度設計要對任務客製化、不要固定不變。</p>
]]></content:encoded></item><item><title>Cadence 同質化是模板的隱形維度</title><link>https://tarrragon.github.io/blog/report/cadence-homogenization-in-batch-writing/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/cadence-homogenization-in-batch-writing/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>「模板」有兩個維度、寫作規範通常只 enforce 第一維、第二維是隱形維度：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>內容&lt;/th>
 &lt;th>規範狀態&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>內容欄位模板&lt;/td>
 &lt;td>規模對照表、tripwire 條件、失敗模式、回退路徑&lt;/td>
 &lt;td>已被 AGENTS.md 原則八 enforce（情境優先於模板）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Cadence 模板&lt;/td>
 &lt;td>段首句句型、段末收尾語、表格前導句、過渡詞、列表收尾結構&lt;/td>
 &lt;td>&lt;strong>未被規範涵蓋&lt;/strong> — 51 vendor 同 cadence、各篇單看都合規、連讀才預期化&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>實際案例（backend/07 批量 51 vendor）：51 個 vendor 個別頁的「最短判讀路徑」段都收尾在「四件事任一缺失、就是 X 邊界的待補項目」。51/51 同骨、跨 9 個 service group、跨不同 vendor 性質。每一篇單看符合規範、表格有延伸、無 emoji、章節結構齊、案例正確；連讀 5 篇後讀者預期化、cadence 變成「閱讀時自動跳過的雜訊」。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼-cadence-維度最容易失守">為什麼 cadence 維度最容易失守&lt;/h2>
&lt;p>三層原因疊加：&lt;/p>
&lt;ol>
&lt;li>
&lt;p>&lt;strong>規範語言只涵蓋 &lt;em>內容&lt;/em> 層、不涵蓋 &lt;em>形式&lt;/em> 層&lt;/strong>：AGENTS.md 原則八寫「不為了整齊把不同案例硬套同一模板」、配的例子是「規模對照、tripwire、失敗模式」；批量寫作時 Claude 把「保留情境差異」自動解讀成「敘事內容不同就行」、cadence / framing 不在規範定義的「模板」內、沒被擋。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>批量寫作的便利成本最低&lt;/strong>：寫第一個 vendor 找到一個「都過 lint + 章節完整 + 表格有延伸」的 framing 後、複製這個骨架到下 50 個 vendor 是最省 token 的選擇；每篇都合規、輸出快、且看不到單篇有問題。&lt;/p>
&lt;/li>
&lt;li>
&lt;p>&lt;strong>單篇 review 看不到 cadence 違規&lt;/strong>：cadence 同質化是 &lt;em>跨檔&lt;/em> emergence、單檔 review（一次只讀一份）不會 trigger 訊號；只有「連讀多份 + 對齊 first sentence / closing line」才會看出。連 reviewer agent 也容易漏 — backend/07 三個 reviewer 中、只有寫作規範 reviewer 一句 footnote 提到「cadence 過齊」、其他兩個都沒抓到。&lt;/p>
&lt;/li>
&lt;/ol>
&lt;hr>
&lt;h2 id="cadence-自檢方法">Cadence 自檢方法&lt;/h2>
&lt;p>寫批量內容（≥ 5 個同類檔案）時、加入 cadence 抽樣 pass。不是讀全文、是抽固定位置的句子做骨架對照：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>抽樣位置&lt;/th>
 &lt;th>比對方式&lt;/th>
 &lt;th>預期分佈&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>段首句&lt;/td>
 &lt;td>把每篇每段的第一句並列、看句型骨架是否相同（「X 的 first-class concept 是 Y」）&lt;/td>
 &lt;td>≥ 3 種不同骨架、不是全篇都同一個&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>段末收尾語&lt;/td>
 &lt;td>把每篇每段的最後一句並列、看是否反覆用同一個 frame（「四件事任一缺失就是 X」）&lt;/td>
 &lt;td>跨同類段落、收尾語句型該有 50% 以上變化&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>表格前導句&lt;/td>
 &lt;td>表格前的引導句、看是否反覆用「下表整理 N 個面向」「以下從 X 維度比較」&lt;/td>
 &lt;td>不該所有表格都用同一個前導模板&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>列表收尾結構&lt;/td>
 &lt;td>列表後的承接段、看是否反覆用「以上 N 點任一缺失就是 X」&lt;/td>
 &lt;td>列表收尾不該全都是「N 點任一缺失」結構&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>過渡詞密度&lt;/td>
 &lt;td>跨檔 grep「實際上 / 換句話說 / 換個角度 / 同樣 / 類似 / 進一步」&lt;/td>
 &lt;td>任一過渡詞在 N 篇中出現率 &amp;gt; 60% 是警訊&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>抽樣不需要全做、選 &lt;em>最容易反覆使用&lt;/em> 的 2-3 個位置即可；批量越大、抽樣位置越要多。&lt;/p>
&lt;hr>
&lt;h2 id="cadence-多樣性是正向設計不是事後修補">Cadence 多樣性是「正向設計」、不是「事後修補」&lt;/h2>
&lt;p>寫第 1-3 篇時就該意識：cadence 會被複製到下 N 篇。對策不是「寫完後 review 改」、是「寫第一篇時就刻意製造 N 種 framing 變體、之後在這 N 種裡輪替」：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>寫作階段&lt;/th>
 &lt;th>Cadence 策略&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>第 1-3 篇（pilot）&lt;/td>
 &lt;td>刻意寫 3 種不同 framing 變體（如「四件事 / 三條紅線 / 兩個 attestation 點」）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>第 4-10 篇（早期 batch）&lt;/td>
 &lt;td>輪替使用 pilot 階段的 3 種變體、不固定一個&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>第 10+ 篇&lt;/td>
 &lt;td>加入第 4-5 個新 framing 變體、避免變體耗盡再變單調&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>批量結束前&lt;/td>
 &lt;td>抽樣 5 個檔做 cadence 對照、發現同質化提前修&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這個做法的關鍵是 &lt;em>變體不是事後抽出來的、是設計階段就準備好的&lt;/em>。一旦寫過 5 篇還沒主動製造變體、就會預設複製第一篇 framing 到所有後續檔案。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>「模板」有兩個維度、寫作規範通常只 enforce 第一維、第二維是隱形維度：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>內容</th>
          <th>規範狀態</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>內容欄位模板</td>
          <td>規模對照表、tripwire 條件、失敗模式、回退路徑</td>
          <td>已被 AGENTS.md 原則八 enforce（情境優先於模板）</td>
      </tr>
      <tr>
          <td>Cadence 模板</td>
          <td>段首句句型、段末收尾語、表格前導句、過渡詞、列表收尾結構</td>
          <td><strong>未被規範涵蓋</strong> — 51 vendor 同 cadence、各篇單看都合規、連讀才預期化</td>
      </tr>
  </tbody>
</table>
<p>實際案例（backend/07 批量 51 vendor）：51 個 vendor 個別頁的「最短判讀路徑」段都收尾在「四件事任一缺失、就是 X 邊界的待補項目」。51/51 同骨、跨 9 個 service group、跨不同 vendor 性質。每一篇單看符合規範、表格有延伸、無 emoji、章節結構齊、案例正確；連讀 5 篇後讀者預期化、cadence 變成「閱讀時自動跳過的雜訊」。</p>
<hr>
<h2 id="為什麼-cadence-維度最容易失守">為什麼 cadence 維度最容易失守</h2>
<p>三層原因疊加：</p>
<ol>
<li>
<p><strong>規範語言只涵蓋 <em>內容</em> 層、不涵蓋 <em>形式</em> 層</strong>：AGENTS.md 原則八寫「不為了整齊把不同案例硬套同一模板」、配的例子是「規模對照、tripwire、失敗模式」；批量寫作時 Claude 把「保留情境差異」自動解讀成「敘事內容不同就行」、cadence / framing 不在規範定義的「模板」內、沒被擋。</p>
</li>
<li>
<p><strong>批量寫作的便利成本最低</strong>：寫第一個 vendor 找到一個「都過 lint + 章節完整 + 表格有延伸」的 framing 後、複製這個骨架到下 50 個 vendor 是最省 token 的選擇；每篇都合規、輸出快、且看不到單篇有問題。</p>
</li>
<li>
<p><strong>單篇 review 看不到 cadence 違規</strong>：cadence 同質化是 <em>跨檔</em> emergence、單檔 review（一次只讀一份）不會 trigger 訊號；只有「連讀多份 + 對齊 first sentence / closing line」才會看出。連 reviewer agent 也容易漏 — backend/07 三個 reviewer 中、只有寫作規範 reviewer 一句 footnote 提到「cadence 過齊」、其他兩個都沒抓到。</p>
</li>
</ol>
<hr>
<h2 id="cadence-自檢方法">Cadence 自檢方法</h2>
<p>寫批量內容（≥ 5 個同類檔案）時、加入 cadence 抽樣 pass。不是讀全文、是抽固定位置的句子做骨架對照：</p>
<table>
  <thead>
      <tr>
          <th>抽樣位置</th>
          <th>比對方式</th>
          <th>預期分佈</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>段首句</td>
          <td>把每篇每段的第一句並列、看句型骨架是否相同（「X 的 first-class concept 是 Y」）</td>
          <td>≥ 3 種不同骨架、不是全篇都同一個</td>
      </tr>
      <tr>
          <td>段末收尾語</td>
          <td>把每篇每段的最後一句並列、看是否反覆用同一個 frame（「四件事任一缺失就是 X」）</td>
          <td>跨同類段落、收尾語句型該有 50% 以上變化</td>
      </tr>
      <tr>
          <td>表格前導句</td>
          <td>表格前的引導句、看是否反覆用「下表整理 N 個面向」「以下從 X 維度比較」</td>
          <td>不該所有表格都用同一個前導模板</td>
      </tr>
      <tr>
          <td>列表收尾結構</td>
          <td>列表後的承接段、看是否反覆用「以上 N 點任一缺失就是 X」</td>
          <td>列表收尾不該全都是「N 點任一缺失」結構</td>
      </tr>
      <tr>
          <td>過渡詞密度</td>
          <td>跨檔 grep「實際上 / 換句話說 / 換個角度 / 同樣 / 類似 / 進一步」</td>
          <td>任一過渡詞在 N 篇中出現率 &gt; 60% 是警訊</td>
      </tr>
  </tbody>
</table>
<p>抽樣不需要全做、選 <em>最容易反覆使用</em> 的 2-3 個位置即可；批量越大、抽樣位置越要多。</p>
<hr>
<h2 id="cadence-多樣性是正向設計不是事後修補">Cadence 多樣性是「正向設計」、不是「事後修補」</h2>
<p>寫第 1-3 篇時就該意識：cadence 會被複製到下 N 篇。對策不是「寫完後 review 改」、是「寫第一篇時就刻意製造 N 種 framing 變體、之後在這 N 種裡輪替」：</p>
<table>
  <thead>
      <tr>
          <th>寫作階段</th>
          <th>Cadence 策略</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第 1-3 篇（pilot）</td>
          <td>刻意寫 3 種不同 framing 變體（如「四件事 / 三條紅線 / 兩個 attestation 點」）</td>
      </tr>
      <tr>
          <td>第 4-10 篇（早期 batch）</td>
          <td>輪替使用 pilot 階段的 3 種變體、不固定一個</td>
      </tr>
      <tr>
          <td>第 10+ 篇</td>
          <td>加入第 4-5 個新 framing 變體、避免變體耗盡再變單調</td>
      </tr>
      <tr>
          <td>批量結束前</td>
          <td>抽樣 5 個檔做 cadence 對照、發現同質化提前修</td>
      </tr>
  </tbody>
</table>
<p>這個做法的關鍵是 <em>變體不是事後抽出來的、是設計階段就準備好的</em>。一旦寫過 5 篇還沒主動製造變體、就會預設複製第一篇 framing 到所有後續檔案。</p>
<h3 id="dogfood-evidence-2026-05-18n4-sub-threshold-驗證">Dogfood evidence (2026-05-18、N=4 sub-threshold 驗證)</h3>
<p>本卡浮現後立即跑了一次小批量 dogfood：4 篇 deep article（Vault dynamic credential / K8s graceful shutdown / Splunk RBA / Cloudflare Page Shield）寫作前主動規劃 4 種不同 entry framing（標準問題情境 / 痛點宣告 / 概念反向定義 / 對照表驅動）、跨檔 cadence audit 結果：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>backend/07 51 vendor（前批、無 variant 規劃）</th>
          <th>deep article 4 篇（本批、pilot variant）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Cadence collapse「任一缺失」族重複</td>
          <td>51/51 (100%)</td>
          <td>0/4 (0%)</td>
      </tr>
      <tr>
          <td>章節 1 entry framing 種類</td>
          <td>1 種</td>
          <td>4 種</td>
      </tr>
      <tr>
          <td>過渡詞密度（實際上 / 進一步 等）</td>
          <td>未量化（同質化嚴重）</td>
          <td>全 0 hits</td>
      </tr>
      <tr>
          <td>Lint / emoji / MD036 違規</td>
          <td>0</td>
          <td>0</td>
      </tr>
  </tbody>
</table>
<p>兩個重點驗證：</p>
<ol>
<li><strong>Sub-threshold（N &lt; 5）仍適用</strong>：原本 pilot 表格寫「第 1-3 篇刻意寫 3 種變體」、預設批量 ≥ 5 篇；實測 N=4 sub-threshold 配 4 種 variant 也能完全錯開 cadence</li>
<li><strong>Pilot phase 邊際成本低於 batch 後 polish</strong>：寫作前花 ~5 分鐘規劃 4 種 framing variant、vs backend/07 51 vendor 批量後 polish ~30-60 分鐘改 51 處 cadence — 預先設計成本 &lt; 事後修正成本 ~10 倍</li>
</ol>
<h3 id="update-n5-full-threshold--同-vendor-sub-tool-系列驗證">Update: N=5 full-threshold + 同 vendor sub-tool 系列驗證</h3>
<p>第一次 N=4 驗證後、立即再跑 N=5 full-threshold batch — 5 篇 PostgreSQL sub-tool deep article（Patroni HA / autovacuum tuning / declarative partitioning / logical replication + Debezium / PITR + WAL archiving）。這批比第一批 <em>cadence collapse 風險更高</em> — 同 vendor、同 article type、同 6-section structure、同 audience。</p>
<p>三批 cadence 比較：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>backend/07 51 vendor（無規劃）</th>
          <th>deep article 第一批 N=4（跨 vendor）</th>
          <th>deep article 第二批 N=5（同 vendor）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Cadence collapse「任一缺失」族重複</td>
          <td>51/51 (100%)</td>
          <td>0/4 (0%)</td>
          <td>0/5 (0%)</td>
      </tr>
      <tr>
          <td>章節 1 entry framing 種類</td>
          <td>1</td>
          <td>4</td>
          <td>5</td>
      </tr>
      <tr>
          <td>過渡詞密度</td>
          <td>未量化</td>
          <td>全 0 hits</td>
          <td>全 0 hits</td>
      </tr>
      <tr>
          <td>共同變數</td>
          <td>11 章節結構 + 表格深化</td>
          <td>6-section deep article</td>
          <td>6-section + 同 vendor + 同 audience</td>
      </tr>
  </tbody>
</table>
<p>額外驗證（補既有 sub-threshold 驗證）：</p>
<ol start="3">
<li><strong>Full-threshold N=5 variant 不耗盡</strong>：5 種 variant（lifecycle-driven / pain-driven / concept-reversed / table-driven / standard 6-section）都對應主題本質、沒有「為了不同而不同」、5 篇骨架完全錯開</li>
<li><strong>同 vendor 同 article type 仍可錯開</strong>：理論上 <em>同 vendor 同 type</em> 是 cadence collapse 最高風險場景（共同變數最多）；實測 variant 設計仍能覆蓋、collapse 風險不來自共同 context、來自 <em>寫作前是否主動規劃 variant</em></li>
<li><strong>批次間 sample size 邊界更寬</strong>：原 principle 寫 ≥ 5 才適用、實測 <em>N=4 跟 N=5 一樣有效</em>、threshold 5 是 emergence 訊號偵測的閾值、不是 <em>principle 適用</em> 的閾值；變體規劃在 N ≥ 2 就該做</li>
</ol>
<h3 id="update-partial-collapse-實證被動-vs-主動-variant-對照">Update: Partial collapse 實證（被動 vs 主動 variant 對照）</h3>
<p><strong>Partial collapse 定義</strong>：批量內 <em>部分檔案 cadence 收斂、部分錯開</em>、collapse rate 在 0% 跟 100% 之間（典型 30-70%）。跟全 collapse（100%）跟全錯開（0%）的差異在於 <em>混合訊號</em>：同批內存在不同寫作行為（被動 vs 主動 variant 規劃）、cadence 結果反映行為差異。</p>
<p>第三輪 batch 寫 5 篇 migration playbook（跨 vendor、不同 module）、<em>前 3 篇被動寫作、後 2 篇主動規劃 variant</em>。結果：</p>
<table>
  <thead>
      <tr>
          <th>篇</th>
          <th>Variant 規劃</th>
          <th>章節 1 entry framing</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1 Splunk → Elastic</td>
          <td>被動</td>
          <td>「為什麼遷：X / Y / Z 三條 driver」</td>
      </tr>
      <tr>
          <td>2 Redis → DragonflyDB</td>
          <td>被動</td>
          <td>「為什麼遷：X / Y / Z 三條 driver」</td>
      </tr>
      <tr>
          <td>3 Postgres → Aurora</td>
          <td>被動</td>
          <td>「為什麼遷：X / Y / Z 三條 driver」</td>
      </tr>
      <tr>
          <td>4 Datadog → Grafana</td>
          <td>主動</td>
          <td>「$50K/month bill 拆解」</td>
      </tr>
      <tr>
          <td>5 Kafka ↔ NATS</td>
          <td>主動</td>
          <td>「『Kafka → NATS migration』字面上不成立」</td>
      </tr>
  </tbody>
</table>
<p><strong>3/5 collapse、2/5 錯開</strong> = partial collapse。</p>
<p>五批 cadence rate 對照：</p>
<table>
  <thead>
      <tr>
          <th>批次</th>
          <th>Sample</th>
          <th>Variant 規劃</th>
          <th>Collapse rate</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>backend/07 vendor batch</td>
          <td>N=51</td>
          <td>無</td>
          <td>51/51 (100%)</td>
      </tr>
      <tr>
          <td>Deep article 第一批（跨 vendor）</td>
          <td>N=4</td>
          <td>主動</td>
          <td>0/4 (0%)</td>
      </tr>
      <tr>
          <td>Deep article 第二批（同 vendor）</td>
          <td>N=5</td>
          <td>主動</td>
          <td>0/5 (0%)</td>
      </tr>
      <tr>
          <td>Migration playbook 第一輪（混合）</td>
          <td>N=5</td>
          <td><strong>3 被動 + 2 主動</strong></td>
          <td><strong>3/5 (60%)</strong></td>
      </tr>
      <tr>
          <td>Migration playbook 第二輪（漏類 + 標準）</td>
          <td>N=5</td>
          <td><strong>全 5 主動（學第一輪教訓）</strong></td>
          <td><strong>0/5 (0%)</strong></td>
      </tr>
  </tbody>
</table>
<p><strong>主題語意 attractor 定義（atomic）</strong>：批量寫作中、<em>主題本身的語意結構</em> 對 framing 選擇產生的隱形吸引力 — 例如 migration 主題天然引出「為什麼遷：X / Y / Z driver」開頭、SIEM rule 翻譯天然引出「先 audit 再 translate」開頭。這是 <a href="../compliance-optimum-converges-cadence/">#123 多重硬規範收斂 cadence</a> 的 <em>內容驅動子類型</em>：#123 處理的是 <em>外部 constraint</em>（章節結構 + lint 規則）收斂 cadence、本概念處理的是 <em>主題內部語意</em> 收斂 cadence；兩者機制同骨、attractor 來源不同。</p>
<p>三個關鍵 finding：</p>
<ol start="6">
<li><strong>主題語意 attractor 跟主題相似性正相關</strong>：5 篇 migration playbook 都圍繞「為什麼換 vendor」、entry 自然收斂到「driver list」格式；migration 主題的語意 attractor 比結構 constraint 更強</li>
<li><strong>Sample size 不能解 cadence collapse</strong>：N=5 跟前批 N=5 全錯開差異在 <em>variant 規劃</em>、不是 sample size；證實本卡論斷「variant 規劃必須主動、不是 N≥5 自動避免」</li>
<li><strong>Partial collapse 是 natural attractor 訊號、不是 principle 強化證據</strong>：本批 3/5 collapse 提供 <em>主題語意 attractor 強度</em> 的量化訊號（在無 variant 規劃時 60% 同質化）、但不增強既有 principle 的論證力 — principle 在前兩批已穩定、本批只是揭露新 attractor 來源；後續寫作流程應 <em>預期</em> 主題相似批次的 collapse 風險、不是樂觀假設</li>
<li><strong>第二輪 migration playbook 全主動 variant 在 N=5 同主題下 collapse 0/5</strong>：學第一輪教訓、第二輪 5 篇寫前 <em>主動列 5 種 entry framing variant</em>（meta-reflection / paradox / decision matrix / code-led / reverse definition）、跨檔 cadence audit 結果 0/5 collapse；同主題（migration playbook）+ 同 N=5、唯一變數是 <em>variant 規劃完整度</em>；證實 variant 規劃是 <em>cadence 結果的唯一因果變數</em>、不是「主題不同自然錯開」</li>
</ol>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>規範只列「內容欄位不可模板化」、沒列 cadence</td>
          <td>Cadence 同質化合規無感、批量產出後才浮現</td>
      </tr>
      <tr>
          <td>批量寫作前不準備 framing 變體</td>
          <td>第一篇 cadence 被複製到 N 篇、修正成本 = N × 重寫</td>
      </tr>
      <tr>
          <td>Review 用單檔 frame</td>
          <td>跨檔同質化抓不到、需要跨檔抽樣對照</td>
      </tr>
      <tr>
          <td>看到 cadence 過齊就改個別檔</td>
          <td>修不到根因 — 沒準備變體、改完一個下次還是會同質化</td>
      </tr>
      <tr>
          <td>Cadence 視為「寫作風格、不算違規」</td>
          <td>對單篇成立、對批量不成立；連讀預期化就是品質損失</td>
      </tr>
      <tr>
          <td>Reviewer prompt 沒明示「比對跨檔 first/closing」</td>
          <td>Reviewer 抓不到 emergence-class 違規</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>本卡是 #67 在「寫作骨架」維度的具體實例 — 複製第一篇 framing 最便利、但意圖（情境化敘事）失準</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>補一條 frame — multi-pass 該加「跨檔 cadence 抽樣」這輪、單檔 frame 抓不到本卡反模式</td>
      </tr>
      <tr>
          <td><a href="../positive-rewrite-preserves-contrast/">#94 正向改寫要保留對照論據</a></td>
          <td>同骨 pattern — 寫作規則執行時、字面合規（正向陳述 / 不模板化）但行為失準（cadence 同質 / 結論空降）</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass review 的 frame 顆粒度盲點</a></td>
          <td>互補軸 — #114 是 frame 顆粒度（規則 vs 字句層）、本卡是 cadence 維度（內容 vs 形式層）</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨多 case 合成的 frame 必須標為章節合成</a></td>
          <td>Sibling — 都是「合規但有隱形偏差」族；#117 是引用層、本卡是骨架層</td>
      </tr>
      <tr>
          <td><a href="../content-structure-by-max-diff-dimension/">#127 Process content 結構由最大差異維度決定</a></td>
          <td>結構 layer 對偶 — 本卡處理「同 type 內 framing collapse」、#127 處理「跨 type 套錯結構」；兩者都跟「主題語意 attractor」相關</td>
      </tr>
      <tr>
          <td><a href="/blog/posts/migration-playbook-%E6%96%B9%E6%B3%95%E8%AB%96%E7%9A%84%E6%BC%94%E5%8C%96%E7%B4%80%E9%8C%84stage-0-variant-%E8%A6%8F%E5%8A%83%E6%8A%8A-collapse-%E7%8E%87%E5%BE%9E-60-%E9%99%8D%E5%88%B0-0/" data-link-title="Migration Playbook 方法論的演化紀錄：Stage 0 variant 規劃把 collapse 率從 60% 降到 0%" data-link-desc="跨 vendor migration playbook 需要獨立寫作方法論的依據，以及這套方法論從三輪 batch dogfood 中演化出來的驗證證據。">Migration playbook methodology</a></td>
          <td>具體 SOP — 本卡 update 段引用的 5 篇 migration playbook batch 是該 methodology 的 dogfood、partial collapse 案例都在那批</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>連讀同 batch 3-5 篇後、感覺「節奏一樣」</td>
          <td>Cadence 同質化、跑跨檔抽樣對照確認</td>
      </tr>
      <tr>
          <td>段末收尾語在 batch 內出現率 &gt; 60%</td>
          <td>收尾語模板化、改寫部分檔的收尾</td>
      </tr>
      <tr>
          <td>段首句句型在 batch 內反覆出現</td>
          <td>段首模板化、補 framing 變體</td>
      </tr>
      <tr>
          <td>批量 ≥ 5 篇但寫作前沒準備 framing 變體</td>
          <td>預設會同質化、補 pilot 階段 3 種變體</td>
      </tr>
      <tr>
          <td>Reviewer 報告沒提到「cadence」字眼</td>
          <td>Reviewer prompt 沒明示跨檔 frame、要補</td>
      </tr>
      <tr>
          <td>「四件事 / 三點 / 兩個 trade-off」反覆出現</td>
          <td>列表收尾結構模板化、改用敘事段或重組視角</td>
      </tr>
      <tr>
          <td>想拿 batch 內某一篇當下次寫作參考</td>
          <td>警訊 — 該篇 cadence 可能會被複製到下批、應準備變體再起筆</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：模板不只是內容欄位的模板、cadence / 句型骨架 / 收尾語也是。批量寫作前準備 framing 變體、寫作中跨檔抽樣對照、不要等 batch 完成後 reviewer 才發現連讀預期化。</p>
]]></content:encoded></item><item><title>多重硬規範同時生效會把 cadence 推向便利解</title><link>https://tarrragon.github.io/blog/report/compliance-optimum-converges-cadence/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/compliance-optimum-converges-cadence/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>多個 constraint 同時 enforce、批量寫作就會把 cadence 收斂到「最便利合規解」。這不是違規、是 &lt;em>合規最佳解的副作用&lt;/em>。&lt;/p>
&lt;p>機制：&lt;/p>
&lt;ol>
&lt;li>N 個硬 constraint 同時 enforce（章節結構 / 表格深化 / 行數範圍 / lint 規則 / frontmatter 完整）&lt;/li>
&lt;li>寫第一篇時 Claude 找到一個 framing 同時滿足所有 N 個 constraint&lt;/li>
&lt;li>寫第二篇起、複製這個 framing 是 &lt;em>合規 + 省 token + 風險最低&lt;/em> 的選擇&lt;/li>
&lt;li>51 篇後、cadence 已經 collapse 到一個 framing、雖然每篇都合規&lt;/li>
&lt;/ol>
&lt;p>backend/07 案例：「11 章節 + 表格延伸段 + 130-160 行 + 零 emoji + 案例回寫」5 個 constraint 同時 enforce 下、「四件事 → 任一缺失就是 X 邊界的待補項目」是合規最便利 framing。51/51 都用了。&lt;/p>
&lt;hr>
&lt;h2 id="constraint-越多cadence-收斂越快">Constraint 越多、cadence 收斂越快&lt;/h2>
&lt;p>關鍵直覺：constraint 是 &lt;em>過濾器&lt;/em>、constraint 越多、能通過所有過濾器的 framing 種類就越少；批量寫作下、Claude 會選 &lt;em>第一個發現的可行 framing&lt;/em> 並複製。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Constraint 數&lt;/th>
 &lt;th>可通過的 framing 種類&lt;/th>
 &lt;th>批量同質化風險&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>0-1（自由寫）&lt;/td>
 &lt;td>幾乎無限&lt;/td>
 &lt;td>低&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>2-3&lt;/td>
 &lt;td>多種&lt;/td>
 &lt;td>中&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>4-5&lt;/td>
 &lt;td>幾種&lt;/td>
 &lt;td>高&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>6+&lt;/td>
 &lt;td>1-2 種&lt;/td>
 &lt;td>極高、不可避免&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這跟 over-constraint 設計問題同骨：要求越具體、解空間越小、批量後解就會集中到少數幾個。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼這個-attractor-規範擋不住">為什麼這個 attractor 規範擋不住&lt;/h2>
&lt;p>對應「為什麼 cadence 維度 &lt;a href="../cadence-homogenization-in-batch-writing/">#122&lt;/a> 失守」、本卡是 &lt;em>機制側&lt;/em> 解釋：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>每篇單看都合規&lt;/strong>：constraint 設計成「單檔通過 / 不通過」、沒有「跨檔 framing 變異性」這個 constraint、所以 single-file lint 永遠 pass&lt;/li>
&lt;li>&lt;strong>複製是 Claude 的 cost optimum&lt;/strong>：批量第 N 篇複製第 1 篇骨架 = 最少新 token、最少 risk、最快輸出；除非有反向壓力、預設行為就是複製&lt;/li>
&lt;li>&lt;strong>規範本身鼓勵「找一個都過的 framing」&lt;/strong>：要求章節齊全 + 表格深化、Claude 自然會收斂到「對所有 vendor 都適用」的 framing；越通用的 framing、cadence 越單一&lt;/li>
&lt;/ul>
&lt;p>「對所有 vendor 都適用」跟「對每個 vendor 都到位」是兩件事 — 通用 framing 不會錯、但會 &lt;em>只到位最小公分母&lt;/em>。批量寫作下、最小公分母 framing 大量複製就是 cadence 同質化。&lt;/p>
&lt;hr>
&lt;h2 id="對策拉開-constraint-或加-anti-template-constraint">對策：拉開 constraint 或加 anti-template constraint&lt;/h2>
&lt;p>兩條互補路徑：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>路徑&lt;/th>
 &lt;th>做法&lt;/th>
 &lt;th>取捨&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>拉開 constraint&lt;/td>
 &lt;td>允許 framing 多樣（如「11 章節結構必、但章節內部敘事不限定 frame」）&lt;/td>
 &lt;td>失去部分一致性、換來 cadence 多樣性&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>加 anti-template constraint&lt;/td>
 &lt;td>在硬規範裡列「同 batch 內 framing 變體至少 3 種」、「段首句句型分佈」&lt;/td>
 &lt;td>規範複雜度上升、執行需要跨檔抽樣機制&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Pilot phase 強制&lt;/td>
 &lt;td>寫前 3 篇時刻意產出 3 種不同 framing、其他篇從這 3 種輪替&lt;/td>
 &lt;td>前期成本上升、批量整體成本平攤後仍便宜&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>切小 batch + frame 變更&lt;/td>
 &lt;td>每 ≤ 10 篇換一次 dominant frame、不要一個 batch 寫 51 篇&lt;/td>
 &lt;td>批次數上升、單批 review 成本下降&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>實務 default：&lt;strong>Pilot phase 強制 + 加 anti-template constraint&lt;/strong>。先在 pilot 階段準備變體、再用規範要求跨檔抽樣、雙層防護。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>多個 constraint 同時 enforce、批量寫作就會把 cadence 收斂到「最便利合規解」。這不是違規、是 <em>合規最佳解的副作用</em>。</p>
<p>機制：</p>
<ol>
<li>N 個硬 constraint 同時 enforce（章節結構 / 表格深化 / 行數範圍 / lint 規則 / frontmatter 完整）</li>
<li>寫第一篇時 Claude 找到一個 framing 同時滿足所有 N 個 constraint</li>
<li>寫第二篇起、複製這個 framing 是 <em>合規 + 省 token + 風險最低</em> 的選擇</li>
<li>51 篇後、cadence 已經 collapse 到一個 framing、雖然每篇都合規</li>
</ol>
<p>backend/07 案例：「11 章節 + 表格延伸段 + 130-160 行 + 零 emoji + 案例回寫」5 個 constraint 同時 enforce 下、「四件事 → 任一缺失就是 X 邊界的待補項目」是合規最便利 framing。51/51 都用了。</p>
<hr>
<h2 id="constraint-越多cadence-收斂越快">Constraint 越多、cadence 收斂越快</h2>
<p>關鍵直覺：constraint 是 <em>過濾器</em>、constraint 越多、能通過所有過濾器的 framing 種類就越少；批量寫作下、Claude 會選 <em>第一個發現的可行 framing</em> 並複製。</p>
<table>
  <thead>
      <tr>
          <th>Constraint 數</th>
          <th>可通過的 framing 種類</th>
          <th>批量同質化風險</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>0-1（自由寫）</td>
          <td>幾乎無限</td>
          <td>低</td>
      </tr>
      <tr>
          <td>2-3</td>
          <td>多種</td>
          <td>中</td>
      </tr>
      <tr>
          <td>4-5</td>
          <td>幾種</td>
          <td>高</td>
      </tr>
      <tr>
          <td>6+</td>
          <td>1-2 種</td>
          <td>極高、不可避免</td>
      </tr>
  </tbody>
</table>
<p>這跟 over-constraint 設計問題同骨：要求越具體、解空間越小、批量後解就會集中到少數幾個。</p>
<hr>
<h2 id="為什麼這個-attractor-規範擋不住">為什麼這個 attractor 規範擋不住</h2>
<p>對應「為什麼 cadence 維度 <a href="../cadence-homogenization-in-batch-writing/">#122</a> 失守」、本卡是 <em>機制側</em> 解釋：</p>
<ul>
<li><strong>每篇單看都合規</strong>：constraint 設計成「單檔通過 / 不通過」、沒有「跨檔 framing 變異性」這個 constraint、所以 single-file lint 永遠 pass</li>
<li><strong>複製是 Claude 的 cost optimum</strong>：批量第 N 篇複製第 1 篇骨架 = 最少新 token、最少 risk、最快輸出；除非有反向壓力、預設行為就是複製</li>
<li><strong>規範本身鼓勵「找一個都過的 framing」</strong>：要求章節齊全 + 表格深化、Claude 自然會收斂到「對所有 vendor 都適用」的 framing；越通用的 framing、cadence 越單一</li>
</ul>
<p>「對所有 vendor 都適用」跟「對每個 vendor 都到位」是兩件事 — 通用 framing 不會錯、但會 <em>只到位最小公分母</em>。批量寫作下、最小公分母 framing 大量複製就是 cadence 同質化。</p>
<hr>
<h2 id="對策拉開-constraint-或加-anti-template-constraint">對策：拉開 constraint 或加 anti-template constraint</h2>
<p>兩條互補路徑：</p>
<table>
  <thead>
      <tr>
          <th>路徑</th>
          <th>做法</th>
          <th>取捨</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>拉開 constraint</td>
          <td>允許 framing 多樣（如「11 章節結構必、但章節內部敘事不限定 frame」）</td>
          <td>失去部分一致性、換來 cadence 多樣性</td>
      </tr>
      <tr>
          <td>加 anti-template constraint</td>
          <td>在硬規範裡列「同 batch 內 framing 變體至少 3 種」、「段首句句型分佈」</td>
          <td>規範複雜度上升、執行需要跨檔抽樣機制</td>
      </tr>
      <tr>
          <td>Pilot phase 強制</td>
          <td>寫前 3 篇時刻意產出 3 種不同 framing、其他篇從這 3 種輪替</td>
          <td>前期成本上升、批量整體成本平攤後仍便宜</td>
      </tr>
      <tr>
          <td>切小 batch + frame 變更</td>
          <td>每 ≤ 10 篇換一次 dominant frame、不要一個 batch 寫 51 篇</td>
          <td>批次數上升、單批 review 成本下降</td>
      </tr>
  </tbody>
</table>
<p>實務 default：<strong>Pilot phase 強制 + 加 anti-template constraint</strong>。先在 pilot 階段準備變體、再用規範要求跨檔抽樣、雙層防護。</p>
<p>Dogfood 驗證見 <a href="../cadence-homogenization-in-batch-writing/#dogfood-evidence-2026-05-18-n4-sub-threshold-%e9%a9%97%e8%ad%89">#122 cadence 同質化</a> — 4 篇 deep article batch 用 <em>pilot phase 4 種 variant</em> 取代「事後 polish」、cadence collapse 從前批 100% 降到 0%、修正成本省 ~10 倍。本卡的「拉開 constraint」對策獲實證。</p>
<hr>
<h2 id="不是只發生在寫作">不是只發生在「寫作」</h2>
<p>同骨機制在其他批量產出任務上也成立：</p>
<ul>
<li><strong>Code generation</strong>：用同一 LLM 一次生 N 個 service 的 boilerplate、結構會收斂到同一 framing（同樣的 error handling pattern、同樣的 log 格式）</li>
<li><strong>Test case 批量寫</strong>：N 個 unit test 都用同一個 setup-act-assert framing、覆蓋面看似齊但其實只測一種 axis</li>
<li><strong>API doc 批量寫</strong>：N 個 endpoint doc 都用同一段「方法 / 參數 / 回傳」三段式、抓不到 endpoint-specific 邊界</li>
</ul>
<p>這些都是 constraint 設計的 collapse — 只是發生在不同 surface。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>規範堆疊不評估 attractor 副作用</td>
          <td>Constraint 越多 cadence 越單一、規範自身成為同質化 root cause</td>
      </tr>
      <tr>
          <td>認為「合規 = 品質」</td>
          <td>51 篇都合規但連讀預期化、合規是必要不充分</td>
      </tr>
      <tr>
          <td>批量寫作不切 batch、一次寫 50+ 檔</td>
          <td>Cadence collapse 風險最大、修正成本 N 倍</td>
      </tr>
      <tr>
          <td>發現同質化後加更多 constraint</td>
          <td>Over-constraint、解空間更窄、cadence 反而更收斂</td>
      </tr>
      <tr>
          <td>Pilot phase 跳過、直接寫批量</td>
          <td>沒準備變體、第一篇 framing 自動成 dominant</td>
      </tr>
      <tr>
          <td>把 cadence 問題歸因「Claude 偷懶」、不是 constraint 設計問題</td>
          <td>換 model 還是會發生、根因在 constraint 設計、不是執行者</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../cadence-homogenization-in-batch-writing/">#122 Cadence 同質化是模板的隱形維度</a></td>
          <td>Sibling — #122 是 <em>症狀</em> 卡（cadence 同質化是模板）、本卡是 <em>機制</em> 卡（為什麼會發生）；兩張一起讀</td>
      </tr>
      <tr>
          <td><a href="../ease-of-writing-vs-intent-alignment/">#67 寫作便利度跟意圖對齊反相關</a></td>
          <td>本卡是 #67 在「批量產出」的具體機制；複製合規 framing 最便利、跨檔意圖對齊失準</td>
      </tr>
      <tr>
          <td><a href="../single-source-of-truth/">#44 Single Source of Truth</a></td>
          <td>互補 — SSoT 處理「值的住址只能一處」、本卡處理「framing 的住址不能只有一處」；兩者是 SSoT vs anti-SSoT 的不同 surface</td>
      </tr>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td>本卡是 #82 在 constraint 設計的具體 case — 字面合規（章節 / 表格 / 行數）+ 行為失準（cadence 同質）</td>
      </tr>
      <tr>
          <td><a href="../capability-gap-three-layer-escalation/">#86 Capability gap 三層對策階梯</a></td>
          <td>互補 — 同質化問題不該只用 L1（提醒 Claude 變化）、要 L2（pilot phase）或 L3（規範擴寫 anti-template）</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>規範條目 ≥ 5 條且 enforce 同一檔</td>
          <td>評估 attractor 風險、是否該拉開或加 anti-template constraint</td>
      </tr>
      <tr>
          <td>一個 batch 計畫寫 ≥ 10 個同類檔</td>
          <td>切小 batch、或加 pilot phase 強制變體</td>
      </tr>
      <tr>
          <td>Pilot phase 只寫 1-2 個就進批量</td>
          <td>沒準備 framing 變體、預設會 collapse</td>
      </tr>
      <tr>
          <td>想再加新 constraint 解決品質問題</td>
          <td>警訊 — 加多會更 collapse、考慮拉開或換層</td>
      </tr>
      <tr>
          <td>Review 報告說「都合規」</td>
          <td>不夠、加跨檔 cadence 抽樣 frame</td>
      </tr>
      <tr>
          <td>批量寫完 reviewer 才發現同質化</td>
          <td>Review 時機太晚、改 stage 內抽樣</td>
      </tr>
      <tr>
          <td>想複用上批 framing 寫下批</td>
          <td>警訊 — 復用 dominant framing 會把同質化跨 batch 擴散</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：多重硬規範同時生效時、cadence 收斂到合規最便利解是預設行為、不是違規。對策不是加更多 constraint、是拉開 constraint 或強制 pilot phase 準備變體；規範設計時要評估 attractor 副作用、不是只看「單檔有沒有過」。</p>
]]></content:encoded></item><item><title>Emergence-class 違規規則化不了、要 stage 0 變體規劃 + stage 內抽樣兩層</title><link>https://tarrragon.github.io/blog/report/emergence-violations-need-in-stream-sampling/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/emergence-violations-need-in-stream-sampling/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>違規類型決定 enforcement &lt;em>時機 + 機制&lt;/em>。把所有違規都丟給 batch 完成後的 reviewer 是錯的；同樣錯的是 &lt;em>只靠生成中抽樣&lt;/em>、沒有 stage 0 的主動變體規劃。Emergence 違規需要 &lt;em>兩層防護&lt;/em>：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>Stage 0 主動設計層&lt;/strong>：寫批量前列 N 種 framing variant、分配給對應主題；這層決定 &lt;em>cadence 是否錯開的根因&lt;/em>&lt;/li>
&lt;li>&lt;strong>Stage 內被動監測層&lt;/strong>：生成中抽樣 audit、發現 collapse 立即修方向；這層 &lt;em>偵測&lt;/em> 而不是 &lt;em>設計&lt;/em>&lt;/li>
&lt;/ul>
&lt;p>兩層缺一不可：跳過 stage 0、被動抽樣不會自動發現 &lt;em>主題語意 attractor&lt;/em>（相似主題天然引出的 framing collapse、見 &lt;a href="../cadence-homogenization-in-batch-writing/">#122 cadence 同質化&lt;/a> Update 段定義；migration playbook 3/5 collapse 即此實證、見本卡「Update: 被動寫作下&amp;hellip;」段）；跳過 stage 內抽樣、stage 0 設計可能在中途 drift 沒被 catch。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>違規類型&lt;/th>
 &lt;th>識別形式&lt;/th>
 &lt;th>Enforcement 時機&lt;/th>
 &lt;th>工具&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>字面違規&lt;/td>
 &lt;td>單檔可 regex 偵測（emoji、裸 URL、粗體當標題）&lt;/td>
 &lt;td>Pre-commit / pre-push&lt;/td>
 &lt;td>mdtools / regex hook&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>結構違規&lt;/td>
 &lt;td>單檔可機制偵測（章節缺失、frontmatter 必填、broken link）&lt;/td>
 &lt;td>Linter / build&lt;/td>
 &lt;td>mdtools lint&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Emergence 違規&lt;/td>
 &lt;td>跨檔比對才偵測（cadence 同質化、語氣漂移、frame 重複）&lt;/td>
 &lt;td>&lt;strong>Stage 0 設計 + Stage 內監測 兩層&lt;/strong>&lt;/td>
 &lt;td>Stage 0 variant 規劃 + 寫作流程內 checkpoint、不是 hook&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>backend/07 案例對照：51 個 vendor 字面違規 0、結構違規 0、emergence 違規（cadence 同質化）51/51；後者三個 reviewer 中只有一個 footnote 提到、是因為 reviewer 一次審 51 檔、emergence 訊號夠強才看出 — &lt;em>如果只審 5 檔、emergence 訊號還不夠強、會被漏掉&lt;/em>。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼-emergence-class-違規規則化不了">為什麼 emergence-class 違規規則化不了&lt;/h2>
&lt;p>字面違規可以寫成 regex（&lt;code>rg &amp;quot;✅|❌&amp;quot;&lt;/code>）、結構違規可以寫成 grammar 規則（章節必須有 N 個 H2）。Emergence 違規的特徵：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>跨檔才能偵測&lt;/strong>：單檔 cadence 沒問題、N 檔 cadence 對齊才是違規&lt;/li>
&lt;li>&lt;strong>規則化會 over-fit&lt;/strong>：寫「段末不可用『四件事任一缺失』」會把這句正常用法也擋掉；寫「段首句句型分佈要 ≥ 3 種」需要先語法剖析、複雜度爆炸&lt;/li>
&lt;li>&lt;strong>訊號隨樣本數變化&lt;/strong>：5 檔比對訊號弱、50 檔比對訊號強；linter 沒有「批次」概念、只看單檔&lt;/li>
&lt;li>&lt;strong>跟風格邊界模糊&lt;/strong>：cadence 一致 vs cadence 同質、之間是漸層、threshold 因領域而異&lt;/li>
&lt;/ol>
&lt;p>結論：emergence 違規不能靠 hook / linter / 字面規則攔、只能靠 &lt;em>流程設計&lt;/em> 在生成中 trigger 抽樣 review。&lt;/p>
&lt;hr>
&lt;h2 id="stage-內抽樣的設計">Stage 內抽樣的設計&lt;/h2>
&lt;p>對 &lt;a href="https://tarrragon.github.io/blog/posts/case-first--agent-team-review%E6%95%99%E5%AD%B8%E5%85%A7%E5%AE%B9%E7%9A%84%E7%94%9F%E7%94%A2%E6%B5%81%E7%A8%8B/" data-link-title="Case-First &amp;#43; Agent Team Review：教學內容的生產流程" data-link-desc="Case-first &amp;#43; agent team review 的教學內容生產流程：讀案例庫抽 findings、專責 reviewer 平行審查、polish pass 收系統性殘留。防止通用 best practice 被誤包裝成案例揭露。">case-first-module-workflow&lt;/a> 補強：stage 2（內容生成）內部加入 cadence checkpoint、不要等 stage 3 reviewer 才發現。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>違規類型決定 enforcement <em>時機 + 機制</em>。把所有違規都丟給 batch 完成後的 reviewer 是錯的；同樣錯的是 <em>只靠生成中抽樣</em>、沒有 stage 0 的主動變體規劃。Emergence 違規需要 <em>兩層防護</em>：</p>
<ul>
<li><strong>Stage 0 主動設計層</strong>：寫批量前列 N 種 framing variant、分配給對應主題；這層決定 <em>cadence 是否錯開的根因</em></li>
<li><strong>Stage 內被動監測層</strong>：生成中抽樣 audit、發現 collapse 立即修方向；這層 <em>偵測</em> 而不是 <em>設計</em></li>
</ul>
<p>兩層缺一不可：跳過 stage 0、被動抽樣不會自動發現 <em>主題語意 attractor</em>（相似主題天然引出的 framing collapse、見 <a href="../cadence-homogenization-in-batch-writing/">#122 cadence 同質化</a> Update 段定義；migration playbook 3/5 collapse 即此實證、見本卡「Update: 被動寫作下&hellip;」段）；跳過 stage 內抽樣、stage 0 設計可能在中途 drift 沒被 catch。</p>
<table>
  <thead>
      <tr>
          <th>違規類型</th>
          <th>識別形式</th>
          <th>Enforcement 時機</th>
          <th>工具</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>字面違規</td>
          <td>單檔可 regex 偵測（emoji、裸 URL、粗體當標題）</td>
          <td>Pre-commit / pre-push</td>
          <td>mdtools / regex hook</td>
      </tr>
      <tr>
          <td>結構違規</td>
          <td>單檔可機制偵測（章節缺失、frontmatter 必填、broken link）</td>
          <td>Linter / build</td>
          <td>mdtools lint</td>
      </tr>
      <tr>
          <td>Emergence 違規</td>
          <td>跨檔比對才偵測（cadence 同質化、語氣漂移、frame 重複）</td>
          <td><strong>Stage 0 設計 + Stage 內監測 兩層</strong></td>
          <td>Stage 0 variant 規劃 + 寫作流程內 checkpoint、不是 hook</td>
      </tr>
  </tbody>
</table>
<p>backend/07 案例對照：51 個 vendor 字面違規 0、結構違規 0、emergence 違規（cadence 同質化）51/51；後者三個 reviewer 中只有一個 footnote 提到、是因為 reviewer 一次審 51 檔、emergence 訊號夠強才看出 — <em>如果只審 5 檔、emergence 訊號還不夠強、會被漏掉</em>。</p>
<hr>
<h2 id="為什麼-emergence-class-違規規則化不了">為什麼 emergence-class 違規規則化不了</h2>
<p>字面違規可以寫成 regex（<code>rg &quot;✅|❌&quot;</code>）、結構違規可以寫成 grammar 規則（章節必須有 N 個 H2）。Emergence 違規的特徵：</p>
<ol>
<li><strong>跨檔才能偵測</strong>：單檔 cadence 沒問題、N 檔 cadence 對齊才是違規</li>
<li><strong>規則化會 over-fit</strong>：寫「段末不可用『四件事任一缺失』」會把這句正常用法也擋掉；寫「段首句句型分佈要 ≥ 3 種」需要先語法剖析、複雜度爆炸</li>
<li><strong>訊號隨樣本數變化</strong>：5 檔比對訊號弱、50 檔比對訊號強；linter 沒有「批次」概念、只看單檔</li>
<li><strong>跟風格邊界模糊</strong>：cadence 一致 vs cadence 同質、之間是漸層、threshold 因領域而異</li>
</ol>
<p>結論：emergence 違規不能靠 hook / linter / 字面規則攔、只能靠 <em>流程設計</em> 在生成中 trigger 抽樣 review。</p>
<hr>
<h2 id="stage-內抽樣的設計">Stage 內抽樣的設計</h2>
<p>對 <a href="/blog/posts/case-first--agent-team-review%E6%95%99%E5%AD%B8%E5%85%A7%E5%AE%B9%E7%9A%84%E7%94%9F%E7%94%A2%E6%B5%81%E7%A8%8B/" data-link-title="Case-First &#43; Agent Team Review：教學內容的生產流程" data-link-desc="Case-first &#43; agent team review 的教學內容生產流程：讀案例庫抽 findings、專責 reviewer 平行審查、polish pass 收系統性殘留。防止通用 best practice 被誤包裝成案例揭露。">case-first-module-workflow</a> 補強：stage 2（內容生成）內部加入 cadence checkpoint、不要等 stage 3 reviewer 才發現。</p>
<table>
  <thead>
      <tr>
          <th>寫作進度</th>
          <th>Checkpoint 動作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第 1-3 篇</td>
          <td>刻意產出 3 種不同 framing 變體（pilot phase）、人類 / Claude 自審「這 3 篇 cadence 是否真不同」</td>
      </tr>
      <tr>
          <td>第 5 篇</td>
          <td>抽 5 個段首句並列、確認 framing 變體仍在輪替、沒有 collapse 到 dominant</td>
      </tr>
      <tr>
          <td>第 10 篇</td>
          <td>抽 10 個段末收尾語並列、確認收尾語句型分佈 ≥ 3 種</td>
      </tr>
      <tr>
          <td>每 + 10 篇</td>
          <td>重複上述抽樣、發現 collapse 立即回頭加變體、不要繼續寫</td>
      </tr>
      <tr>
          <td>Batch 結束前</td>
          <td>全 batch 跨檔 cadence audit、確認 framing 分佈</td>
      </tr>
  </tbody>
</table>
<p>關鍵：抽樣不是「Reviewer 在 batch 完成後跑」、是「寫作者在生成中跑」。寫第 5 篇之前先回頭看前 5 篇、發現問題就在第 5 篇修方向、不是寫完 50 篇才回頭改 50 個。</p>
<h3 id="dogfood-evidence-2026-05-18n4-sub-threshold-驗證">Dogfood evidence (2026-05-18、N=4 sub-threshold 驗證)</h3>
<p>本卡浮現後立即跑 4 篇 deep article 小批量 dogfood、用 <em>寫作中抽樣 + pilot phase variant</em> 取代 batch 後 reviewer：</p>
<table>
  <thead>
      <tr>
          <th>Checkpoint 位置</th>
          <th>動作</th>
          <th>結果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第 1 篇寫完</td>
          <td>確認自然 framing（標準問題情境）</td>
          <td>OK、為第 2 篇 variant 比對 baseline</td>
      </tr>
      <tr>
          <td>第 2 篇寫前</td>
          <td>主動換 variant（痛點宣告 case-led）</td>
          <td>段首句骨架明顯異於第 1 篇</td>
      </tr>
      <tr>
          <td>第 3 篇寫前</td>
          <td>第三種 variant（概念反向定義）</td>
          <td>三種骨架完全錯開</td>
      </tr>
      <tr>
          <td>第 4 篇寫前</td>
          <td>第四種 variant（對照表驅動）+ 抽前 3 篇章節 1 entry sample audit</td>
          <td>四種骨架完全錯開、過渡詞密度 0、cadence 「任一缺失」族 0 hits</td>
      </tr>
  </tbody>
</table>
<p>對照前批 backend/07 51 vendor（無寫作中 checkpoint）：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>backend/07 51 vendor（batch 後才 review）</th>
          <th>deep article 4 篇（生成中抽樣）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>修正成本</td>
          <td>~30-60 分鐘 polish 51 處</td>
          <td>~5 分鐘 / 篇前規劃 + 0 polish</td>
      </tr>
      <tr>
          <td>Cadence collapse 比例</td>
          <td>51/51 (100%)</td>
          <td>0/4 (0%)</td>
      </tr>
      <tr>
          <td>發現 collapse 時的 sample 數</td>
          <td>51（已寫完才發現）</td>
          <td>1-3（生成中即時調方向）</td>
      </tr>
  </tbody>
</table>
<p>兩個驗證：</p>
<ol>
<li><strong>Stage 內抽樣在 sub-threshold N=4 仍有效</strong>：原本 checkpoint 表格寫第 5 / 10 篇抽樣、預設批量 ≥ 5；實測 <em>寫每篇前都做一次 entry framing variant check</em> 在 N=4 也能完全錯開 cadence</li>
<li><strong>生成中抽樣的邊際成本 &laquo; batch 後 polish 成本</strong>：每篇前 ~1-2 分鐘 cadence check vs batch 後修 51 處 ~30-60 分鐘 — 比例 ~10-15 倍。本卡論斷「修正成本 N 倍」獲實證</li>
</ol>
<h3 id="update-n5-full-threshold-checkpoint-排程驗證">Update: N=5 full-threshold checkpoint 排程驗證</h3>
<p>第一次 N=4 後立即跑 N=5 full-threshold batch（5 篇 PostgreSQL sub-tool）、驗證 checkpoint 排程在 ≥ 5 真實閾值的表現：</p>
<table>
  <thead>
      <tr>
          <th>Checkpoint 位置</th>
          <th>N=4 batch 動作</th>
          <th>N=5 batch 動作</th>
          <th>結果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第 1 篇寫完（20%）</td>
          <td>確認 baseline framing</td>
          <td>確認 baseline framing（lifecycle）</td>
          <td>OK、N=5 抽樣訊號比 N=4 略強</td>
      </tr>
      <tr>
          <td>第 2 篇寫前（20%）</td>
          <td>主動換 variant</td>
          <td>主動換 variant（pain-driven）</td>
          <td>兩種 framing 對照成立</td>
      </tr>
      <tr>
          <td>第 3 篇寫前（40-60%）</td>
          <td>第三種 variant</td>
          <td>第三種 variant（concept-reversed）</td>
          <td>三種對照、cadence drift 機率變大</td>
      </tr>
      <tr>
          <td>第 4 篇寫前（60-80%）</td>
          <td>第四種 variant + 抽前 3 篇 audit</td>
          <td>第四種 variant（table-driven）+ 抽前 3 篇 entry sample audit</td>
          <td>四種對照、確認 framing 不耗盡</td>
      </tr>
      <tr>
          <td>第 5 篇寫前（80%）</td>
          <td>-</td>
          <td>第五種 variant（standard 6-section）+ 抽前 4 篇 audit</td>
          <td>五種對照、進度 80% audit 信號最強</td>
      </tr>
      <tr>
          <td>批次完成（100%）</td>
          <td>全 batch 跨檔 cadence audit</td>
          <td>全 batch 跨檔 cadence audit</td>
          <td>N=5 audit 樣本大、訊號更強</td>
      </tr>
  </tbody>
</table>
<p>兩批對照：</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>N=4 batch（跨 vendor）</th>
          <th>N=5 batch（同 vendor sub-tool 系列）</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>修正成本 / 篇前規劃</td>
          <td>~5 分鐘 / 篇</td>
          <td>~5 分鐘 / 篇（不變）</td>
      </tr>
      <tr>
          <td>Cadence collapse 比例</td>
          <td>0/4 (0%)</td>
          <td>0/5 (0%)</td>
      </tr>
      <tr>
          <td>進度 20% (1 篇後) 抽樣可發現性</td>
          <td>訊號弱（1 樣本）</td>
          <td>訊號弱（仍 1 樣本）</td>
      </tr>
      <tr>
          <td>進度 80% (4 篇後) 抽樣可發現性</td>
          <td>訊號強（4 對照）</td>
          <td>訊號更強（4 對照 + 進入第 5 篇）</td>
      </tr>
      <tr>
          <td>同 vendor 共同 context 影響</td>
          <td>較低（4 篇跨 vendor）</td>
          <td>高（5 篇同 vendor、collapse 風險最高）</td>
      </tr>
  </tbody>
</table>
<p>額外驗證：</p>
<ol start="3">
<li><strong>進度 10-20% 抽樣訊號偏弱、80% 抽樣最強</strong>：N=5 batch 確認 <em>進度 80% audit</em> 是 emergence 訊號最強位置；原 principle 寫「進度 10-20% 抽樣」是過早、實際 <em>寫前 variant 規劃 + 進度 60-80% audit</em> 組合更穩</li>
<li><strong>同 vendor 同 type 是 collapse 最高風險、checkpoint 仍 cover</strong>：N=5 batch 共同 context 比 N=4 多（同 vendor / 同 audience / 同 article type）、本卡論斷 emergence 風險 = 共同 context × N 成立；checkpoint 設計能 cover 是因為 <em>variant 規劃在 stage 0</em>、不靠 sample size 補</li>
</ol>
<h3 id="update-被動寫作下-stage-internal-checkpoint-仍失效">Update: 被動寫作下 stage-internal checkpoint 仍失效</h3>
<p>第三輪 5 篇 migration playbook 中 <em>前 3 篇被動寫作</em>（沒主動規劃 variant）— stage-internal checkpoint 雖然按時 fired、但因為 <em>沒 variant 預先準備</em>、checkpoint 看到的「不同主題」誤以為 framing 會自然錯開、實際 collapse 到「為什麼遷：X/Y/Z driver」格式：</p>
<table>
  <thead>
      <tr>
          <th>進度</th>
          <th>Checkpoint 觸發</th>
          <th>看到的訊號</th>
          <th>行動</th>
          <th>結果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第 1 篇</td>
          <td>baseline 確認</td>
          <td>「為什麼遷：cost / multi-vendor / cloud-native」</td>
          <td>沒設變體規劃</td>
          <td>第 2 篇預設複製 framing</td>
      </tr>
      <tr>
          <td>第 2 篇</td>
          <td>應該抽樣 audit</td>
          <td>跟第 1 篇都「為什麼遷 X/Y/Z」</td>
          <td><strong>被動接受、認為主題不同就 OK</strong></td>
          <td>第 3 篇也複製</td>
      </tr>
      <tr>
          <td>第 3 篇</td>
          <td>應該抽樣 audit</td>
          <td>連續 3 篇相同 framing</td>
          <td><strong>發現問題、決定後 2 篇換 variant</strong></td>
          <td>後 2 篇主動 variant、cadence 部分挽救</td>
      </tr>
      <tr>
          <td>第 4 篇</td>
          <td>active variant</td>
          <td>cost-driven entry、跟前 3 篇骨架不同</td>
          <td>持續 variant</td>
          <td>OK</td>
      </tr>
      <tr>
          <td>第 5 篇</td>
          <td>active variant</td>
          <td>paradigm contrast entry</td>
          <td>全 batch audit</td>
          <td>3/5 collapse、2/5 不同</td>
      </tr>
  </tbody>
</table>
<p>兩個關鍵 finding：</p>
<ol start="5">
<li><strong>Checkpoint 不夠、變體規劃才是 root</strong>：stage-internal checkpoint 確實 fire、但 <em>沒準備 variant</em> 時 checkpoint 變被動驗證、不是主動防護；本卡原論斷「checkpoint 取代 batch 後 reviewer」需修正為「checkpoint + 預先 variant 規劃 兩層」</li>
<li><strong>主題語意 attractor 是新失效源</strong>：N=5 batch 中前 3 篇都圍繞「為什麼換 vendor」、entry 自然 collapse 到 driver list；這個 attractor 比結構 constraint 更強、未來寫作要 <em>預先列 framing 變體</em> 而不是 <em>依賴 checkpoint 提醒換</em></li>
</ol>
<p>修正後的 Stage 內 checkpoint 排程（補 stage 0 變體規劃）：</p>
<table>
  <thead>
      <tr>
          <th>寫作進度</th>
          <th>Checkpoint 動作</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Stage 0（寫前）</strong></td>
          <td><strong>列 N 種 framing 變體 + 對應 N 篇主題分配</strong>（新增、原本缺失）</td>
      </tr>
      <tr>
          <td>第 1-3 篇（pilot phase）</td>
          <td>按 stage 0 分配執行、人類 / Claude 自審「實際 entry framing 跟 stage 0 規劃對齊嗎」</td>
      </tr>
      <tr>
          <td>第 5 篇</td>
          <td>抽 5 個段首句並列、確認 framing 變體仍在輪替</td>
      </tr>
      <tr>
          <td>第 10 篇</td>
          <td>抽 10 個段末收尾語並列、確認句型分佈 ≥ 3 種</td>
      </tr>
      <tr>
          <td>每 + 10 篇</td>
          <td>重複抽樣、發現 collapse 立即回頭加變體</td>
      </tr>
  </tbody>
</table>
<p>關鍵：<em>Stage 0 變體規劃是必要 step</em>、不能跳；checkpoint 是 <em>監測</em> 工具、不是 <em>設計</em> 工具。</p>
<p>詳細 SOP 跟 5 種 type 的具體應用見 <a href="/blog/posts/migration-playbook-%E6%96%B9%E6%B3%95%E8%AB%96%E7%9A%84%E6%BC%94%E5%8C%96%E7%B4%80%E9%8C%84stage-0-variant-%E8%A6%8F%E5%8A%83%E6%8A%8A-collapse-%E7%8E%87%E5%BE%9E-60-%E9%99%8D%E5%88%B0-0/" data-link-title="Migration Playbook 方法論的演化紀錄：Stage 0 variant 規劃把 collapse 率從 60% 降到 0%" data-link-desc="跨 vendor migration playbook 需要獨立寫作方法論的依據，以及這套方法論從三輪 batch dogfood 中演化出來的驗證證據。">Migration playbook methodology</a> — 該 methodology 從 5 篇 migration playbook batch 抽出 stage 0 variant 規劃流程、本卡的「checkpoint 不夠」訊號是該流程的觸發實證。</p>
<h3 id="update2026-05-19第二輪-migration-batch-全主動-variant-驗證">Update（2026-05-19）：第二輪 migration batch 全主動 variant 驗證</h3>
<p>第二輪 migration batch（5 篇）寫前主動列 5 種 entry framing variant、cadence audit 結果 0/5 collapse；跟第一輪 3/5 collapse 對照、唯一差異是 <em>variant 規劃完整度</em>：</p>
<table>
  <thead>
      <tr>
          <th>批次</th>
          <th>Sample</th>
          <th>Variant 規劃</th>
          <th>Stage-internal checkpoint 結果</th>
          <th>Collapse rate</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>第一輪（混合）</td>
          <td>N=5</td>
          <td>前 3 篇被動、後 2 篇主動</td>
          <td>被動段 checkpoint 失效</td>
          <td>3/5 (60%)</td>
      </tr>
      <tr>
          <td>第二輪（全主動）</td>
          <td>N=5</td>
          <td>寫前列 5 種 variant、執行對應</td>
          <td>Checkpoint 監測通過</td>
          <td>0/5 (0%)</td>
      </tr>
  </tbody>
</table>
<p>第二輪確認本卡核心論斷：</p>
<ol start="5">
<li><strong>Checkpoint + Stage 0 兩層在全主動下成功</strong>：第二輪 5 篇 stage 0 全列 variant、checkpoint 監測無 collapse alarm、最終 audit 0/5；證實兩層防護在 <em>都執行</em> 下達成 principle 目標</li>
<li><strong>Stage 0 規劃的標準動作</strong>：第二輪 stage 0 動作為「列 5 種 distinct entry framing 候選、對應 5 篇主題分配」— 不是「想到才換」、是 <em>寫第一篇前就完成</em> 的設計步驟</li>
<li><strong>主題相似性不會自動解決 cadence</strong>：第二輪 5 篇都是 migration playbook、主題相似性跟第一輪一樣高；唯一差異是 stage 0 是否做、結果差 60% collapse vs 0% — 確認本卡論斷「checkpoint 不夠變體規劃才是 root」在 <em>主題相似性高</em> 場景下仍成立</li>
</ol>
<hr>
<h2 id="batch-完成後-reviewer-為什麼太晚">Batch 完成後 reviewer 為什麼太晚</h2>
<p>三個成本問題：</p>
<ol>
<li><strong>修正成本 N 倍</strong>：51 篇都同質化、修正要動 51 篇；如果第 5 篇就 catch、只動 5 篇</li>
<li><strong>Cadence 已內化成「正確答案」</strong>：寫完 50 篇後 Claude 已經把 dominant framing 視為「合規最佳解」、要打破比第 5 篇難</li>
<li><strong>Reviewer 訊號要求高樣本</strong>：5 檔不夠 emergence、50 檔才強訊號；但 50 檔出來時修正成本已經爆</li>
</ol>
<p>最佳時機：<em>Sample size 剛夠看出 emergence、且修正成本還可控</em> — 通常是 batch 內 10-20% 進度的位置（51 批量 → 第 5-10 篇）。</p>
<hr>
<h2 id="跟字面--結構違規的時機對照">跟字面 / 結構違規的時機對照</h2>
<p>字面違規（emoji）的 enforcement 鏈：</p>
<ul>
<li>寫作中：Claude 預設不寫 emoji（pre-trained behavior + system prompt）</li>
<li>Pre-commit：mdtools / regex hook 攔</li>
<li>CI：full lint sweep</li>
</ul>
<p>三層防護、字面違規幾乎不可能漏網。</p>
<p>結構違規（章節缺失）的 enforcement 鏈：</p>
<ul>
<li>寫作中：模板 / skeleton 提示</li>
<li>Pre-commit：lint 章節結構</li>
<li>Review：人類 / agent 看章節列表</li>
</ul>
<p>兩層機制、結構違規會被攔。</p>
<p>Emergence 違規目前的 enforcement：</p>
<ul>
<li>寫作中：<strong>無</strong>（cadence 沒提示）</li>
<li>Pre-commit：<strong>無</strong>（regex 攔不到）</li>
<li>Review：Stage 3 reviewer 可能漏（單 reviewer 視野有限）</li>
</ul>
<p>只有 stage 3 reviewer 這一層、且不可靠。本卡的修法是在「寫作中」這層加 stage 內抽樣。</p>
<hr>
<h2 id="不只是寫作emergence-違規的其他例子">不只是寫作：emergence 違規的其他例子</h2>
<table>
  <thead>
      <tr>
          <th>任務類型</th>
          <th>字面違規例</th>
          <th>結構違規例</th>
          <th>Emergence 違規例</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>寫作</td>
          <td>emoji / 裸 URL</td>
          <td>章節缺失 / frontmatter</td>
          <td>Cadence 同質化、語氣漂移、frame 重複</td>
      </tr>
      <tr>
          <td>Code review</td>
          <td>console.log / typo</td>
          <td>缺型別 / 缺 test</td>
          <td>抽象層級不一致、命名漂移、相似函式散落</td>
      </tr>
      <tr>
          <td>Schema 設計</td>
          <td>缺 NOT NULL / 缺 index</td>
          <td>缺 FK / 缺 unique</td>
          <td>命名慣例分裂、欄位順序不一致、表間關係風格不齊</td>
      </tr>
      <tr>
          <td>API doc</td>
          <td>拼字 / broken link</td>
          <td>缺參數說明 / 缺範例</td>
          <td>例子風格不一、術語使用漂移、章節長短差異懸殊</td>
      </tr>
  </tbody>
</table>
<p>三類違規對應三層 enforcement、不能混用工具。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>把 emergence 違規丟給 hook 解決</td>
          <td>Hook 抓不到、false confidence</td>
      </tr>
      <tr>
          <td>把 emergence 違規丟給 batch 完成後 reviewer</td>
          <td>修正成本 N 倍、cadence 已內化</td>
      </tr>
      <tr>
          <td>寫 batch 不在中段抽樣</td>
          <td>Emergence collapse 後才發現、無法即時修方向</td>
      </tr>
      <tr>
          <td>Reviewer prompt 不明示跨檔比對</td>
          <td>Reviewer 用單檔 frame 審 N 檔、emergence 漏抓</td>
      </tr>
      <tr>
          <td>把 cadence 抽樣只列在「Batch 結束前」</td>
          <td>太晚、跟「Reviewer batch 後跑」沒差</td>
      </tr>
      <tr>
          <td>規範裡寫「不可 cadence 同質化」但不提抽樣機制</td>
          <td>規範文字成立、執行落空</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td>本卡是 #82 的時機軸延伸 — #82 分字面 / 行為兩類、本卡分字面 / 結構 / emergence 三類並對應 enforcement 時機</td>
      </tr>
      <tr>
          <td><a href="../cadence-homogenization-in-batch-writing/">#122 Cadence 同質化是模板的隱形維度</a></td>
          <td>配對 — #122 定義違規類型、本卡解 enforcement 時機；兩張一起解 cadence 問題</td>
      </tr>
      <tr>
          <td><a href="../compliance-optimum-converges-cadence/">#123 多重硬規範同時生效會把 cadence 推向便利解</a></td>
          <td>配對 — #123 解釋成因（constraint 收斂）、本卡解 enforcement（時機 + 抽樣）</td>
      </tr>
      <tr>
          <td><a href="../verification-timeline-checkpoints/">#68 驗收的時間軸：四個 checkpoint</a></td>
          <td>同骨 pattern — #68 把驗收切「寫之前 / 開發中 / ship 前 / ship 後」、本卡把寫作 review 切時機；都是 enforcement 時機軸</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-scope-must-cover-risk-zone/">#95 Multi-pass review 的 scope 要蓋同類風險區</a></td>
          <td>補 timing 軸 — #95 是 scope（橫向）、本卡是 timing（縱向）；兩軸都要對齊才完整</td>
      </tr>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>補一條時機 — #83 把 multi-pass 描述成「N 輪 frame」、本卡點出「N 輪要分散在生成時間軸」、不是全集中 batch 後</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Hook / linter 全綠但批量讀完感覺品質下滑</td>
          <td>Emergence 違規、改 stage 內抽樣機制</td>
      </tr>
      <tr>
          <td>Reviewer 報告抓到大量同類問題且都集中在 batch 末段</td>
          <td>Review 時機太晚、移到生成中</td>
      </tr>
      <tr>
          <td>想加新 lint rule 解決 cadence 問題</td>
          <td>警訊 — regex 攔不到、改 stage 內抽樣</td>
      </tr>
      <tr>
          <td>同 batch 修正 PR 改動 ≥ 20% 檔</td>
          <td>Stage 3 才發現 emergence、預設下一批要加 stage 2 抽樣</td>
      </tr>
      <tr>
          <td>「寫完 N 篇後抽樣」的 N 跟 batch size 同數量級</td>
          <td>抽樣等於 batch 後 review、N 應該 ≤ batch size × 20%</td>
      </tr>
      <tr>
          <td>寫作流程沒有「checkpoint」概念</td>
          <td>Enforcement 缺生成中這層、emergence 違規會持續產生</td>
      </tr>
      <tr>
          <td>Reviewer 只跑單檔 frame</td>
          <td>跨檔 emergence 看不到、補 reviewer prompt 要求跨檔比對</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：違規分字面 / 結構 / emergence 三類、enforcement 時機要對應類型。Emergence 違規規則化不了、不能丟給 hook 或 batch 後 reviewer、要在生成中（batch 進度 10-20% 時）抽樣 catch；最佳時機是 emergence 訊號剛夠強、且修正成本還可控的位置。</p>
]]></content:encoded></item><item><title>寫作 review 是多軸完整性、不是單軸深度</title><link>https://tarrragon.github.io/blog/report/writing-review-multi-axis-completeness/</link><pubDate>Mon, 18 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/writing-review-multi-axis-completeness/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>寫作 review 完整性的本質是 &lt;em>多軸交集&lt;/em>、不是 &lt;em>單軸深度&lt;/em>。七個軸已經從前面卡片浮現、缺任一軸就會 systematic miss 對應類型的問題：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>軸&lt;/th>
 &lt;th>內容&lt;/th>
 &lt;th>缺失時的盲點&lt;/th>
 &lt;th>對應卡&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Frame 軸&lt;/strong>&lt;/td>
 &lt;td>一個 reviewer 跑 N 輪不同 frame（生成 / 意圖 / 機會成本 / grep / 反例）&lt;/td>
 &lt;td>結構 OK 但意圖 / 機會成本錯&lt;/td>
 &lt;td>&lt;a href="../writing-multi-pass-review/">#83&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Instance 軸&lt;/strong>&lt;/td>
 &lt;td>N 個 reviewer 各自獨立、不同維度&lt;/td>
 &lt;td>單 reviewer 處理多維度互相干擾、context 污染&lt;/td>
 &lt;td>&lt;a href="../agent-team-context-isolation/">#121&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Surface 軸&lt;/strong>&lt;/td>
 &lt;td>Body / title / description / heading / link label / MOC hook&lt;/td>
 &lt;td>Body 完美但 metadata 失準、搜尋入口失效&lt;/td>
 &lt;td>&lt;a href="../metadata-surface-in-writing-review/">#97&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Scope 軸&lt;/strong>&lt;/td>
 &lt;td>同類風險區（不是改動區）&lt;/td>
 &lt;td>抓不到 corpus 內既有同類違規&lt;/td>
 &lt;td>&lt;a href="../multi-pass-scope-must-cover-risk-zone/">#95&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Cadence 軸&lt;/strong>&lt;/td>
 &lt;td>跨檔 framing 一致性 / 句型骨架 / 收尾語&lt;/td>
 &lt;td>單篇合規、連讀預期化&lt;/td>
 &lt;td>&lt;a href="../cadence-homogenization-in-batch-writing/">#122&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Timing 軸&lt;/strong>&lt;/td>
 &lt;td>寫作中抽樣 vs batch 後 review&lt;/td>
 &lt;td>違規累積到 batch 末才發現、修正成本 N 倍&lt;/td>
 &lt;td>&lt;a href="../emergence-violations-need-in-stream-sampling/">#124&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Granularity 軸&lt;/strong>&lt;/td>
 &lt;td>規則 frame vs 字句層信號&lt;/td>
 &lt;td>規則 catch 結構違規、字句層（口語修辭 / 廢話前綴）漏抓&lt;/td>
 &lt;td>&lt;a href="../multi-pass-review-frame-granularity-blindspot/">#114&lt;/a>&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>七軸正交：每個軸獨立解一類盲點、不重疊；缺任一軸都會 systematic miss 對應類型問題。&lt;/p>
&lt;hr>
&lt;h2 id="為什麼是多軸不是單軸越做越深">為什麼是多軸、不是單軸越做越深&lt;/h2>
&lt;p>單軸越做越深的失敗模式：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Frame 軸跑 10 輪、不換 instance 軸&lt;/strong>：同一 reviewer 跑 10 輪、catch 的問題仍高度相關（#114 已點出）&lt;/li>
&lt;li>&lt;strong>Instance 軸開 10 個 reviewer、不換 frame 軸&lt;/strong>：10 個 reviewer 都跑「規則 check」這個 frame、catch 的盲點相同&lt;/li>
&lt;li>&lt;strong>Frame + Instance 都做、不管 Surface 軸&lt;/strong>：Body review 通過、但 title / description 沒被審、搜尋入口失效&lt;/li>
&lt;li>&lt;strong>Surface 都做、不管 Cadence 軸&lt;/strong>：51 篇個別合規、連讀預期化&lt;/li>
&lt;li>&lt;strong>Cadence 軸有抽樣、Timing 軸放在 batch 後&lt;/strong>：抽樣等於 batch 後 review、修正成本 N 倍&lt;/li>
&lt;/ol>
&lt;p>七軸缺任一條、就有對應類型違規逃過 review。&lt;/p>
&lt;hr>
&lt;h2 id="多軸是預設單軸是-collapse">多軸是預設、單軸是 collapse&lt;/h2>
&lt;p>跟 &lt;a href="../collapse-is-implicit-default/">#125 Collapse 是隱形預設&lt;/a> 同骨 — 把 review 設計 collapse 到單軸是預設行為（最便利）、但 collapse 掉的軸對應的違規會 systematic miss。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>設計時的便利選擇&lt;/th>
 &lt;th>對應 collapse 軸&lt;/th>
 &lt;th>系統性盲點&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>「找一個 reviewer 跑就好」&lt;/td>
 &lt;td>Instance 軸 collapse&lt;/td>
 &lt;td>維度盲點、context 污染&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「跑一輪就好」&lt;/td>
 &lt;td>Frame 軸 collapse&lt;/td>
 &lt;td>一個 frame 只 catch 一類問題&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「body review 就夠」&lt;/td>
 &lt;td>Surface 軸 collapse&lt;/td>
 &lt;td>Metadata 失準&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「只 review 改動部分」&lt;/td>
 &lt;td>Scope 軸 collapse&lt;/td>
 &lt;td>既有 corpus 同類違規無解&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「單篇 review」&lt;/td>
 &lt;td>Cadence 軸 collapse&lt;/td>
 &lt;td>Emergence 違規漏抓&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「等寫完再 review」&lt;/td>
 &lt;td>Timing 軸 collapse&lt;/td>
 &lt;td>Emergence 累積、修正成本 N 倍&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>「跑 lint + review 就完整」&lt;/td>
 &lt;td>Granularity 軸 collapse&lt;/td>
 &lt;td>字句層信號漏抓&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>預設展開七軸、選窄做要證明 — 跟 #78 / #79 / #80 / #125 同條結構。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>寫作 review 完整性的本質是 <em>多軸交集</em>、不是 <em>單軸深度</em>。七個軸已經從前面卡片浮現、缺任一軸就會 systematic miss 對應類型的問題：</p>
<table>
  <thead>
      <tr>
          <th>軸</th>
          <th>內容</th>
          <th>缺失時的盲點</th>
          <th>對應卡</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Frame 軸</strong></td>
          <td>一個 reviewer 跑 N 輪不同 frame（生成 / 意圖 / 機會成本 / grep / 反例）</td>
          <td>結構 OK 但意圖 / 機會成本錯</td>
          <td><a href="../writing-multi-pass-review/">#83</a></td>
      </tr>
      <tr>
          <td><strong>Instance 軸</strong></td>
          <td>N 個 reviewer 各自獨立、不同維度</td>
          <td>單 reviewer 處理多維度互相干擾、context 污染</td>
          <td><a href="../agent-team-context-isolation/">#121</a></td>
      </tr>
      <tr>
          <td><strong>Surface 軸</strong></td>
          <td>Body / title / description / heading / link label / MOC hook</td>
          <td>Body 完美但 metadata 失準、搜尋入口失效</td>
          <td><a href="../metadata-surface-in-writing-review/">#97</a></td>
      </tr>
      <tr>
          <td><strong>Scope 軸</strong></td>
          <td>同類風險區（不是改動區）</td>
          <td>抓不到 corpus 內既有同類違規</td>
          <td><a href="../multi-pass-scope-must-cover-risk-zone/">#95</a></td>
      </tr>
      <tr>
          <td><strong>Cadence 軸</strong></td>
          <td>跨檔 framing 一致性 / 句型骨架 / 收尾語</td>
          <td>單篇合規、連讀預期化</td>
          <td><a href="../cadence-homogenization-in-batch-writing/">#122</a></td>
      </tr>
      <tr>
          <td><strong>Timing 軸</strong></td>
          <td>寫作中抽樣 vs batch 後 review</td>
          <td>違規累積到 batch 末才發現、修正成本 N 倍</td>
          <td><a href="../emergence-violations-need-in-stream-sampling/">#124</a></td>
      </tr>
      <tr>
          <td><strong>Granularity 軸</strong></td>
          <td>規則 frame vs 字句層信號</td>
          <td>規則 catch 結構違規、字句層（口語修辭 / 廢話前綴）漏抓</td>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114</a></td>
      </tr>
  </tbody>
</table>
<p>七軸正交：每個軸獨立解一類盲點、不重疊；缺任一軸都會 systematic miss 對應類型問題。</p>
<hr>
<h2 id="為什麼是多軸不是單軸越做越深">為什麼是多軸、不是單軸越做越深</h2>
<p>單軸越做越深的失敗模式：</p>
<ol>
<li><strong>Frame 軸跑 10 輪、不換 instance 軸</strong>：同一 reviewer 跑 10 輪、catch 的問題仍高度相關（#114 已點出）</li>
<li><strong>Instance 軸開 10 個 reviewer、不換 frame 軸</strong>：10 個 reviewer 都跑「規則 check」這個 frame、catch 的盲點相同</li>
<li><strong>Frame + Instance 都做、不管 Surface 軸</strong>：Body review 通過、但 title / description 沒被審、搜尋入口失效</li>
<li><strong>Surface 都做、不管 Cadence 軸</strong>：51 篇個別合規、連讀預期化</li>
<li><strong>Cadence 軸有抽樣、Timing 軸放在 batch 後</strong>：抽樣等於 batch 後 review、修正成本 N 倍</li>
</ol>
<p>七軸缺任一條、就有對應類型違規逃過 review。</p>
<hr>
<h2 id="多軸是預設單軸是-collapse">多軸是預設、單軸是 collapse</h2>
<p>跟 <a href="../collapse-is-implicit-default/">#125 Collapse 是隱形預設</a> 同骨 — 把 review 設計 collapse 到單軸是預設行為（最便利）、但 collapse 掉的軸對應的違規會 systematic miss。</p>
<table>
  <thead>
      <tr>
          <th>設計時的便利選擇</th>
          <th>對應 collapse 軸</th>
          <th>系統性盲點</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「找一個 reviewer 跑就好」</td>
          <td>Instance 軸 collapse</td>
          <td>維度盲點、context 污染</td>
      </tr>
      <tr>
          <td>「跑一輪就好」</td>
          <td>Frame 軸 collapse</td>
          <td>一個 frame 只 catch 一類問題</td>
      </tr>
      <tr>
          <td>「body review 就夠」</td>
          <td>Surface 軸 collapse</td>
          <td>Metadata 失準</td>
      </tr>
      <tr>
          <td>「只 review 改動部分」</td>
          <td>Scope 軸 collapse</td>
          <td>既有 corpus 同類違規無解</td>
      </tr>
      <tr>
          <td>「單篇 review」</td>
          <td>Cadence 軸 collapse</td>
          <td>Emergence 違規漏抓</td>
      </tr>
      <tr>
          <td>「等寫完再 review」</td>
          <td>Timing 軸 collapse</td>
          <td>Emergence 累積、修正成本 N 倍</td>
      </tr>
      <tr>
          <td>「跑 lint + review 就完整」</td>
          <td>Granularity 軸 collapse</td>
          <td>字句層信號漏抓</td>
      </tr>
  </tbody>
</table>
<p>預設展開七軸、選窄做要證明 — 跟 #78 / #79 / #80 / #125 同條結構。</p>
<hr>
<h2 id="review-設計時的-enumerate-紀律">Review 設計時的 enumerate 紀律</h2>
<p>設計新的 review 流程（人類 / agent / 自動化）時、不該只看「捕獲哪些違規」、要列七軸覆蓋狀況：</p>
<table>
  <thead>
      <tr>
          <th>軸</th>
          <th>預設問題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Frame</td>
          <td>這個 review 跑幾種 frame？哪一種 frame 是預設、哪些被跳過？</td>
      </tr>
      <tr>
          <td>Instance</td>
          <td>Reviewer 是 1 個還是 N 個？維度怎麼分？</td>
      </tr>
      <tr>
          <td>Surface</td>
          <td>Body / metadata / link label / heading 都覆蓋了嗎？</td>
      </tr>
      <tr>
          <td>Scope</td>
          <td>Review 的 scope 是「改動區」還是「同類風險區」？</td>
      </tr>
      <tr>
          <td>Cadence</td>
          <td>跨檔 cadence 有沒有抽樣比對？</td>
      </tr>
      <tr>
          <td>Timing</td>
          <td>是寫作中 checkpoint、還是 batch 後 review？</td>
      </tr>
      <tr>
          <td>Granularity</td>
          <td>規則 frame 跟字句 frame 都跑了嗎？</td>
      </tr>
  </tbody>
</table>
<p>七題都回答後、再判斷該不該補軸。如果某軸沒覆蓋、不一定要補（cost vs risk）、但要 <em>知道沒覆蓋對應什麼盲點</em>。</p>
<h3 id="cadence--timing-軸-dogfood-2026-05-18">Cadence + Timing 軸 dogfood (2026-05-18)</h3>
<p>4 篇 deep article batch 驗證 cadence + timing 兩軸的設計、不靠 reviewer 補、是靠 stage 2 寫作流程內抽樣：</p>
<ul>
<li><strong>Cadence 軸</strong>：4 篇 pilot phase 主動規劃 4 種 framing variant、跨檔 cadence audit 顯示「任一缺失」collapse 族 0/4、entry framing 種類 4 種</li>
<li><strong>Timing 軸</strong>：每篇寫作前做 cadence check（生成中 checkpoint）、不等 batch 完成後 reviewer；修正成本 ~5 分鐘 / 篇 vs 前批 batch 後 polish ~30-60 分鐘</li>
</ul>
<p>N=5 full-threshold 補強驗證（同日第二批）：再跑 5 篇 PostgreSQL sub-tool deep article、用 5 種 variant 覆蓋 <em>同 vendor 同 audience</em> 的 cadence collapse 最高風險場景；結果 5/5 framing 全錯開、過渡詞密度 0、cadence collapse 0/5。確認 Cadence 軸 + Timing 軸 <em>不靠 sample size、靠 stage 0 variant 規劃</em>。</p>
<p>詳細數據見 <a href="../cadence-homogenization-in-batch-writing/#dogfood-evidence-2026-05-18-n4-sub-threshold-%e9%a9%97%e8%ad%89">#122 cadence dogfood evidence</a> 跟 <a href="../emergence-violations-need-in-stream-sampling/#dogfood-evidence-2026-05-18-n4-sub-threshold-%e9%a9%97%e8%ad%89">#124 dogfood</a> — 兩軸都不必加 reviewer instance、是 Stage 2 寫作流程設計即可解。</p>
<hr>
<h2 id="七軸不是隨機湊出來有結構">七軸不是隨機湊出來、有結構</h2>
<p>七軸可以再 group 成三個 <em>上位 axis</em>：</p>
<table>
  <thead>
      <tr>
          <th>上位 axis</th>
          <th>涵蓋</th>
          <th>解什麼問題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>誰來 review</strong></td>
          <td>Instance 軸</td>
          <td>維度盲點、context 污染</td>
      </tr>
      <tr>
          <td><strong>怎麼 review</strong></td>
          <td>Frame + Granularity 軸</td>
          <td>視角單一、catch 範圍狹窄</td>
      </tr>
      <tr>
          <td><strong>review 什麼</strong></td>
          <td>Surface + Scope + Cadence 軸</td>
          <td>範圍不全、跨檔 / metadata 漏抓</td>
      </tr>
      <tr>
          <td><strong>何時 review</strong></td>
          <td>Timing 軸</td>
          <td>太晚 catch、修正成本爆</td>
      </tr>
  </tbody>
</table>
<p>四上位 axis 各自獨立、合起來覆蓋 review 設計的所有 surface。當 review 出問題、依四上位 axis 找根因比依七子軸快。</p>
<hr>
<h2 id="反模式">反模式</h2>
<table>
  <thead>
      <tr>
          <th>反模式</th>
          <th>後果</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>「跑 mdtools lint 就完整」</td>
          <td>只覆蓋字面 frame、結構 / 行為 / cadence 全漏</td>
      </tr>
      <tr>
          <td>「Reviewer agent 跑一遍就完整」</td>
          <td>Instance 軸覆蓋了、但 frame / surface / scope / cadence 可能漏</td>
      </tr>
      <tr>
          <td>「Review 改動的檔就好」</td>
          <td>Scope 軸 collapse、既有 corpus 同類違規無解</td>
      </tr>
      <tr>
          <td>「Body review 完就 ship」</td>
          <td>Surface 軸 collapse、metadata 失準</td>
      </tr>
      <tr>
          <td>「Batch 完成後跑 reviewer」</td>
          <td>Timing 軸 collapse、emergence 違規修正成本 N 倍</td>
      </tr>
      <tr>
          <td>「Review 越多輪越完整」</td>
          <td>同 reviewer 同 frame 跑 10 輪仍 catch 同類問題、缺軸不缺深度</td>
      </tr>
      <tr>
          <td>設計 review 流程不 enumerate 七軸</td>
          <td>預設只覆蓋 1-2 軸、其他軸盲點變 systematic</td>
      </tr>
      <tr>
          <td>把 review 當成「validation gate」、不是「多軸完整性」</td>
          <td>心智模型錯位、把多軸問題誤解為單點 pass/fail</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></td>
          <td>子軸（Frame）— #83 是 review 的 frame 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../agent-team-context-isolation/">#121 Agent team context 隔離</a></td>
          <td>子軸（Instance）— #121 是 review 的 instance 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 納入寫作 review 範圍</a></td>
          <td>子軸（Surface）— #97 是 review 的 surface 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-scope-must-cover-risk-zone/">#95 Multi-pass review 的 scope 要蓋同類風險區</a></td>
          <td>子軸（Scope）— #95 是 review 的 scope 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../cadence-homogenization-in-batch-writing/">#122 Cadence 同質化是模板的隱形維度</a></td>
          <td>子軸（Cadence）— #122 是 review 的 cadence 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../emergence-violations-need-in-stream-sampling/">#124 Emergence 違規要 stage 內抽樣</a></td>
          <td>子軸（Timing）— #124 是 review 的 timing 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../multi-pass-review-frame-granularity-blindspot/">#114 Multi-pass review frame 顆粒度盲點</a></td>
          <td>子軸（Granularity）— #114 是 review 的 granularity 軸 anchor</td>
      </tr>
      <tr>
          <td><a href="../decision-dialogue-dimensions/">#79 決策對話的五維度</a></td>
          <td>Sibling meta-卡 — #79 是 decision 多軸 anchor、本卡是 review 多軸 anchor、兩者結構同骨</td>
      </tr>
      <tr>
          <td><a href="../collapse-is-implicit-default/">#125 Collapse 是隱形預設</a></td>
          <td>上位 driver — 把 review collapse 到單軸是 #125 在 review surface 的具體 instance</td>
      </tr>
      <tr>
          <td><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></td>
          <td>互補 — #82 是錯誤類型 × 工具粒度、本卡是 review 多軸；兩者交集點 = granularity 軸 + timing 軸的設計</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>設計新 review 流程沒 enumerate 七軸</td>
          <td>預設只 1-2 軸覆蓋、補軸對照</td>
      </tr>
      <tr>
          <td>Review 跑完還是有 systematic 違規漏抓</td>
          <td>查七軸缺哪條、不是加深 review</td>
      </tr>
      <tr>
          <td>同類問題在不同批次反覆出現</td>
          <td>Scope 軸 collapse、Review scope 應蓋同類風險區、不是改動區</td>
      </tr>
      <tr>
          <td>Reviewer 報告都是結構違規、沒字句層</td>
          <td>Granularity 軸 collapse、補字句 frame</td>
      </tr>
      <tr>
          <td>Batch 完成後 reviewer 抓大量 emergence 違規</td>
          <td>Timing 軸 collapse、補 stage 內 checkpoint</td>
      </tr>
      <tr>
          <td>Body lint 全綠但讀者搜不到 / 看不懂入口</td>
          <td>Surface 軸 collapse、補 metadata review</td>
      </tr>
      <tr>
          <td>1 個 reviewer 跑 10 輪、catch 範圍仍狹窄</td>
          <td>Instance 軸 collapse、補不同 reviewer instance</td>
      </tr>
      <tr>
          <td>「我們 review 已經很完整」但常被 user 點漏抓問題</td>
          <td>自我評估只看單軸、需要對照七軸 enumeration</td>
      </tr>
      <tr>
          <td>想加 review 第 11 輪</td>
          <td>警訊 — 多半是缺軸不缺深度、查七軸覆蓋而不是加輪</td>
      </tr>
  </tbody>
</table>
<p><strong>核心</strong>：寫作 review 完整性是七軸交集、不是單軸深度；缺軸不缺深度。設計 review 流程時 enumerate 七軸覆蓋狀況、預設展開、選窄要證明；當 review 報告漏抓 systematic 違規、查的不是「再加一輪」、是「哪一軸沒覆蓋」。</p>
]]></content:encoded></item><item><title>WRAP Widen Options 容易塌成稻草人 framing、要改 evidence weight 結構</title><link>https://tarrragon.github.io/blog/report/wrap-widen-options-strawman-risk/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/wrap-widen-options-strawman-risk/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>WRAP 框架的 Widen Options 段落是「探索本質不同的因果解釋」、不是「列出競爭性派系然後打掉錯的」。當寫作時把「Widen Options → Reality Test」當作全文 narrative 主軸、整個 hypothesis space 探索就會塌成「兩弱一強稻草人」結構—A、B 是 dummy、C 永遠預設正解、Reality Test 用來證明 C。讀者第一遍可能不發現、第二遍就會看穿是修辭、不是真實的選項擴增。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>段落責任&lt;/th>
 &lt;th>塌成稻草人時的症狀&lt;/th>
 &lt;th>正確的形態&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Widen Options&lt;/td>
 &lt;td>A 派 / B 派 / C 派、C 永遠正解&lt;/td>
 &lt;td>解釋 (1) / (2) / (3)、每個有 prior + testable prediction&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Reality Test&lt;/td>
 &lt;td>「A 不成立、B 不成立、C 成立」三連否定&lt;/td>
 &lt;td>Evidence weight assessment、各配「強 / 中 / 弱」訊號 + 估佔比&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>結論&lt;/td>
 &lt;td>「正確解釋是 C」winner-takes-all&lt;/td>
 &lt;td>「主因 X / 次因 Y / 邊際 Z」多解釋並存配 Falsifier&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>判別問題：「刪掉 Reality Test 那段、單看 Widen Options 那段、讀者能不能猜出哪個是正解？」能猜出 = 稻草人結構、不能猜出 = 真正的 widen。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>寫商業 case-analyses 套 WRAP 框架時、最容易踩的陷阱是把 Widen Options 寫成派系命名 + 預設正解、然後 Reality Test 一條一條打掉。寫作者的心理路徑很自然：先有觀點 → 為了「公平」列出反方 → 為了「驗證」打掉反方 → 留下原本就要說的觀點。這個流程跑完、Widen Options 段落變成修辭裝飾、不是真正的 hypothesis space 探索。&lt;/p>
&lt;p>具體 case（2026-05-20、e00253c 修法前）：blog 寫 3 篇 case-analyses（&lt;a href="https://tarrragon.github.io/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/business/case-analyses/fde-arms-race/" data-link-title="FDE 軍備競賽：SaaS 支柱鬆動下的結構性轉變" data-link-desc="用 WRAP 框架拆解三家基礎模型供應商同時押 FDE 模式背後的 SaaS 商業前提鬆動，並判讀 FDE 是過渡狀態還是長期結構">FDE 軍備競賽&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/business/case-analyses/bufstream-acquisition/" data-link-title="CoreWeave 收購 Bufstream：整併週期下的賽道判讀與基礎設施重組" data-link-desc="用 WRAP 框架拆解 CoreWeave 買 Bufstream 揭露的串流市場整併、算力廠商對基礎設施的剛需、以及對資料工程師職涯的意涵">CoreWeave 收購 Bufstream&lt;/a>）、3 篇全部踩同一個結構：&lt;/p>
&lt;ul>
&lt;li>claude-for-legal：A「AWS 類比派」/ B「保護傘派」/ C「Enterprise Lock-in 派」、C 預設正解&lt;/li>
&lt;li>fde-arms-race：A「模仿派」/ B「策略選擇派」/ C「結構性被迫派」、C 預設正解&lt;/li>
&lt;li>bufstream：對 CoreWeave 為什麼買、X「業務擴張」/ Y「技術自主」、Y 預設正解&lt;/li>
&lt;/ul>
&lt;p>3-reviewer audit 平行跑、3 個 reviewer 獨立都點出「兩弱一強稻草人」結構共通—診斷一致是這個 pattern 不是個別失誤、是 WRAP 套案例寫作的系統性陷阱。e00253c 重寫後改為「解釋 (1) / (2) / (3) / (4) 並陳因果鏈、每個有 prior + prediction」、Reality Test 改為 evidence weight assessment + Falsifier、Round 2 驗證通過。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>WRAP 框架的 Widen Options 段落是「探索本質不同的因果解釋」、不是「列出競爭性派系然後打掉錯的」。當寫作時把「Widen Options → Reality Test」當作全文 narrative 主軸、整個 hypothesis space 探索就會塌成「兩弱一強稻草人」結構—A、B 是 dummy、C 永遠預設正解、Reality Test 用來證明 C。讀者第一遍可能不發現、第二遍就會看穿是修辭、不是真實的選項擴增。</p>
<table>
  <thead>
      <tr>
          <th>段落責任</th>
          <th>塌成稻草人時的症狀</th>
          <th>正確的形態</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Widen Options</td>
          <td>A 派 / B 派 / C 派、C 永遠正解</td>
          <td>解釋 (1) / (2) / (3)、每個有 prior + testable prediction</td>
      </tr>
      <tr>
          <td>Reality Test</td>
          <td>「A 不成立、B 不成立、C 成立」三連否定</td>
          <td>Evidence weight assessment、各配「強 / 中 / 弱」訊號 + 估佔比</td>
      </tr>
      <tr>
          <td>結論</td>
          <td>「正確解釋是 C」winner-takes-all</td>
          <td>「主因 X / 次因 Y / 邊際 Z」多解釋並存配 Falsifier</td>
      </tr>
  </tbody>
</table>
<p>判別問題：「刪掉 Reality Test 那段、單看 Widen Options 那段、讀者能不能猜出哪個是正解？」能猜出 = 稻草人結構、不能猜出 = 真正的 widen。</p>
<hr>
<h2 id="情境">情境</h2>
<p>寫商業 case-analyses 套 WRAP 框架時、最容易踩的陷阱是把 Widen Options 寫成派系命名 + 預設正解、然後 Reality Test 一條一條打掉。寫作者的心理路徑很自然：先有觀點 → 為了「公平」列出反方 → 為了「驗證」打掉反方 → 留下原本就要說的觀點。這個流程跑完、Widen Options 段落變成修辭裝飾、不是真正的 hypothesis space 探索。</p>
<p>具體 case（2026-05-20、e00253c 修法前）：blog 寫 3 篇 case-analyses（<a href="/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal</a> / <a href="/blog/business/case-analyses/fde-arms-race/" data-link-title="FDE 軍備競賽：SaaS 支柱鬆動下的結構性轉變" data-link-desc="用 WRAP 框架拆解三家基礎模型供應商同時押 FDE 模式背後的 SaaS 商業前提鬆動，並判讀 FDE 是過渡狀態還是長期結構">FDE 軍備競賽</a> / <a href="/blog/business/case-analyses/bufstream-acquisition/" data-link-title="CoreWeave 收購 Bufstream：整併週期下的賽道判讀與基礎設施重組" data-link-desc="用 WRAP 框架拆解 CoreWeave 買 Bufstream 揭露的串流市場整併、算力廠商對基礎設施的剛需、以及對資料工程師職涯的意涵">CoreWeave 收購 Bufstream</a>）、3 篇全部踩同一個結構：</p>
<ul>
<li>claude-for-legal：A「AWS 類比派」/ B「保護傘派」/ C「Enterprise Lock-in 派」、C 預設正解</li>
<li>fde-arms-race：A「模仿派」/ B「策略選擇派」/ C「結構性被迫派」、C 預設正解</li>
<li>bufstream：對 CoreWeave 為什麼買、X「業務擴張」/ Y「技術自主」、Y 預設正解</li>
</ul>
<p>3-reviewer audit 平行跑、3 個 reviewer 獨立都點出「兩弱一強稻草人」結構共通—診斷一致是這個 pattern 不是個別失誤、是 WRAP 套案例寫作的系統性陷阱。e00253c 重寫後改為「解釋 (1) / (2) / (3) / (4) 並陳因果鏈、每個有 prior + prediction」、Reality Test 改為 evidence weight assessment + Falsifier、Round 2 驗證通過。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步widen-options-改成並陳的合理因果鏈不是派系命名">第一步：Widen Options 改成「並陳的合理因果鏈」、不是派系命名</h3>
<p>每個選項要滿足四個判準：</p>
<ol>
<li><strong>有實際 prior</strong>：誰持這論、為何合理。Prior 可以引用 VC / 創辦人 / 學者 / 業界分析師的公開立場、或從產業結構推導出的合理初始假設。</li>
<li><strong>有 testable prediction</strong>：若這個解釋成立、會看到什麼具體 evidence（合約規模、客戶分布、銷售節奏、員工流向）。</li>
<li><strong>跟其他選項的因果鏈本質不同</strong>：不是同一個結論的不同包裝、是不同的因果起點。</li>
<li><strong>不是設定就要被打爆的 dummy</strong>：選項要站得住、要可被讀者挑戰、不是 reductio ad absurdum 的設定。</li>
</ol>
<p>選項命名用中性編號「解釋 (1) / (2) / (3)」、避免「X 派 / Y 派 / Z 派」派系暗示—派系命名自帶「選邊」修辭框架。</p>
<h3 id="第二步reality-test-改成-evidence-based-weight-assessment">第二步：Reality Test 改成 evidence-based weight assessment</h3>
<p>不是「A 不成立、B 不成立、C 成立」三連否定、而是給每個解釋配 evidence 強度 + 估佔比百分比：</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)：強訊號（觀察 X、Y、Z 都支持）— 估佔比 ~50%
</span></span><span class="line"><span class="ln">2</span><span class="cl">解釋 (2)：中等訊號（觀察 W 支持、觀察 V 部分反駁）— 估佔比 ~30%
</span></span><span class="line"><span class="ln">3</span><span class="cl">解釋 (3)：弱訊號（難排除巧合）— 估佔比 ~20%</span></span></code></pre></div><p>允許多選項並存、用「主因 / 次因 / 邊際」權重判讀、不是 winner-takes-all。最後綜合判讀用「主要承擔 A 功能、伴隨 B 跟 C 兩個次要動機」這類多解釋並存的措辭。</p>
<h3 id="第三步補-falsifier-段列出每個解釋的反證訊號">第三步：補 Falsifier 段、列出每個解釋的反證訊號</h3>
<p>每個解釋配對應的 Falsifier：「若觀察到 X、解釋 (N) 主導論垮、要重評估」。這跟 Tripwire 段銜接、形成可監控的判讀結構。Falsifier 不是「整套論述崩」、是 partial revision—某個解釋的權重變化、不一定推翻整個分析框架。</p>
<h3 id="第四步完稿時跑刪-reality-test-測試">第四步：完稿時跑「刪 Reality Test 測試」</h3>
<p>寫完後、心裡 simulate「刪掉 Reality Test 那段、讀者單看 Widen Options 那段能不能猜出哪個是正解」。能猜出就是稻草人結構、需要重寫 Widen Options 讓選項真的並陳。</p>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="修辭被讀穿信任度下降">修辭被讀穿、信任度下降</h3>
<p>讀者一旦看穿稻草人結構、會懷疑作者的真誠度跟結論可靠度。教學文章靠「分析嚴謹」立信、稻草人結構直接破壞這個基礎。本 blog 的 3-reviewer audit 之所以能 3 個 reviewer 獨立都 catch 到同一個 pattern、就是因為這個結構在 careful reader 眼中明顯—第一篇可能蒙混、第三篇就會被當成 systematic 修辭技倆。</p>
<h3 id="hypothesis-space-探索失效判讀框架不可遷移">Hypothesis space 探索失效、判讀框架不可遷移</h3>
<p>WRAP 的核心價值是「強制做 hypothesis space 探索、防止認知偏誤」、稻草人結構讓 Widen Options 退化成修辭裝飾、原本要解的「直覺接受第一個解釋」問題沒被解。讀者拿走的判讀框架也不可遷移到下次事件—因為框架的應用方式本身就是錯的、套到新事件還是會列稻草人。</p>
<h3 id="tone-滑成-opinion-piece">Tone 滑成 opinion piece</h3>
<p>「我列出爛選項打掉、留下正解」的結構帶有「我來糾正你」的姿態、整篇 register 從教學滑向 opinion piece。即使每個字句都中性、整體 tone 仍會偏。本 blog case-analyses 重寫前的 register 評估是 opinion 40% / blog 30% / teaching 20% / academic 10%、重寫後翻轉到 teaching 55-60% / academic 25-35% / blog ≤ 15%—單純改 framing 結構就能整體位移 register。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<ul>
<li>
<p><strong><a href="../collapse-is-implicit-default/">#125 Collapse 是隱形預設</a></strong>：本卡是 #125 在「WRAP Widen Options」surface 的具體實例。Widen Options 塌成「兩弱一強」是把高維 hypothesis space collapse 到便利的「正解 vs 稻草人」二維。修法是預設展開多選項、選窄要 evidence 支持、不是修辭便利。</p>
</li>
<li>
<p><strong><a href="../decision-dialogue-dimensions/">#79 決策對話的五維度</a></strong>：sister 卡。#79 是 decision-making 多軸、本卡是 WRAP 寫作多軸；兩者結構同骨—Widen Options 不能塌成 2 維、就像 decision dialogue 不能塌成單軸。</p>
</li>
<li>
<p><strong><a href="../writing-review-multi-axis-completeness/">#126 寫作 review 是多軸完整性</a></strong>：本卡是 review 設計時要看「frame 軸」的具體 instance。寫 case-analyses 時 review 不能只看「結構是否符合 WRAP」、要看「Widen Options 是否真的並陳 hypothesis、還是塌成稻草人」。Frame 軸的覆蓋要包含 framing 結構檢查、不只是規則 check。</p>
</li>
<li>
<p><strong><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></strong>：本卡是 #82 在「framing 層級」的具體案例。lint 規則層（字面）catch 得到「不是」「不要」等否定詞密度、但 catch 不到「整段 framing 結構是稻草人」這個行為層問題。Framing 違規屬於 #82 的「行為精煉」維度、需要 reviewer agent 跑 multi-pass 才能捕獲。</p>
</li>
<li>
<p><strong><a href="../writing-multi-pass-review/">#83 Writing multi-pass review</a></strong>：本卡是 review 第 4-5 輪該掃的「framing 維度」。前幾輪掃結構 / 術語 / 規範、framing 屬於 review 後段才能看穿的層次（因為要對全文 narrative 結構評估、不是單句檢查）。</p>
</li>
</ul>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Widen Options 用「X 派 / Y 派 / Z 派」派系命名</td>
          <td>改成「解釋 (1) / (2) / (3)」中性編號、避免派系暗示</td>
      </tr>
      <tr>
          <td>某個選項沒有實際 prior（沒人持這論）</td>
          <td>該選項是稻草人、改寫成有實際擁護者的版本或刪掉</td>
      </tr>
      <tr>
          <td>Reality Test 連續用「A 不成立、B 不成立、C 成立」</td>
          <td>改成 evidence-based weight assessment、給每個解釋配 estimated 比例</td>
      </tr>
      <tr>
          <td>刪掉 Reality Test 後讀者能猜出哪個是正解</td>
          <td>稻草人結構、需要重新設計 Widen Options 讓選項真的並陳</td>
      </tr>
      <tr>
          <td>文章 opening 用「市場敘事 X、但 X 不重要、Y 才是」</td>
          <td>改成「正向陳述事件 + 結構性論點」、把對他人敘事的回應降為下游表象</td>
      </tr>
      <tr>
          <td>結論斷言「正確解釋是 X」「最強訊號是 Y」</td>
          <td>改成「相容度最高 / 能解釋以下 N 項觀察」evidence-based 措辭</td>
      </tr>
      <tr>
          <td>Reviewer 報告說「兩弱一強結構」「選項都很容易被打掉」</td>
          <td>框架被當修辭、不是 hypothesis 探索、改 framing pivot</td>
      </tr>
      <tr>
          <td>多個 reviewer 獨立 catch 到同一個結構問題</td>
          <td>不是個別失誤、是 systematic 陷阱、要從 framing 層改、不只 word swap</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="適用範圍與邊界">適用範圍與邊界</h2>
<ul>
<li><strong>適用範圍</strong>：
<ul>
<li>用 WRAP 框架寫商業 case-analyses、市場事件拆解、產業策略分析</li>
<li>用其他類似「列選項 / 對比 / 收斂」框架寫案例（5W1H、5-Forces、JTBD 階段）</li>
<li>寫「對抗主流敘事 + 提出新解釋」類型的分析文章—這類最容易踩</li>
</ul>
</li>
<li><strong>不適用</strong>：
<ul>
<li>純技術教學（無 hypothesis space 探索、Widen Options 段落本身不存在）</li>
<li>既有 case 的事後紀錄（Outcome 已定、不需要 widen）</li>
<li>觀察筆記（明確標為個人觀察、不假裝是結構化分析）</li>
</ul>
</li>
<li><strong>邊界</strong>：「對抗稻草人」跟「列負面反例做對照」不同。AGENTS.md 原則二允許「反例段落、目的為對照」、本卡禁的是「把對抗稻草人當 narrative 主軸」。少量負面反例可保留、整段不可由稻草人結構主導。判別線：反例是否單獨成段並主導 narrative 結構—成段主導就違規、附句對照就可接受。</li>
</ul>
]]></content:encoded></item><item><title>WRAP 是寫作者的內部工具、不是文章章節結構</title><link>https://tarrragon.github.io/blog/report/wrap-as-internal-tool-not-section-structure/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/wrap-as-internal-tool-not-section-structure/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>WRAP 框架（含 Anchor Check / Step 0 / Widen Options / Reality Test / Attain Distance / Prepare to be Wrong / Tripwire）是寫作者背後做 hypothesis space 探索與認知偏誤防護的內部工具。當把這些 process 標籤暴露成文章章節結構、讀者體驗會被三個壞 effect 破壞：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>壞 effect&lt;/th>
 &lt;th>症狀&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>預設讀者認知對齊&lt;/td>
 &lt;td>開頭用「X 是這套機制的末端表象」假設讀者已有 X 的認知、但「事件本身」段還沒交代&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>塞滿分析報告 meta dialogue&lt;/td>
 &lt;td>章節充斥「我們不討論什麼 / 錨點問題是什麼 / 資料充足度判斷是 X」這類寫作者內部 review 對話&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>同論點重複預告&lt;/td>
 &lt;td>在開頭、Anchor Check、Step 0 三個段落各預告一次「本篇要拆什麼」、推進緩慢、讀者第三遍才開始接觸實質內容&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>修法是把 WRAP 工作內嵌進教學 narrative、章節順序服從「讀者最快理解事件結構」的教學流程、不是「WRAP 七步驟」的 process 順序。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>寫 3 篇商業 case-analyses（&lt;a href="https://tarrragon.github.io/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/business/case-analyses/fde-arms-race/" data-link-title="FDE 軍備競賽：SaaS 支柱鬆動下的結構性轉變" data-link-desc="用 WRAP 框架拆解三家基礎模型供應商同時押 FDE 模式背後的 SaaS 商業前提鬆動，並判讀 FDE 是過渡狀態還是長期結構">FDE 軍備競賽&lt;/a> / &lt;a href="https://tarrragon.github.io/blog/business/case-analyses/bufstream-acquisition/" data-link-title="CoreWeave 收購 Bufstream：整併週期下的賽道判讀與基礎設施重組" data-link-desc="用 WRAP 框架拆解 CoreWeave 買 Bufstream 揭露的串流市場整併、算力廠商對基礎設施的剛需、以及對資料工程師職涯的意涵">CoreWeave 收購 Bufstream&lt;/a>）第一版時、把 WRAP 七步驟全部當章節標題暴露給讀者：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">[開頭]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl">## 事件本身
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl">## Anchor Check：要回答什麼
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl">## Step 0：資料充足度
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl">## Widen Options：N 個解釋路徑
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl">## Reality Test：用實證驗證
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl">## [結構性機制章節]
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl">## Attain Distance：長期影響
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl">## Prepare to be Wrong：預先設計失敗回退
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">## Tripwire：何時重新評估
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl">## 結論：可遷移框架&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>3-reviewer audit + Round 2 重寫後、讀者再次 feedback 指出三個具體問題：&lt;/p>
&lt;p>第一、claude-for-legal 開頭寫「『律師會被取代』是這套機制的末端表象、本篇從上游動作開始拆」—但「事件本身」段在開頭之後、讀者還不知道有「律師會被取代」這個敘事存在、開頭預設了讀者跟作者共享的 context。&lt;/p>
&lt;p>第二、Anchor Check 段寫「錨點問題聚焦在結構、而非個別公司執行力」—這是「為什麼不討論某個非問題」的 disclaim、屬於分析報告 frame、不是教學 frame。讀者根本沒問「會討論個別公司執行力嗎」、預先 disclaim 反而增加閱讀成本。&lt;/p>
&lt;p>第三、「這個動作對應用層 SaaS、新創、知識工作者三層分別造成什麼影響」這個論點在開頭、事件本身、Anchor Check 三段各出現一次—讀者讀到 Anchor Check 還沒接觸實質內容、只是被預告了三次同一件事。&lt;/p>
&lt;p>更深層的問題是：把 WRAP 從「寫作者的內部工具」當成「文章的章節結構」。WRAP 是寫作者背後 review 自己有沒有做完 hypothesis 探索的 checklist、不是讀者要走的步驟序列。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;h3 id="第一步wrap-工作在腦中或草稿跑完不暴露到讀者">第一步：WRAP 工作在腦中或草稿跑完、不暴露到讀者&lt;/h3>
&lt;p>WRAP 七步驟是寫作者完稿前要做完的 internal review：&lt;/p>
&lt;ul>
&lt;li>我有沒有做 Anchor Check（搞清楚要回答什麼）？&lt;/li>
&lt;li>我手上的 evidence 夠不夠下結論（Step 0 資料充足度）？&lt;/li>
&lt;li>我有沒有列出所有合理因果解釋（Widen Options）？&lt;/li>
&lt;li>每個解釋我都用 evidence 驗證了（Reality Test）？&lt;/li>
&lt;li>我有看 5-10 年長期影響嗎（Attain Distance）？&lt;/li>
&lt;li>我列了關鍵假設跟反證訊號嗎（Prepare to be Wrong）？&lt;/li>
&lt;li>我設了何時重新評估的 Tripwire 嗎？&lt;/li>
&lt;/ul>
&lt;p>這七題自己回答完、不寫進文章。文章是教學 deliverable、不是 review process 的 paper trail。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>WRAP 框架（含 Anchor Check / Step 0 / Widen Options / Reality Test / Attain Distance / Prepare to be Wrong / Tripwire）是寫作者背後做 hypothesis space 探索與認知偏誤防護的內部工具。當把這些 process 標籤暴露成文章章節結構、讀者體驗會被三個壞 effect 破壞：</p>
<table>
  <thead>
      <tr>
          <th>壞 effect</th>
          <th>症狀</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>預設讀者認知對齊</td>
          <td>開頭用「X 是這套機制的末端表象」假設讀者已有 X 的認知、但「事件本身」段還沒交代</td>
      </tr>
      <tr>
          <td>塞滿分析報告 meta dialogue</td>
          <td>章節充斥「我們不討論什麼 / 錨點問題是什麼 / 資料充足度判斷是 X」這類寫作者內部 review 對話</td>
      </tr>
      <tr>
          <td>同論點重複預告</td>
          <td>在開頭、Anchor Check、Step 0 三個段落各預告一次「本篇要拆什麼」、推進緩慢、讀者第三遍才開始接觸實質內容</td>
      </tr>
  </tbody>
</table>
<p>修法是把 WRAP 工作內嵌進教學 narrative、章節順序服從「讀者最快理解事件結構」的教學流程、不是「WRAP 七步驟」的 process 順序。</p>
<hr>
<h2 id="情境">情境</h2>
<p>寫 3 篇商業 case-analyses（<a href="/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal</a> / <a href="/blog/business/case-analyses/fde-arms-race/" data-link-title="FDE 軍備競賽：SaaS 支柱鬆動下的結構性轉變" data-link-desc="用 WRAP 框架拆解三家基礎模型供應商同時押 FDE 模式背後的 SaaS 商業前提鬆動，並判讀 FDE 是過渡狀態還是長期結構">FDE 軍備競賽</a> / <a href="/blog/business/case-analyses/bufstream-acquisition/" data-link-title="CoreWeave 收購 Bufstream：整併週期下的賽道判讀與基礎設施重組" data-link-desc="用 WRAP 框架拆解 CoreWeave 買 Bufstream 揭露的串流市場整併、算力廠商對基礎設施的剛需、以及對資料工程師職涯的意涵">CoreWeave 收購 Bufstream</a>）第一版時、把 WRAP 七步驟全部當章節標題暴露給讀者：</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">## 事件本身
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">## Anchor Check：要回答什麼
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">## Step 0：資料充足度
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">## Widen Options：N 個解釋路徑
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">## Reality Test：用實證驗證
</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">## Attain Distance：長期影響
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">## Prepare to be Wrong：預先設計失敗回退
</span></span><span class="line"><span class="ln">10</span><span class="cl">## Tripwire：何時重新評估
</span></span><span class="line"><span class="ln">11</span><span class="cl">## 結論：可遷移框架</span></span></code></pre></div><p>3-reviewer audit + Round 2 重寫後、讀者再次 feedback 指出三個具體問題：</p>
<p>第一、claude-for-legal 開頭寫「『律師會被取代』是這套機制的末端表象、本篇從上游動作開始拆」—但「事件本身」段在開頭之後、讀者還不知道有「律師會被取代」這個敘事存在、開頭預設了讀者跟作者共享的 context。</p>
<p>第二、Anchor Check 段寫「錨點問題聚焦在結構、而非個別公司執行力」—這是「為什麼不討論某個非問題」的 disclaim、屬於分析報告 frame、不是教學 frame。讀者根本沒問「會討論個別公司執行力嗎」、預先 disclaim 反而增加閱讀成本。</p>
<p>第三、「這個動作對應用層 SaaS、新創、知識工作者三層分別造成什麼影響」這個論點在開頭、事件本身、Anchor Check 三段各出現一次—讀者讀到 Anchor Check 還沒接觸實質內容、只是被預告了三次同一件事。</p>
<p>更深層的問題是：把 WRAP 從「寫作者的內部工具」當成「文章的章節結構」。WRAP 是寫作者背後 review 自己有沒有做完 hypothesis 探索的 checklist、不是讀者要走的步驟序列。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步wrap-工作在腦中或草稿跑完不暴露到讀者">第一步：WRAP 工作在腦中或草稿跑完、不暴露到讀者</h3>
<p>WRAP 七步驟是寫作者完稿前要做完的 internal review：</p>
<ul>
<li>我有沒有做 Anchor Check（搞清楚要回答什麼）？</li>
<li>我手上的 evidence 夠不夠下結論（Step 0 資料充足度）？</li>
<li>我有沒有列出所有合理因果解釋（Widen Options）？</li>
<li>每個解釋我都用 evidence 驗證了（Reality Test）？</li>
<li>我有看 5-10 年長期影響嗎（Attain Distance）？</li>
<li>我列了關鍵假設跟反證訊號嗎（Prepare to be Wrong）？</li>
<li>我設了何時重新評估的 Tripwire 嗎？</li>
</ul>
<p>這七題自己回答完、不寫進文章。文章是教學 deliverable、不是 review process 的 paper trail。</p>
<h3 id="第二步章節結構服從教學流程不是-wrap-步驟順序">第二步：章節結構服從教學流程、不是 WRAP 步驟順序</h3>
<p>教學流程的合理順序：</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">## 事件本身                  把事件講清楚、包括同期動作、為什麼值得拆
</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">## 為什麼 X（教學段）         把 Widen Options + Reality Test 內嵌進教學 narrative
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">                            含並陳因果解釋（每個有 prior + prediction）+ evidence 配重
</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">                            按層 / 維度 / 時間軸組織、不按 WRAP 步驟
</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">## 長期影響與機會成本          Attain Distance 內容、移除 process 標籤
</span></span><span class="line"><span class="ln">14</span><span class="cl">
</span></span><span class="line"><span class="ln">15</span><span class="cl">## 預警訊號                   Prepare to be Wrong + Tripwire 合併
</span></span><span class="line"><span class="ln">16</span><span class="cl">                            教學語氣：「假設一 / 假設二 / 假設三 + 監控訊號」
</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></span></code></pre></div><h3 id="第三步開頭不對抗他人敘事不預設讀者認知">第三步：開頭不對抗他人敘事、不預設讀者認知</h3>
<p>開頭只做兩件事：</p>
<ul>
<li>描述事件（讀者進入 context）</li>
<li>一句話帶到本篇要拆什麼（讀者知道接下來會讀到什麼）</li>
</ul>
<p>不做這些事：</p>
<ul>
<li>「市場敘事是 X、但 X 不重要、Y 才是」（contrarian framing、見 <a href="../wrap-widen-options-strawman-risk/">#140</a>）</li>
<li>「X 是這套機制的末端表象、本篇從上游動作開始拆」（預設讀者已有 X 的認知）</li>
<li>「我們不討論個別公司執行力」（分析報告 frame、不是教學 frame）</li>
</ul>
<p>對其他敘事的回應、放到「事件本身」段、有 context 後才提：「公開討論集中在 X—這是這個動作的下游表象、本篇焦點在觸發它的上游機制」。讀者讀完「事件本身」段、才有 context 理解 X 是什麼、預設讀者認知的問題自然消失。</p>
<h3 id="第四步完稿時跑process-metadata-掃描">第四步：完稿時跑「process metadata 掃描」</h3>
<p>寫完後、grep 文章章節標題、檢查有沒有殘留：</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">grep -E <span class="s2">&#34;^## (Anchor Check|Step 0|Widen Options|Reality Test|Attain Distance|Prepare to be Wrong|Tripwire)&#34;</span> *.md</span></span></code></pre></div><p>任何命中、都是 WRAP process metadata 暴露給讀者。改成教學標題：</p>
<table>
  <thead>
      <tr>
          <th>WRAP 標題</th>
          <th>教學標題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Anchor Check</td>
          <td>（刪除、放開頭段或事件本身段）</td>
      </tr>
      <tr>
          <td>Step 0 資料充足度</td>
          <td>（刪除、放在「為什麼 X」段內）</td>
      </tr>
      <tr>
          <td>Widen Options</td>
          <td>為什麼供應商選擇 X / 為什麼買方出手</td>
      </tr>
      <tr>
          <td>Reality Test</td>
          <td>（同上段、不單獨成段）</td>
      </tr>
      <tr>
          <td>Attain Distance</td>
          <td>長期影響與機會成本</td>
      </tr>
      <tr>
          <td>Prepare to be Wrong</td>
          <td>預警訊號：何時重新評估這個分析</td>
      </tr>
      <tr>
          <td>Tripwire</td>
          <td>（同上段、用表格列訊號）</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="讀者預期被預設認知門檻不對齊">讀者預期被預設、認知門檻不對齊</h3>
<p>開頭「X 是末端表象、本篇拆上游」要求讀者已經知道 X 是什麼。如果 X 在後文才介紹、讀者在開頭就被 confused、之後讀「事件本身」段才搞懂、回去重讀開頭—閱讀成本翻倍。</p>
<h3 id="register-從教學滑成分析報告">Register 從教學滑成分析報告</h3>
<p>「Anchor Check」「Step 0 資料充足度」「Reality Test」這類詞屬於 analyst 內部對 own work 的 review 對話、不是給讀者看的章節標題。把這些暴露給讀者、整篇 register 從「教學知識庫」滑成「給同行看的分析報告」、讀者輪廓變成「已經懂 WRAP 框架的分析師」而非「想學商業分析的工程師」。</p>
<h3 id="同論點重複預告推進緩慢">同論點重複預告、推進緩慢</h3>
<p>WRAP 七步驟本來就有「先講要回答什麼、再講資料、再講選項、再驗證」的內在重複—每一步都會提到核心論點一次。如果七個步驟全部變章節、核心論點會在前三段被預告三次（開頭、Anchor Check、Step 0 都會講「本篇要拆什麼」）、讀者讀到 Reality Test 才接觸實質內容。</p>
<h3 id="wrap-框架的價值被當成修辭裝飾">WRAP 框架的價值被當成修辭裝飾</h3>
<p>WRAP 的真正價值是讓寫作者做 hypothesis 探索、防認知偏誤。當 WRAP 變章節結構、讀者跟寫作者都會把它當成「應該照走的 process」、原本的 hypothesis 探索變成「填表」、防認知偏誤的功能失效。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<ul>
<li>
<p><strong><a href="../wrap-widen-options-strawman-risk/">#140 WRAP Widen Options 容易塌成稻草人 framing</a></strong>：本卡是 #140 的上位原則。#140 處理 Widen Options 段落的內容違規（兩弱一強稻草人）、本卡處理 WRAP 整套被當章節結構暴露的 surface 違規。兩卡互補—改 Widen Options 內容不夠、還要改 surface presentation。</p>
</li>
<li>
<p><strong><a href="../collapse-is-implicit-default/">#125 Collapse 是隱形預設</a></strong>：本卡是 #125 在「寫作 process 透明度」surface 的具體 instance。Process metadata 暴露給讀者是「省去設計教學流程的便利選擇」的後果—不思考章節順序、直接把 WRAP 步驟當章節是最便利、但 collapse 掉了「為讀者設計閱讀順序」這個維度。</p>
</li>
<li>
<p><strong><a href="../literal-interception-vs-behavioral-refinement/">#82 字面攔截 vs 行為精煉</a></strong>：本卡是 #82 在「process metadata 暴露」維度的具體案例。lint 規則層 catch 不到「章節標題是 Anchor Check 還是『為什麼 X』」、要靠 reviewer / 讀者 feedback 才能發現—屬於 #82 的「行為精煉」維度。</p>
</li>
<li>
<p><strong><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍</a></strong>：本卡擴 #97 的 metadata surface 概念。#97 處理 title / description / heading 是讀者入口的 metadata；本卡指出 <em>章節結構本身</em> 也是 metadata surface—章節標題傳達「文章是什麼類型」、process 標題傳達「這是分析報告」、教學標題傳達「這是教學文章」。</p>
</li>
<li>
<p><strong><a href="../writing-review-multi-axis-completeness/">#126 寫作 review 是多軸完整性</a></strong>：本卡是 review 設計時要看的「surface 軸」的具體 instance。Review 不能只看「內容是否正確」、要看「章節結構傳達的 register 是否跟目標讀者對齊」。</p>
</li>
</ul>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>章節標題出現「Anchor Check / Step 0 / Widen Options / Reality Test」</td>
          <td>改成教學標題、把 WRAP 內容融進教學段</td>
      </tr>
      <tr>
          <td>開頭預設讀者已有某個敘事的認知（例如「X 是末端表象」）</td>
          <td>把對該敘事的回應移到「事件本身」段、開頭只描述事件 + 帶到本篇主題</td>
      </tr>
      <tr>
          <td>文章有「我們不討論 X」這類分析報告 disclaim</td>
          <td>刪、教學文章不需要預先排除某些議題、讀者沒問</td>
      </tr>
      <tr>
          <td>同一論點在開頭、Anchor Check、Step 0 各預告一次</td>
          <td>改成只在開頭預告一次、後續直接推進</td>
      </tr>
      <tr>
          <td>章節順序嚴格按 WRAP 步驟</td>
          <td>改成按教學流程：開頭 → 事件 → 為什麼 X → 結構性機制 → 長期 → 預警 → 框架</td>
      </tr>
      <tr>
          <td>讀者反饋「文章像分析報告、不像教學」</td>
          <td>Register 漂移、check 是不是 WRAP process metadata 暴露</td>
      </tr>
      <tr>
          <td>Reviewer 報告「文章預設讀者已有某種認知」</td>
          <td>開頭結構有問題、修法見本卡「開頭不對抗他人敘事、不預設讀者認知」段</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="適用範圍與邊界">適用範圍與邊界</h2>
<ul>
<li><strong>適用範圍</strong>：
<ul>
<li>用 WRAP 框架寫商業 case-analyses、市場事件拆解、產業策略分析</li>
<li>用其他「先列 process、再走 process」框架寫教學文章（5W1H、5-Forces 分步、JTBD 階段、case method 步驟）</li>
<li>任何「寫作者內部 review tool」跟「讀者教學 narrative」混淆的情境</li>
</ul>
</li>
<li><strong>不適用</strong>：
<ul>
<li>給同行看的分析報告（analyst-to-analyst、process metadata 是正當的）</li>
<li>學術論文（IMRaD 結構有正當性、process 標題是學術慣例）</li>
<li>純技術 reference 文件（process metadata 反而幫助快速定位）</li>
</ul>
</li>
<li><strong>邊界</strong>：本卡禁的是「把 WRAP 整套步驟當文章章節結構」、不是禁所有 process 詞彙。在合適的位置提一句「以下用 WRAP 框架背後的 hypothesis 探索方法拆」是 OK 的、整篇用 WRAP 步驟當章節就違規。判別線：章節標題是描述「讀者會學到什麼」（教學）還是「作者在做什麼分析步驟」（process）。</li>
</ul>
]]></content:encoded></item><item><title>文章主體要對齊標題承諾、WRAP 內部分析不該喧賓奪主</title><link>https://tarrragon.github.io/blog/report/article-body-must-align-with-title-commitment/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/article-body-must-align-with-title-commitment/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>文章標題對讀者做了承諾、文章主體必須對齊這個承諾。WRAP 內部分析（Widen Options + Reality Test 含 prior 引用 + evidence weight）即使方法論做得好、若不是標題承諾的內容、就不該佔文章主體。&lt;/p>
&lt;p>這跟 &lt;a href="../wrap-as-internal-tool-not-section-structure/">#141 WRAP 是寫作者的內部工具、不是文章章節結構&lt;/a> 是兩個不同層級的議題：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>議題&lt;/th>
 &lt;th>&lt;a href="../wrap-as-internal-tool-not-section-structure/">#141&lt;/a>&lt;/th>
 &lt;th>本卡 (#142)&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>處理層級&lt;/td>
 &lt;td>章節標題（surface）&lt;/td>
 &lt;td>章節內容（scope）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>違規症狀&lt;/td>
 &lt;td>Process metadata 標題（「Widen Options」「Reality Test」）&lt;/td>
 &lt;td>即使標題改了、內容仍是 WRAP 內部分析、偏離標題承諾&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修法&lt;/td>
 &lt;td>改章節標題為教學風格&lt;/td>
 &lt;td>縮減 WRAP 內部分析篇幅、聚焦標題承諾的內容&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>附帶副作用&lt;/td>
 &lt;td>預設讀者認知、分析報告 meta dialogue、重複預告&lt;/td>
 &lt;td>Source citation hallucination 風險、解釋順序錯位（source 在前、解釋在後）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩卡互補—改了章節標題還不夠、章節內容也要對齊標題承諾。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>3 篇 case-analyses 經過 &lt;a href="../wrap-as-internal-tool-not-section-structure/">#141&lt;/a> 的 Round 3 重寫、章節標題已從 WRAP process metadata 改成教學風格（「為什麼供應商選擇 enterprise 包裝」取代「Widen Options」）。但讀者再次 feedback 指出更深的問題：&lt;/p>
&lt;p>第一、&lt;a href="https://tarrragon.github.io/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal 之後&lt;/a> 的標題承諾「應用層、新創、知識工作者的三層擠壓」、但「供應商為什麼選擇 enterprise 包裝」段佔了文章 30%+ 篇幅—讀者拿到的內容跟標題承諾不匹配。&lt;/p>
&lt;p>第二、那一段內容引用「a16z、Sequoia 公開報告跟 Anthropic 投資人 deck 都強調 enterprise ARR」這類 source—但這些引用沒具體出處（哪份報告、哪一頁、哪一段）、有 hallucination 風險。為了支撐 WRAP Widen Options 的 prior 而引入沒實際出處的 source、是 fidelity 漏洞。&lt;/p>
&lt;p>第三、解釋順序錯位—寫成「a16z / Sequoia 等公開報告強調 ARR、背後邏輯是 X」、把 source 放前面、解釋放後面、違反 AGENTS.md 原則一「核心原則先行」。&lt;/p>
&lt;p>更深層問題：即使章節標題改成教學風格、WRAP 內部分析（含 prior 引用）的內容仍然喧賓奪主、偏離標題承諾。3 篇都踩同樣的 pattern：&lt;/p>
&lt;ul>
&lt;li>claude-for-legal 標題「三層擠壓」、原版「供應商為什麼選擇 enterprise 包裝」段佔大量篇幅、含 hallucinated source&lt;/li>
&lt;li>fde-arms-race 標題「SaaS 三支柱鬆動」、原版「三家為什麼同步押 FDE」段佔了三支柱主體的空間&lt;/li>
&lt;li>bufstream 標題「整併週期 + 基礎設施重組」、原版「Buf 為什麼賣」「CoreWeave 為什麼買」兩段 WRAP 分析佔主體&lt;/li>
&lt;/ul>
&lt;p>Round 4 重寫後、3 篇都移除「為什麼 X」獨立段、把核心動機塞進「事件本身」一兩句 + cross-link 到處理該動機的對應文章、文章主體留給標題承諾的內容。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;h3 id="第一步寫稿前明確列出標題承諾什麼">第一步：寫稿前明確列出標題承諾什麼&lt;/h3>
&lt;p>標題是讀者跟文章之間的合約。寫稿前用一句話寫下「這篇標題承諾讀者拿到什麼」：&lt;/p>
&lt;ul>
&lt;li>「Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓」→ 承諾三層擠壓的拆解&lt;/li>
&lt;li>「FDE 軍備競賽：SaaS 三支柱鬆動下的結構性轉變」→ 承諾三支柱怎麼鬆動的機制&lt;/li>
&lt;li>「CoreWeave 收購 Bufstream：整併週期下的賽道判讀與基礎設施重組」→ 承諾整併週期判讀 + 基礎設施重組分析&lt;/li>
&lt;/ul>
&lt;p>承諾寫下後、後續每個章節都對齊問：「這段是不是在履行承諾？」&lt;/p>
&lt;h3 id="第二步跑完-wrap-內部分析區分主結論跟分析過程">第二步：跑完 WRAP 內部分析、區分「主結論」跟「分析過程」&lt;/h3>
&lt;p>WRAP 七步驟在寫作者腦中跑完—Anchor Check / Step 0 / Widen Options / Reality Test / Attain Distance / Prepare to be Wrong / Tripwire 都要做。但跑完後、分兩類東西：&lt;/p>
&lt;ul>
&lt;li>&lt;strong>主結論&lt;/strong>：可以放文章主體、是讀者要拿走的判讀&lt;/li>
&lt;li>&lt;strong>分析過程&lt;/strong>：（Widen Options 的多個解釋、Reality Test 的逐一驗證、Prior 的 source 引用）留在腦中或寫作筆記、不放進文章&lt;/li>
&lt;/ul>
&lt;p>判別線是「這段內容是不是標題承諾的一部分」。承諾「三層擠壓」、文章主體就是三層擠壓；供應商動機是 prelude / context、塞進「事件本身」一兩句帶過、不獨立成段做完整 WRAP 分析。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>文章標題對讀者做了承諾、文章主體必須對齊這個承諾。WRAP 內部分析（Widen Options + Reality Test 含 prior 引用 + evidence weight）即使方法論做得好、若不是標題承諾的內容、就不該佔文章主體。</p>
<p>這跟 <a href="../wrap-as-internal-tool-not-section-structure/">#141 WRAP 是寫作者的內部工具、不是文章章節結構</a> 是兩個不同層級的議題：</p>
<table>
  <thead>
      <tr>
          <th>議題</th>
          <th><a href="../wrap-as-internal-tool-not-section-structure/">#141</a></th>
          <th>本卡 (#142)</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>處理層級</td>
          <td>章節標題（surface）</td>
          <td>章節內容（scope）</td>
      </tr>
      <tr>
          <td>違規症狀</td>
          <td>Process metadata 標題（「Widen Options」「Reality Test」）</td>
          <td>即使標題改了、內容仍是 WRAP 內部分析、偏離標題承諾</td>
      </tr>
      <tr>
          <td>修法</td>
          <td>改章節標題為教學風格</td>
          <td>縮減 WRAP 內部分析篇幅、聚焦標題承諾的內容</td>
      </tr>
      <tr>
          <td>附帶副作用</td>
          <td>預設讀者認知、分析報告 meta dialogue、重複預告</td>
          <td>Source citation hallucination 風險、解釋順序錯位（source 在前、解釋在後）</td>
      </tr>
  </tbody>
</table>
<p>兩卡互補—改了章節標題還不夠、章節內容也要對齊標題承諾。</p>
<hr>
<h2 id="情境">情境</h2>
<p>3 篇 case-analyses 經過 <a href="../wrap-as-internal-tool-not-section-structure/">#141</a> 的 Round 3 重寫、章節標題已從 WRAP process metadata 改成教學風格（「為什麼供應商選擇 enterprise 包裝」取代「Widen Options」）。但讀者再次 feedback 指出更深的問題：</p>
<p>第一、<a href="/blog/business/case-analyses/claude-for-legal/" data-link-title="Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓" data-link-desc="用 WRAP 框架拆解基礎模型供應商進入垂直市場觸發的三層結構轉變：應用層 SaaS 毛利擠壓、新創淘汰、知識工作者判斷賭注放大">Claude for Legal 之後</a> 的標題承諾「應用層、新創、知識工作者的三層擠壓」、但「供應商為什麼選擇 enterprise 包裝」段佔了文章 30%+ 篇幅—讀者拿到的內容跟標題承諾不匹配。</p>
<p>第二、那一段內容引用「a16z、Sequoia 公開報告跟 Anthropic 投資人 deck 都強調 enterprise ARR」這類 source—但這些引用沒具體出處（哪份報告、哪一頁、哪一段）、有 hallucination 風險。為了支撐 WRAP Widen Options 的 prior 而引入沒實際出處的 source、是 fidelity 漏洞。</p>
<p>第三、解釋順序錯位—寫成「a16z / Sequoia 等公開報告強調 ARR、背後邏輯是 X」、把 source 放前面、解釋放後面、違反 AGENTS.md 原則一「核心原則先行」。</p>
<p>更深層問題：即使章節標題改成教學風格、WRAP 內部分析（含 prior 引用）的內容仍然喧賓奪主、偏離標題承諾。3 篇都踩同樣的 pattern：</p>
<ul>
<li>claude-for-legal 標題「三層擠壓」、原版「供應商為什麼選擇 enterprise 包裝」段佔大量篇幅、含 hallucinated source</li>
<li>fde-arms-race 標題「SaaS 三支柱鬆動」、原版「三家為什麼同步押 FDE」段佔了三支柱主體的空間</li>
<li>bufstream 標題「整併週期 + 基礎設施重組」、原版「Buf 為什麼賣」「CoreWeave 為什麼買」兩段 WRAP 分析佔主體</li>
</ul>
<p>Round 4 重寫後、3 篇都移除「為什麼 X」獨立段、把核心動機塞進「事件本身」一兩句 + cross-link 到處理該動機的對應文章、文章主體留給標題承諾的內容。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步寫稿前明確列出標題承諾什麼">第一步：寫稿前明確列出標題承諾什麼</h3>
<p>標題是讀者跟文章之間的合約。寫稿前用一句話寫下「這篇標題承諾讀者拿到什麼」：</p>
<ul>
<li>「Claude for Legal 之後：應用層、新創、知識工作者的三層擠壓」→ 承諾三層擠壓的拆解</li>
<li>「FDE 軍備競賽：SaaS 三支柱鬆動下的結構性轉變」→ 承諾三支柱怎麼鬆動的機制</li>
<li>「CoreWeave 收購 Bufstream：整併週期下的賽道判讀與基礎設施重組」→ 承諾整併週期判讀 + 基礎設施重組分析</li>
</ul>
<p>承諾寫下後、後續每個章節都對齊問：「這段是不是在履行承諾？」</p>
<h3 id="第二步跑完-wrap-內部分析區分主結論跟分析過程">第二步：跑完 WRAP 內部分析、區分「主結論」跟「分析過程」</h3>
<p>WRAP 七步驟在寫作者腦中跑完—Anchor Check / Step 0 / Widen Options / Reality Test / Attain Distance / Prepare to be Wrong / Tripwire 都要做。但跑完後、分兩類東西：</p>
<ul>
<li><strong>主結論</strong>：可以放文章主體、是讀者要拿走的判讀</li>
<li><strong>分析過程</strong>：（Widen Options 的多個解釋、Reality Test 的逐一驗證、Prior 的 source 引用）留在腦中或寫作筆記、不放進文章</li>
</ul>
<p>判別線是「這段內容是不是標題承諾的一部分」。承諾「三層擠壓」、文章主體就是三層擠壓；供應商動機是 prelude / context、塞進「事件本身」一兩句帶過、不獨立成段做完整 WRAP 分析。</p>
<h3 id="第三步完稿時跑標題對齊測試">第三步：完稿時跑「標題對齊測試」</h3>
<p>寫完後、列出文章各段佔多少篇幅、跟標題承諾比對：</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></code></pre></div><p>例：</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">- 事件本身 (10%) — 提供 context、合理
</span></span><span class="line"><span class="ln">2</span><span class="cl">- 供應商為什麼選擇 enterprise 包裝 (30%) — 不在標題承諾、過度
</span></span><span class="line"><span class="ln">3</span><span class="cl">- 第一層擠壓 (15%) — 對齊承諾
</span></span><span class="line"><span class="ln">4</span><span class="cl">- 第二層擠壓 (15%) — 對齊承諾
</span></span><span class="line"><span class="ln">5</span><span class="cl">- 第三層擠壓 (15%) — 對齊承諾
</span></span><span class="line"><span class="ln">6</span><span class="cl">- 長期影響 (10%) — 對齊承諾
</span></span><span class="line"><span class="ln">7</span><span class="cl">- 預警訊號 + 框架 (5%) — 對齊承諾</span></span></code></pre></div><p>「不在標題承諾」的段落佔 &gt; 20% 就要重寫—把該段縮成一兩句塞進「事件本身」、cross-link 到處理該議題的對應文章、不獨立展開。</p>
<h3 id="第四步source-citation-必須真實可驗證">第四步：Source citation 必須真實可驗證</h3>
<p>引用 source 時遵守三條規則：</p>
<ol>
<li><strong>能 verify 才寫</strong>：引用「a16z 報告」「Sequoia 分析」前、確認你看過該報告、能給具體標題或連結。不能就改成 hedged claim（「業界普遍觀察」「分析師多次點過」）。</li>
<li><strong>解釋在前、source 在後</strong>：「API 利潤太薄需要長合約對沖（這個論點 a16z 多次公開分析）」、不是「a16z 公開分析 API 利潤太薄、所以需要長合約對沖」。核心原則先行—讀者先吸收解釋、再判斷 source 可信度。</li>
<li><strong>不確定就刪掉 source 引用</strong>：寫到「a16z、Sequoia、Andreessen」這種列舉時要問「我真的能列出三家都講過這個論點嗎？」答案是「不確定」就改成「業界普遍觀察」、不列 specific 名字。</li>
</ol>
<h3 id="第五步wrap-內部分析的次要結論的處理">第五步：WRAP 內部分析的次要結論的處理</h3>
<p>WRAP 內部分析跑完後、會產出「主結論 + 次要結論」。主結論放標題承諾的主體、次要結論的處理：</p>
<table>
  <thead>
      <tr>
          <th>次要結論類型</th>
          <th>處理方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>跟其他文章主題重疊</td>
          <td>Cross-link 過去、不展開（claude-for-legal 把供應商動機 cross-link 到 fde-arms-race）</td>
      </tr>
      <tr>
          <td>提供事件 context</td>
          <td>塞進「事件本身」段一兩句、不獨立成段</td>
      </tr>
      <tr>
          <td>完全偏離本篇主題</td>
          <td>留在寫作筆記、可能變成另一篇文章</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="讀者拿到的內容跟標題承諾不匹配">讀者拿到的內容跟標題承諾不匹配</h3>
<p>標題承諾「三層擠壓」、文章主體 30% 在講「供應商為什麼選擇 enterprise 包裝」、讀者拿走的判讀工具偏離標題暗示的方向。這比章節標題違規更隱蔽—章節標題違規讀者一眼看穿、內容偏離標題要讀完才發現、傷害更深。</p>
<h3 id="hallucinated-source-citation-的-fidelity-漏洞">Hallucinated source citation 的 fidelity 漏洞</h3>
<p>WRAP Widen Options 需要 prior 支撐（「誰持這論」）、寫作者為了證明 prior 存在、容易引用「a16z、Sequoia、Andreessen」這類沒具體出處的 source。讀者 trust 在 source citation 上、hallucinated source 一旦被識破、整篇文章的 fidelity 崩。</p>
<h3 id="解釋順序錯位違反核心原則先行">解釋順序錯位、違反核心原則先行</h3>
<p>當寫作者重心在「我有 source 支撐」、會把 source 放前面（「a16z 公開報告強調 X」）、解釋放後面。違反 AGENTS.md 原則一「核心原則先行」—讀者要的是解釋本身、source 是 attribution、不是 lead。</p>
<h3 id="wrap-內部分析方法論價值反而被稀釋">WRAP 內部分析方法論價值反而被稀釋</h3>
<p>WRAP 是寫作者的 hypothesis 探索工具、價值在「強制做完整探索、防認知偏誤」。當分析過程被搬上文章主體、讀者把它當成「文章內容」吸收、原本的探索工具退化成「對讀者展示我做了多少 hypothesis 探索」的修辭。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<ul>
<li>
<p><strong><a href="../wrap-as-internal-tool-not-section-structure/">#141 WRAP 是寫作者的內部工具、不是文章章節結構</a></strong>：sibling 卡。#141 處理章節標題 surface 違規（process metadata 暴露）、本卡處理章節內容 scope 違規（WRAP 內部分析喧賓奪主）。兩卡互補—改章節標題不夠、還要改章節內容比重。</p>
</li>
<li>
<p><strong><a href="../wrap-widen-options-strawman-risk/">#140 WRAP Widen Options 容易塌成稻草人 framing</a></strong>：cousin 卡。#140 處理 Widen Options 段落內部的稻草人結構、本卡處理 Widen Options 段落「該不該存在」的更上位議題。如果 Widen Options 跟標題承諾不對齊、根本不該獨立成段、稻草人問題自然消失。</p>
</li>
<li>
<p><strong><a href="../teaching-completeness-by-learner-journey/">#131 教材完整性要用讀者旅程驗證</a></strong>：本卡是 #131 在「標題承諾兌現」維度的具體 instance。讀者旅程的起點是標題暗示、終點是讀完文章能做什麼。標題承諾不兌現、讀者旅程斷在中段、完成感跟可遷移工具都失效。</p>
</li>
<li>
<p><strong><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍</a></strong>：本卡擴 #97 的 metadata surface 概念。標題本身是 metadata surface—它對讀者承諾文章主體是什麼。Review 不能只看內文是否正確、要看「內文跟標題承諾是否對齊」。</p>
</li>
<li>
<p><strong><a href="../writing-review-multi-axis-completeness/">#126 寫作 review 是多軸完整性</a></strong>：本卡是 review 設計時要看的「scope 軸 + 標題對齊軸」的具體 instance。Review 不只看 frame / instance / surface、還要看「內容範圍跟標題承諾是否對齊」、是 scope 軸的延伸應用。</p>
</li>
</ul>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>文章某段佔 &gt; 20% 篇幅、但不在標題暗示的主題範圍</td>
          <td>縮成一兩句塞進事件本身、cross-link 到處理該議題的對應文章</td>
      </tr>
      <tr>
          <td>Widen Options / Reality Test 內容獨立成段</td>
          <td>改成內嵌進「事件本身」段一兩句、不展開完整分析</td>
      </tr>
      <tr>
          <td>Source citation 列舉「a16z、Sequoia、Andreessen」這類沒具體出處的 prior</td>
          <td>Verify 不到就改 hedged claim（「業界普遍觀察」）、不列 specific 名字</td>
      </tr>
      <tr>
          <td>段落寫成「source 公開 X、所以 X 成立」</td>
          <td>順序錯、改成「解釋本身 + 附加 source attribution」</td>
      </tr>
      <tr>
          <td>完稿後讀者反饋「文章寫了很多東西、但跟標題主題不一致」</td>
          <td>標題對齊測試失敗、要把不在標題承諾範圍的段落瘦身或移除</td>
      </tr>
      <tr>
          <td>Reviewer 報告「文章主體 30% 在講次要議題」</td>
          <td>Scope mismatch、跑標題對齊測試 + 重寫</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="適用範圍與邊界">適用範圍與邊界</h2>
<ul>
<li><strong>適用範圍</strong>：
<ul>
<li>用 WRAP 框架寫商業 case-analyses、市場事件拆解、產業策略分析</li>
<li>任何「標題承諾 vs 文章主體 scope」可能不對齊的情境（深度教學文章、技術 deep-dive、產業分析）</li>
<li>文章標題明確指涉特定主題、但寫作過程容易被相關但非標題承諾的分析吸引展開</li>
</ul>
</li>
<li><strong>不適用</strong>：
<ul>
<li>探索式 essay（標題本來就模糊、scope 由內文展開）</li>
<li>短篇 commentary（內容篇幅不夠展開 scope mismatch）</li>
<li>純技術 reference（標題承諾的是「查得到」、不是「主題聚焦」）</li>
</ul>
</li>
<li><strong>邊界</strong>：本卡禁的是「WRAP 內部分析喧賓奪主」、不是禁所有 WRAP 內部分析出現在文章。標題承諾本身就是「拆解 X 動機」的文章（例如 fde-arms-race 主題就是供應商為什麼押 FDE）、那 WRAP 內部分析才是文章主體、屬於正當對齊。判別線：標題承諾的主題跟 WRAP 分析的對象是否一致。一致就展開、不一致就壓縮成 cross-link。</li>
</ul>
]]></content:encoded></item><item><title>外部分析文章要先拆成事實、作者判讀、本文推導</title><link>https://tarrragon.github.io/blog/report/external-analysis-source-layering/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/external-analysis-source-layering/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>外部分析文章是寫作材料、不是可直接搬進教學文章的事實層。把分析師文章、VC essay、產業評論改寫成本 blog 的商業分析時、先把材料拆成三層：可驗證事實、原作者判讀、本文推導。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>層級&lt;/th>
 &lt;th>內容角色&lt;/th>
 &lt;th>進正文時的寫法&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>事實&lt;/td>
 &lt;td>事件、交易、產品發布、公開數字&lt;/td>
 &lt;td>放「事件本身」或背景段、可回溯來源&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>原作者判讀&lt;/td>
 &lt;td>分析師對事件的解釋、預測、立場&lt;/td>
 &lt;td>標成「某類分析觀點」、只當 hypothesis&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>本文推導&lt;/td>
 &lt;td>本文從多個來源合成的判斷框架&lt;/td>
 &lt;td>明確寫成「本文判讀」或「可遷移框架」&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>判別問題：「這句話如果拿掉原作者名字、還能被當成可驗證事實嗎？」不能、就不可寫成事實句。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>&lt;code>content/business/&lt;/code> 的原始出發點是輸入其他分析師文章、再讓 AI 轉換成本 blog 要的風格。第一版 business case-analyses 雖然已經用 WRAP 拆事件、但 commit 演變顯示三個容易混在一起的材料來源：&lt;/p>
&lt;p>第一、公開事件本身，例如 Anthropic 推出 Claude for Legal、Snowflake / Databricks / MotherDuck 同期推出 FDE、CoreWeave 收購 Bufstream。這些是可驗證事實。&lt;/p>
&lt;p>第二、外部分析師對事件的判讀，例如「這是 enterprise ARR 驅動」「這是基礎設施垂直整合」「這是 SaaS 三支柱被鬆動」。這些是原作者或市場的解釋，不是事件本身。&lt;/p>
&lt;p>第三、本文要教讀者帶走的框架，例如「三層擠壓」「資料平台前端化」「整併週期下的賽道判讀」。這些是本文推導。&lt;/p>
&lt;p>Round 4 的 &lt;code>#142&lt;/code> 已經處理「WRAP 內部分析喧賓奪主」；本卡補更上游的 source 問題：在開始寫正文前、先知道每句材料屬於哪一層。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;h3 id="第一步來源進稿前先做三欄標註">第一步：來源進稿前先做三欄標註&lt;/h3>
&lt;p>把外部文章或 AI 轉寫草稿中的句子標成三欄：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>欄位&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>事實&lt;/td>
 &lt;td>這件事有沒有公開來源可以驗證？&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>原作者判讀&lt;/td>
 &lt;td>這是不是某位作者或某類市場敘事的解釋？&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>本文推導&lt;/td>
 &lt;td>這是不是本文從多個材料合成出來的教學框架？&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>同一句若同時包含兩層、拆成兩句。例：「CoreWeave 收購 Bufstream，代表算力廠商開始垂直整合 data pipeline」應拆成：&lt;/p>
&lt;ol>
&lt;li>CoreWeave 收購 Bufstream。這是事實。&lt;/li>
&lt;li>算力廠商往 data pipeline 延伸。這是本文判讀。&lt;/li>
&lt;/ol>
&lt;h3 id="第二步事實進事件段判讀進-hypothesis推導進主體">第二步：事實進事件段、判讀進 hypothesis、推導進主體&lt;/h3>
&lt;p>三層各有適合的位置：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>層級&lt;/th>
 &lt;th>正文位置&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>事實&lt;/td>
 &lt;td>開頭與「事件本身」段&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>原作者判讀&lt;/td>
 &lt;td>Widen Options 的 prior 或背景敘事&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>本文推導&lt;/td>
 &lt;td>文章主體、長期影響、預警訊號、框架&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>外部分析師的判讀可以幫助 widen hypothesis space，但它不該直接變成本 blog 的正文結論。正文結論要由本文的 evidence weight 與可遷移框架承擔。&lt;/p>
&lt;h3 id="第三步合成-frame-要標成本文推導">第三步：合成 frame 要標成本文推導&lt;/h3>
&lt;p>當文章把多個來源合成成一個框架時、要讓讀者知道這是本文的教學合成。寫法可以是：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">本文把這個變化整理成三層：應用層 SaaS、新創供應商、知識工作者。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這比「市場正在發生三層擠壓」精準，因為前者承認這是本文整理出的框架，後者容易讓讀者誤以為三層分類是外部事件本身。&lt;/p>
&lt;h3 id="第四步引用來源時先寫概念再放-attribution">第四步：引用來源時先寫概念、再放 attribution&lt;/h3>
&lt;p>來源 attribution 是可回溯支撐，不是段落主詞。先寫本文要教的概念，再補來源角色：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">API 型產品若毛利薄、供應商會傾向用 enterprise contract 對沖收入波動。這個判讀可作為檢查供應商動機的 prior，不能直接當作本篇三層擠壓的主體。&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>不要寫成「某某報告說 X，所以 X 是結論」。這會把來源權威放在概念之前，也讓讀者無法分辨 source claim 與本文推導。&lt;/p>
&lt;hr>
&lt;h2 id="沒這樣做的麻煩">沒這樣做的麻煩&lt;/h2>
&lt;h3 id="分析師-frame-被誤當事實">分析師 frame 被誤當事實&lt;/h3>
&lt;p>外部文章的分類與比喻通常是作者的 frame。直接搬進正文，讀者會以為那是事件本身揭露的事實。後續若讀者回查來源找不到「三層擠壓」或「SaaS 三支柱鬆動」這些詞，會降低文章可信度。&lt;/p>
&lt;h3 id="ai-改寫會放大-attribution-漂移">AI 改寫會放大 attribution 漂移&lt;/h3>
&lt;p>AI 轉寫常把「某作者認為」壓縮成「這代表」。這個壓縮讓 claim 從觀點層滑到事實層。若沒有 source layering，改寫後的句子會更順、但 fidelity 更差。&lt;/p>
&lt;h3 id="本文自己的貢獻變模糊">本文自己的貢獻變模糊&lt;/h3>
&lt;p>教學型商業分析的價值是把事件整理成讀者可遷移的框架。若原作者判讀與本文推導混在一起，讀者看不出本文到底新增了什麼，只會覺得是另一篇摘要。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原則&lt;/th>
 &lt;th>跟本卡的關係&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="../fact-vs-derive-citation-layering/">#116 引用案例要分觀察層 / 判讀層&lt;/a>&lt;/td>
 &lt;td>#116 處理 case 引用，本卡把同一條分層原則套到外部分析文章 source&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨多個 case 合成的 frame 必須標為章節合成&lt;/a>&lt;/td>
 &lt;td>本卡是 #117 在 analyst source 的對應版本：跨來源合成 frame 要標成本文推導&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../article-body-must-align-with-title-commitment/">#142 文章主體要對齊標題承諾&lt;/a>&lt;/td>
 &lt;td>Source layering 是 #142 的前置條件；先知道哪些是背景 prior，才知道哪些不該佔主體&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../wrap-widen-options-strawman-risk/">#140 WRAP Widen Options 容易塌成稻草人 framing&lt;/a>&lt;/td>
 &lt;td>原作者判讀可作為 Widen Options prior，但不能被設成待打倒的稻草人或預設正解&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍&lt;/a>&lt;/td>
 &lt;td>Title / description 若把本文推導寫成事實，也會造成來源層漂移；metadata 也要跑 source layering&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>該做的事&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>句子寫「這代表 X」、但 X 其實是分析師解釋&lt;/td>
 &lt;td>改成「一種判讀是 X」或標成本文推導&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>外部文章的比喻或分類被直接放進本篇標題&lt;/td>
 &lt;td>確認這是原作者 frame 還是本文 frame&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>AI 改寫後少了「某作者認為」「市場敘事」等 attribution&lt;/td>
 &lt;td>回原文補回 source layer&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>引用來源只寫機構名、沒有具體文章或可驗證出處&lt;/td>
 &lt;td>刪掉具名 source，改成一般 prior 或重新查證&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者問「這是事件事實、原文觀點、還是你自己的推導」&lt;/td>
 &lt;td>Source layering 失敗，重寫段落主詞與 attribution&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心原則&lt;/strong>：外部分析文章進入教學寫作前、先拆成事實、作者判讀、本文推導。三層分清楚，文章才有可回溯性，也才看得出本文真正教了什麼。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>外部分析文章是寫作材料、不是可直接搬進教學文章的事實層。把分析師文章、VC essay、產業評論改寫成本 blog 的商業分析時、先把材料拆成三層：可驗證事實、原作者判讀、本文推導。</p>
<table>
  <thead>
      <tr>
          <th>層級</th>
          <th>內容角色</th>
          <th>進正文時的寫法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>事實</td>
          <td>事件、交易、產品發布、公開數字</td>
          <td>放「事件本身」或背景段、可回溯來源</td>
      </tr>
      <tr>
          <td>原作者判讀</td>
          <td>分析師對事件的解釋、預測、立場</td>
          <td>標成「某類分析觀點」、只當 hypothesis</td>
      </tr>
      <tr>
          <td>本文推導</td>
          <td>本文從多個來源合成的判斷框架</td>
          <td>明確寫成「本文判讀」或「可遷移框架」</td>
      </tr>
  </tbody>
</table>
<p>判別問題：「這句話如果拿掉原作者名字、還能被當成可驗證事實嗎？」不能、就不可寫成事實句。</p>
<hr>
<h2 id="情境">情境</h2>
<p><code>content/business/</code> 的原始出發點是輸入其他分析師文章、再讓 AI 轉換成本 blog 要的風格。第一版 business case-analyses 雖然已經用 WRAP 拆事件、但 commit 演變顯示三個容易混在一起的材料來源：</p>
<p>第一、公開事件本身，例如 Anthropic 推出 Claude for Legal、Snowflake / Databricks / MotherDuck 同期推出 FDE、CoreWeave 收購 Bufstream。這些是可驗證事實。</p>
<p>第二、外部分析師對事件的判讀，例如「這是 enterprise ARR 驅動」「這是基礎設施垂直整合」「這是 SaaS 三支柱被鬆動」。這些是原作者或市場的解釋，不是事件本身。</p>
<p>第三、本文要教讀者帶走的框架，例如「三層擠壓」「資料平台前端化」「整併週期下的賽道判讀」。這些是本文推導。</p>
<p>Round 4 的 <code>#142</code> 已經處理「WRAP 內部分析喧賓奪主」；本卡補更上游的 source 問題：在開始寫正文前、先知道每句材料屬於哪一層。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步來源進稿前先做三欄標註">第一步：來源進稿前先做三欄標註</h3>
<p>把外部文章或 AI 轉寫草稿中的句子標成三欄：</p>
<table>
  <thead>
      <tr>
          <th>欄位</th>
          <th>問題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>事實</td>
          <td>這件事有沒有公開來源可以驗證？</td>
      </tr>
      <tr>
          <td>原作者判讀</td>
          <td>這是不是某位作者或某類市場敘事的解釋？</td>
      </tr>
      <tr>
          <td>本文推導</td>
          <td>這是不是本文從多個材料合成出來的教學框架？</td>
      </tr>
  </tbody>
</table>
<p>同一句若同時包含兩層、拆成兩句。例：「CoreWeave 收購 Bufstream，代表算力廠商開始垂直整合 data pipeline」應拆成：</p>
<ol>
<li>CoreWeave 收購 Bufstream。這是事實。</li>
<li>算力廠商往 data pipeline 延伸。這是本文判讀。</li>
</ol>
<h3 id="第二步事實進事件段判讀進-hypothesis推導進主體">第二步：事實進事件段、判讀進 hypothesis、推導進主體</h3>
<p>三層各有適合的位置：</p>
<table>
  <thead>
      <tr>
          <th>層級</th>
          <th>正文位置</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>事實</td>
          <td>開頭與「事件本身」段</td>
      </tr>
      <tr>
          <td>原作者判讀</td>
          <td>Widen Options 的 prior 或背景敘事</td>
      </tr>
      <tr>
          <td>本文推導</td>
          <td>文章主體、長期影響、預警訊號、框架</td>
      </tr>
  </tbody>
</table>
<p>外部分析師的判讀可以幫助 widen hypothesis space，但它不該直接變成本 blog 的正文結論。正文結論要由本文的 evidence weight 與可遷移框架承擔。</p>
<h3 id="第三步合成-frame-要標成本文推導">第三步：合成 frame 要標成本文推導</h3>
<p>當文章把多個來源合成成一個框架時、要讓讀者知道這是本文的教學合成。寫法可以是：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">本文把這個變化整理成三層：應用層 SaaS、新創供應商、知識工作者。</span></span></code></pre></div><p>這比「市場正在發生三層擠壓」精準，因為前者承認這是本文整理出的框架，後者容易讓讀者誤以為三層分類是外部事件本身。</p>
<h3 id="第四步引用來源時先寫概念再放-attribution">第四步：引用來源時先寫概念、再放 attribution</h3>
<p>來源 attribution 是可回溯支撐，不是段落主詞。先寫本文要教的概念，再補來源角色：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl">API 型產品若毛利薄、供應商會傾向用 enterprise contract 對沖收入波動。這個判讀可作為檢查供應商動機的 prior，不能直接當作本篇三層擠壓的主體。</span></span></code></pre></div><p>不要寫成「某某報告說 X，所以 X 是結論」。這會把來源權威放在概念之前，也讓讀者無法分辨 source claim 與本文推導。</p>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="分析師-frame-被誤當事實">分析師 frame 被誤當事實</h3>
<p>外部文章的分類與比喻通常是作者的 frame。直接搬進正文，讀者會以為那是事件本身揭露的事實。後續若讀者回查來源找不到「三層擠壓」或「SaaS 三支柱鬆動」這些詞，會降低文章可信度。</p>
<h3 id="ai-改寫會放大-attribution-漂移">AI 改寫會放大 attribution 漂移</h3>
<p>AI 轉寫常把「某作者認為」壓縮成「這代表」。這個壓縮讓 claim 從觀點層滑到事實層。若沒有 source layering，改寫後的句子會更順、但 fidelity 更差。</p>
<h3 id="本文自己的貢獻變模糊">本文自己的貢獻變模糊</h3>
<p>教學型商業分析的價值是把事件整理成讀者可遷移的框架。若原作者判讀與本文推導混在一起，讀者看不出本文到底新增了什麼，只會覺得是另一篇摘要。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>跟本卡的關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../fact-vs-derive-citation-layering/">#116 引用案例要分觀察層 / 判讀層</a></td>
          <td>#116 處理 case 引用，本卡把同一條分層原則套到外部分析文章 source</td>
      </tr>
      <tr>
          <td><a href="../cross-case-synthesized-frame-must-be-labeled/">#117 跨多個 case 合成的 frame 必須標為章節合成</a></td>
          <td>本卡是 #117 在 analyst source 的對應版本：跨來源合成 frame 要標成本文推導</td>
      </tr>
      <tr>
          <td><a href="../article-body-must-align-with-title-commitment/">#142 文章主體要對齊標題承諾</a></td>
          <td>Source layering 是 #142 的前置條件；先知道哪些是背景 prior，才知道哪些不該佔主體</td>
      </tr>
      <tr>
          <td><a href="../wrap-widen-options-strawman-risk/">#140 WRAP Widen Options 容易塌成稻草人 framing</a></td>
          <td>原作者判讀可作為 Widen Options prior，但不能被設成待打倒的稻草人或預設正解</td>
      </tr>
      <tr>
          <td><a href="../metadata-surface-in-writing-review/">#97 Metadata surface 要納入寫作 review 範圍</a></td>
          <td>Title / description 若把本文推導寫成事實，也會造成來源層漂移；metadata 也要跑 source layering</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>句子寫「這代表 X」、但 X 其實是分析師解釋</td>
          <td>改成「一種判讀是 X」或標成本文推導</td>
      </tr>
      <tr>
          <td>外部文章的比喻或分類被直接放進本篇標題</td>
          <td>確認這是原作者 frame 還是本文 frame</td>
      </tr>
      <tr>
          <td>AI 改寫後少了「某作者認為」「市場敘事」等 attribution</td>
          <td>回原文補回 source layer</td>
      </tr>
      <tr>
          <td>引用來源只寫機構名、沒有具體文章或可驗證出處</td>
          <td>刪掉具名 source，改成一般 prior 或重新查證</td>
      </tr>
      <tr>
          <td>讀者問「這是事件事實、原文觀點、還是你自己的推導」</td>
          <td>Source layering 失敗，重寫段落主詞與 attribution</td>
      </tr>
  </tbody>
</table>
<p><strong>核心原則</strong>：外部分析文章進入教學寫作前、先拆成事實、作者判讀、本文推導。三層分清楚，文章才有可回溯性，也才看得出本文真正教了什麼。</p>
]]></content:encoded></item><item><title>跨領域分析要先定位讀者層級、再決定術語密度</title><link>https://tarrragon.github.io/blog/report/cross-domain-reader-level-alignment/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/cross-domain-reader-level-alignment/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>跨領域分析的讀者層級要先定位、再決定術語密度。把商業分析寫給工程背景讀者時、不能繼承原分析文章的 VC / founder / industry insider 讀者假設；要把原文的高密度術語與壓縮因果鏈降到目標讀者可複製判讀的層級。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>維度&lt;/th>
 &lt;th>高階同領域讀者&lt;/th>
 &lt;th>跨領域教學讀者&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>術語&lt;/td>
 &lt;td>可連續使用 CAC / LTV / ARR / gross margin&lt;/td>
 &lt;td>首次出現要就地解釋或連到卡片&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>因果鏈&lt;/td>
 &lt;td>可跳過中間步驟&lt;/td>
 &lt;td>每段只推一到兩個因果步&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>數字&lt;/td>
 &lt;td>可用百分比與估值倍數暗示&lt;/td>
 &lt;td>要補公式、分母、比較基準&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文章目標&lt;/td>
 &lt;td>展示判斷深度&lt;/td>
 &lt;td>教讀者如何重做判斷&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>判別問題：「讀者若沒有商業分析背景，能不能用這段推導去分析下一個事件？」不能，就要降一級。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>&lt;code>content/business/reading-frameworks/writing-down-a-level.md&lt;/code> 是從 business case-analyses 的 Round 5 修文抽出來的。當時讀者回饋指出，文章雖然比第一版更像教學，但仍太像寫給 VC / founder 的 deep blog：三句內連續塞進多個商業術語，且因果鏈跨太多步。&lt;/p>
&lt;p>例如 Claude for Legal 的第一層擠壓原本把 enterprise license、API margin、長約、垂直流程、法律風險等概念壓在少數句子裡。工程背景讀者可能知道 API、SaaS、workflow，但未必直覺知道「為什麼毛利結構會推動供應商賣 enterprise contract」。若不拆開，讀者只能記住結論，無法複製推導。&lt;/p>
&lt;p>後續 &lt;code>b9c5f06&lt;/code> 新增 reading framework，&lt;code>8c67ab6&lt;/code> 再把 FDE 與 Bufstream 文章的 5 段高密度內容降一級，形成穩定規則：跨領域文章要先判斷原文寫給誰，再決定本站要降到哪裡。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;h3 id="第一步先辨識原文的-reader-contract">第一步：先辨識原文的 reader contract&lt;/h3>
&lt;p>外部商業文章常見 reader contract：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原文類型&lt;/th>
 &lt;th>預設讀者&lt;/th>
 &lt;th>寫作特徵&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>大眾財經新聞&lt;/td>
 &lt;td>一般投資讀者&lt;/td>
 &lt;td>事件摘要、股價、短期影響&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>VC / founder 文&lt;/td>
 &lt;td>創辦人、投資人、策略工作者&lt;/td>
 &lt;td>術語密度高、暗示多、判斷快&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>產業內部文&lt;/td>
 &lt;td>已在該市場工作的人&lt;/td>
 &lt;td>預設供應鏈、客戶型態、競爭格局&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>MBA 教材&lt;/td>
 &lt;td>有基礎商業概念但不熟特定產業者&lt;/td>
 &lt;td>概念明確、例子完整、因果鏈可追&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>本站 business case-analyses 的目標更接近「工程背景讀者讀 MBA 教材」：保留商業分析深度，但不預設讀者熟悉投資圈 shorthand。&lt;/p>
&lt;h3 id="第二步用術語密度決定是否降一級">第二步：用術語密度決定是否降一級&lt;/h3>
&lt;p>一段內若連續出現三個以上跨領域術語，就要拆段或補橋接句。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">API margin → enterprise ARR → vertical workflow lock-in&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這串對 VC 讀者可能順，但對工程背景讀者需要拆成：&lt;/p>
&lt;ol>
&lt;li>API 型產品的收入跟成本如何變動。&lt;/li>
&lt;li>為什麼長約能降低收入波動。&lt;/li>
&lt;li>為什麼垂直流程能讓客戶更難替換。&lt;/li>
&lt;/ol>
&lt;h3 id="第三步用因果鏈步長決定段落切分">第三步：用因果鏈步長決定段落切分&lt;/h3>
&lt;p>每段只推一到兩步。若一句話需要讀者同時理解「成本結構、銷售模式、採購風險、workflow switching cost」，拆成多段。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原句壓縮方式&lt;/th>
 &lt;th>降級後寫法&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>A 導致 B、進而 C&lt;/td>
 &lt;td>第一段 A→B，第二段 B→C&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>用術語承接術語&lt;/td>
 &lt;td>每個術語首次出現補一行功能描述&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>用比喻代替機制&lt;/td>
 &lt;td>先寫機制，再用比喻輔助&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="第四步用卡片承擔術語不讓正文變字典">第四步：用卡片承擔術語，不讓正文變字典&lt;/h3>
&lt;p>降一級不等於每次都在正文長篇定義名詞。若術語會反覆影響判斷成本，就建卡或連既有卡；正文只保留當下推導需要的最小解釋。&lt;/p>
&lt;p>例：&lt;code>unit economics&lt;/code>、&lt;code>switching cost&lt;/code>、&lt;code>vertical SaaS&lt;/code> 這類詞，若每篇都重新解釋，正文會膨脹；卡片負責概念，文章負責事件推導。&lt;/p>
&lt;hr>
&lt;h2 id="沒這樣做的麻煩">沒這樣做的麻煩&lt;/h2>
&lt;h3 id="讀者只能記名詞不能複製判讀">讀者只能記名詞，不能複製判讀&lt;/h3>
&lt;p>高密度商業語言會讓文章看起來專業，但讀者若無法把術語放回因果鏈，只會記住「FDE 代表 SaaS 三支柱鬆動」這種結論句。下一次遇到不同市場事件時，判斷工具無法遷移。&lt;/p>
&lt;h3 id="ai-改寫會保留原文讀者假設">AI 改寫會保留原文讀者假設&lt;/h3>
&lt;p>AI 常把原文風格重寫得更流暢，但不會自動調整 reader contract。原文若寫給 VC / founder，改寫後仍可能保留高密度 shorthand，只是中文更順。&lt;/p>
&lt;h3 id="文章篇幅變短但理解成本變高">文章篇幅變短，但理解成本變高&lt;/h3>
&lt;p>跨領域文章最常見的錯覺是「短 = 清楚」。實際上，短句若省略中間因果，讀者需要自行補推導。對目標讀者而言，補推導的成本比多讀兩段更高。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原則&lt;/th>
 &lt;th>跟本卡的關係&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="../teaching-completeness-by-learner-journey/">#131 教材完整性要用讀者旅程驗證&lt;/a>&lt;/td>
 &lt;td>本卡把讀者旅程落到「跨領域讀者能不能重做判斷」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../prose-self-contained-without-code-reference/">#113 商業邏輯論述要 self-contained&lt;/a>&lt;/td>
 &lt;td>#113 處理不依賴 code，本卡處理不依賴原文讀者的商業背景&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../terminology-keeps-original-anchor/">#107 術語翻譯要保留原文錨點&lt;/a>&lt;/td>
 &lt;td>降一級時仍要保留原文錨點，避免中文術語變成不可回溯的自由翻譯&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../writing-review-multi-axis-completeness/">#126 寫作 review 是多軸完整性&lt;/a>&lt;/td>
 &lt;td>本卡補 reader-level 軸；多輪 review 不能只看結構，還要看目標讀者是否能吸收&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../external-analysis-source-layering/">#143 外部分析文章要先拆成事實、作者判讀、本文推導&lt;/a>&lt;/td>
 &lt;td>Source 分層回答材料可信度，本卡回答材料要降到哪個讀者層級&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>該做的事&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>三句內連續出現三個以上商業術語&lt;/td>
 &lt;td>拆段、補首次解釋、或連到知識卡&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>一句話跨過三個以上因果步&lt;/td>
 &lt;td>改成第一步、第二步、第三步的段落推進&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文章讀起來像 VC memo 或 founder newsletter&lt;/td>
 &lt;td>降到工程背景讀者可讀的 MBA 教材層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者能複述結論、但說不出判斷怎麼來&lt;/td>
 &lt;td>補中間機制、公式、數字或比較基準&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>AI 改寫後文字變順、但術語密度沒下降&lt;/td>
 &lt;td>重新跑 reader-level pass，不把流暢度當可讀性&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心原則&lt;/strong>：跨領域分析的寫作目標是讓讀者複製判讀，不是讓原文變順。先定位原文與目標讀者的層級差，再調整術語密度與因果鏈步長。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>跨領域分析的讀者層級要先定位、再決定術語密度。把商業分析寫給工程背景讀者時、不能繼承原分析文章的 VC / founder / industry insider 讀者假設；要把原文的高密度術語與壓縮因果鏈降到目標讀者可複製判讀的層級。</p>
<table>
  <thead>
      <tr>
          <th>維度</th>
          <th>高階同領域讀者</th>
          <th>跨領域教學讀者</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>術語</td>
          <td>可連續使用 CAC / LTV / ARR / gross margin</td>
          <td>首次出現要就地解釋或連到卡片</td>
      </tr>
      <tr>
          <td>因果鏈</td>
          <td>可跳過中間步驟</td>
          <td>每段只推一到兩個因果步</td>
      </tr>
      <tr>
          <td>數字</td>
          <td>可用百分比與估值倍數暗示</td>
          <td>要補公式、分母、比較基準</td>
      </tr>
      <tr>
          <td>文章目標</td>
          <td>展示判斷深度</td>
          <td>教讀者如何重做判斷</td>
      </tr>
  </tbody>
</table>
<p>判別問題：「讀者若沒有商業分析背景，能不能用這段推導去分析下一個事件？」不能，就要降一級。</p>
<hr>
<h2 id="情境">情境</h2>
<p><code>content/business/reading-frameworks/writing-down-a-level.md</code> 是從 business case-analyses 的 Round 5 修文抽出來的。當時讀者回饋指出，文章雖然比第一版更像教學，但仍太像寫給 VC / founder 的 deep blog：三句內連續塞進多個商業術語，且因果鏈跨太多步。</p>
<p>例如 Claude for Legal 的第一層擠壓原本把 enterprise license、API margin、長約、垂直流程、法律風險等概念壓在少數句子裡。工程背景讀者可能知道 API、SaaS、workflow，但未必直覺知道「為什麼毛利結構會推動供應商賣 enterprise contract」。若不拆開，讀者只能記住結論，無法複製推導。</p>
<p>後續 <code>b9c5f06</code> 新增 reading framework，<code>8c67ab6</code> 再把 FDE 與 Bufstream 文章的 5 段高密度內容降一級，形成穩定規則：跨領域文章要先判斷原文寫給誰，再決定本站要降到哪裡。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步先辨識原文的-reader-contract">第一步：先辨識原文的 reader contract</h3>
<p>外部商業文章常見 reader contract：</p>
<table>
  <thead>
      <tr>
          <th>原文類型</th>
          <th>預設讀者</th>
          <th>寫作特徵</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>大眾財經新聞</td>
          <td>一般投資讀者</td>
          <td>事件摘要、股價、短期影響</td>
      </tr>
      <tr>
          <td>VC / founder 文</td>
          <td>創辦人、投資人、策略工作者</td>
          <td>術語密度高、暗示多、判斷快</td>
      </tr>
      <tr>
          <td>產業內部文</td>
          <td>已在該市場工作的人</td>
          <td>預設供應鏈、客戶型態、競爭格局</td>
      </tr>
      <tr>
          <td>MBA 教材</td>
          <td>有基礎商業概念但不熟特定產業者</td>
          <td>概念明確、例子完整、因果鏈可追</td>
      </tr>
  </tbody>
</table>
<p>本站 business case-analyses 的目標更接近「工程背景讀者讀 MBA 教材」：保留商業分析深度，但不預設讀者熟悉投資圈 shorthand。</p>
<h3 id="第二步用術語密度決定是否降一級">第二步：用術語密度決定是否降一級</h3>
<p>一段內若連續出現三個以上跨領域術語，就要拆段或補橋接句。</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">API margin → enterprise ARR → vertical workflow lock-in</span></span></code></pre></div><p>這串對 VC 讀者可能順，但對工程背景讀者需要拆成：</p>
<ol>
<li>API 型產品的收入跟成本如何變動。</li>
<li>為什麼長約能降低收入波動。</li>
<li>為什麼垂直流程能讓客戶更難替換。</li>
</ol>
<h3 id="第三步用因果鏈步長決定段落切分">第三步：用因果鏈步長決定段落切分</h3>
<p>每段只推一到兩步。若一句話需要讀者同時理解「成本結構、銷售模式、採購風險、workflow switching cost」，拆成多段。</p>
<table>
  <thead>
      <tr>
          <th>原句壓縮方式</th>
          <th>降級後寫法</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>A 導致 B、進而 C</td>
          <td>第一段 A→B，第二段 B→C</td>
      </tr>
      <tr>
          <td>用術語承接術語</td>
          <td>每個術語首次出現補一行功能描述</td>
      </tr>
      <tr>
          <td>用比喻代替機制</td>
          <td>先寫機制，再用比喻輔助</td>
      </tr>
  </tbody>
</table>
<h3 id="第四步用卡片承擔術語不讓正文變字典">第四步：用卡片承擔術語，不讓正文變字典</h3>
<p>降一級不等於每次都在正文長篇定義名詞。若術語會反覆影響判斷成本，就建卡或連既有卡；正文只保留當下推導需要的最小解釋。</p>
<p>例：<code>unit economics</code>、<code>switching cost</code>、<code>vertical SaaS</code> 這類詞，若每篇都重新解釋，正文會膨脹；卡片負責概念，文章負責事件推導。</p>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="讀者只能記名詞不能複製判讀">讀者只能記名詞，不能複製判讀</h3>
<p>高密度商業語言會讓文章看起來專業，但讀者若無法把術語放回因果鏈，只會記住「FDE 代表 SaaS 三支柱鬆動」這種結論句。下一次遇到不同市場事件時，判斷工具無法遷移。</p>
<h3 id="ai-改寫會保留原文讀者假設">AI 改寫會保留原文讀者假設</h3>
<p>AI 常把原文風格重寫得更流暢，但不會自動調整 reader contract。原文若寫給 VC / founder，改寫後仍可能保留高密度 shorthand，只是中文更順。</p>
<h3 id="文章篇幅變短但理解成本變高">文章篇幅變短，但理解成本變高</h3>
<p>跨領域文章最常見的錯覺是「短 = 清楚」。實際上，短句若省略中間因果，讀者需要自行補推導。對目標讀者而言，補推導的成本比多讀兩段更高。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>跟本卡的關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../teaching-completeness-by-learner-journey/">#131 教材完整性要用讀者旅程驗證</a></td>
          <td>本卡把讀者旅程落到「跨領域讀者能不能重做判斷」</td>
      </tr>
      <tr>
          <td><a href="../prose-self-contained-without-code-reference/">#113 商業邏輯論述要 self-contained</a></td>
          <td>#113 處理不依賴 code，本卡處理不依賴原文讀者的商業背景</td>
      </tr>
      <tr>
          <td><a href="../terminology-keeps-original-anchor/">#107 術語翻譯要保留原文錨點</a></td>
          <td>降一級時仍要保留原文錨點，避免中文術語變成不可回溯的自由翻譯</td>
      </tr>
      <tr>
          <td><a href="../writing-review-multi-axis-completeness/">#126 寫作 review 是多軸完整性</a></td>
          <td>本卡補 reader-level 軸；多輪 review 不能只看結構，還要看目標讀者是否能吸收</td>
      </tr>
      <tr>
          <td><a href="../external-analysis-source-layering/">#143 外部分析文章要先拆成事實、作者判讀、本文推導</a></td>
          <td>Source 分層回答材料可信度，本卡回答材料要降到哪個讀者層級</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>三句內連續出現三個以上商業術語</td>
          <td>拆段、補首次解釋、或連到知識卡</td>
      </tr>
      <tr>
          <td>一句話跨過三個以上因果步</td>
          <td>改成第一步、第二步、第三步的段落推進</td>
      </tr>
      <tr>
          <td>文章讀起來像 VC memo 或 founder newsletter</td>
          <td>降到工程背景讀者可讀的 MBA 教材層</td>
      </tr>
      <tr>
          <td>讀者能複述結論、但說不出判斷怎麼來</td>
          <td>補中間機制、公式、數字或比較基準</td>
      </tr>
      <tr>
          <td>AI 改寫後文字變順、但術語密度沒下降</td>
          <td>重新跑 reader-level pass，不把流暢度當可讀性</td>
      </tr>
  </tbody>
</table>
<p><strong>核心原則</strong>：跨領域分析的寫作目標是讓讀者複製判讀，不是讓原文變順。先定位原文與目標讀者的層級差，再調整術語密度與因果鏈步長。</p>
]]></content:encoded></item><item><title>外部分析改寫的交付物是可遷移框架、不是風格轉換</title><link>https://tarrragon.github.io/blog/report/analysis-rewrite-must-deliver-transferable-framework/</link><pubDate>Wed, 20 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/analysis-rewrite-must-deliver-transferable-framework/</guid><description>&lt;h2 id="核心原則">核心原則&lt;/h2>
&lt;p>外部分析改寫的交付物是可遷移框架、不是風格轉換。把其他分析師文章交給 AI 改寫時，任務目標不能停在「改成本站語氣」「更正向」「更像教學」；真正要交付的是讀者能帶到下一個市場事件使用的判讀工具。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>改寫層級&lt;/th>
 &lt;th>產物&lt;/th>
 &lt;th>失敗模式&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>風格轉換&lt;/td>
 &lt;td>同一篇文章換語氣、換標題、換段落&lt;/td>
 &lt;td>像摘要或二次評論&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>結構轉換&lt;/td>
 &lt;td>把 WRAP process 改成教學章節&lt;/td>
 &lt;td>可能仍偏離標題承諾&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>框架轉換&lt;/td>
 &lt;td>事件訊號、機制、風險、預警、遷移用法&lt;/td>
 &lt;td>讀者能用來分析下一個事件&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>判別問題：「讀者讀完後，是否多了一個可重用的判斷問題或檢查表？」沒有，就還只是改寫。&lt;/p>
&lt;hr>
&lt;h2 id="情境">情境&lt;/h2>
&lt;p>&lt;code>content/business/&lt;/code> 的建立過程是一場從「外部分析文章」到「本站教學型商業知識」的轉換實驗。commit 演變顯示，早期版本雖然有 WRAP、知識卡與 case analyses，但仍多次被讀者 feedback 拉回核心問題：&lt;/p>
&lt;ul>
&lt;li>&lt;code>#140&lt;/code>：Widen Options 不能用稻草人修辭展示作者結論。&lt;/li>
&lt;li>&lt;code>#141&lt;/code>：WRAP 是內部工具，不能直接當文章章節。&lt;/li>
&lt;li>&lt;code>#142&lt;/code>：即使章節標題改了，正文仍要對齊標題承諾。&lt;/li>
&lt;li>&lt;code>writing-down-a-level&lt;/code>：目標讀者是工程背景讀者，不是原文的投資人或創辦人。&lt;/li>
&lt;/ul>
&lt;p>這些問題共同指向一件事：AI 轉換文章風格不夠。文章要從「原作者如何看這件事」轉成「本站讀者以後如何判讀同類事件」。&lt;/p>
&lt;hr>
&lt;h2 id="理想做法">理想做法&lt;/h2>
&lt;h3 id="第一步把任務定義成-frame-extraction">第一步：把任務定義成 frame extraction&lt;/h3>
&lt;p>輸入外部文章時，先問：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>問題&lt;/th>
 &lt;th>作用&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>這篇原文用什麼 frame 看事件？&lt;/td>
 &lt;td>辨識原作者判讀，不直接繼承&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>這個 frame 對本站讀者有沒有可遷移價值？&lt;/td>
 &lt;td>決定是否值得寫成文章&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>若要遷移，讀者下次要看哪些訊號？&lt;/td>
 &lt;td>把評論轉成判讀工具&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>哪些術語需要卡片支撐？&lt;/td>
 &lt;td>避免正文變成術語堆疊&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>若事件只能產出「某公司發生某事」的摘要、沒有可遷移框架，就放在筆記，不硬寫成 case-analysis。&lt;/p>
&lt;h3 id="第二步正文結構服務可遷移框架">第二步：正文結構服務可遷移框架&lt;/h3>
&lt;p>教學型商業分析的穩定結構可以是：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-text" data-lang="text">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">事件本身 → 結構性機制 → 長期影響 → 預警訊號 → 可遷移框架&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這是責任順序，可依標題承諾調整。事件段讓讀者進場；機制段教為什麼；長期影響處理時間軸；預警訊號讓框架可被反證；可遷移框架讓讀者能帶走。&lt;/p>
&lt;p>若某篇文章的標題承諾需要不同順序，可以調整；但最後仍要回答「這個事件教讀者下次看什麼」。&lt;/p>
&lt;h3 id="第三步把原文觀點轉成判斷問題">第三步：把原文觀點轉成判斷問題&lt;/h3>
&lt;p>風格轉換會把原文句子改得更順；框架轉換會把原文觀點改成讀者可問的問題。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原文觀點型句子&lt;/th>
 &lt;th>框架型問題&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>AI legal tools 會擠壓知識工作者&lt;/td>
 &lt;td>這個工具在擠壓應用層、新創、工作者哪一層？&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>FDE 是資料平台的新戰場&lt;/td>
 &lt;td>它是否鬆動 SaaS 的 distribution、workflow、data 三支柱？&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>收購代表基礎設施整併&lt;/td>
 &lt;td>這是純收購、賽道整併，還是算力廠商垂直整合？&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>判斷問題比結論更有價值，因為問題可以帶到下一個 case。&lt;/p>
&lt;h3 id="第四步用預警訊號保護框架">第四步：用預警訊號保護框架&lt;/h3>
&lt;p>可遷移框架需要知道何時失效。每篇 case-analysis 至少要有一段預警訊號，列出哪些觀察會推翻或削弱本文判讀。&lt;/p>
&lt;p>沒有預警訊號的框架只是一組漂亮分類。讀者需要知道「何時重新評估」，才會把框架當工具，而不是把它當口號。&lt;/p>
&lt;hr>
&lt;h2 id="沒這樣做的麻煩">沒這樣做的麻煩&lt;/h2>
&lt;h3 id="文章會變成原文摘要">文章會變成原文摘要&lt;/h3>
&lt;p>AI 很擅長把原文改成不同語氣，但摘要仍然沿著原文的 frame 走。讀者得到的是「另一個版本的原文」，不是本站累積出的知識單元。&lt;/p>
&lt;h3 id="事件評論不可重用">事件評論不可重用&lt;/h3>
&lt;p>若文章只回答「這件事代表什麼」，下次遇到不同公司、不同市場、不同產品時，讀者還是要從頭判斷。可遷移框架要回答「下次遇到相似事件，我要看哪些訊號」。&lt;/p>
&lt;h3 id="寫作規範會被誤解成表面風格">寫作規範會被誤解成表面風格&lt;/h3>
&lt;p>正向陳述、核心原則先行、商業邏輯先於 CASE 不是語氣規則；它們是把思考過程變成可重用知識的結構規則。若只做風格轉換，會通過部分表面檢查，但仍不符合知識庫目標。&lt;/p>
&lt;hr>
&lt;h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>原則&lt;/th>
 &lt;th>跟本卡的關係&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;a href="../wrap-as-internal-tool-not-section-structure/">#141 WRAP 是寫作者的內部工具&lt;/a>&lt;/td>
 &lt;td>#141 處理 process 不能外露，本卡處理 process 之後要交付什麼&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../article-body-must-align-with-title-commitment/">#142 文章主體要對齊標題承諾&lt;/a>&lt;/td>
 &lt;td>標題承諾應該指向可遷移框架；若標題只承諾事件評論，文章容易停在摘要&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../external-analysis-source-layering/">#143 外部分析文章要先拆成事實、作者判讀、本文推導&lt;/a>&lt;/td>
 &lt;td>Source 分層是框架轉換的前置步驟；先知道哪些是原文觀點，才能抽出本站框架&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../cross-domain-reader-level-alignment/">#144 跨領域分析要先定位讀者層級&lt;/a>&lt;/td>
 &lt;td>可遷移框架要用目標讀者能操作的語言表達，不能保留原文的高密度 shorthand&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;a href="../cards-as-living-system-iteration/">#81 卡片系統的迭代浮現&lt;/a>&lt;/td>
 &lt;td>一篇 case-analysis 產生的框架若反覆出現，後續可升級成知識卡或 reading framework&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="判讀徵兆">判讀徵兆&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號&lt;/th>
 &lt;th>該做的事&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Prompt 只說「改成我們的風格」&lt;/td>
 &lt;td>改成「抽出可遷移判讀框架」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文章結尾只有事件結論&lt;/td>
 &lt;td>補「下次遇到同類事件要看什麼」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>讀者讀完只能說出某公司發生什麼&lt;/td>
 &lt;td>補訊號、機制、風險、預警與路由&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文章沒有預警訊號或 Tripwire&lt;/td>
 &lt;td>補失效條件，讓框架可被反證&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文章大量沿用原文 frame&lt;/td>
 &lt;td>回到 source layering，區分原文判讀與本文推導&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>&lt;strong>核心原則&lt;/strong>：外部分析改寫的交付物是讀者可遷移的判讀框架，把原文變順只是表層。沒有框架、預警與下一步路由，文章仍停在摘要層。&lt;/p></description><content:encoded><![CDATA[<h2 id="核心原則">核心原則</h2>
<p>外部分析改寫的交付物是可遷移框架、不是風格轉換。把其他分析師文章交給 AI 改寫時，任務目標不能停在「改成本站語氣」「更正向」「更像教學」；真正要交付的是讀者能帶到下一個市場事件使用的判讀工具。</p>
<table>
  <thead>
      <tr>
          <th>改寫層級</th>
          <th>產物</th>
          <th>失敗模式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>風格轉換</td>
          <td>同一篇文章換語氣、換標題、換段落</td>
          <td>像摘要或二次評論</td>
      </tr>
      <tr>
          <td>結構轉換</td>
          <td>把 WRAP process 改成教學章節</td>
          <td>可能仍偏離標題承諾</td>
      </tr>
      <tr>
          <td>框架轉換</td>
          <td>事件訊號、機制、風險、預警、遷移用法</td>
          <td>讀者能用來分析下一個事件</td>
      </tr>
  </tbody>
</table>
<p>判別問題：「讀者讀完後，是否多了一個可重用的判斷問題或檢查表？」沒有，就還只是改寫。</p>
<hr>
<h2 id="情境">情境</h2>
<p><code>content/business/</code> 的建立過程是一場從「外部分析文章」到「本站教學型商業知識」的轉換實驗。commit 演變顯示，早期版本雖然有 WRAP、知識卡與 case analyses，但仍多次被讀者 feedback 拉回核心問題：</p>
<ul>
<li><code>#140</code>：Widen Options 不能用稻草人修辭展示作者結論。</li>
<li><code>#141</code>：WRAP 是內部工具，不能直接當文章章節。</li>
<li><code>#142</code>：即使章節標題改了，正文仍要對齊標題承諾。</li>
<li><code>writing-down-a-level</code>：目標讀者是工程背景讀者，不是原文的投資人或創辦人。</li>
</ul>
<p>這些問題共同指向一件事：AI 轉換文章風格不夠。文章要從「原作者如何看這件事」轉成「本站讀者以後如何判讀同類事件」。</p>
<hr>
<h2 id="理想做法">理想做法</h2>
<h3 id="第一步把任務定義成-frame-extraction">第一步：把任務定義成 frame extraction</h3>
<p>輸入外部文章時，先問：</p>
<table>
  <thead>
      <tr>
          <th>問題</th>
          <th>作用</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>這篇原文用什麼 frame 看事件？</td>
          <td>辨識原作者判讀，不直接繼承</td>
      </tr>
      <tr>
          <td>這個 frame 對本站讀者有沒有可遷移價值？</td>
          <td>決定是否值得寫成文章</td>
      </tr>
      <tr>
          <td>若要遷移，讀者下次要看哪些訊號？</td>
          <td>把評論轉成判讀工具</td>
      </tr>
      <tr>
          <td>哪些術語需要卡片支撐？</td>
          <td>避免正文變成術語堆疊</td>
      </tr>
  </tbody>
</table>
<p>若事件只能產出「某公司發生某事」的摘要、沒有可遷移框架，就放在筆記，不硬寫成 case-analysis。</p>
<h3 id="第二步正文結構服務可遷移框架">第二步：正文結構服務可遷移框架</h3>
<p>教學型商業分析的穩定結構可以是：</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></code></pre></div><p>這是責任順序，可依標題承諾調整。事件段讓讀者進場；機制段教為什麼；長期影響處理時間軸；預警訊號讓框架可被反證；可遷移框架讓讀者能帶走。</p>
<p>若某篇文章的標題承諾需要不同順序，可以調整；但最後仍要回答「這個事件教讀者下次看什麼」。</p>
<h3 id="第三步把原文觀點轉成判斷問題">第三步：把原文觀點轉成判斷問題</h3>
<p>風格轉換會把原文句子改得更順；框架轉換會把原文觀點改成讀者可問的問題。</p>
<table>
  <thead>
      <tr>
          <th>原文觀點型句子</th>
          <th>框架型問題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>AI legal tools 會擠壓知識工作者</td>
          <td>這個工具在擠壓應用層、新創、工作者哪一層？</td>
      </tr>
      <tr>
          <td>FDE 是資料平台的新戰場</td>
          <td>它是否鬆動 SaaS 的 distribution、workflow、data 三支柱？</td>
      </tr>
      <tr>
          <td>收購代表基礎設施整併</td>
          <td>這是純收購、賽道整併，還是算力廠商垂直整合？</td>
      </tr>
  </tbody>
</table>
<p>判斷問題比結論更有價值，因為問題可以帶到下一個 case。</p>
<h3 id="第四步用預警訊號保護框架">第四步：用預警訊號保護框架</h3>
<p>可遷移框架需要知道何時失效。每篇 case-analysis 至少要有一段預警訊號，列出哪些觀察會推翻或削弱本文判讀。</p>
<p>沒有預警訊號的框架只是一組漂亮分類。讀者需要知道「何時重新評估」，才會把框架當工具，而不是把它當口號。</p>
<hr>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<h3 id="文章會變成原文摘要">文章會變成原文摘要</h3>
<p>AI 很擅長把原文改成不同語氣，但摘要仍然沿著原文的 frame 走。讀者得到的是「另一個版本的原文」，不是本站累積出的知識單元。</p>
<h3 id="事件評論不可重用">事件評論不可重用</h3>
<p>若文章只回答「這件事代表什麼」，下次遇到不同公司、不同市場、不同產品時，讀者還是要從頭判斷。可遷移框架要回答「下次遇到相似事件，我要看哪些訊號」。</p>
<h3 id="寫作規範會被誤解成表面風格">寫作規範會被誤解成表面風格</h3>
<p>正向陳述、核心原則先行、商業邏輯先於 CASE 不是語氣規則；它們是把思考過程變成可重用知識的結構規則。若只做風格轉換，會通過部分表面檢查，但仍不符合知識庫目標。</p>
<hr>
<h2 id="跟其他抽象層原則的關係">跟其他抽象層原則的關係</h2>
<table>
  <thead>
      <tr>
          <th>原則</th>
          <th>跟本卡的關係</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><a href="../wrap-as-internal-tool-not-section-structure/">#141 WRAP 是寫作者的內部工具</a></td>
          <td>#141 處理 process 不能外露，本卡處理 process 之後要交付什麼</td>
      </tr>
      <tr>
          <td><a href="../article-body-must-align-with-title-commitment/">#142 文章主體要對齊標題承諾</a></td>
          <td>標題承諾應該指向可遷移框架；若標題只承諾事件評論，文章容易停在摘要</td>
      </tr>
      <tr>
          <td><a href="../external-analysis-source-layering/">#143 外部分析文章要先拆成事實、作者判讀、本文推導</a></td>
          <td>Source 分層是框架轉換的前置步驟；先知道哪些是原文觀點，才能抽出本站框架</td>
      </tr>
      <tr>
          <td><a href="../cross-domain-reader-level-alignment/">#144 跨領域分析要先定位讀者層級</a></td>
          <td>可遷移框架要用目標讀者能操作的語言表達，不能保留原文的高密度 shorthand</td>
      </tr>
      <tr>
          <td><a href="../cards-as-living-system-iteration/">#81 卡片系統的迭代浮現</a></td>
          <td>一篇 case-analysis 產生的框架若反覆出現，後續可升級成知識卡或 reading framework</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="判讀徵兆">判讀徵兆</h2>
<table>
  <thead>
      <tr>
          <th>訊號</th>
          <th>該做的事</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Prompt 只說「改成我們的風格」</td>
          <td>改成「抽出可遷移判讀框架」</td>
      </tr>
      <tr>
          <td>文章結尾只有事件結論</td>
          <td>補「下次遇到同類事件要看什麼」</td>
      </tr>
      <tr>
          <td>讀者讀完只能說出某公司發生什麼</td>
          <td>補訊號、機制、風險、預警與路由</td>
      </tr>
      <tr>
          <td>文章沒有預警訊號或 Tripwire</td>
          <td>補失效條件，讓框架可被反證</td>
      </tr>
      <tr>
          <td>文章大量沿用原文 frame</td>
          <td>回到 source layering，區分原文判讀與本文推導</td>
      </tr>
  </tbody>
</table>
<p><strong>核心原則</strong>：外部分析改寫的交付物是讀者可遷移的判讀框架，把原文變順只是表層。沒有框架、預警與下一步路由，文章仍停在摘要層。</p>
]]></content:encoded></item><item><title>案例庫不對齊章節主題時用反向追問取代強掛</title><link>https://tarrragon.github.io/blog/report/case-misalignment-reverse-inquiry/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/case-misalignment-reverse-inquiry/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>案例庫主軸跟章節主題不在同一維度時、引用框架要從「正向掛入」切換到「反向追問」。正向掛入適用於「案例直接示範章節主題」、反向追問適用於「案例庫主軸是 A、章節主題是 B、A 與 B 雖正交但 A 可作為 B 重要性的反證」。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>引用框架&lt;/th>
 &lt;th>適用情境&lt;/th>
 &lt;th>句型骨架&lt;/th>
 &lt;th>典型風險&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>正向掛入&lt;/td>
 &lt;td>案例直接示範章節主題&lt;/td>
 &lt;td>「[case]：看 X 如何展示 Y、對照本章 Z 段」&lt;/td>
 &lt;td>對齊時無風險&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>反向追問&lt;/td>
 &lt;td>案例主軸不對應、有反向對照價值&lt;/td>
 &lt;td>「[case] 主軸是 A、不直接示範 B；反問『這條撞牆是否被 B 放大』」&lt;/td>
 &lt;td>仍可能像強掛、要明示分層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>強掛&lt;/td>
 &lt;td>不對齊時硬用正向句型（誤用）&lt;/td>
 &lt;td>「[case]：看 X 如何決定 Y」、X、Y 在 case 中無具體段落支撐&lt;/td>
 &lt;td>reviewer fact-check 一查就抓出&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>不對齊情境下若硬用正向句型、就會落到強掛。Reviewer 第一輪 audit 抓出後、修正成本是「全段重寫 + 重做案例對照」。先判讀對不對齊、再決定框架、比事後重寫便宜。&lt;/p>
&lt;h2 id="為什麼強掛會發生">為什麼強掛會發生&lt;/h2>
&lt;p>寫作者面對「案例回寫」段時、預設「每章都該有 3-5 個 case 引用」、案例庫實際只有 1-2 個直接相關時、剩下會用 stretch 句型硬掛。stretch 的徵兆通常有三個：&lt;/p>
&lt;ul>
&lt;li>用案例提到的 vendor / 服務名稱掛、不用案例揭露的機制掛&lt;/li>
&lt;li>描述句型抽象、避免具體斷言：「看 X 如何決定 Y」、回查 case 找不到「怎麼決定」&lt;/li>
&lt;li>把案例次要訊息當主軸：case 主軸是 A、引用句只提 B、B 在 case 是一筆帶過&lt;/li>
&lt;/ul>
&lt;p>背後動機是「想讓段落看起來完整」、而非「想讓讀者看到證據」。3-5 個 bullet 變成內在配額、引用變成填空、不是工具。這條動機跟 &lt;a href="https://tarrragon.github.io/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度&lt;/a> 的成因同源 — 模板從「輔助結構」滑落為「強制配額」。&lt;/p>
&lt;h2 id="反向追問步驟">反向追問步驟&lt;/h2>
&lt;p>不對齊時、反向追問的標準操作分三步：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>誠實標示案例庫主軸差異&lt;/strong>：開段直接寫明「本案例庫主軸是 A、直接以 B 為主題的案例較少」、把案例庫的限制當 first-class 訊息傳給讀者。讀者知道後續引用會用反向讀法、而非把它當成直接示範。&lt;/li>
&lt;li>&lt;strong>把案例當「沒做 B 的後果」&lt;/strong>：每個 case 改寫成「在沒有先用 B 收回壓力的前提下、團隊走了哪條路（遷移 / scale-out / vendor 升級）」、case 因此變成 B 重要性的反證。寫作意圖從「示範 B」轉成「示範沒做 B 的代價」。&lt;/li>
&lt;li>&lt;strong>明示分層追問&lt;/strong>：在引用描述句裡寫明追問 — 讀者讀完 case 應主動問「這條撞牆是否被 B 放大」。把追問句寫進引用、讓讀者知道這是反向讀法、而非把 case 當對齊。&lt;/li>
&lt;/ol>
&lt;p>三步驟做完、案例段仍保留同樣多的引用、但語意誠實、reviewer fact-check 不會抓出不符。&lt;/p>
&lt;h2 id="case">Case&lt;/h2>
&lt;p>backend/01.13 &lt;a href="https://tarrragon.github.io/blog/backend/01-database/query-anti-patterns/" data-link-title="1.13 應用層查詢反模式與 Query 預算" data-link-desc="整理 N&amp;#43;1、select *、缺索引、ORM lazy load、long transaction 等查詢反模式與每請求的 query 預算判讀">查詢反模式章節&lt;/a> 在 reviewer audit 階段的具體經驗：&lt;/p>
&lt;p>原寫法：3 個 09 模組 case（DoorDash / Zomato / Standard Chartered）被強掛在「Long-Running Transaction」「Query 預算」這類 application-layer query 反模式主題上。&lt;/p>
&lt;p>Reviewer fact-check 結果：&lt;/p>
&lt;ul>
&lt;li>DoorDash case 主軸是 single-primary 寫入吞吐瓶頸、跟 long transaction 無關&lt;/li>
&lt;li>Zomato case 主軸是 TiDB → DynamoDB 遷移、case 完全沒有 query budget 討論&lt;/li>
&lt;li>Standard Chartered case 主軸是合規驅動容量規劃、跟 N+1 / query 預算 stretch&lt;/li>
&lt;/ul>
&lt;p>2.5 / 3 case 的引用描述跟 case 原文不符。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>案例庫主軸跟章節主題不在同一維度時、引用框架要從「正向掛入」切換到「反向追問」。正向掛入適用於「案例直接示範章節主題」、反向追問適用於「案例庫主軸是 A、章節主題是 B、A 與 B 雖正交但 A 可作為 B 重要性的反證」。</p>
<table>
  <thead>
      <tr>
          <th>引用框架</th>
          <th>適用情境</th>
          <th>句型骨架</th>
          <th>典型風險</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>正向掛入</td>
          <td>案例直接示範章節主題</td>
          <td>「[case]：看 X 如何展示 Y、對照本章 Z 段」</td>
          <td>對齊時無風險</td>
      </tr>
      <tr>
          <td>反向追問</td>
          <td>案例主軸不對應、有反向對照價值</td>
          <td>「[case] 主軸是 A、不直接示範 B；反問『這條撞牆是否被 B 放大』」</td>
          <td>仍可能像強掛、要明示分層</td>
      </tr>
      <tr>
          <td>強掛</td>
          <td>不對齊時硬用正向句型（誤用）</td>
          <td>「[case]：看 X 如何決定 Y」、X、Y 在 case 中無具體段落支撐</td>
          <td>reviewer fact-check 一查就抓出</td>
      </tr>
  </tbody>
</table>
<p>不對齊情境下若硬用正向句型、就會落到強掛。Reviewer 第一輪 audit 抓出後、修正成本是「全段重寫 + 重做案例對照」。先判讀對不對齊、再決定框架、比事後重寫便宜。</p>
<h2 id="為什麼強掛會發生">為什麼強掛會發生</h2>
<p>寫作者面對「案例回寫」段時、預設「每章都該有 3-5 個 case 引用」、案例庫實際只有 1-2 個直接相關時、剩下會用 stretch 句型硬掛。stretch 的徵兆通常有三個：</p>
<ul>
<li>用案例提到的 vendor / 服務名稱掛、不用案例揭露的機制掛</li>
<li>描述句型抽象、避免具體斷言：「看 X 如何決定 Y」、回查 case 找不到「怎麼決定」</li>
<li>把案例次要訊息當主軸：case 主軸是 A、引用句只提 B、B 在 case 是一筆帶過</li>
</ul>
<p>背後動機是「想讓段落看起來完整」、而非「想讓讀者看到證據」。3-5 個 bullet 變成內在配額、引用變成填空、不是工具。這條動機跟 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度</a> 的成因同源 — 模板從「輔助結構」滑落為「強制配額」。</p>
<h2 id="反向追問步驟">反向追問步驟</h2>
<p>不對齊時、反向追問的標準操作分三步：</p>
<ol>
<li><strong>誠實標示案例庫主軸差異</strong>：開段直接寫明「本案例庫主軸是 A、直接以 B 為主題的案例較少」、把案例庫的限制當 first-class 訊息傳給讀者。讀者知道後續引用會用反向讀法、而非把它當成直接示範。</li>
<li><strong>把案例當「沒做 B 的後果」</strong>：每個 case 改寫成「在沒有先用 B 收回壓力的前提下、團隊走了哪條路（遷移 / scale-out / vendor 升級）」、case 因此變成 B 重要性的反證。寫作意圖從「示範 B」轉成「示範沒做 B 的代價」。</li>
<li><strong>明示分層追問</strong>：在引用描述句裡寫明追問 — 讀者讀完 case 應主動問「這條撞牆是否被 B 放大」。把追問句寫進引用、讓讀者知道這是反向讀法、而非把 case 當對齊。</li>
</ol>
<p>三步驟做完、案例段仍保留同樣多的引用、但語意誠實、reviewer fact-check 不會抓出不符。</p>
<h2 id="case">Case</h2>
<p>backend/01.13 <a href="/blog/backend/01-database/query-anti-patterns/" data-link-title="1.13 應用層查詢反模式與 Query 預算" data-link-desc="整理 N&#43;1、select *、缺索引、ORM lazy load、long transaction 等查詢反模式與每請求的 query 預算判讀">查詢反模式章節</a> 在 reviewer audit 階段的具體經驗：</p>
<p>原寫法：3 個 09 模組 case（DoorDash / Zomato / Standard Chartered）被強掛在「Long-Running Transaction」「Query 預算」這類 application-layer query 反模式主題上。</p>
<p>Reviewer fact-check 結果：</p>
<ul>
<li>DoorDash case 主軸是 single-primary 寫入吞吐瓶頸、跟 long transaction 無關</li>
<li>Zomato case 主軸是 TiDB → DynamoDB 遷移、case 完全沒有 query budget 討論</li>
<li>Standard Chartered case 主軸是合規驅動容量規劃、跟 N+1 / query 預算 stretch</li>
</ul>
<p>2.5 / 3 case 的引用描述跟 case 原文不符。</p>
<p>修正：改用反向追問框架。開段標示「09 案例庫主軸是規模、vendor 與容量壓力、直接以 query 反模式為主題的案例較少」、三個 case 重寫成「遷移 / scale-out / 合規容量規劃前、是否該先用 query 反模式收回單機容量」的反向追問。Reviewer 二輪通過、3 個 case 全保留、語意誠實。</p>
<p>這個 case 揭露的核心：reviewer 抓到的不是「引用太多」、是「引用方向錯」。改框架後同樣 3 個 case、reviewer 滿意。</p>
<h2 id="跟其他卡的關係">跟其他卡的關係</h2>
<p>本卡跟以下三張卡正交、各自處理 case 引用的不同層問題：</p>
<ul>
<li><a href="/blog/report/case-type-graded-citation-depth/" data-link-title="案例引用深度跟著 case 類型走" data-link-desc="skeleton / medium / rich case 各有不同承接深度；誤判類型 → 編造數字 / taxonomy（over-extrapolation）或漏掉 case 揭露的 mechanism（under-citation）；引用前先看 case 行數 &#43; 內容密度判類型、決定該寫『揭露 X 方向』還是『揭露 N 個機制』還是『揭露具體數字 / 設計』">#115 案例引用深度跟著 case 類型走</a> — 處理「case 類型決定引用深度」（skeleton / medium / rich）。本卡處理「case 主軸不對應時的引用框架選擇」、是更上游的問題：先判斷對不對齊、再決定引用深度。</li>
<li><a href="/blog/report/case-citation-three-part-structure/" data-link-title="案例引用三段式段落結構：概念定義 → case 引用 → 通用展開" data-link-desc="Case 引用段落要走三段式結構：(1) 段首概念定義句先寫『該概念是什麼、承擔什麼責任』、(2) 第二位置 case 引用、(3) 通用工程知識展開；段首被 case 引用取代是 06 模組最大宗 systemic 違規（11/12 段都犯）；本卡跟 #115（引用深度）/ #116（內部分層）/ #117（跨 case 合成）正交、處理段落結構順序">#120 案例引用三段式段落結構</a> — 處理「段落結構順序」（概念 → case → 通用展開）。本卡補 #120 的特殊情境：當 case 主軸不對應時、第二段位置的 case 引用該寫什麼。</li>
<li><a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度</a> — 處理「cadence 模板化」。本卡的「強掛」現象背後就是 cadence 模板化的內在動機之一 — 想讓每段都「看起來合規」、結果犧牲語意誠實度。本卡是 #122 在「案例引用」surface 的具體成因 + 修法。</li>
</ul>
<p>跟 <a href="/blog/report/fact-vs-derive-citation-layering/" data-link-title="引用案例要分觀察層 / 判讀層、強化詞是錯位訊號" data-link-desc="引用案例（特別是 rich case）時、case 內容分兩層：觀察層（具體 fact）跟判讀層（作者推論）；兩層在章節引用時要分層標明、避免把作者判讀升級成 case fact；強化詞（才是 / 必須 / 一定 / 關鍵是）通常是錯位訊號、保留 case 原文的條件性表述（取決於 / 核心瓶頸 / 主要驅動）">#116 引用案例要分觀察層 / 判讀層</a> 也有張力：#116 強調觀察層 / 判讀層分明、本卡的反向追問可以視為一種「明示分層」的特殊型 — 把整個引用標為「反向讀法」、相當於把整段都歸到判讀層。</p>
<p>補兩張上位卡：</p>
<ul>
<li><a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114 Multi-pass review 的 frame 顆粒度盲點</a> — #146 的「抽象斷言訊號」（「看 X 如何 Y」）就是 #114「keyword bank」機制的具體 keyword 條目。本卡是 #114 機制 1 的應用實例 — 給作者一份可直接 grep 的關鍵字清單。</li>
<li><a href="/blog/report/cross-case-synthesized-frame-must-be-labeled/" data-link-title="跨多個 case 合成的 frame 必須標為章節合成、非 case 原文" data-link-desc="當段落把多個 case 的失效訊號抽象為更高層 frame（如『跨工具回查壓力』『平台責任切分』）、要 explicit 標為『本章合成、非 case 原文』；否則章節 derive 會被讀者當成 case fact、回查 case 時發現章節說的『揭露』實際是章節抽象、不是 case 原文框架">#117 跨多 case 合成的 frame 必須標為章節合成</a> — #117 處理「合成必須明示標示」、本卡的「反向追問」也是明示標示的一種 — 把「我用反向讀法解釋案例」明確告知讀者、避免讀者誤以為 case 直接示範了主題。兩者都處理引用層的誠實標示、是姊妹卡。</li>
</ul>
<h2 id="沒這樣做的麻煩">沒這樣做的麻煩</h2>
<p>強掛 case 在以下節點會引爆：</p>
<ul>
<li><strong>Reviewer 第一輪 audit</strong>：fact-check 案例內容 vs 引用描述、不對齊馬上抓出。修正要全段重寫。</li>
<li><strong>讀者回頭追查</strong>：讀者點進 case 看不到引用句宣稱的內容、會懷疑整章其他斷言的可信度。</li>
<li><strong>長期 SSoT 漂移</strong>：案例 case 內容後續更新時、強掛的引用不會跟著更新、變成 stale reference。</li>
</ul>
<p>更深的代價：強掛 case 違反 AGENTS.md 原則八「情境優先於模板」— 把不同案例塞進同一段落模板、抹平案例的真實主軸。Reviewer 抓到的是表面（描述不符）、根因是寫作者讓模板配額凌駕語意誠實度。</p>
<h2 id="判讀徵兆">判讀徵兆</h2>
<p>寫完案例段時、用以下訊號自檢、出現任一就考慮切換到反向追問：</p>
<ul>
<li><strong>抽象句型訊號</strong>：引用句寫成「看 X 如何決定 Y」這種無具體斷言的句型、回查 case 找不到「怎麼決定」的具體段落。</li>
<li><strong>句型雷同訊號</strong>：多個 case 引用句型雷同（都是「看 X、對照 Y 段」）、跟 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 cadence 同質化</a> 重疊。</li>
<li><strong>維度錯位訊號</strong>：章節主題是 application-layer（query 反模式 / 應用層快取設計）、case 庫主軸是 vendor / 規模 / 容量壓力 — 兩者在不同抽象維度。</li>
<li><strong>配額膨脹訊號</strong>：引用句數 ≥ 3 但每個都「邊際相關」、沒有任一個「直接相關」。</li>
</ul>
<p>四個訊號中出現任一、優先切換到反向追問、別把不對齊強寫成對齊。寫作意圖從「填滿段落」轉成「給讀者誠實證據」、case 段才能撐住 reviewer fact-check。</p>
]]></content:encoded></item><item><title>規範化跟自審是兩種認知任務、立規範當下無法保護同批稿件</title><link>https://tarrragon.github.io/blog/report/rule-codification-vs-self-audit/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/rule-codification-vs-self-audit/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>把反模式抽象成規範卡、跟在自己稿件辨識該反模式的局部實例、是兩種不同認知任務。同一個作者可以清楚寫下「『看 X 如何 Y』是抽象斷言反模式」、同一個 batch 內已寫的 5 篇章節仍能有 11 處該句型未被察覺。&lt;/p>
&lt;p>兩個任務對比：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>認知任務&lt;/th>
 &lt;th>視角&lt;/th>
 &lt;th>處理動作&lt;/th>
 &lt;th>觸發條件&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>規範化&lt;/td>
 &lt;td>Outside-in（歸納）&lt;/td>
 &lt;td>找 N 個 case 的共同特徵、命名&lt;/td>
 &lt;td>看到不同 case 重複出現同類問題&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>自審&lt;/td>
 &lt;td>Inside-out（比對）&lt;/td>
 &lt;td>把規範當 grep keyword、掃稿件&lt;/td>
 &lt;td>主動把卡片「判讀徵兆」套到自己文字&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩者用相似概念詞、走不同神經路徑。立規範時注意力放在「為什麼這 pattern 是反模式」、自審時注意力要放在「我這句話符不符合該 pattern」。前一個動作完成、不會自動觸發後一個動作。&lt;/p>
&lt;h2 id="為什麼立規範後仍會犯">為什麼立規範後仍會犯&lt;/h2>
&lt;p>三個認知機制讓兩者解耦：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>抽象化耗用認知頻寬&lt;/strong>：寫下「N+1 query 反模式」這個概念時、作者的工作記憶被 pattern 的本質、對比、邊界佔滿、不會同時掃描自己已寫過的稿件&lt;/li>
&lt;li>&lt;strong>規範化視角是 outside-in&lt;/strong>：規範化把 N 個實例抽象成 1 個模式、看的是「共同特徵」；自審視角是 inside-out、從自己具體句子往外比對、看的是「這句屬不屬於這個 pattern」&lt;/li>
&lt;li>&lt;strong>同 batch 主題語意 attractor&lt;/strong>（見 &lt;a href="https://tarrragon.github.io/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度&lt;/a>）：規範化之前寫的稿件、受同主題 / 同 constraint 拉到相似句型；規範化動作本身不會 retroactive 修這些句型、需要主動 sweep&lt;/li>
&lt;/ol>
&lt;p>這三個機制累積起來、「我剛寫完反模式定義」不等於「我能在自己稿件抓出該反模式的所有實例」。&lt;/p>
&lt;h2 id="case">Case&lt;/h2>
&lt;p>backend 模組 5 篇章節（5.9 / 0.18 / 0.19 / 9.13 / 1.13）的修正過程：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>Round 1 reviewer audit&lt;/strong> 抓出 1.13 章節案例引用 mis-cite、修正後寫成 &lt;a href="https://tarrragon.github.io/blog/report/case-misalignment-reverse-inquiry/" data-link-title="案例庫不對齊章節主題時用反向追問取代強掛" data-link-desc="當案例庫主軸跟章節主題不在同一維度時、引用框架要從『正向掛入』切換到『反向追問』；強掛 case 的根因是『想填滿案例段』的模板配額、而非『想讓讀者看到證據』；反向追問把案例庫的限制當 first-class 訊息傳給讀者、case 變成『沒做 X 的後果』的反證、不是 X 的示範；reviewer 第一輪 fact-check 就能抓出強掛、修正成本高；判讀徵兆是引用句寫不出 case 具體段落 / 多個 case 句型雷同 / 章節主題跟 case 庫主軸不同維度">#146 案例庫不對齊章節主題時用反向追問&lt;/a> 卡片。#146 明確列出「抽象斷言訊號：『看 X 如何 Y』這類無具體斷言的句型是反模式」、並作為「判讀徵兆」的四訊號之一。&lt;/li>
&lt;li>&lt;strong>#146 卡寫完當下&lt;/strong>、作者同 batch 已寫的 5 篇章節 case 段內仍有 11 處「看 X 如何 Y」句型未被察覺、未被修正。&lt;/li>
&lt;li>&lt;strong>Round 2 reviewer&lt;/strong> 用 cadence frame 跑 grep（直接拿 #146 描述的反模式當 keyword）、抓出全部 11 處、Round 2 修正後用具體事實 / 數字 / 機制斷言取代。&lt;/li>
&lt;/ol>
&lt;p>這個案例的諷刺感正是本卡的核心：作者剛寫完規範、自審能力卻沒同步提升。中間缺的是「規範化 → grep 自審」這條主動觸發路徑。Round 2 reviewer 補上的就是這條路徑、但理想上規範作者自己當下就該做。&lt;/p>
&lt;h2 id="修法">修法&lt;/h2>
&lt;p>三種觸發機制可以接在規範化動作後：&lt;/p>
&lt;h3 id="1-立規範後立刻跑-keyword-grep含同義變體">1. 立規範後立刻跑 keyword grep（含同義變體）&lt;/h3>
&lt;p>把新立的規範轉成 &lt;code>rg&lt;/code> 可掃的 pattern、對所有同 batch（甚至既有）稿件跑一次 grep：&lt;/p>





&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"># 例：#146 立下後的 keyword grep&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">rg &lt;span class="s2">&amp;#34;看 .{1,20}如何|看 .{1,20}的決|看 .{1,30}的策略|看 .{1,30}的差異&amp;#34;&lt;/span> content/&amp;lt;scope&amp;gt;/
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">&lt;span class="c1"># 但同義變體 grep 同樣重要 — Round 3-A 抓出的盲區&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">rg &lt;span class="s2">&amp;#34;展示 .{1,30}效應|展示 .{1,30}邏輯|本案展示|案例展示&amp;#34;&lt;/span> content/&amp;lt;scope&amp;gt;/&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>第一輪 grep pattern 受作者當下視野侷限、通常只涵蓋規範化時用的字面例子、漏掉同義變體。「規範化第一次落地不可能 catch 所有同義變體」是這條機制的天然限制 — 需要 Round N 持續擴張 keyword bank、跟 &lt;a href="https://tarrragon.github.io/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114 multi-pass review 的 frame 顆粒度盲點&lt;/a> 同源。實證：本卡 Round 2 修「看 X 如何 Y」字面層、Round 3-A 仍能 catch 出「展示 X 效應」「展示 X 邏輯」同義變體、證明 path 需要疊代而非一次性動作。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>把反模式抽象成規範卡、跟在自己稿件辨識該反模式的局部實例、是兩種不同認知任務。同一個作者可以清楚寫下「『看 X 如何 Y』是抽象斷言反模式」、同一個 batch 內已寫的 5 篇章節仍能有 11 處該句型未被察覺。</p>
<p>兩個任務對比：</p>
<table>
  <thead>
      <tr>
          <th>認知任務</th>
          <th>視角</th>
          <th>處理動作</th>
          <th>觸發條件</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>規範化</td>
          <td>Outside-in（歸納）</td>
          <td>找 N 個 case 的共同特徵、命名</td>
          <td>看到不同 case 重複出現同類問題</td>
      </tr>
      <tr>
          <td>自審</td>
          <td>Inside-out（比對）</td>
          <td>把規範當 grep keyword、掃稿件</td>
          <td>主動把卡片「判讀徵兆」套到自己文字</td>
      </tr>
  </tbody>
</table>
<p>兩者用相似概念詞、走不同神經路徑。立規範時注意力放在「為什麼這 pattern 是反模式」、自審時注意力要放在「我這句話符不符合該 pattern」。前一個動作完成、不會自動觸發後一個動作。</p>
<h2 id="為什麼立規範後仍會犯">為什麼立規範後仍會犯</h2>
<p>三個認知機制讓兩者解耦：</p>
<ol>
<li><strong>抽象化耗用認知頻寬</strong>：寫下「N+1 query 反模式」這個概念時、作者的工作記憶被 pattern 的本質、對比、邊界佔滿、不會同時掃描自己已寫過的稿件</li>
<li><strong>規範化視角是 outside-in</strong>：規範化把 N 個實例抽象成 1 個模式、看的是「共同特徵」；自審視角是 inside-out、從自己具體句子往外比對、看的是「這句屬不屬於這個 pattern」</li>
<li><strong>同 batch 主題語意 attractor</strong>（見 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度</a>）：規範化之前寫的稿件、受同主題 / 同 constraint 拉到相似句型；規範化動作本身不會 retroactive 修這些句型、需要主動 sweep</li>
</ol>
<p>這三個機制累積起來、「我剛寫完反模式定義」不等於「我能在自己稿件抓出該反模式的所有實例」。</p>
<h2 id="case">Case</h2>
<p>backend 模組 5 篇章節（5.9 / 0.18 / 0.19 / 9.13 / 1.13）的修正過程：</p>
<ol>
<li><strong>Round 1 reviewer audit</strong> 抓出 1.13 章節案例引用 mis-cite、修正後寫成 <a href="/blog/report/case-misalignment-reverse-inquiry/" data-link-title="案例庫不對齊章節主題時用反向追問取代強掛" data-link-desc="當案例庫主軸跟章節主題不在同一維度時、引用框架要從『正向掛入』切換到『反向追問』；強掛 case 的根因是『想填滿案例段』的模板配額、而非『想讓讀者看到證據』；反向追問把案例庫的限制當 first-class 訊息傳給讀者、case 變成『沒做 X 的後果』的反證、不是 X 的示範；reviewer 第一輪 fact-check 就能抓出強掛、修正成本高；判讀徵兆是引用句寫不出 case 具體段落 / 多個 case 句型雷同 / 章節主題跟 case 庫主軸不同維度">#146 案例庫不對齊章節主題時用反向追問</a> 卡片。#146 明確列出「抽象斷言訊號：『看 X 如何 Y』這類無具體斷言的句型是反模式」、並作為「判讀徵兆」的四訊號之一。</li>
<li><strong>#146 卡寫完當下</strong>、作者同 batch 已寫的 5 篇章節 case 段內仍有 11 處「看 X 如何 Y」句型未被察覺、未被修正。</li>
<li><strong>Round 2 reviewer</strong> 用 cadence frame 跑 grep（直接拿 #146 描述的反模式當 keyword）、抓出全部 11 處、Round 2 修正後用具體事實 / 數字 / 機制斷言取代。</li>
</ol>
<p>這個案例的諷刺感正是本卡的核心：作者剛寫完規範、自審能力卻沒同步提升。中間缺的是「規範化 → grep 自審」這條主動觸發路徑。Round 2 reviewer 補上的就是這條路徑、但理想上規範作者自己當下就該做。</p>
<h2 id="修法">修法</h2>
<p>三種觸發機制可以接在規範化動作後：</p>
<h3 id="1-立規範後立刻跑-keyword-grep含同義變體">1. 立規範後立刻跑 keyword grep（含同義變體）</h3>
<p>把新立的規範轉成 <code>rg</code> 可掃的 pattern、對所有同 batch（甚至既有）稿件跑一次 grep：</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"># 例：#146 立下後的 keyword grep</span>
</span></span><span class="line"><span class="ln">2</span><span class="cl">rg <span class="s2">&#34;看 .{1,20}如何|看 .{1,20}的決|看 .{1,30}的策略|看 .{1,30}的差異&#34;</span> content/&lt;scope&gt;/
</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"># 但同義變體 grep 同樣重要 — Round 3-A 抓出的盲區</span>
</span></span><span class="line"><span class="ln">5</span><span class="cl">rg <span class="s2">&#34;展示 .{1,30}效應|展示 .{1,30}邏輯|本案展示|案例展示&#34;</span> content/&lt;scope&gt;/</span></span></code></pre></div><p>第一輪 grep pattern 受作者當下視野侷限、通常只涵蓋規範化時用的字面例子、漏掉同義變體。「規範化第一次落地不可能 catch 所有同義變體」是這條機制的天然限制 — 需要 Round N 持續擴張 keyword bank、跟 <a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114 multi-pass review 的 frame 顆粒度盲點</a> 同源。實證：本卡 Round 2 修「看 X 如何 Y」字面層、Round 3-A 仍能 catch 出「展示 X 效應」「展示 X 邏輯」同義變體、證明 path 需要疊代而非一次性動作。</p>
<h3 id="2-結構句型-cadence-sweep補字面-grep-不抓的維度">2. 結構句型 cadence sweep（補字面 grep 不抓的維度）</h3>
<p>字面 keyword grep 抓詞、抓不到結構骨架。常見漏抓的結構句型：</p>
<ul>
<li>「先 X、再 Y、最後 Z」三段平行</li>
<li>「N 個案例可分別對應&hellip;」枚舉式收尾</li>
<li>「對應本章 X 段」反覆出現、構成段末 cadence</li>
</ul>
<p>這類結構違反字面層查不到、要靠 reviewer 跨稿件對讀才能 catch。修法是擴張 #122 cadence 同質化的 grep target、加入「結構骨架」維度：sweep「先看 .{1,30}、(再|接著)」「N 個 .* 分別」「對應本章「.*」段」這類 pattern。</p>
<h3 id="3-把規範卡的判讀徵兆當-self-audit-checklist">3. 把規範卡的「判讀徵兆」當 self-audit checklist</h3>
<p>每張 report 卡的「判讀徵兆」段（如 #146 列的 4 訊號：抽象句型 / 句型雷同 / 維度錯位 / 配額膨脹）就是現成的 self-audit checklist。立規範當下、作者應該主動把這 checklist 套到自己同 batch 稿件 — 而非預設「我剛寫完應該不會犯」。</p>
<h3 id="4-用-reviewer-跑-in-stream-sampling">4. 用 reviewer 跑 in-stream sampling</h3>
<p>如 <a href="/blog/report/emergence-violations-need-in-stream-sampling/" data-link-title="Emergence-class 違規規則化不了、要 stage 0 變體規劃 &#43; stage 內抽樣兩層" data-link-desc="違規分三類（字面 / 結構 / emergence）、enforcement 時機要對應違規類型；字面違規（emoji / 裸 URL）可 regex hook 在 pre-commit 攔、結構違規（章節缺失 / frontmatter）可 linter 攔、emergence 違規（cadence 同質化 / 跨檔語氣漂移）規則化不了、需要 *stage 0 變體規劃（主動設計）* &#43; *stage 內抽樣（被動監測）* 兩層；checkpoint 只是監測工具、若 stage 0 沒準備 variant、被動抽樣不會自動發現 collapse；補 #82 字面 vs 行為的「時機」軸">#124 emergence-class 違規 enforcement 時機</a> 描述、emergence-class 違規（cadence 同質、抽象斷言這類）字面 hook 抓不到、要 reviewer in-stream 才能發現。本案 Round 2 cadence reviewer 是這個機制的應用、Round 3-A 進一步抓出 Round 2 修法的同義變體盲區 — 兩輪 reviewer 用不同 frame 才能完整覆蓋。理想上規範作者自己應該先做前三層（字面 grep + 結構 sweep + checklist）、reviewer 是補位、不是替代。</p>
<p>四種機制按介入點分層：字面 grep 是 keyword 層、結構 sweep 是 cadence 層、checklist 是徵兆層、reviewer 是 frame 層。立規範後四層都跑一次、覆蓋率最完整。單跑字面 grep（如本卡初版只給 keyword pattern）會漏掉結構 cadence 跟同義變體、屬「規範化視角」單軸盲區、要靠後續疊代擴張。</p>
<h2 id="跟其他卡的關係">跟其他卡的關係</h2>
<ul>
<li><a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">#122 Cadence 同質化是模板的隱形維度</a> — 解釋「為什麼同 batch 會有 systemic 違規」的成因機制（主題語意 attractor）。本卡補完：規範化動作本身無法解這個 attractor、需要主動 sweep 才能切斷。</li>
<li><a href="/blog/report/emergence-violations-need-in-stream-sampling/" data-link-title="Emergence-class 違規規則化不了、要 stage 0 變體規劃 &#43; stage 內抽樣兩層" data-link-desc="違規分三類（字面 / 結構 / emergence）、enforcement 時機要對應違規類型；字面違規（emoji / 裸 URL）可 regex hook 在 pre-commit 攔、結構違規（章節缺失 / frontmatter）可 linter 攔、emergence 違規（cadence 同質化 / 跨檔語氣漂移）規則化不了、需要 *stage 0 變體規劃（主動設計）* &#43; *stage 內抽樣（被動監測）* 兩層；checkpoint 只是監測工具、若 stage 0 沒準備 variant、被動抽樣不會自動發現 collapse；補 #82 字面 vs 行為的「時機」軸">#124 Emergence-class 違規規則化不了、要 stage 內抽樣</a> — 解釋「什麼時候 enforcement 最有效」（batch 進度 10-20%）。本卡補一個更早的時機點：立規範當下立刻 sweep 同 batch、不必等 batch 進度推進。</li>
<li><a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114 Multi-pass review 的 frame 顆粒度盲點</a> — 解釋「為什麼同 reviewer 多輪抓不到不同東西」、提出 keyword bank / reader simulation / self-criticism 三機制。本卡是 #114 在「規範作者本人」這個 reviewer 角色的具體實例：作者剛寫完規範、仍需主動換 frame 才能自審。</li>
<li><a href="/blog/report/collapse-is-implicit-default/" data-link-title="Collapse 是隱形預設：多維空間被壓成單格的三類典型" data-link-desc="決策對話、決策呈現、批量輸出三個 surface 都有同一個 pattern — 高維選擇空間預設被 collapse 到 1-2 個窄格、且這個 collapse 因為「便利 / 合規 / 簡潔」被當成中性預設、不被覺察；#80 是 decision surface 上的極致 collapse、#79 是 dialogue 五維 collapse、#123 是 output framing 在 constraint 下 collapse；三者共骨：*某個高自由度空間被便利驅動 reduce 到最少格子*；對策不是去除 collapse、是讓 collapse 變顯性、由設計者決定要 collapse 哪一維、不是預設全 collapse">#125 Collapse 是隱形預設</a> — 「規範化耗光認知頻寬、自審視角沒上線」是 collapse 的具體機制：規範化動作把高維注意力 reduce 到單軸（pattern 共同特徵）、其他軸（同 batch 自己稿件）被預設關閉。本卡是 #125 在「規範化 surface」的子實例。</li>
<li><a href="/blog/report/writing-review-multi-axis-completeness/" data-link-title="寫作 review 是多軸完整性、不是單軸深度" data-link-desc="寫作 review 的完整性不是單一軸越做越深、是多軸交集都對齊；#83 frame 軸 &#43; #121 instance 軸 &#43; #97 surface 軸 &#43; #95 scope 軸 &#43; #122 cadence 軸 &#43; #124 timing 軸 &#43; #114 granularity 軸、七軸正交、缺任一軸都會 systematic miss；review 設計時要 enumerate 七軸覆蓋狀況、不是只跑一兩個維度做深；是 #79 五維決策對話在 review 工具設計的姊妹卡">#126 寫作 review 是多軸完整性、不是單軸深度</a> — 本卡揭露的「規範化 ≠ 自審」是 #126「Timing 軸」+「Granularity 軸」的具體交集：立規範當下不掃 = timing collapse、規範字面 vs 同 batch 違規 = granularity collapse。</li>
<li><a href="/blog/report/case-misalignment-reverse-inquiry/" data-link-title="案例庫不對齊章節主題時用反向追問取代強掛" data-link-desc="當案例庫主軸跟章節主題不在同一維度時、引用框架要從『正向掛入』切換到『反向追問』；強掛 case 的根因是『想填滿案例段』的模板配額、而非『想讓讀者看到證據』；反向追問把案例庫的限制當 first-class 訊息傳給讀者、case 變成『沒做 X 的後果』的反證、不是 X 的示範；reviewer 第一輪 fact-check 就能抓出強掛、修正成本高；判讀徵兆是引用句寫不出 case 具體段落 / 多個 case 句型雷同 / 章節主題跟 case 庫主軸不同維度">#146 案例庫不對齊章節主題時用反向追問取代強掛</a> — 本卡的 case 來源。#146 才剛立規範、同 batch 仍犯該規範、是「規範化 ≠ 自審」最直接的諷刺證據。本卡跟 #146 互為驗證關係：#146 給出規範本身、本卡解釋為什麼立完規範還需要主動 sweep。</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<p>立規範後若不主動 sweep 同 batch、會出現以下訊號：</p>
<ul>
<li><strong>諷刺對映訊號</strong>：規範卡描述的「反模式」可以一字不改貼回自己稿件、自己仍意識不到。最強訊號、出現代表 inside-out 視角完全沒啟動。</li>
<li><strong>跨稿件 catch 訊號</strong>：該規範立下後一週內 reviewer audit 跨稿件、catch 出該規範的多處違規（≥ 3 處）。代表規範化跟自審之間斷層。</li>
<li><strong>自審盲區訊號</strong>：自己 review 自己稿件時、卡片描述跟稿件實例之間的「相似度」感官弱（明明 textbook 案例、自己讀不出來）。代表規範化耗光認知頻寬、自審視角沒上線。</li>
<li><strong>品質非單調訊號</strong>：同 batch 多篇文章在規範化前後寫的、品質沒有顯著差異。代表規範化未轉換成執行力。</li>
</ul>
<p>出現任一訊號、表示「規範化 → 自審」這條路徑沒接通。立刻跑修法的三層機制（grep / checklist / reviewer）對自己稿件做 sweep。</p>
]]></content:encoded></item><item><title>跨輪 review 停止訊號是 frame 涵蓋、不是 finding 數遞減</title><link>https://tarrragon.github.io/blog/report/cross-round-review-stopping-signal/</link><pubDate>Wed, 27 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/cross-round-review-stopping-signal/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>判斷「該不該再來一輪 review」的訊號是「frame 軸是否還有未動」、不是「上一輪 finding 變少」。&lt;/p>
&lt;p>兩種訊號的對比：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>訊號軸&lt;/th>
 &lt;th>判讀方式&lt;/th>
 &lt;th>何時觸發停止&lt;/th>
 &lt;th>風險&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Finding 數遞減&lt;/td>
 &lt;td>Round N 比 Round N-1 finding 少 → 邊際遞減 → 停&lt;/td>
 &lt;td>finding 數明顯下降&lt;/td>
 &lt;td>用錯訊號 — 多輪 review 通常 finding 不遞減&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Frame 涵蓋&lt;/td>
 &lt;td>想不出能 catch 新東西的新 frame → 停&lt;/td>
 &lt;td>七軸（frame / instance / surface / scope / cadence / timing / granularity）全動完&lt;/td>
 &lt;td>需要主動規劃 frame、不是 reactive 判讀&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>多輪 review 的 ROI 不是 monotonically decreasing。每輪用新 frame 通常仍會抓出 substantial finding、但內容會從 surface compliance（編號 / 連結 / 案例對應）往深層 structural issue（cadence / enumeration / 反向引用斷裂）走。停止訊號是「下一輪可用的新 frame 已經想不出來」、不是「上一輪 finding 變少」。&lt;/p>
&lt;h2 id="為什麼-finding-數不是停止訊號">為什麼 finding 數不是停止訊號&lt;/h2>
&lt;p>三個原因讓「finding 遞減」誤導：&lt;/p>
&lt;ol>
&lt;li>&lt;strong>每輪修法會 surface 下一輪問題&lt;/strong>：修 cadence 1.0 會把 cadence 從位置 X 漂到位置 Y、變成 cadence 2.0；修 enumeration 不窮盡會 surface 反向引用斷裂（補完 enumeration 才看見哪些章節該引）。修 = 暴露 new surface。&lt;/li>
&lt;li>&lt;strong>frame 切換等於進入新的問題空間&lt;/strong>：Round 1 用 compliance frame catch 不到 cadence 同質化、Round 2 用 cadence frame catch 不到 enumeration 不窮盡、Round 3 用 steelman frame catch 不到 outbound impact。三輪 frame 正交、finding 互不重疊、自然不會遞減。&lt;/li>
&lt;li>&lt;strong>finding 深度遞增、不是寬度遞減&lt;/strong>：Round N 通常需要 frame 更精緻才能 catch、但 catch 到的問題更接近本質。Raw count 可能不變或增加、但每個 finding 的修正成本跟價值都更高。&lt;/li>
&lt;/ol>
&lt;p>把 finding 遞減當停止訊號、會在「正在進入更深層 issue」的時刻錯誤收尾。&lt;/p>
&lt;h2 id="跨輪-review-的質性-transition-模式">跨輪 review 的質性 transition 模式&lt;/h2>
&lt;p>實證觀察、跨輪 review 的 finding 內容會走以下 transition：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>階段&lt;/th>
 &lt;th>主要 frame&lt;/th>
 &lt;th>finding 性質&lt;/th>
 &lt;th>修法成本&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Surface&lt;/td>
 &lt;td>Compliance / fact-check&lt;/td>
 &lt;td>編號、連結、案例對應、規範違反&lt;/td>
 &lt;td>低（機械修）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Cadence&lt;/td>
 &lt;td>字句層 / 模板偵測&lt;/td>
 &lt;td>句型骨架同骨、廢話前綴、地區漂移&lt;/td>
 &lt;td>中（重寫局部）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Structural&lt;/td>
 &lt;td>Steelman / 讀者旅程&lt;/td>
 &lt;td>enumeration 不窮盡、稻草人、反向引用斷裂&lt;/td>
 &lt;td>高（補實質內容）&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Meta&lt;/td>
 &lt;td>Self-application&lt;/td>
 &lt;td>規則自審、同義變體、frame 切換規劃&lt;/td>
 &lt;td>中（疊代擴張）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>實證的階段不一定按此順序、但通常從 surface 開始、隨 frame 切換往深層走。Meta 階段在 surface / cadence / structural 都修完後仍能 surface 新問題 — 因為它檢查的是「修法過程本身」、屬另一個維度。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>判斷「該不該再來一輪 review」的訊號是「frame 軸是否還有未動」、不是「上一輪 finding 變少」。</p>
<p>兩種訊號的對比：</p>
<table>
  <thead>
      <tr>
          <th>訊號軸</th>
          <th>判讀方式</th>
          <th>何時觸發停止</th>
          <th>風險</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Finding 數遞減</td>
          <td>Round N 比 Round N-1 finding 少 → 邊際遞減 → 停</td>
          <td>finding 數明顯下降</td>
          <td>用錯訊號 — 多輪 review 通常 finding 不遞減</td>
      </tr>
      <tr>
          <td>Frame 涵蓋</td>
          <td>想不出能 catch 新東西的新 frame → 停</td>
          <td>七軸（frame / instance / surface / scope / cadence / timing / granularity）全動完</td>
          <td>需要主動規劃 frame、不是 reactive 判讀</td>
      </tr>
  </tbody>
</table>
<p>多輪 review 的 ROI 不是 monotonically decreasing。每輪用新 frame 通常仍會抓出 substantial finding、但內容會從 surface compliance（編號 / 連結 / 案例對應）往深層 structural issue（cadence / enumeration / 反向引用斷裂）走。停止訊號是「下一輪可用的新 frame 已經想不出來」、不是「上一輪 finding 變少」。</p>
<h2 id="為什麼-finding-數不是停止訊號">為什麼 finding 數不是停止訊號</h2>
<p>三個原因讓「finding 遞減」誤導：</p>
<ol>
<li><strong>每輪修法會 surface 下一輪問題</strong>：修 cadence 1.0 會把 cadence 從位置 X 漂到位置 Y、變成 cadence 2.0；修 enumeration 不窮盡會 surface 反向引用斷裂（補完 enumeration 才看見哪些章節該引）。修 = 暴露 new surface。</li>
<li><strong>frame 切換等於進入新的問題空間</strong>：Round 1 用 compliance frame catch 不到 cadence 同質化、Round 2 用 cadence frame catch 不到 enumeration 不窮盡、Round 3 用 steelman frame catch 不到 outbound impact。三輪 frame 正交、finding 互不重疊、自然不會遞減。</li>
<li><strong>finding 深度遞增、不是寬度遞減</strong>：Round N 通常需要 frame 更精緻才能 catch、但 catch 到的問題更接近本質。Raw count 可能不變或增加、但每個 finding 的修正成本跟價值都更高。</li>
</ol>
<p>把 finding 遞減當停止訊號、會在「正在進入更深層 issue」的時刻錯誤收尾。</p>
<h2 id="跨輪-review-的質性-transition-模式">跨輪 review 的質性 transition 模式</h2>
<p>實證觀察、跨輪 review 的 finding 內容會走以下 transition：</p>
<table>
  <thead>
      <tr>
          <th>階段</th>
          <th>主要 frame</th>
          <th>finding 性質</th>
          <th>修法成本</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Surface</td>
          <td>Compliance / fact-check</td>
          <td>編號、連結、案例對應、規範違反</td>
          <td>低（機械修）</td>
      </tr>
      <tr>
          <td>Cadence</td>
          <td>字句層 / 模板偵測</td>
          <td>句型骨架同骨、廢話前綴、地區漂移</td>
          <td>中（重寫局部）</td>
      </tr>
      <tr>
          <td>Structural</td>
          <td>Steelman / 讀者旅程</td>
          <td>enumeration 不窮盡、稻草人、反向引用斷裂</td>
          <td>高（補實質內容）</td>
      </tr>
      <tr>
          <td>Meta</td>
          <td>Self-application</td>
          <td>規則自審、同義變體、frame 切換規劃</td>
          <td>中（疊代擴張）</td>
      </tr>
  </tbody>
</table>
<p>實證的階段不一定按此順序、但通常從 surface 開始、隨 frame 切換往深層走。Meta 階段在 surface / cadence / structural 都修完後仍能 surface 新問題 — 因為它檢查的是「修法過程本身」、屬另一個維度。</p>
<p>每個階段內、frame 用完就遞減；跨階段、新 frame 上線就重新進入「新一輪不遞減」狀態。</p>
<h2 id="停止訊號的-4-個判讀">停止訊號的 4 個判讀</h2>
<p>何時可以判定「真的夠了」？四個判讀齊備、再停：</p>
<ol>
<li><strong>七軸 frame 全動完</strong>：per <a href="/blog/report/writing-review-multi-axis-completeness/" data-link-title="寫作 review 是多軸完整性、不是單軸深度" data-link-desc="寫作 review 的完整性不是單一軸越做越深、是多軸交集都對齊；#83 frame 軸 &#43; #121 instance 軸 &#43; #97 surface 軸 &#43; #95 scope 軸 &#43; #122 cadence 軸 &#43; #124 timing 軸 &#43; #114 granularity 軸、七軸正交、缺任一軸都會 systematic miss；review 設計時要 enumerate 七軸覆蓋狀況、不是只跑一兩個維度做深；是 #79 五維決策對話在 review 工具設計的姊妹卡">#126 review 七軸</a>、frame / instance / surface / scope / cadence / timing / granularity 七軸都用過、沒有遺漏的觀察維度</li>
<li><strong>新 frame 想不出來</strong>：團隊腦力激盪後想不出「能 catch 上一輪 frame 抓不到的東西」的新 frame、代表問題空間已涵蓋</li>
<li><strong>Finding 性質回到 surface</strong>：若新 frame catch 到的 finding 又退回到 surface（編號、連結、低密度 cadence）、代表 structural / meta 維度已穩定</li>
<li><strong>修法成本反轉</strong>：若修一個 finding 的成本超過讀者實際感受的價值、繼續修不划算 — 用 <a href="/blog/report/collapse-is-implicit-default/" data-link-title="Collapse 是隱形預設：多維空間被壓成單格的三類典型" data-link-desc="決策對話、決策呈現、批量輸出三個 surface 都有同一個 pattern — 高維選擇空間預設被 collapse 到 1-2 個窄格、且這個 collapse 因為「便利 / 合規 / 簡潔」被當成中性預設、不被覺察；#80 是 decision surface 上的極致 collapse、#79 是 dialogue 五維 collapse、#123 是 output framing 在 constraint 下 collapse；三者共骨：*某個高自由度空間被便利驅動 reduce 到最少格子*；對策不是去除 collapse、是讓 collapse 變顯性、由設計者決定要 collapse 哪一維、不是預設全 collapse">#125 collapse</a> 的提醒、避免完美主義 collapse 到無止境疊代</li>
</ol>
<p>四個訊號齊備、停的判讀是 evidence-based 而非 finding 數驅動。</p>
<h2 id="case">Case</h2>
<p>本次 backend 5 章 + 1 report 卡的 3 輪 review 實證：</p>
<ul>
<li><strong>Round 1</strong>（compliance / 案例 / 跨章 frame）：12 個 finding、surface 層為主、編號 mis-cite + case mis-citation</li>
<li><strong>Round 2</strong>（cadence / 旅程 / title frame）：10 個 finding、cadence 同骨化 + 影片詞彙橋斷裂 + 時序總表缺失</li>
<li><strong>Round 3</strong>（self-application / steelman / outbound frame）：<strong>16 個 finding</strong>（比 Round 1 / 2 還多）、三段式 cadence 從位置漂移 + enumeration 稻草人 + 單向反向引用斷裂</li>
</ul>
<p>Total 38 個 finding、9 個 reviewer instance、零重疊。Round 3 finding 數反而比 Round 1 / 2 多、但 Round 3 是 review 自然停下的點 — 因為「想不出能 catch Round 3 frame 抓不到的東西的 Round 4 frame」。</p>
<p>判讀停止的依據是 frame 涵蓋（七軸動完、Round 4 frame 想不出來），不是 finding 數遞減（Round 3 數還在升）。若按 finding 遞減判讀、Round 1 → Round 2（12 → 10）就該停、會錯過 Round 3 抓出的 16 個結構性問題。</p>
<h2 id="跟其他卡的關係">跟其他卡的關係</h2>
<p>本卡跟以下卡片正交、處理「多輪 review 何時停」這個 #114 / #126 / #147 沒覆蓋的問題：</p>
<ul>
<li><a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114 Multi-pass review 的 frame 顆粒度盲點</a> — 說明「需要不同 frame」。本卡補完：知道需要不同 frame 後、判讀「何時 frame 涵蓋夠」的訊號。</li>
<li><a href="/blog/report/writing-review-multi-axis-completeness/" data-link-title="寫作 review 是多軸完整性、不是單軸深度" data-link-desc="寫作 review 的完整性不是單一軸越做越深、是多軸交集都對齊；#83 frame 軸 &#43; #121 instance 軸 &#43; #97 surface 軸 &#43; #95 scope 軸 &#43; #122 cadence 軸 &#43; #124 timing 軸 &#43; #114 granularity 軸、七軸正交、缺任一軸都會 systematic miss；review 設計時要 enumerate 七軸覆蓋狀況、不是只跑一兩個維度做深；是 #79 五維決策對話在 review 工具設計的姊妹卡">#126 寫作 review 是多軸完整性、不是單軸深度</a> — 列七軸。本卡用七軸作為停止判讀的具體 checklist、補強 #126 在「執行收尾」這層的判讀工具。</li>
<li><a href="/blog/report/rule-codification-vs-self-audit/" data-link-title="規範化跟自審是兩種認知任務、立規範當下無法保護同批稿件" data-link-desc="把反模式抽象成規範卡、跟在自己稿件辨識該反模式的局部實例、是兩種不同認知任務；前者用『歸納共同特徵』的視角、後者用『局部 pattern matching』的視角；用相同概念詞、走不同神經路徑；案例：#146 卡描述「看 X 如何 Y」是反模式、同 batch 5 篇章節仍有 11 處該句型未被作者察覺；修法是規範化當下立刻把規範轉成 grep keyword、對同 batch 稿件主動 sweep；不修則 #122 主題語意 attractor 跟 #124 emergence 違規會在同 batch 內持續累積">#147 規範化跟自審是兩種認知任務</a> — 說明「規範化第一次落地不可能完整、需要疊代」。本卡補完：疊代到什麼時候停？停止訊號跟疊代啟動訊號是不同維度。</li>
<li><a href="/blog/report/collapse-is-implicit-default/" data-link-title="Collapse 是隱形預設：多維空間被壓成單格的三類典型" data-link-desc="決策對話、決策呈現、批量輸出三個 surface 都有同一個 pattern — 高維選擇空間預設被 collapse 到 1-2 個窄格、且這個 collapse 因為「便利 / 合規 / 簡潔」被當成中性預設、不被覺察；#80 是 decision surface 上的極致 collapse、#79 是 dialogue 五維 collapse、#123 是 output framing 在 constraint 下 collapse；三者共骨：*某個高自由度空間被便利驅動 reduce 到最少格子*；對策不是去除 collapse、是讓 collapse 變顯性、由設計者決定要 collapse 哪一維、不是預設全 collapse">#125 Collapse 是隱形預設</a> — 「無止境疊代」是 collapse 的另一個極端（從「規範化單軸 collapse」反向到「review 過度 collapse 完美主義」）。本卡用「修法成本反轉」訊號避免這個反向 collapse。</li>
</ul>
<h2 id="判讀徵兆">判讀徵兆</h2>
<p>跨輪 review 中、出現以下訊號時要重新評估「該繼續還是該停」：</p>
<ul>
<li><strong>新 frame 卡住訊號</strong>：規劃下一輪 review 時、想了 30 分鐘想不出「能 catch 新東西的 frame」— 是「frame 涵蓋已足」的強訊號</li>
<li><strong>Finding 性質退化訊號</strong>：新一輪 finding 退回 surface 層（編號 / 連結這類低密度議題）、structural / meta 層沒新東西 — 代表深層 issue 已穩定</li>
<li><strong>修法成本超過邊際價值訊號</strong>：修一個 finding 要動 50+ 行、但讀者實際感受改善有限 — 修法 ROI 已下降</li>
<li><strong>Frame 重複訊號</strong>：新一輪 reviewer 的 finding 跟上一輪有重疊（per <a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">#114</a> 同 frame 多輪 catch 高度相同）— 代表 frame 軸沒換、再跑無增益</li>
</ul>
<p>四個訊號中出現任二、可以判定「真的夠了」。出現任一、繼續但要規劃 frame 切換。沒有任一、按七軸繼續推進。</p>
<p>「夠了」的判讀本身是 evidence-based、不是直覺 — 用上面四個訊號當 checklist、比「finding 變少就停」可靠。</p>
]]></content:encoded></item><item><title>Compositional Writing</title><link>https://tarrragon.github.io/blog/skills/compositional-writing/skill/</link><pubDate>Fri, 26 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/skills/compositional-writing/skill/</guid><description>&lt;h2 id="compositional-writing">Compositional Writing&lt;/h2>
&lt;p>以 Zettelkasten（卡片盒筆記法）為核心的寫作方法論。將每段文字視為可重複組合的原子卡片，讓人類讀者與 AI 代理人都能以最小認知負擔找到答案。&lt;/p>
&lt;hr>
&lt;h2 id="core-pillars核心支柱">Core Pillars（核心支柱）&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>支柱&lt;/th>
 &lt;th>意義&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;strong>Atomization&lt;/strong> 原子化&lt;/td>
 &lt;td>一段文字只承載一個概念，可獨立閱讀與重用&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Explicit Intent&lt;/strong> 意圖顯性與層級貼合&lt;/td>
 &lt;td>讀者第一眼就看懂「為什麼在這裡、屬哪個抽象層級、該做什麼」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;strong>Searchability&lt;/strong> 可查詢性&lt;/td>
 &lt;td>人和 AI 都能用關鍵字 / grep / regex 快速定位&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;hr>
&lt;h2 id="core-principles核心原則速查">Core Principles（核心原則速查）&lt;/h2>
&lt;p>讀者能在本區塊完成快速複習；需要具體應用時，依下方「觸發路由」讀對應情境 reference。&lt;/p>
&lt;h3 id="1-原子化atomization">1. 原子化（Atomization）&lt;/h3>
&lt;p>一張卡一個概念：能獨立理解、可跨情境重用。拆分依據是&lt;strong>認知負擔與情境匹配度&lt;/strong> — 讀者要同時記住的概念數、以及這張卡是否符合讀者當下的情境需求。常見的誤判依據是「行數」（卡太長就拆）、行數只反映表面字數、不反映概念數：一張 200 行的卡可能只講一個概念、一張 30 行的卡可能塞了三個概念。判別問題是「讀者要同時 hold 幾個概念才讀得懂這張卡」、超過 7 個就要拆。&lt;/p>
&lt;p>&lt;strong>拆分判準的核心問題&lt;/strong>：「這張卡聚焦在什麼問題、議題切完整了嗎？」— 判準是 &lt;strong>focus 完整度&lt;/strong>。常見的次級訊號是「卡之間是否衝突」「邊界是否清晰」、兩者都不夠：兩張卡互不衝突、仍可能各切了一半同樣議題；一張卡邊界清晰、仍可能塞了兩個獨立議題。focus 完整度問的是「這張卡有沒有把它聲稱要解決的議題講完」、是 contrast 上面那兩個訊號抓不到的死角。&lt;/p>
&lt;h3 id="2-索引建立indexing">2. 索引建立（Indexing）&lt;/h3>
&lt;p>用 MOC（Map of Content）、tag 層級與反向索引把卡片串成可導航的網。入口文件&lt;strong>只做路由&lt;/strong>、把細節留給目標卡；引用深度&lt;strong>最多一層&lt;/strong>、讓讀者一跳就到答案（避免 A→B→C 的多層跳躍）。&lt;/p>
&lt;p>&lt;strong>引用錨點用語意標題、不用位置編號&lt;/strong>：引用另一個章節 / 階段 / 條列項時寫「見核心問題」、不寫「見 Stage 3」— 編號是結構排列的 derivation、結構重排時引用句字面完好、語意 silent 指向錯的內容（比 broken link 難偵測：連結斷掉會報錯、編號錯位會成功解析到錯的東西）。對應要求是每個結構單位的標題要承載核心意義（「Stage 3：核心問題」、編號只作排序前綴）、引用取語意半邊；發布方凍結的編號（RFC 段號 / 法條）是 fact、可引用。詳見 &lt;a href="https://tarrragon.github.io/blog/report/reference-by-semantic-title-not-number/" data-link-title="引用章節用語意標題、不用位置編號：編號是結構排列的 derivation、會隨版本漂移" data-link-desc="跨段落、跨檔引用結構單位（章節 / 階段 / 條列項）時、引用語意標題（副標題）、不引用位置編號（Stage 3、第 5 章、第 3 點）。編號是「目前結構排列」的 derivation、不是 fact；結構重排時編號全部位移、引用點不會報錯、而是 silent 指向錯的內容 — 比 broken link 更難偵測。標題的存在意義就是承載可被引用的語意。是 #44 SSoT 在結構引用維度的實例、#93 identifier-as-fact 家族的 sibling、#84 命名承載語意的引用面延伸。">reference-by-semantic-title-not-number&lt;/a>。&lt;/p>
&lt;p>&lt;strong>語意錨用單一字串、引用他卡用對方的詞彙&lt;/strong>：同一個結構單位的語意名稱只能有一個 canonical 字串（取標題語意半邊）— 同義雙名（標題「決策記錄 + scaffold 建議」、引用「決策收斂階段」）讓 grep 掃 A 漏 B、重排修復退回人腦對應。引用另一張卡並描述它的內容時、寫之前把被引卡重新打開、用它自己的分類詞彙轉述 — 記憶存概念不存 taxonomy、憑印象轉述會把對方明確分開的類別併掉、每條關係宣告要找得到被引卡的支撐句。&lt;/p>
&lt;p>&lt;strong>集合命名用角色、不內嵌數量&lt;/strong>：標題要當穩定錨、就得先是純 fact —「核心七問」「成長六階段」「四大支柱」把成員數烤進名字、數量是成員清單的 derivation、加一問名稱先失真、所有複製過名稱的地方跟著過期。命名只承載角色與層級（核心問題 / 撞牆階段 / 支柱）、數量讓清單自己呈現；外部凍結品牌（SOLID 五原則 / OWASP Top 10）跟概念閾值（兩次門檻）的數字是 fact、可留。詳見 &lt;a href="https://tarrragon.github.io/blog/report/name-collections-by-role-not-count/" data-link-title="集合命名用角色、不內嵌數量：「核心七問」的七是成員數的 derivation、加一問就全面失真" data-link-desc="「核心七問」「成長六階段」「四大支柱」這類名稱把成員數量烤進名字裡 — 數量是集合當前成員的 derivation、不是集合的語意身分；成員增減時名稱失真、且名稱是被複製最多次的字串、缺陷隨每次引用繁殖。修法：命名只承載角色與層級（核心問題 / 次要問題 / 撞牆階段）、數量讓清單自己呈現。本卡是 #155 的命名端 sibling（#155 修引用端、本卡讓「語意標題是穩定錨」的前提真正成立）、#44 SSoT 在名稱內容的實例、#84 命名檢驗的數量維度。">name-collections-by-role-not-count&lt;/a>。&lt;/p>
&lt;h3 id="3-意圖顯性與層級貼合explicit-intent--layer-alignment">3. 意圖顯性與層級貼合（Explicit Intent &amp;amp; Layer Alignment）&lt;/h3>
&lt;p>&lt;strong>寫作前先標記本文所在抽象層級（實作 / 工具 / 協作 / 認知 / 架構）、論述停在該層&lt;/strong>。素材取自哪個層級、論述就收斂在哪個層級 — 因為跨層提升等於用 X 層的詞彙描述 Y 層的議題、讀者拿到規則但對不到自己當下的情境。要把實作層素材抽象到認知層、先補對應抽象層的支撐文件（讓論述有對應層的詞彙跟 case 可引用）、再做跨層提升。&lt;/p>
&lt;p>寫「為什麼」和「要達成什麼」、把「程式碼在做什麼」留給程式碼自身（程式碼讀一次就知道做什麼、寫進註解只是冗餘）。主詞與動詞直接、段落開頭即表達意圖。TODO / placeholder 留給 inline 註解、文件本體只放當前契約 — 因為文件常被當成「契約 SSoT」引用、混入未完成事項會讓讀者誤判契約範圍。同一篇文字貼合它在系統裡的抽象層級、把下層實作藏在介面後面。&lt;/p>
&lt;p>&lt;strong>機會成本語氣優先&lt;/strong>：程式設計大多是多目標取捨、討論的是「在什麼情境下哪個選項較划算」。把絕對二元語氣（「正確概念是 X / 替代方案不足 / 應該這樣做」）翻成情境化敘述：「比較好的做法是 A、因為 [情境] / B 在 [其他情境] 合理 / D 的成本特別高、只在 [極端情境] 才划算」。機會成本教讀者「思考方式」（能套用到新情境）、絕對主義教讀者「規則」（壓力下會忘）— 所以前者是預設語氣。例外保留給物理 / 法律 / 數學事實（安全性、數據完整性、合規、雜湊必有碰撞）。絕對二元語氣有兩種形式：&lt;strong>命令式&lt;/strong>（「應該做 X」）讀者聽得出是主張、會審；&lt;strong>必然式&lt;/strong>（「X 天生就是 Y / 本質就是 / 必然」）偽裝成事實陳述、更隱形 — 把設計選擇講成自然法則時尤其要 catch、還原成「在選了某前提後 X 才以此形式成立」。判別線：這個必然有沒有上游設計選擇當前提（有=條件性、要講前提；無=真必然、可斷言）。詳見 &lt;a href="https://tarrragon.github.io/blog/report/teaching-register-states-not-addresses-reader/" data-link-title="教材用中性陳述、不對讀者喊話" data-link-desc="教材的 register 是中性陳述概念、不是對讀者說話。三種對讀者喊話的形式 —— 安撫情緒（很多人卡在）、第二人稱代入（你天天寫）、祈使控制閱讀（先讀懂 / 別搞混）—— 表面不同、共同違反是把讀者當成要管理的對話對象、而非把概念講清楚。問題不在精度（「你天天寫的 int count」精度完全正確）、在 stance。修法是換成中性陳述（常見的 int count）或描述性名詞標題（簽章的型別與名字拆解）。邊界：hook / narrative 段落的輕度第二人稱可幫讀者進入、不一律禁。">teaching-prose-neutral-register&lt;/a>。&lt;/p></description><content:encoded><![CDATA[<h2 id="compositional-writing">Compositional Writing</h2>
<p>以 Zettelkasten（卡片盒筆記法）為核心的寫作方法論。將每段文字視為可重複組合的原子卡片，讓人類讀者與 AI 代理人都能以最小認知負擔找到答案。</p>
<hr>
<h2 id="core-pillars核心支柱">Core Pillars（核心支柱）</h2>
<table>
  <thead>
      <tr>
          <th>支柱</th>
          <th>意義</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>Atomization</strong> 原子化</td>
          <td>一段文字只承載一個概念，可獨立閱讀與重用</td>
      </tr>
      <tr>
          <td><strong>Explicit Intent</strong> 意圖顯性與層級貼合</td>
          <td>讀者第一眼就看懂「為什麼在這裡、屬哪個抽象層級、該做什麼」</td>
      </tr>
      <tr>
          <td><strong>Searchability</strong> 可查詢性</td>
          <td>人和 AI 都能用關鍵字 / grep / regex 快速定位</td>
      </tr>
  </tbody>
</table>
<hr>
<h2 id="core-principles核心原則速查">Core Principles（核心原則速查）</h2>
<p>讀者能在本區塊完成快速複習；需要具體應用時，依下方「觸發路由」讀對應情境 reference。</p>
<h3 id="1-原子化atomization">1. 原子化（Atomization）</h3>
<p>一張卡一個概念：能獨立理解、可跨情境重用。拆分依據是<strong>認知負擔與情境匹配度</strong> — 讀者要同時記住的概念數、以及這張卡是否符合讀者當下的情境需求。常見的誤判依據是「行數」（卡太長就拆）、行數只反映表面字數、不反映概念數：一張 200 行的卡可能只講一個概念、一張 30 行的卡可能塞了三個概念。判別問題是「讀者要同時 hold 幾個概念才讀得懂這張卡」、超過 7 個就要拆。</p>
<p><strong>拆分判準的核心問題</strong>：「這張卡聚焦在什麼問題、議題切完整了嗎？」— 判準是 <strong>focus 完整度</strong>。常見的次級訊號是「卡之間是否衝突」「邊界是否清晰」、兩者都不夠：兩張卡互不衝突、仍可能各切了一半同樣議題；一張卡邊界清晰、仍可能塞了兩個獨立議題。focus 完整度問的是「這張卡有沒有把它聲稱要解決的議題講完」、是 contrast 上面那兩個訊號抓不到的死角。</p>
<h3 id="2-索引建立indexing">2. 索引建立（Indexing）</h3>
<p>用 MOC（Map of Content）、tag 層級與反向索引把卡片串成可導航的網。入口文件<strong>只做路由</strong>、把細節留給目標卡；引用深度<strong>最多一層</strong>、讓讀者一跳就到答案（避免 A→B→C 的多層跳躍）。</p>
<p><strong>引用錨點用語意標題、不用位置編號</strong>：引用另一個章節 / 階段 / 條列項時寫「見核心問題」、不寫「見 Stage 3」— 編號是結構排列的 derivation、結構重排時引用句字面完好、語意 silent 指向錯的內容（比 broken link 難偵測：連結斷掉會報錯、編號錯位會成功解析到錯的東西）。對應要求是每個結構單位的標題要承載核心意義（「Stage 3：核心問題」、編號只作排序前綴）、引用取語意半邊；發布方凍結的編號（RFC 段號 / 法條）是 fact、可引用。詳見 <a href="/blog/report/reference-by-semantic-title-not-number/" data-link-title="引用章節用語意標題、不用位置編號：編號是結構排列的 derivation、會隨版本漂移" data-link-desc="跨段落、跨檔引用結構單位（章節 / 階段 / 條列項）時、引用語意標題（副標題）、不引用位置編號（Stage 3、第 5 章、第 3 點）。編號是「目前結構排列」的 derivation、不是 fact；結構重排時編號全部位移、引用點不會報錯、而是 silent 指向錯的內容 — 比 broken link 更難偵測。標題的存在意義就是承載可被引用的語意。是 #44 SSoT 在結構引用維度的實例、#93 identifier-as-fact 家族的 sibling、#84 命名承載語意的引用面延伸。">reference-by-semantic-title-not-number</a>。</p>
<p><strong>語意錨用單一字串、引用他卡用對方的詞彙</strong>：同一個結構單位的語意名稱只能有一個 canonical 字串（取標題語意半邊）— 同義雙名（標題「決策記錄 + scaffold 建議」、引用「決策收斂階段」）讓 grep 掃 A 漏 B、重排修復退回人腦對應。引用另一張卡並描述它的內容時、寫之前把被引卡重新打開、用它自己的分類詞彙轉述 — 記憶存概念不存 taxonomy、憑印象轉述會把對方明確分開的類別併掉、每條關係宣告要找得到被引卡的支撐句。</p>
<p><strong>集合命名用角色、不內嵌數量</strong>：標題要當穩定錨、就得先是純 fact —「核心七問」「成長六階段」「四大支柱」把成員數烤進名字、數量是成員清單的 derivation、加一問名稱先失真、所有複製過名稱的地方跟著過期。命名只承載角色與層級（核心問題 / 撞牆階段 / 支柱）、數量讓清單自己呈現；外部凍結品牌（SOLID 五原則 / OWASP Top 10）跟概念閾值（兩次門檻）的數字是 fact、可留。詳見 <a href="/blog/report/name-collections-by-role-not-count/" data-link-title="集合命名用角色、不內嵌數量：「核心七問」的七是成員數的 derivation、加一問就全面失真" data-link-desc="「核心七問」「成長六階段」「四大支柱」這類名稱把成員數量烤進名字裡 — 數量是集合當前成員的 derivation、不是集合的語意身分；成員增減時名稱失真、且名稱是被複製最多次的字串、缺陷隨每次引用繁殖。修法：命名只承載角色與層級（核心問題 / 次要問題 / 撞牆階段）、數量讓清單自己呈現。本卡是 #155 的命名端 sibling（#155 修引用端、本卡讓「語意標題是穩定錨」的前提真正成立）、#44 SSoT 在名稱內容的實例、#84 命名檢驗的數量維度。">name-collections-by-role-not-count</a>。</p>
<h3 id="3-意圖顯性與層級貼合explicit-intent--layer-alignment">3. 意圖顯性與層級貼合（Explicit Intent &amp; Layer Alignment）</h3>
<p><strong>寫作前先標記本文所在抽象層級（實作 / 工具 / 協作 / 認知 / 架構）、論述停在該層</strong>。素材取自哪個層級、論述就收斂在哪個層級 — 因為跨層提升等於用 X 層的詞彙描述 Y 層的議題、讀者拿到規則但對不到自己當下的情境。要把實作層素材抽象到認知層、先補對應抽象層的支撐文件（讓論述有對應層的詞彙跟 case 可引用）、再做跨層提升。</p>
<p>寫「為什麼」和「要達成什麼」、把「程式碼在做什麼」留給程式碼自身（程式碼讀一次就知道做什麼、寫進註解只是冗餘）。主詞與動詞直接、段落開頭即表達意圖。TODO / placeholder 留給 inline 註解、文件本體只放當前契約 — 因為文件常被當成「契約 SSoT」引用、混入未完成事項會讓讀者誤判契約範圍。同一篇文字貼合它在系統裡的抽象層級、把下層實作藏在介面後面。</p>
<p><strong>機會成本語氣優先</strong>：程式設計大多是多目標取捨、討論的是「在什麼情境下哪個選項較划算」。把絕對二元語氣（「正確概念是 X / 替代方案不足 / 應該這樣做」）翻成情境化敘述：「比較好的做法是 A、因為 [情境] / B 在 [其他情境] 合理 / D 的成本特別高、只在 [極端情境] 才划算」。機會成本教讀者「思考方式」（能套用到新情境）、絕對主義教讀者「規則」（壓力下會忘）— 所以前者是預設語氣。例外保留給物理 / 法律 / 數學事實（安全性、數據完整性、合規、雜湊必有碰撞）。絕對二元語氣有兩種形式：<strong>命令式</strong>（「應該做 X」）讀者聽得出是主張、會審；<strong>必然式</strong>（「X 天生就是 Y / 本質就是 / 必然」）偽裝成事實陳述、更隱形 — 把設計選擇講成自然法則時尤其要 catch、還原成「在選了某前提後 X 才以此形式成立」。判別線：這個必然有沒有上游設計選擇當前提（有=條件性、要講前提；無=真必然、可斷言）。詳見 <a href="/blog/report/teaching-register-states-not-addresses-reader/" data-link-title="教材用中性陳述、不對讀者喊話" data-link-desc="教材的 register 是中性陳述概念、不是對讀者說話。三種對讀者喊話的形式 —— 安撫情緒（很多人卡在）、第二人稱代入（你天天寫）、祈使控制閱讀（先讀懂 / 別搞混）—— 表面不同、共同違反是把讀者當成要管理的對話對象、而非把概念講清楚。問題不在精度（「你天天寫的 int count」精度完全正確）、在 stance。修法是換成中性陳述（常見的 int count）或描述性名詞標題（簽章的型別與名字拆解）。邊界：hook / narrative 段落的輕度第二人稱可幫讀者進入、不一律禁。">teaching-prose-neutral-register</a>。</p>
<p><strong>選項數由議題本身的合理選項數決定</strong>：機會成本的精神是「教思考方式」 — 議題有幾個合理選項就寫幾個（2 個寫 A/B、3 個寫 A/B/C、4 個寫 A/B/C/D）。強湊到固定數量會把「教思考」退化成「填格式」、生出「實務上幾乎不存在」的低品質假反模式。真正的反模式直接標「D：反模式 — 違反 X 原則」、給讀者明確的「為什麼這條路該避開」、保持誠實。</p>
<p><strong>讀者定位聲明（生成端前置步驟）</strong>：每個教學模組在第一篇文章生成前，顯式聲明讀者定位——一段話描述目標讀者的背景、已有能力、缺的經驗。這份聲明是後續所有生成和 review 的可檢查基準。缺少顯式聲明時，LLM 預設用「教外行人」的姿態寫教學內容，這個預設不被 review 挑戰（reviewer 共享同一個預設），導致宣導語氣通過多輪審查。per <a href="/blog/report/review-lacks-outside-in-reader-frames/" data-link-title="多輪審查缺 outside-in 讀者 frame：六個系統性盲點" data-link-desc="review 框架的所有 frame 從已寫的內容出發（inside-out），缺從讀者完整需求出發的 frame（outside-in）。六個盲點全部由使用者而非 reviewer 發現：宣導語氣、管理層資訊缺失、接手情境遺漏、工具指引缺失、深度不拆分、讀者定位未預設。">outside-in reader frames report</a></p>
<p><strong>讀者定位：缺經驗的專業人士、不是外行人</strong>：技術教材的讀者是在特定領域缺乏經驗的專業人士，不是完全不懂的外行人。寫法是補足經驗缺口（直接描述情境與操作需求），不是從零科普（故事線導入、比喻堆疊、宣導語氣）。宣導式語氣（「你可能沒注意到」「把 X 想成 Y」「跑得好好的」）預設讀者無能、降低教材可信度。詳見 <a href="/blog/report/audience-is-professional-not-layperson/" data-link-title="讀者是缺經驗的專業人士、不是外行人" data-link-desc="技術教材的讀者定位應該是「在這個領域缺乏經驗的專業人士」，不是「完全不懂的外行人」。寫法是補足經驗缺口、不是從零科普。宣導式語氣（跑得好好的、你可能不知道）預設讀者無能，實際上會降低教材的可信度。">audience-is-professional-not-layperson</a>。</p>
<p><strong>跨專業溝通用情境遞進、不用比喻堆疊</strong>：向非本領域的專業人士（管理層、決策者）解釋技術議題時，減少術語並從簡單情境遞進到複雜情境。比喻傳遞形狀但不傳遞嚴重性、在細節處崩解、且隱含「對方聽不懂」的預設。用決策者熟悉的維度（影響範圍、恢復時間、成本量級）表達。詳見 <a href="/blog/report/cross-expertise-communication-scenario-not-analogy/" data-link-title="跨專業溝通用情境遞進、不用比喻堆疊" data-link-desc="向非本領域的專業人士解釋技術議題時，減少術語並從簡單情境遞進到複雜情境，比堆疊比喻有效。比喻傳遞形狀但不傳遞嚴重性；情境遞進讓對方用自己熟悉的決策框架（成本、風險、時間）消化資訊。">cross-expertise-scenario-not-analogy</a>。</p>
<p><strong>技術教材內嵌管理層可彙報的資訊</strong>：技術段落旁嵌入成本量級、時程估算、進度指標與決策簽核點（各 1-2 句），讓讀者學完技術做法的同時拿到向上彙報的素材。成本用量級不用精確數、時程用範圍不用單點、進度用可查詢指標。詳見 <a href="/blog/report/technical-content-needs-management-reportable-info/" data-link-title="技術教材要內嵌管理層可彙報的資訊" data-link-desc="技術文章的讀者不只要知道怎麼做，還要能向上彙報為什麼做、花多久、花多少。成本量級、時程估算、進度指標與需簽核的決策點應該嵌在技術段落旁邊，而非集中在另一篇溝通指南裡。">management-reportable-info-in-technical-content</a>。</p>
<p><strong>知識卡建卡判準用「最不熟悉的讀者」</strong>：知識卡的建卡判準是「目標讀者群裡最不熟悉的那端能不能理解這個術語」，不是「作者覺得夠不夠常見」。常識是相對於背景的——.htaccess 對 PHP 工程師是常識、對 Node.js 工程師完全陌生。跨背景讀者群的教材裡，幾乎所有領域特定術語都需要建卡。建卡的邊際成本低（40-50 行）、讀者缺卡的代價高（離開教材去 Google、可能找到不一致的解釋）。per <a href="/blog/report/common-knowledge-is-relative-to-reader-background/" data-link-title="常識是相對於讀者背景的、不是作者背景的" data-link-desc="知識卡的建卡判準不能用「這個夠不夠常見」——對 PHP 工程師是常識的 .htaccess，對 Node.js 工程師完全陌生；對後端工程師是常識的 DNS TTL，對前端工程師需要解釋。建卡看的是目標讀者群裡最不熟悉的那個人能不能理解，不是作者自己覺得夠不夠普遍。">常識是相對於讀者背景的</a>。</p>
<p><strong>操作步驟帶環境專屬工具路徑</strong>：操作型文章的每一步至少帶一條工具路徑（用什麼軟體、輸入什麼指令）。同一個動作在不同環境（container / VM / 共享主機）的工具路徑可能完全不同——「拍下現況」在 container 是 <code>docker commit</code>、在 VM 是 AMI 快照、在共享主機是 FTP mirror + phpinfo。文章涵蓋多種環境時、每一步要按環境分列工具、或標明適用環境。自測問題：「讀者坐在電腦前，下一個動作是打開什麼軟體？」答不出來就是缺口。per <a href="/blog/report/operational-how-needs-environment-specific-tooling/" data-link-title="操作指引的「怎麼做」要帶環境專屬的工具路徑" data-link-desc="操作型教材說「拍下現況」「匯出資料庫」「建立備份」時，不同執行環境（container / VM / 共享主機）的工具路徑完全不同。只寫動作不寫工具，讀者知道該做什麼但做不到。這個缺口在 fact-check 和 steelman 審查裡結構性隱形，因為動作本身在邏輯層是正確的。">操作指引要帶環境專屬工具路徑</a>。</p>
<p><strong>Case 引用段落的三段式結構</strong>：三段式是案例引用段落的順序紀律 — 把「概念 → 案例 → 操作」三層分開承擔（段首給概念定義、case 引用居中、通用工程知識展開）、讓段落結構跟讀者學習新概念的認知順序對齊。LLM 從 case 反推內容容易把 case 揭露當概念出發點、實證觀察 11/12 段都犯這個錯。詳見 <a href="/blog/report/case-citation-three-part-structure/" data-link-title="案例引用三段式段落結構：概念定義 → case 引用 → 通用展開" data-link-desc="Case 引用段落要走三段式結構：(1) 段首概念定義句先寫『該概念是什麼、承擔什麼責任』、(2) 第二位置 case 引用、(3) 通用工程知識展開；段首被 case 引用取代是 06 模組最大宗 systemic 違規（11/12 段都犯）；本卡跟 #115（引用深度）/ #116（內部分層）/ #117（跨 case 合成）正交、處理段落結構順序">case-citation-three-part-structure</a>。</p>
<p><strong>原子筆記要有向上的議題入口</strong>：承載知識的原子筆記（Zettelkasten 卡 / glossary / 術語條目）不是字典條目 — 字典答「這個詞是什麼」、承載知識答「你在討論什麼、撞到什麼問題、才需要這知識」。撰寫者有預設情境讀者沒有、所以每張卡（或其上層）要從情境進入而非劈頭給定義：建議題 hub（以讀者遇到的問題為題）討論再分流到原子卡、卡頂回指議題、讓搜尋直接落地者也有回路。沒這層卡淪字典、讀者沒有觸發點、不知何時用。詳見 <a href="/blog/report/atomic-note-needs-situational-entry/" data-link-title="原子筆記要有向上的議題入口：讀者要知道為何讀這張、何時會撞到" data-link-desc="承載知識的原子筆記不是字典條目。每張卡（或其上層）要回答「你在討論什麼議題、撞到什麼問題，才需要這個知識」——從情境進入，而非從定義進入。做法是建『議題 hub』上層筆記討論問題、再分流到術語卡，術語卡頂部回指議題。">atomic-note-needs-situational-entry</a>。</p>
<h3 id="4-可查詢性searchability">4. 可查詢性（Searchability）</h3>
<p>關鍵字前置、使用可 grep 的分隔符（<code>:</code> <code>|</code> <code>→</code> <code>==</code>）、欄位名稱使用 regex 友善格式。命名讓 AI 能以單次 grep 命中，不需要語意推理。</p>
<h3 id="5-欄位設計field-design">5. 欄位設計（Field Design）</h3>
<p>同一份文件的不同欄位，從不同角度觀察同一件事，不重複撰寫。<code>what</code> 描述動作、<code>why</code> 陳述動機、<code>acceptance</code> 定義可驗證條件；混淆欄位會讓讀者在多處讀到相同內容。</p>
<h3 id="6-多輪-re-read-passmulti-pass-review">6. 多輪 Re-read Pass（Multi-pass Review）</h3>
<p>完稿即進入 review 階段。一次寫對全部維度違反 working memory、實際結果是「每維度都做一半」。設計 N 輪 re-read、每輪用不同 frame：</p>
<table>
  <thead>
      <tr>
          <th>輪</th>
          <th>Frame</th>
          <th>抓什麼</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>1</td>
          <td>生成</td>
          <td>idea → 字、預期會有錯</td>
      </tr>
      <tr>
          <td>2</td>
          <td>對意圖（<a href="/blog/report/ease-of-writing-vs-intent-alignment/" data-link-title="寫作便利度跟意圖對齊反相關" data-link-desc="寫程式時最容易寫出的版本、通常是離意圖最遠的版本。便利度建立在「現有上下文 / 已 materialize 資料 / 已存在 API」上、而意圖對齊需要找到正確的層、處理上游、跨抽象層 — 兩者方向相反。識別這個反相關 = 識別自己掉進「容易寫的陷阱」。">ease-of-writing-vs-intent-alignment</a>）</td>
          <td>正文、title、description、MOC hook 都跟原意對齊</td>
      </tr>
      <tr>
          <td>3</td>
          <td>機會成本語氣</td>
          <td>全 surface 的絕對詞翻成 trade-off</td>
      </tr>
      <tr>
          <td>4</td>
          <td>Grep-ability / 命名 / 術語</td>
          <td>title、slug、link label、段首關鍵字可單次 grep 命中；術語保留原文錨點與完整名詞頭</td>
      </tr>
      <tr>
          <td>5</td>
          <td>反例 / 邊界</td>
          <td>「何時不適用」段、反模式列表</td>
      </tr>
  </tbody>
</table>
<p>Surface enumeration 是 multi-pass 的固定前置步驟。寫作產物包含 body surface 與 metadata / navigation surface：<code>title</code>、<code>description</code>、<code>tags</code>、heading、link label、MOC / index entry、slug / filename。每輪 frame 都掃這份 surface 清單，讓正文與讀者入口共用同一個概念錨點。description / hook 對規則做壓縮時、<strong>可以丟細節、不可以改模態</strong> — 把本體的「條件允許（可延後但要記錄）」壓成「絕對禁止（不可跳過）」、讀者依摘要行動就會偏離本體；摘要讀起來比本體「更有力、更乾脆」就是失真訊號、模態詞跟主詞動詞同級、最後砍。實測一批七份文檔有四份的 description 出現模態漂移 — 這個檢查每批都要跑。</p>
<p><strong>核心</strong>：「再仔細一次」≠ multi-pass — 同 frame 重看 catch 不到新問題。每輪換 frame、才能 catch 不同層。各 reference（writing-articles / writing-code-comments / writing-documents / writing-prompts）依 output 類型有特化的輪次組合。</p>
<p>Naming 是這條原則最容易跳的子場景 — 第一版命名幾乎不對、四輪 review（第一版 / grep / cross-call-site / impl 洩漏）才收斂、見 <a href="/blog/report/naming-as-iterated-artifact/" data-link-title="Naming 是 iterated artifact：第一個名字幾乎不對、四輪 review 才收斂" data-link-desc="命名（變數 / 函式 / 檔名 / slug / API endpoint）幾乎沒有「一次寫對」的可能：第一個名字基於當下狹窄的 context、會在後續 cross-call-site / grep / 重構中暴露錯位。命名的正確設計是 iterated — 寫第一版 → grep-ability 測試 → cross-call-site 一致性 → impl 洩漏 → 重命名。本卡是 #83 在「命名」場景的特化。">naming-as-iterated-artifact</a> 跟 writing-code-comments 的 naming review 段。術語是 naming 的高歧義子場景：翻譯術語第一次出現保留原文錨點，中文壓縮術語保留完整名詞頭，中文名詞頭要保留來源中的概念角色，見 <a href="/blog/report/terminology-keeps-original-anchor/" data-link-title="術語翻譯要保留原文錨點" data-link-desc="翻譯術語時、中文名稱負責降低閱讀門檻，原文名稱負責鎖定概念邊界。只留中文會把 reader 帶進中文詞的日常歧義，只留英文會提高閱讀成本；中文後接英文括號是技術文章的穩定折衷。">terminology-keeps-original-anchor</a>、<a href="/blog/report/compressed-chinese-terms-need-head-noun/" data-link-title="中文壓縮術語要保留完整名詞頭" data-link-desc="中文技術寫作可以壓縮長詞，但不能省到只剩形容詞或單字修飾。像「多步驟 perplexity 盲」這類詞少了完整名詞頭，讀者無法判斷是在說盲點、盲區、盲測或失明比喻。壓縮後仍要能獨立回答「這是什麼」。">compressed-chinese-terms-need-head-noun</a> 與 <a href="/blog/report/translation-must-preserve-concept-role/" data-link-title="術語翻譯要保留概念角色" data-link-desc="術語翻譯不能只追求中文好讀，還要保留原詞在論證中的概念角色。Steelman 若翻成「最強版本測試」，reader 會以為它是一個檢查動作；但在決策語境裡，它更核心的責任是把反方論點重建成最強版本。">translation-must-preserve-concept-role</a>。</p>
<p><strong>高 stakes 內容追加輪 E（epistemic rigor、conditional opt-in）</strong>：reader 照做後錯誤不可逆的內容（資安 / concurrency 正確性 / distributed consistency / financial / medical）在 5 輪基本 frame 之外、追加 stakes 軸的 epistemic rigor pass——比照學術 peer review 跑 claim / evidence / method / threats / citation 五個 sub-check、加上 audit recommendation tier（accept / minor / major / withdraw）。一般內容 5 輪夠、不跑輪 E；高 stakes 內容兩軸都跑。詳見 <code>references/auditing-articles.md</code> 跟 <code>/report/writing-multi-pass-review/</code> 的「stakes-conditional 追加輪」段。</p>
<p><strong>Production 教學文章追加輪 8-10（字句層 catch、跑 N 輪仍漏時觸發）</strong>：跑了 5 輪基本 frame 仍系統性漏 catch 字句層問題（口語修辭 / 廢話前綴 / 地區漂移 / 依賴 code / <strong>裝飾符號 emoji</strong> / 對讀者喊話 / 自評誇飾 / 必然性框架 / 恐嚇式語氣 / 歸因語氣）時、追加三個換軸機制——輪 8 keyword bank（換工具、含 emoji / 裝飾 unicode 掃描）、輪 9 reader simulation（換視角、四 lens：自包含性 + register/stance + meta 殘留 + AI 歸因過度）、輪 10 self-criticism（換層次、審視 framework 本身覆蓋度）。短文 / 即時 note 不需要、production 教學文章在跑 5 輪後仍漏同類問題時 opt-in。<strong>keyword bank 命中是候選、不是判決</strong>——grep 命中後仍要一個語意判定步驟（這個命中是建立概念的違規、還是合規的反例對照 / hook），reviewer 容易把違規合理化放行；偵測（bank）跟判定（語意）是兩個認知步驟。<strong>register/stance 類（喊話 / 誇飾 / 必然）無穩定關鍵詞、keyword bank 抓不到、輪 9 reader-sim 是主 keyword bank 是輔、且最依賴 external cold-read</strong>。漏抓後補機制前先分 <strong>design gap</strong>（框架缺 frame、改框架）vs <strong>execution gap</strong>（框架有 frame 但只跑了臨時子集、改執行不是改框架）——「加 keyword」對 execution gap 跟無關鍵詞的類都無效。詳見 <a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">multi-pass-review-frame-granularity</a>、<a href="/blog/report/visual-tool-error-layer-alignment/" data-link-title="視覺手段對齊錯誤層次：CSS / emoji 修不到語意 / 邏輯問題" data-link-desc="修視覺問題的工具（CSS、emoji、顏色、排版）只能擋視覺層、不能修語意 / 邏輯層。把語意 / 邏輯問題當成視覺問題修 = 蓋住症狀根因不動 &#43; false confidence、跟 #82 用 hook 蓋行為錯誤同骨。三層優先序：邏輯 → 語意 → 視覺、修法從深層往淺層走、不從症狀往回推。本卡是 #82 在「呈現層」的具體實例、是 #83 multi-pass review 缺的 vertical 軸。">decorative-symbols-keyword-bank</a>、<a href="/blog/report/teaching-register-states-not-addresses-reader/" data-link-title="教材用中性陳述、不對讀者喊話" data-link-desc="教材的 register 是中性陳述概念、不是對讀者說話。三種對讀者喊話的形式 —— 安撫情緒（很多人卡在）、第二人稱代入（你天天寫）、祈使控制閱讀（先讀懂 / 別搞混）—— 表面不同、共同違反是把讀者當成要管理的對話對象、而非把概念講清楚。問題不在精度（「你天天寫的 int count」精度完全正確）、在 stance。修法是換成中性陳述（常見的 int count）或描述性名詞標題（簽章的型別與名字拆解）。邊界：hook / narrative 段落的輕度第二人稱可幫讀者進入、不一律禁。">teaching-prose-neutral-register</a> 跟 <code>references/writing-articles.md</code> 輪 8-10 段。</p>
<p><strong>批量 sibling 寫作的生成端輪替</strong>：一次寫多份同類文檔時、cadence 同質化會在六個層發生（title 形式 / 開場句式 / 章節標題 / 敘事骨架 / 條目形態 / 跨檔引用句）、單份 review 全部抓不到、且 review 端抓過的同骨會在下一批復發 — 同類 finding 第二次出現、就把規則升到生成端：寫之前排好開場 frame 輪替（規則先行 / 後果先行 / 動作先行 / 反差先行）、條目形態輪替、敘事視角輪替、引用句去重。詳見 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">cadence-homogenization</a>。</p>
<p><strong>Instance 軸：跨 reviewer instance 隔離</strong>：Instance 軸是 multi-pass review 的另一條擴展軸 — N 個獨立 reviewer instance 各自獨立 context、各自跑 background、解「單一 reviewer 同時看多維度容易維度盲點 + context 污染」的問題。Instance 指獨立 reviewer 程式實體（如 agent tool spawn 出的 subagent）、跟同一 reviewer 換輪次 frame（frame 軸）正交可疊加。適用 production 教學文章 / 高 stakes 內容 / 跨章節教學模組這類維度複雜度高的審查場景。詳見 <a href="/blog/report/agent-team-context-isolation/" data-link-title="Agent team context 隔離設計：用不同 instance 換 frame、平行 background 保護主 context" data-link-desc="Multi-pass review 跨輪 frame（#83）跟跨 reviewer instance 隔離（本卡）是兩個 axis：#83 是同一 reviewer 換輪次 frame、本卡是不同 reviewer instance 各自獨立 background 跑；context 隔離設計讓主 context 只接精煉摘要、節省 ~80% token、跟同 reviewer 多輪 catch 同類錯（#114）形成互補解法">agent-team-context-isolation</a>。</p>
<p>詳見 <a href="/blog/report/writing-multi-pass-review/" data-link-title="Writing 的 multi-pass review：N 輪 review、每輪換 frame" data-link-desc="寫文章 / 註解 / 文件 / prompt 的「寫」不是單次動作 — 是 N 輪 review。第 1 輪生成、第 2 輪對意圖（#67）、第 3 輪檢查機會成本語氣、第 4 輪 grep-ability、第 5 輪反例 / 邊界。每輪不同 frame、單輪寫不出全部維度。本卡是 #82 在「寫」這個 output 動作的具體實例。">Writing 的 multi-pass review</a>、<a href="/blog/report/methodology-multi-pass-embedding/" data-link-title="Methodology 的 multi-pass 該升級為 pillar 層：核心結構才會被執行" data-link-desc="任何「教做事方法」的 methodology / SKILL / playbook、應該把 multi-pass refinement 放在 pillar / 核心原則層、不是放在末尾「附帶提醒」段。Pillar 層 = 結構性必跑、appendix 層 = 看心情選擇 = 永遠不跑。本卡是 #82 行為驗證 &#43; #72 結構性對策在「方法論設計本身」這一層的展現。">Methodology 的 multi-pass 該 embed 在 pillar</a>、<a href="/blog/report/metadata-surface-in-writing-review/" data-link-title="Metadata surface 要納入寫作 review 範圍" data-link-desc="寫作 review 的 surface 包含正文與 metadata surface：title、description、frontmatter、heading、link label、MOC 索引條。正文通過 positive wording 或 multi-pass review 只代表 body surface 收斂；讀者入口與索引入口也要跑同一套 frame，才能讓文章在第一眼、搜尋與跨篇路由上維持同一個概念錨點。">Metadata surface 要納入寫作 review 範圍</a>、<a href="/blog/report/false-sense-of-security-as-primary-failure/" data-link-title="False sense of security 是資安寫作的主要失敗模式" data-link-desc="資安教學內容的失敗模式不是「讀者學不到」、是「讀者以為學到了並照做、實際還有破口」。讀者實作後沒警覺 = 後續驗證、修補、事件偵測都不會被觸發、破口在生產系統長期 silent 累積。識別 false sense of security 句子的判準：讀者讀完後會說「我做了 X 防護所以安全」、卻無法回答「對什麼 threat 安全 / 什麼 deployment 條件 / 什麼前提失效」。">False sense of security 是高 stakes 寫作的主要失敗模式</a>、<a href="/blog/report/security-teaching-rigor-asymmetry/" data-link-title="資安教學的審查標準要對應風險不對稱" data-link-desc="一般教學寫不清楚、讀者學不到、損失停在學習端；資安教學寫不清楚、讀者照做後在系統上產生破口、損失轉嫁到生產端。兩者風險不對稱、審查嚴格度應該對應下游實作代價、不是讀者讀懂程度。資安內容的 audit bar 預設要拉到「讀者會 implement」、不是「讀者會 read」、否則所有寫作便利選擇（含糊敘述、省略邊界、引用而不驗證版本）都會 silent 變成實作端破口。">Risk-asymmetric audit standard</a>、<a href="/blog/report/colloquial-rhetoric-erodes-technical-precision/" data-link-title="口語化修辭在判斷工具型段落會稀釋技術精度" data-link-desc="技術文章的「判斷工具型段落」（讀者用來判斷自己 case 的論述）用「一輩子」「碰巧能用」「立刻撞牆」「沒事」這類口語修辭、會稀釋精度。修法是把口語修辭翻譯回技術屬性語言。但 hook / 引言 / narrative 段落用口語仍然合理——這是情境化的取捨、不是精度永遠優於可讀性。">colloquial-rhetoric-erodes-technical-precision</a>、<a href="/blog/report/prose-self-contained-without-code-reference/" data-link-title="商業邏輯論述要 self-contained：不依賴 code 才能被理解" data-link-desc="技術文章在「不放 code 的段落」仍然要 self-contained——商業邏輯論述不能預設讀者已經看過 code、用「那個 payload 第二段」「剛才的變數」這類 reference 等於把理解門檻轉嫁給讀者去翻 code。修法是把 reference 翻譯成「用名詞 / 角色 / 條件描述」的 self-contained 句子、即使讀者跳過所有 code block 也能理解論述。">prose-self-contained-without-code-reference</a>、<a href="/blog/report/regional-terminology-alignment/" data-link-title="地區用語對齊：寫作前先確定讀者的中文語料" data-link-desc="繁中 vs 簡中的用詞差異不只是字形（屏 / 螢幕、視頻 / 影片）、更是技術術語跟業務情境的精度差。寫作前要先確定讀者的中文語料、避免用對方語料中不存在或意思偏移的詞。常見漂移：硬體（屏 / 螢幕）、檔案系統（文件 / 檔案）、概念詞（默認 / 預設）、修辭詞（質量 / 品質）、混雜情境的英文中文比例。">regional-terminology-alignment</a>、<a href="/blog/report/multi-pass-review-frame-granularity-blindspot/" data-link-title="Multi-pass review 的 frame 顆粒度盲點：抽象規則 → 具體訊號的轉譯不完整" data-link-desc="Multi-pass review 跑了 4 輪、字句層問題（口語修辭 / 地區用語 / 依賴 code / 廢話前綴）仍漏 catch——揭露 frame 顆粒度盲點：抽象規則（如「機會成本語氣」「正向陳述」「最重要的話優先說」）沒被轉譯成具體訊號（如 grep keyword bank：「一輩子 / 碰巧 / 撞牆 / 下次 X 時 / 不是 A 而是 B」）。修法是把每條規則展開成可 grep 的 keyword bank、加 reader simulation 輪、加 self-criticism 輪。">multi-pass-review-frame-granularity</a>、<a href="/blog/report/design-flaw-by-current-axes-not-hindsight/" data-link-title="設計檢討用當下三軸論證、不依賴 hindsight" data-link-desc="本卡提倡用「當下成本對稱條件下選了限制更高的選項」當設計缺陷的判定方式、避免 hindsight 論述把需求演化誤判成設計缺陷。當下三軸論證（成本對稱性 / 可逆性 / 領域先驗）讓判斷不依賴結局發生、且歸因偏向工具預設與制度而非個人預見性。">design-flaw-by-current-axes-not-hindsight</a>、<a href="/blog/report/agent-team-context-isolation/" data-link-title="Agent team context 隔離設計：用不同 instance 換 frame、平行 background 保護主 context" data-link-desc="Multi-pass review 跨輪 frame（#83）跟跨 reviewer instance 隔離（本卡）是兩個 axis：#83 是同一 reviewer 換輪次 frame、本卡是不同 reviewer instance 各自獨立 background 跑；context 隔離設計讓主 context 只接精煉摘要、節省 ~80% token、跟同 reviewer 多輪 catch 同類錯（#114）形成互補解法">agent-team-context-isolation</a>、<a href="/blog/report/visual-tool-error-layer-alignment/" data-link-title="視覺手段對齊錯誤層次：CSS / emoji 修不到語意 / 邏輯問題" data-link-desc="修視覺問題的工具（CSS、emoji、顏色、排版）只能擋視覺層、不能修語意 / 邏輯層。把語意 / 邏輯問題當成視覺問題修 = 蓋住症狀根因不動 &#43; false confidence、跟 #82 用 hook 蓋行為錯誤同骨。三層優先序：邏輯 → 語意 → 視覺、修法從深層往淺層走、不從症狀往回推。本卡是 #82 在「呈現層」的具體實例、是 #83 multi-pass review 缺的 vertical 軸。">decorative-symbols-keyword-bank</a>、<a href="/blog/report/teaching-register-states-not-addresses-reader/" data-link-title="教材用中性陳述、不對讀者喊話" data-link-desc="教材的 register 是中性陳述概念、不是對讀者說話。三種對讀者喊話的形式 —— 安撫情緒（很多人卡在）、第二人稱代入（你天天寫）、祈使控制閱讀（先讀懂 / 別搞混）—— 表面不同、共同違反是把讀者當成要管理的對話對象、而非把概念講清楚。問題不在精度（「你天天寫的 int count」精度完全正確）、在 stance。修法是換成中性陳述（常見的 int count）或描述性名詞標題（簽章的型別與名字拆解）。邊界：hook / narrative 段落的輕度第二人稱可幫讀者進入、不一律禁。">teaching-prose-neutral-register</a>。</p>
<hr>
<h2 id="when-to-consult-this-skill觸發路由">When to Consult This Skill（觸發路由）</h2>
<table>
  <thead>
      <tr>
          <th>觸發情境</th>
          <th>讀哪份 reference</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>要寫或改一段程式碼註解 / doc comment</td>
          <td><code>references/writing-code-comments.md</code></td>
      </tr>
      <tr>
          <td>要起草 / 改寫一份文件（worklog、spec、README）</td>
          <td><code>references/writing-documents.md</code></td>
      </tr>
      <tr>
          <td>要設計 log / 錯誤訊息 / 結構化輸出</td>
          <td><code>references/writing-logs.md</code></td>
      </tr>
      <tr>
          <td>要撰寫給 AI 的 prompt / instruction / Agent 派發 / Ticket Context Bundle</td>
          <td><code>references/writing-prompts.md</code>（為 <code>.claude/rules/core/ai-communication-rules.md</code> 的詳細版庫，portability-allow）</td>
      </tr>
      <tr>
          <td>要撰寫完整長篇技術文章（blog post / post-mortem / 架構決策 / 除錯復盤 / 技術評估）</td>
          <td><code>references/writing-articles.md</code></td>
      </tr>
      <tr>
          <td>要把外部分析文章 / 產業評論 / 投資人備忘錄 / 高密度研究材料轉成教學型分析文章，或把 AI 改寫稿從摘要升級成可遷移框架</td>
          <td><code>references/source-to-teaching-analysis.md</code></td>
      </tr>
      <tr>
          <td>要翻譯 / 轉譯文章、把英文材料改寫成中文、檢查術語誤譯或中文譯名放回句子後是否成立</td>
          <td><code>references/translation-review.md</code></td>
      </tr>
      <tr>
          <td>要管理多篇相關文章的結構（系列、文集、知識庫、素材庫比例、MOC、跨篇引用、何時抽抽象層 / Pattern 卡片）</td>
          <td><code>references/managing-article-collections.md</code></td>
      </tr>
      <tr>
          <td>要對既有高 stakes 內容（資安 / concurrency / distributed / financial / medical）做 reviewer-style audit、找 false sense of security / 對位失效 / context 缺 / citation 過時</td>
          <td><code>references/auditing-articles.md</code></td>
      </tr>
      <tr>
          <td>要設計 ticket 欄位 / schema frontmatter / 表單欄位</td>
          <td><code>references/designing-fields.md</code></td>
      </tr>
      <tr>
          <td>想驗證寫作品質（認知負擔、獨立理解率）</td>
          <td><code>references/meta-metrics.md</code></td>
      </tr>
      <tr>
          <td>要新增或修改一份 Skill reference（撰寫品質規範、結構標準）</td>
          <td><code>references/reference-authoring-standards.md</code></td>
      </tr>
      <tr>
          <td>要驗收 Skill 發布品質（語意層驗收、Phase 2 dry-run）</td>
          <td><code>references/dry-run-guide.md</code></td>
      </tr>
  </tbody>
</table>
<p>每份 reference 自包含：以該情境為核心，把核心原則翻譯成可直接套用的檢查項與範例。閱讀任一 reference 不需要回來看其他 reference。</p>
<hr>
<h2 id="success-criteriam1-m2-認知負擔類">Success Criteria（M1-M2 認知負擔類）</h2>
<table>
  <thead>
      <tr>
          <th>Metric</th>
          <th>定義</th>
          <th>目標</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>M1 — 找到答案路徑</strong></td>
          <td>讀者從 SKILL.md 出發，需要開啟幾個檔案才能解決問題</td>
          <td>≤ 2</td>
      </tr>
      <tr>
          <td><strong>M2 — reference 獨立理解率</strong></td>
          <td>隨機挑一份 reference，不讀其他 reference 能否獨立套用</td>
          <td>100%</td>
      </tr>
  </tbody>
</table>
<p>詳細量測方式與自評表見 <code>references/meta-metrics.md</code>。M3-M5（token 類）保留未定，待實際範例累積後補足。</p>
<hr>
<h2 id="跟特化寫作流程的分工">跟特化寫作流程的分工</h2>
<p>本 skill 是 <em>單篇</em> 寫作的基礎方法、覆蓋 articles / comments / logs / prompts / fields 等 surface。當寫作對象是 <em>跨多章節的教學模組</em>（5+ 章、有案例庫支撐、跨章引用密集）、屬特化情境、有專屬的 <em>跨章節生產流程</em>：案例庫 audit 抽 findings、SSoT 對應規劃、agent team 平行 review、跨檔修正循環、跨章 polish pass。</p>
<p>兩類流程的分工：</p>
<table>
  <thead>
      <tr>
          <th>流程</th>
          <th>適用</th>
          <th>核心紀律</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><strong>本 skill（compositional-writing）</strong></td>
          <td>單篇文字（articles / comments / logs / prompts / fields）</td>
          <td>6 原則（原子化 / 索引 / 意圖顯性 / 可查詢 / 欄位 / 多輪 review）+ 各 surface 特化 reference</td>
      </tr>
      <tr>
          <td>跨章節教學模組生產流程</td>
          <td>跨 5+ 章、有 case 庫的教學模組</td>
          <td>case-first 流程：案例 audit → 基於 findings 寫稿 → agent team 平行 review → 修正循環 → polish pass、加 case 引用四 axis 紀律（深度 / 分層 / 合成 / 結構）</td>
      </tr>
  </tbody>
</table>
<p>兩類流程互補疊加 — 教學模組的每章內部寫作仍套本 skill 6 原則、case 引用段落用 <a href="/blog/report/case-citation-three-part-structure/" data-link-title="案例引用三段式段落結構：概念定義 → case 引用 → 通用展開" data-link-desc="Case 引用段落要走三段式結構：(1) 段首概念定義句先寫『該概念是什麼、承擔什麼責任』、(2) 第二位置 case 引用、(3) 通用工程知識展開；段首被 case 引用取代是 06 模組最大宗 systemic 違規（11/12 段都犯）；本卡跟 #115（引用深度）/ #116（內部分層）/ #117（跨 case 合成）正交、處理段落結構順序">case-citation-three-part-structure</a>、agent team review 用 <a href="/blog/report/agent-team-context-isolation/" data-link-title="Agent team context 隔離設計：用不同 instance 換 frame、平行 background 保護主 context" data-link-desc="Multi-pass review 跨輪 frame（#83）跟跨 reviewer instance 隔離（本卡）是兩個 axis：#83 是同一 reviewer 換輪次 frame、本卡是不同 reviewer instance 各自獨立 background 跑；context 隔離設計讓主 context 只接精煉摘要、節省 ~80% token、跟同 reviewer 多輪 catch 同類錯（#114）形成互補解法">agent-team-context-isolation</a>。當下游專案沒有跨章節教學模組需求、本 skill 即可獨立運作；當有需求、教學模組生產流程是本 skill 的擴展層、不取代本 skill。</p>
<h2 id="跟-multi-round-review-的協同">跟 multi-round-review 的協同</h2>
<p>寫多篇章節 / report 卡 / knowledge card 後做<strong>多輪 agent reviewer audit</strong> 時、本 skill 應該跟 multi-round-review skill 同時啟動。觸發詞「多輪審查 / Round 1/2/3 / batch review / 寫作 audit」會同時啟動兩個 skill：</p>
<ul>
<li><strong>multi-round-review</strong> 規劃 frame 切換結構（Round 1 compliance / Round 2 cadence / Round 3 self-application）跟跨輪 finding 整合工作流</li>
<li><strong>本 skill（compositional-writing）</strong> 提供每輪 frame 的字句層 keyword bank — Round 1-A 寫作規範 reviewer 必須跑：
<ul>
<li><strong>正向陳述優先 grep</strong>：<code>rg &quot;不[行可是要能該支對符夠必]|無法|沒[做有]|而非|而不是&quot;</code>、加上<strong>否定起手定義句</strong>（原 pattern 漏「而是」、抓不到「不是 X、而是 Y」的後半）：<code>rg &quot;不是.{0,30}而是|不是.{0,20}、是|與其.{0,20}不如|不只.{0,15}更&quot;</code> — 主要敘述要正向、反例對照的少量負向可保留；判別在「核心概念第一次正面出現在句首、還是被擠到『而是』之後」</li>
<li><strong>口語修辭 grep</strong>：<code>rg &quot;其實|實務上|真的|碰巧|立刻撞牆|沒事&quot;</code></li>
<li><strong>地區用語 grep</strong>：<code>rg &quot;集群|默認|質量|視頻|函數|文件夾|接口&quot;</code></li>
<li><strong>廢話前綴 grep</strong>：<code>rg &quot;值得注意的是|需要說明的是|實際上|基本上|事實上&quot;</code></li>
<li><strong>裝飾符號 grep</strong>：<code>rg &quot;✅|❌|⚠️|🚨|🟡|🟢|⭐|📌|✓|✗&quot;</code></li>
<li><strong>對讀者喊話 grep</strong>：<code>rg &quot;很多人|大家|不少人|你天天|你會|你可能|先讀懂|先釐清|別搞混|別被&quot;</code> — 教材中性陳述、不安撫情緒 / 不第二人稱代入 / 不祈使控制閱讀（hook / narrative 段落輕度第二人稱可留）</li>
<li><strong>自評誇飾 grep</strong>：<code>rg &quot;教科書級|堪稱|可謂|完美|經典|範本級|大師級|漂亮地|優雅地|最佳實踐|best practice&quot;</code> — 品質 verdict 頂替技術理由、換成機制 / 條件</li>
<li><strong>必然性框架 grep</strong>：<code>rg &quot;天生|與生俱來|本質就是|本來就是|必然|唯一|註定|理所當然&quot;</code> — 把設計選擇講成自然法則、還原成條件性（物理 / 法律 / 數學事實除外）</li>
<li><strong>歸因語氣 grep</strong>：<code>rg &quot;承認|暴露了|證明了失敗|被迫&quot;</code> — 描述系統行為用「信號」「反映」「顯示」等中性觀測詞、避免「承認」「暴露」等責任歸因詞；「被迫」在描述外部強制約束時可保留</li>
<li><strong>宣導語氣 grep</strong>：<code>rg &quot;你可能沒注意|你可能不知道|想像一下|把.{1,5}想成|跑得好好的|聽起來很|其實很簡單|說穿了就是|等於拆未爆彈|乾瞪眼|延遲引爆&quot;</code> — 預設讀者無知或用情緒管理取代事實陳述；讀者是專業人士、直接描述情境與後果</li>
<li><strong>泛用詞濫用 grep</strong>：<code>rg &quot;坑|東西|搞|弄|處理一下|情況&quot;</code> — 同一個泛用詞蓋過不同具體情境時、依情境換精確詞（意外 / 陷阱 / 出問題 / 發生狀況）；命中密集且各指不同事才算違規、真泛指 / 引號引用 / 輕度 hook 合規；「坑」另有地區偏移面（某些地區高頻、某些少用）。見 <a href="/report/avoid-overused-generic-words/">avoid-overused-generic-words</a></li>
<li><strong>這些 grep 曝光候選、不做自動判定</strong>：命中後要不要算違規有品味核心；且 LLM reviewer 跟作者共享文體、同源自審對 register 類（否定起手 / 喊話 / 誇飾 / 概念前置）有結構上限 ——「不是 X、而是 Y」這種 LLM 高頻自產句型最容易全員放水。grep + 同源判定只負責曝光候選、register 層的真防線是文體異源視角（human cold-read 或 prompt 採「挑剔否定起手 / 概念後置」對抗姿態的 reviewer）、同源回報的「clean」不可當真</li>
</ul>
</li>
</ul>
<p>詳細各維度的判讀規則跟修法、見對應 reference（writing-articles / writing-documents 等）跟 <code>references/principles/</code> 內的 cadence-homogenization / colloquial-rhetoric / regional-terminology / decorative-symbols / multi-pass-review-frame-granularity 等卡。</p>
<p>協同要點：</p>
<ul>
<li>單獨用 multi-round-review、容易漏字句層 — reviewer prompt 列「規範遵循」但漏 grep 具體 pattern</li>
<li>單獨用本 skill、容易漏跨輪 frame 規劃 — 知道要檢查字句層、但缺「Round N+1 用什麼新 frame」結構</li>
<li>兩個 skill 一起啟動 — multi-round-review 給結構、本 skill 給每輪的 grep checklist</li>
</ul>
<p>寫作對象是「單篇 + 完稿前自己 review」時、用本 skill 第 6 原則（多輪 Re-read Pass）的 5 輪 frame 即可；寫作對象是「跨多篇 + agent reviewer 平行 audit」時、multi-round-review 接手結構規劃、本 skill 在 reviewer prompt 內被引用作為檢查清單。</p>
<hr>
<h2 id="directory-index">Directory Index</h2>





<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">compositional-writing/
</span></span><span class="line"><span class="ln"> 2</span><span class="cl">├── SKILL.md                              # 本檔：核心原則速查 + 觸發路由
</span></span><span class="line"><span class="ln"> 3</span><span class="cl">└── references/
</span></span><span class="line"><span class="ln"> 4</span><span class="cl">    ├── writing-code-comments.md          # 情境 1：程式碼註解
</span></span><span class="line"><span class="ln"> 5</span><span class="cl">    ├── writing-documents.md              # 情境 2：文件撰寫
</span></span><span class="line"><span class="ln"> 6</span><span class="cl">    ├── writing-logs.md                   # 情境 3：log 輸出
</span></span><span class="line"><span class="ln"> 7</span><span class="cl">    ├── writing-prompts.md                # 情境 4：prompt 撰寫
</span></span><span class="line"><span class="ln"> 8</span><span class="cl">    ├── writing-articles.md               # 情境 5：完整長篇技術文章
</span></span><span class="line"><span class="ln"> 9</span><span class="cl">    ├── source-to-teaching-analysis.md     # 情境 5a：外部分析材料 → 教學型分析文章
</span></span><span class="line"><span class="ln">10</span><span class="cl">    ├── translation-review.md             # 情境 5b：文章翻譯 / 轉譯的句內邏輯 review
</span></span><span class="line"><span class="ln">11</span><span class="cl">    ├── managing-article-collections.md   # 情境 5c：跨多篇文章的結構（三層、素材庫比例、MOC、Pattern 卡片）
</span></span><span class="line"><span class="ln">12</span><span class="cl">    ├── designing-fields.md               # 情境 6：欄位設計（含六欄位角度總表）
</span></span><span class="line"><span class="ln">13</span><span class="cl">    ├── designing-fields-ticket-6w.md     # 六欄位詳細範例：正確 + 混淆共 12 項（按需讀取）
</span></span><span class="line"><span class="ln">14</span><span class="cl">    ├── meta-metrics.md                   # 品質量化驗收（M1-M5）
</span></span><span class="line"><span class="ln">15</span><span class="cl">    ├── reference-authoring-standards.md  # Skill reference 撰寫品質規範
</span></span><span class="line"><span class="ln">16</span><span class="cl">    ├── dry-run-guide.md                  # Skill 發布前語意層驗收（Phase 2 dry-run 流程）
</span></span><span class="line"><span class="ln">17</span><span class="cl">    └── principles/                       # Skill 內部支撐型原則卡（含 terminology / naming / review / case-citation / agent-team 等原則）</span></span></code></pre></div><hr>
<h2 id="reading-order建議閱讀順序">Reading Order（建議閱讀順序）</h2>
<ol>
<li>第一次接觸 → 從本 SKILL.md 的「核心支柱 + 核心原則」讀起</li>
<li>進入實際寫作情境 → 依觸發路由讀對應 reference（只讀一份）</li>
<li>想驗證成果 → 讀 <code>meta-metrics.md</code> 做自評</li>
</ol>
<hr>
<p><strong>Last Updated</strong>: 2026-06-25
<strong>Version</strong>: 0.18.0 — 輪 9 reader-sim 加第四 lens「AI 歸因過度」（AI 生成內容系統性把通用 pattern 框為 AI 特有、縮窄適用範圍且背上無法證實的舉證負擔；判準：「AI」換成「作者」論點仍成立 → 改通用觀察）；提交自檢清單加第 4 個生成端自問句（AI 歸因測試）。</p>
<p><strong>Version</strong>: 0.18.0 — 新增「泛用詞濫用」字句層 frame（讀者回饋觸發：反覆用「坑」把不同情境壓成同一模糊標籤、繁中少用）：keyword bank 加 <code>rg &quot;坑|東西|搞|弄|處理一下|情況&quot;</code>、新增 principle 卡 <a href="/report/avoid-overused-generic-words/">avoid-overused-generic-words</a>（依情境換精確詞、跟 colloquial/regional/cadence 三卡的軸區分）、writing-articles 輪 8 清單同步；命中密集且各指不同事才違規、真泛指 / 引號 / 輕度 hook 合規
<strong>Version</strong>: 0.17.0 — keyword bank 新增歸因語氣 grep + 否定起手定義句 pattern；輪 8-10 描述補恐嚇式語氣 / 歸因語氣；移除 comment-qa-hook / worklog-format-check hook（職責已由其他機制覆蓋）；references 更新（atomic-note / teaching-prose / writing-articles / writing-documents）。</p>
<p><strong>Version</strong>: 0.16.0 — 從工具 opinion 文章的三輪審查 + 使用者回饋回流 6 張 report 卡（WRAP 分析後選混合方案）：(1) keyword bank 加歸因語氣 grep（<code>承認|暴露了|證明了失敗|被迫</code>）— 唯一有穩定關鍵詞的新 design gap；(2) <code>teaching-prose-neutral-register</code> 加第四類「恐嚇式語氣」（把讀者放在被警告位置、判別線是「你→我們」替換測試）；(3) writing-articles 輪 9 reader-sim 加第三 lens「meta 資訊 vs 內容」（涵蓋 meta-commentary 殘留 + 主題偏移兩個 gap）；(4) writing-articles 提交自檢清單加 3 個生成端自問句（恐嚇式 hook / meta 刪除測試 / 歸因語氣）。不新增 principle 卡（27 張已夠、新議題融入現有卡）、不增 SKILL.md 主體段落（密度飽和、改動集中在 keyword bank 一行 + 下游 reference）。</p>
<p><strong>Last Updated</strong>: 2026-06-11
<strong>Version</strong>: 0.15.0 — 對七張同批 report 卡（#157-#163 主題：語意錨 / 決策表 / 入口分流 / 跨 surface / 摘要模態 / 引用詞彙 / 欄位契約）跑三 reviewer audit 後的回饋：(1) 新增 principle 卡 <a href="/blog/report/cadence-homogenization-in-batch-writing/" data-link-title="Cadence 同質化是模板的隱形維度" data-link-desc="規範定義「模板」時通常只指內容欄位（規模對照、tripwire、失敗模式），忽略句型骨架 / 段首語 / 段末收尾語 / 表格前導句 / 過渡詞同樣是模板的一種；批量寫作時最易讓 cadence 同質化、單篇看起來都合規、連讀多篇才浮現預期化；51 vendor 都用「四件事 → 任一缺失就是 X 邊界的待補項目」是案例；自檢要 grep 首句 / 段末句 / 表格前導句、不是只看欄位">cadence-homogenization</a>（同時修復 SKILL.md 長期 dangling 的引用）— 六個同骨層實測清單 + 生成端輪替規則 + 「同類 finding 第二次出現升生成端」的升級原則（觸發：上一輪抓過的「判準句同模」在本批復發、擴到 4/7）；(2) 原則 6 surface enumeration 補 description 模態檢查（實測 4/7 份 description 模態漂移、其中一份把同批另一張卡才立的「候選」壓成「證據」）；(3) 原則 6 補批量 sibling 生成端輪替段；(4) 原則 2 補「語意錨單一字串 + 引用他卡用對方詞彙」段（關係宣告 28 條核對抓到 2 條：被引卡沒漏的宣稱成漏、對方的 navigation surface 被轉述成 metadata surface）。</p>
<p><strong>Last Updated</strong>: 2026-06-11
<strong>Version</strong>: 0.14.0 — multi-round review Round 1 的 self-application 修正：兩個 reviewer 從不同 frame 獨立抓到本 skill 自身殘留 count-bearing 名稱（convergence 訊號）。(1) 「Core Pillars（三大支柱）」→「（核心支柱）」、「Six Principles（六大原則速查）」→「Core Principles（核心原則速查）」、「五階段流程」→「case-first 流程」；(2) references 內「五大原則」全改「核心原則」— 這批字串在原則從 5 個長到 6 個之後就已經全部過期（SKILL.md 寫六大、references 寫五大）、是 name-collections-by-role-not-count 卡描述的失效模式在本 skill 的實證；(3) reference-by-semantic-title-not-number 卡的 ISO 邊界限定到版本年份（跨版改版會重編條款）。後續 Round 3 self-application sweep 抓到本條宣稱的漏網（writing-code-comments 的「五大寫作原則」）與另兩處 count 殘留（「五大 surface」「三大正交 axis」）、已一併清除；兩張新 principle 卡依 steelman 補強（#155 卡補「標題改名 vs 編號位移」斷裂等級差、#156 卡補數字記憶價值的誠實對沖與「內部宣告凍結」邊界）。</p>
<p><strong>Last Updated</strong>: 2026-06-11
<strong>Version</strong>: 0.13.0 — 0.12.0 的同日延伸：使用者指出「核心七問」「成長六階段」是另一層問題 — 引用端修好了、但錨點名稱本身內嵌成員數（七 / 六 是 membership 的 derivation）、加一問名稱先失真、所有複製過名稱的地方跟著過期；0.12.0 的原則 2 新段自己就用「見核心七問」當正面範例而未察覺、證明命名端與引用端是獨立檢查維度。(1) 原則 2 補「集合命名用角色、不內嵌數量」段；(2) 新增 principle 卡 <a href="/blog/report/name-collections-by-role-not-count/" data-link-title="集合命名用角色、不內嵌數量：「核心七問」的七是成員數的 derivation、加一問就全面失真" data-link-desc="「核心七問」「成長六階段」「四大支柱」這類名稱把成員數量烤進名字裡 — 數量是集合當前成員的 derivation、不是集合的語意身分；成員增減時名稱失真、且名稱是被複製最多次的字串、缺陷隨每次引用繁殖。修法：命名只承載角色與層級（核心問題 / 次要問題 / 撞牆階段）、數量讓清單自己呈現。本卡是 #155 的命名端 sibling（#155 修引用端、本卡讓「語意標題是穩定錨」的前提真正成立）、#44 SSoT 在名稱內容的實例、#84 命名檢驗的數量維度。">name-collections-by-role-not-count</a>（self-contained、含三種可留數字的邊界：外部凍結品牌 / 概念閾值 / 緊鄰清單行內計數、含命名端掃描 regex）；(3) reference-by-semantic-title-not-number 卡補 sibling 連結、0.12.0 三處「核心七問」範例全改「核心問題」；(4) writing-documents Principle 2 補命名端段落。</p>
<p><strong>Last Updated</strong>: 2026-06-11
<strong>Version</strong>: 0.12.0 — 從一份多階段訪談 skill 的階段重編號事故回流：跨檔引用寫成「Stage 3」「Stage 1-3」、流程從四階段改六階段後十多處引用 silent 錯位（字面完好、語意指向錯的階段）、grep 只能抓字面、人工逐處判讀仍漏修兩處。(1) 原則 2（索引建立）補「引用錨點用語意標題、不用位置編號」段 — 編號是結構排列的 derivation、misdirected 比 dangling 難偵測、標題要承載可被引用的語意、凍結編號（RFC / 法條）是 fact 例外；(2) 新增 principle 卡 <a href="/blog/report/reference-by-semantic-title-not-number/" data-link-title="引用章節用語意標題、不用位置編號：編號是結構排列的 derivation、會隨版本漂移" data-link-desc="跨段落、跨檔引用結構單位（章節 / 階段 / 條列項）時、引用語意標題（副標題）、不引用位置編號（Stage 3、第 5 章、第 3 點）。編號是「目前結構排列」的 derivation、不是 fact；結構重排時編號全部位移、引用點不會報錯、而是 silent 指向錯的內容 — 比 broken link 更難偵測。標題的存在意義就是承載可被引用的語意。是 #44 SSoT 在結構引用維度的實例、#93 identifier-as-fact 家族的 sibling、#84 命名承載語意的引用面延伸。">reference-by-semantic-title-not-number</a>（self-contained、含重排 commit 的引用面掃描 regex）；(3) writing-documents Principle 2 cross-reference 段補同主題小節 + anti-pattern 表加「See Stage 3 指向活文件」列。同一問題第二次出現（v0.9.1 曾修過「Stage 1-5」→「五階段流程」的 portability leak）、符合兩次門檻立卡。</p>
<p><strong>Last Updated</strong>: 2026-06-01
<strong>Version</strong>: 0.11.0 — 從一篇技術教材 review 抽出三類字句層 register/framing 問題回流：(1) keyword bank 加 3 類（對讀者喊話 / 自評誇飾 / 必然性框架）、同步 description、協同段 grep、輪 8-10 段、writing-articles 輪 8；(2) 原則三補「絕對二元語氣的命令式 vs 必然式」subtype（必然式偽裝成事實、更隱形）；(3) 新增 principle 卡 <a href="/blog/report/teaching-register-states-not-addresses-reader/" data-link-title="教材用中性陳述、不對讀者喊話" data-link-desc="教材的 register 是中性陳述概念、不是對讀者說話。三種對讀者喊話的形式 —— 安撫情緒（很多人卡在）、第二人稱代入（你天天寫）、祈使控制閱讀（先讀懂 / 別搞混）—— 表面不同、共同違反是把讀者當成要管理的對話對象、而非把概念講清楚。問題不在精度（「你天天寫的 int count」精度完全正確）、在 stance。修法是換成中性陳述（常見的 int count）或描述性名詞標題（簽章的型別與名字拆解）。邊界：hook / narrative 段落的輕度第二人稱可幫讀者進入、不一律禁。">teaching-prose-neutral-register</a>（涵蓋三類、self-contained）；(4) multi-pass-review-frame-granularity 補「偵測之後：keyword bank 命中是候選不是判決」判定層段（偵測 vs 判定兩步驟、clean 可能是判定放水）。跟 multi-round-review Round 1-A 同步加 3 grep + 判定指引。</p>
<p><strong>Last Updated</strong>: 2026-05-27
<strong>Version</strong>: 0.10.0 — 從 13 張 knowledge cards 批量改寫負向表述的經驗回流：(1) description 加觸發詞「多輪審查 / multi-round review / batch review / 寫作 audit / 正向陳述 / 口語修辭 / 字句層 grep」、明示「也在 multi-round-review 啟動時觸發」；(2) 新增「跟 multi-round-review 的協同」段、列出 Round 1-A 寫作規範 reviewer 必須跑的 5 個 grep pattern（正向陳述 / 口語修辭 / 地區用語 / 廢話前綴 / 裝飾符號）、明示兩 skill 垂直協同關係；(3) 修正 multi-round-review 漏抓字句層的盲區、跟 multi-round-review v1.1 同步 cross-trigger 設計
<strong>Version</strong>: 0.9.2 — 從 business case-analyses 演變回流：新增 <code>source-to-teaching-analysis.md</code> 路由，處理外部分析文章 / 產業評論 / 投資人備忘錄到教學型分析文章的轉換；新增三張 principle（external-analysis-source-layering / cross-domain-reader-level-alignment / analysis-rewrite-delivers-transferable-framework），把 source 分層、跨領域讀者降層、可遷移框架交付從 blog report 抽成 portable 規則。
<strong>Version</strong>: 0.9.1 — Stage 4 修正 3-reviewer 抓的 33 issue：(1) #120 mirror 縮 scope 解過載（移除四 axis 表 / 句構分流 / polish pass 段、聚焦三段式結構 axis）+ 結論段首改概念定義句解 dogfooding 失敗；(2) #121 mirror 結論表三欄重設計（設計選擇 / 解決問題 / 失敗模式）+ 實作 pattern 縮成 abstract pattern；(3) 兩 mirror 角色段引用點改措辭（移除虛假引用宣告）；(4) SKILL.md 原則 3/6 兩補強段段首改概念定義句、原則 6「詳見」list 補新 mirror、Directory Index 補；(5) Portability leak 修：「Stage 2 自查清單」→「寫稿後段落自查清單」、「Stage 1-5」→「五階段流程」；(6) 五大 / 六大原則 drift 對齊（line 105 / 160）；(7) 既有 principles（writing-multi-pass-review / multi-pass-review-frame-granularity / ease-of-writing-vs-intent-alignment）補回引新 mirror、形成雙向 cross-link
<strong>Version</strong>: 0.9.0 — 從跨章節教學模組生產經驗回流：原則 3 補「Case 引用段落三段式結構」段（詳見 case-citation-three-part-structure）；原則 6 補「Instance 軸：跨 reviewer instance 隔離」段（詳見 agent-team-context-isolation、跟 frame 軸正交可疊加）；新增「跟特化寫作流程的分工」段（明示本 skill 是單篇基礎方法、跨章節教學模組生產流程是擴展層）；principles/ 新增兩張 mirror 卡（case-citation-three-part-structure / agent-team-context-isolation）、自包含、不引用外部 skill 或 blog content
<strong>Version</strong>: 0.8.1 — 第 6 原則同步 writing-articles v0.8.1：補「Production 教學文章追加輪 8-10」段（換工具 / 換視角 / 換層次三機制處理「跑 N 輪仍漏」字句層問題）；「詳見」連結加 5 張新 principle（colloquial-rhetoric / prose-self-contained / regional-terminology / multi-pass-review-frame-granularity / design-flaw-by-current-axes）
<strong>Version</strong>: 0.7.4 — 新增 <code>translation-review.md</code> 路由：翻譯 / 轉譯文章時，用句內邏輯檢查譯名是否跟主詞、動詞、修飾語、因果與讀者追問方向對位。
<strong>Version</strong>: 0.7.3 — managing-article-collections 補「素材庫比例」路由：多篇文章需要案例 / source / scenario / pattern 支撐時，主文章情境維持少量、素材庫保留 2-3 倍來源做反向驗證
<strong>Version</strong>: 0.7.2 — 補 multi-pass 的 surface 軸：review 先列 body / metadata / navigation surface（title、description、tags、heading、link label、MOC hook、slug / filename），每輪 frame 都掃同一份 surface 清單；新增內部 principle <code>metadata-surface-in-writing-review.md</code>
<strong>Version</strong>: 0.22.0 — 原則 3 加「知識卡建卡判準用最不熟悉的讀者」；常識是相對於讀者背景的、跨背景讀者群幾乎所有領域特定術語都需要建卡
<strong>Version</strong>: 0.21.0 — 原則 3 加「操作步驟帶環境專屬工具路徑」（同動作在 container/VM/共享主機的工具不同）
<strong>Version</strong>: 0.20.0 — 原則 3 加「讀者定位聲明」生成端前置步驟；從 infra 模組 retrospective 抽出（讀者定位未預設導致宣導語氣通過三輪審查）
<strong>Version</strong>: 0.19.0 — 新增三張 principle 卡（audience-is-professional-not-layperson / cross-expertise-scenario-not-analogy / management-reportable-info-in-technical-content）、原則 3 加讀者定位與跨專業溝通子原則、keyword bank 加宣導語氣 grep；從 infra 教學模組的寫作 retrospective 抽出
<strong>Version</strong>: 0.7.0 — Phase B1 結構升級：加第 6 原則「多輪 Re-read Pass」（明示 5 輪 frame）、引用 #83 / #84 / #85 multi-pass 系列。後續 Phase B2 會把各 reference 結尾加「第 2 輪 review checklist」段
<strong>Version</strong>: 0.6.0 — 從 references 過載的反思：writing-articles.md 從 780 行瘦身到 ~530 行（拆分判準 / 三類 structure 模板搬到 managing-article-collections.md、focus 集中在「單篇文章內部」）；新增規則八「自我應用 (dogfooding)」（教某條規則的段落本身遵守該規則）；managing-article-collections.md 整合「拆分判準」+「三層 structure 詳細對照 + 模板」；meta-metrics.md M2 加 dogfooding 失敗訊號
<strong>Version</strong>: 0.5.0 — 從批量改寫 35 篇的經驗回流：原則 3 補「選項數由議題決定、不強湊」（避免 A/B/C/D 強迫症與「實務上幾乎不存在」的假反模式）；writing-articles.md 新增規則九（三類文章 structure 模板）；managing-article-collections.md 新增「跨篇引用 idiom 庫」與「三層 structure 對照」
<strong>Version</strong>: 0.4.0 — 新增 <code>managing-article-collections.md</code>（跨多篇文章結構：三層、MOC、Pattern 卡片）；強化原則 1「原子化」（focus 是議題完整度、不是邊界清晰）；強化原則 3「意圖顯性」（機會成本語氣、不用絕對主義）
<strong>Version</strong>: 0.3.0 — 新增 <code>dry-run-guide.md</code> 於 Directory Index 與觸發路由（Skill 發布前語意層驗收 Phase 2 dry-run）</p>
]]></content:encoded></item><item><title>三輪審查的檢討收穫 — 工具 opinion 文章的寫作品質演進</title><link>https://tarrragon.github.io/blog/report/tool-opinion-article-review-lessons/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/tool-opinion-article-review-lessons/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>多輪審查的價值在 frame 切換而非重複加深。三輪用了 8 個不同 frame，每輪抓到的問題類型和上一輪不重疊。停止訊號是「想不出新 frame」而非「finding 數遞減」。&lt;/p>
&lt;h2 id="每輪的-frame-和收穫">每輪的 frame 和收穫&lt;/h2>
&lt;h3 id="round-1compliance規範--事實--冷讀">Round 1：Compliance（規範 + 事實 + 冷讀）&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Frame&lt;/th>
 &lt;th>代表 finding&lt;/th>
 &lt;th>類型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>寫作規範&lt;/td>
 &lt;td>「唯一」必然性框架（3 處）、meta-commentary 外露&lt;/td>
 &lt;td>字句層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Fact-check&lt;/td>
 &lt;td>semver 表格混用專案術語和標準定義&lt;/td>
 &lt;td>準確性&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>冷讀零脈絡&lt;/td>
 &lt;td>「Proposal」「Wave」行話洩漏、缺進入動機&lt;/td>
 &lt;td>可讀性&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="round-2cadence--讀者旅程--title-commitment">Round 2：Cadence + 讀者旅程 + Title commitment&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Frame&lt;/th>
 &lt;th>代表 finding&lt;/th>
 &lt;th>類型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Cadence&lt;/td>
 &lt;td>「為什麼會這樣」兩小節骨架完全複製&lt;/td>
 &lt;td>結構層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Reader simulation&lt;/td>
 &lt;td>事件段佔比高、原則到得晚、CoC 結尾像附錄&lt;/td>
 &lt;td>節奏層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Title commitment&lt;/td>
 &lt;td>title 承諾「為什麼」但 L86 才正式交付&lt;/td>
 &lt;td>對齊層&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h3 id="round-3self-application--steelman">Round 3：Self-application + Steelman&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Frame&lt;/th>
 &lt;th>代表 finding&lt;/th>
 &lt;th>類型&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>Self-application&lt;/td>
 &lt;td>文章主張「用結構引導」但自己的標題路徑偏事件&lt;/td>
 &lt;td>Meta 層&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Steelman&lt;/td>
 &lt;td>缺 soft/hard opinion 區分、缺 cost-benefit 不對稱論證&lt;/td>
 &lt;td>論證層&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="三輪漏抓鏈為什麼前一輪漏了">三輪漏抓鏈：為什麼前一輪漏了&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>問題&lt;/th>
 &lt;th>哪一輪抓到&lt;/th>
 &lt;th>為什麼前面漏了&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>同骨化（兩段結構複製）&lt;/td>
 &lt;td>R2&lt;/td>
 &lt;td>R1 逐段掃描，同骨化是跨段比對才浮現&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>CoC 結尾收束弱&lt;/td>
 &lt;td>R2&lt;/td>
 &lt;td>R1 檢查的是每段內容是否合規，不評估段落在全文中的位置價值&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>缺 soft/hard opinion 區分&lt;/td>
 &lt;td>R3&lt;/td>
 &lt;td>R1-R2 的讀者角色是「初次讀者」，R3 的讀者角色是「知識淵博的反駁者」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>文章未 self-apply 自己的主張&lt;/td>
 &lt;td>R3&lt;/td>
 &lt;td>R1-R2 把文章當內容審查，R3 把文章當主張並用主張反向檢查&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>每一輪的遺漏都是因為 frame 的視角限制——同一個 reviewer 用同一個 frame 跑多輪只會重複相同的 catch。多輪的價值在 frame 切換。&lt;/p>
&lt;h2 id="你的文章需要多輪審查嗎">你的文章需要多輪審查嗎？&lt;/h2>
&lt;ul>
&lt;li>品質敏感（教學、規範、長期累積的內容）且篇幅 &amp;gt; 100 行 → 至少 2 輪不同 frame&lt;/li>
&lt;li>第一輪 finding &amp;gt; 10 → 再加一輪&lt;/li>
&lt;li>同一批次有 3+ 篇相關文章 → 加跨篇一致性 frame&lt;/li>
&lt;li>想不出新 frame → 停止&lt;/li>
&lt;/ul>
&lt;h2 id="ai-輔助寫作中反覆出現的-pattern">AI 輔助寫作中反覆出現的 pattern&lt;/h2>
&lt;p>從這次和過去的審查經驗，以下 pattern 在 AI 生成的文章中出現頻率高：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>Pattern&lt;/th>
 &lt;th>出現頻率&lt;/th>
 &lt;th>為什麼 AI 容易犯&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>必然性框架（「唯一」「天生」「本質」）&lt;/td>
 &lt;td>高&lt;/td>
 &lt;td>AI 傾向用強勢措辭增加說服力&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>負向開頭（「不是 X」「沒有 Y」）&lt;/td>
 &lt;td>高&lt;/td>
 &lt;td>否定句是 AI 常用的對比修辭&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>meta-commentary（「先交代脈絡…」）&lt;/td>
 &lt;td>中&lt;/td>
 &lt;td>AI 把內部推理過程外露到文章中&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>同骨化&lt;/td>
 &lt;td>高&lt;/td>
 &lt;td>同一 prompt 生成的多段文字共用隱含模板&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>結尾重複前文&lt;/td>
 &lt;td>中&lt;/td>
 &lt;td>AI 傾向在結尾摘要前文而非昇華&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這些 pattern 的防護適合放在生成端（寫作前的 checklist），而非只放在審查端（寫完後掃描）。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>多輪審查的價值在 frame 切換而非重複加深。三輪用了 8 個不同 frame，每輪抓到的問題類型和上一輪不重疊。停止訊號是「想不出新 frame」而非「finding 數遞減」。</p>
<h2 id="每輪的-frame-和收穫">每輪的 frame 和收穫</h2>
<h3 id="round-1compliance規範--事實--冷讀">Round 1：Compliance（規範 + 事實 + 冷讀）</h3>
<table>
  <thead>
      <tr>
          <th>Frame</th>
          <th>代表 finding</th>
          <th>類型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>寫作規範</td>
          <td>「唯一」必然性框架（3 處）、meta-commentary 外露</td>
          <td>字句層</td>
      </tr>
      <tr>
          <td>Fact-check</td>
          <td>semver 表格混用專案術語和標準定義</td>
          <td>準確性</td>
      </tr>
      <tr>
          <td>冷讀零脈絡</td>
          <td>「Proposal」「Wave」行話洩漏、缺進入動機</td>
          <td>可讀性</td>
      </tr>
  </tbody>
</table>
<h3 id="round-2cadence--讀者旅程--title-commitment">Round 2：Cadence + 讀者旅程 + Title commitment</h3>
<table>
  <thead>
      <tr>
          <th>Frame</th>
          <th>代表 finding</th>
          <th>類型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Cadence</td>
          <td>「為什麼會這樣」兩小節骨架完全複製</td>
          <td>結構層</td>
      </tr>
      <tr>
          <td>Reader simulation</td>
          <td>事件段佔比高、原則到得晚、CoC 結尾像附錄</td>
          <td>節奏層</td>
      </tr>
      <tr>
          <td>Title commitment</td>
          <td>title 承諾「為什麼」但 L86 才正式交付</td>
          <td>對齊層</td>
      </tr>
  </tbody>
</table>
<h3 id="round-3self-application--steelman">Round 3：Self-application + Steelman</h3>
<table>
  <thead>
      <tr>
          <th>Frame</th>
          <th>代表 finding</th>
          <th>類型</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Self-application</td>
          <td>文章主張「用結構引導」但自己的標題路徑偏事件</td>
          <td>Meta 層</td>
      </tr>
      <tr>
          <td>Steelman</td>
          <td>缺 soft/hard opinion 區分、缺 cost-benefit 不對稱論證</td>
          <td>論證層</td>
      </tr>
  </tbody>
</table>
<h2 id="三輪漏抓鏈為什麼前一輪漏了">三輪漏抓鏈：為什麼前一輪漏了</h2>
<table>
  <thead>
      <tr>
          <th>問題</th>
          <th>哪一輪抓到</th>
          <th>為什麼前面漏了</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>同骨化（兩段結構複製）</td>
          <td>R2</td>
          <td>R1 逐段掃描，同骨化是跨段比對才浮現</td>
      </tr>
      <tr>
          <td>CoC 結尾收束弱</td>
          <td>R2</td>
          <td>R1 檢查的是每段內容是否合規，不評估段落在全文中的位置價值</td>
      </tr>
      <tr>
          <td>缺 soft/hard opinion 區分</td>
          <td>R3</td>
          <td>R1-R2 的讀者角色是「初次讀者」，R3 的讀者角色是「知識淵博的反駁者」</td>
      </tr>
      <tr>
          <td>文章未 self-apply 自己的主張</td>
          <td>R3</td>
          <td>R1-R2 把文章當內容審查，R3 把文章當主張並用主張反向檢查</td>
      </tr>
  </tbody>
</table>
<p>每一輪的遺漏都是因為 frame 的視角限制——同一個 reviewer 用同一個 frame 跑多輪只會重複相同的 catch。多輪的價值在 frame 切換。</p>
<h2 id="你的文章需要多輪審查嗎">你的文章需要多輪審查嗎？</h2>
<ul>
<li>品質敏感（教學、規範、長期累積的內容）且篇幅 &gt; 100 行 → 至少 2 輪不同 frame</li>
<li>第一輪 finding &gt; 10 → 再加一輪</li>
<li>同一批次有 3+ 篇相關文章 → 加跨篇一致性 frame</li>
<li>想不出新 frame → 停止</li>
</ul>
<h2 id="ai-輔助寫作中反覆出現的-pattern">AI 輔助寫作中反覆出現的 pattern</h2>
<p>從這次和過去的審查經驗，以下 pattern 在 AI 生成的文章中出現頻率高：</p>
<table>
  <thead>
      <tr>
          <th>Pattern</th>
          <th>出現頻率</th>
          <th>為什麼 AI 容易犯</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>必然性框架（「唯一」「天生」「本質」）</td>
          <td>高</td>
          <td>AI 傾向用強勢措辭增加說服力</td>
      </tr>
      <tr>
          <td>負向開頭（「不是 X」「沒有 Y」）</td>
          <td>高</td>
          <td>否定句是 AI 常用的對比修辭</td>
      </tr>
      <tr>
          <td>meta-commentary（「先交代脈絡…」）</td>
          <td>中</td>
          <td>AI 把內部推理過程外露到文章中</td>
      </tr>
      <tr>
          <td>同骨化</td>
          <td>高</td>
          <td>同一 prompt 生成的多段文字共用隱含模板</td>
      </tr>
      <tr>
          <td>結尾重複前文</td>
          <td>中</td>
          <td>AI 傾向在結尾摘要前文而非昇華</td>
      </tr>
  </tbody>
</table>
<p>這些 pattern 的防護適合放在生成端（寫作前的 checklist），而非只放在審查端（寫完後掃描）。</p>
]]></content:encoded></item><item><title>文章語氣校正：恐嚇式 hook 與技術分享的邊界</title><link>https://tarrragon.github.io/blog/report/article-tone-scare-vs-share/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/article-tone-scare-vs-share/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>技術文章的開頭語氣決定了讀者和作者的關係。恐嚇式語氣（「問題可能正在發生」）把讀者放在「被警告的對象」位置；分享式語氣（「從一個經驗出發討論」）把讀者放在「同行」位置。兩者傳遞相同的資訊，但讀者的接收姿態不同。&lt;/p>
&lt;h2 id="案例">案例&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>版本&lt;/th>
 &lt;th>語句&lt;/th>
 &lt;th>語氣&lt;/th>
 &lt;th>讀者位置&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>初稿&lt;/td>
 &lt;td>「這篇討論的 pattern 可能正在你的工具中靜默發生」&lt;/td>
 &lt;td>恐嚇&lt;/td>
 &lt;td>被警告者&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修正&lt;/td>
 &lt;td>「這篇從一個版本錯置的經驗出發，討論工具設計中一個容易忽略的面向」&lt;/td>
 &lt;td>分享&lt;/td>
 &lt;td>同行&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩句話的資訊含量相同（都在說「這篇討論工具設計的某個面向」）。差異在語氣詞：「靜默發生」暗示讀者有問題但不知道，帶有居高臨下的意味；「容易忽略的面向」承認這是普遍現象，不預設讀者有問題。&lt;/p>
&lt;h2 id="判斷標準">判斷標準&lt;/h2>
&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;/ul>
&lt;p>如果換成「我們」後語氣彆扭，代表原句預設了作者和讀者的不對稱——作者知道問題、讀者不知道。技術分享的前提是對稱：我遇到了，你可能也會遇到，我們一起看看。&lt;/p>
&lt;h2 id="ai-寫作的傾向">AI 寫作的傾向&lt;/h2>
&lt;p>AI 生成的開頭容易偏向恐嚇式，因為訓練資料中大量的技術文章用「你可能不知道的 N 件事」「你一直在犯的 N 個錯誤」作為 hook。這些 hook 在點擊率導向的平台上有效，但在技術社群中會降低信任——讀者會覺得「你在教我做事」。&lt;/p>
&lt;p>生成端防護：寫完 hook 後檢查有沒有「正在」「靜默」「不知不覺」「你可能」等暗示讀者無知的措辭。&lt;/p>
&lt;p>&lt;strong>場景邊界&lt;/strong>：此判斷標準適用於經驗分享和檢討文章。教學文章的第二人稱指引（「你應該先安裝 X」）屬合理用法——教學的語氣本就是引導式。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>技術文章的開頭語氣決定了讀者和作者的關係。恐嚇式語氣（「問題可能正在發生」）把讀者放在「被警告的對象」位置；分享式語氣（「從一個經驗出發討論」）把讀者放在「同行」位置。兩者傳遞相同的資訊，但讀者的接收姿態不同。</p>
<h2 id="案例">案例</h2>
<table>
  <thead>
      <tr>
          <th>版本</th>
          <th>語句</th>
          <th>語氣</th>
          <th>讀者位置</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>初稿</td>
          <td>「這篇討論的 pattern 可能正在你的工具中靜默發生」</td>
          <td>恐嚇</td>
          <td>被警告者</td>
      </tr>
      <tr>
          <td>修正</td>
          <td>「這篇從一個版本錯置的經驗出發，討論工具設計中一個容易忽略的面向」</td>
          <td>分享</td>
          <td>同行</td>
      </tr>
  </tbody>
</table>
<p>兩句話的資訊含量相同（都在說「這篇討論工具設計的某個面向」）。差異在語氣詞：「靜默發生」暗示讀者有問題但不知道，帶有居高臨下的意味；「容易忽略的面向」承認這是普遍現象，不預設讀者有問題。</p>
<h2 id="判斷標準">判斷標準</h2>
<p>寫完開頭後問一個問題：<strong>如果把「你」換成「我們」，語句是否仍然自然？</strong></p>
<ul>
<li>「可能正在<strong>我們的</strong>工具中靜默發生」——可以，但語氣變成自我診斷，不像是要嚇別人</li>
<li>「從一個經驗出發，討論<strong>我們</strong>容易忽略的面向」——自然，分享語氣不變</li>
</ul>
<p>如果換成「我們」後語氣彆扭，代表原句預設了作者和讀者的不對稱——作者知道問題、讀者不知道。技術分享的前提是對稱：我遇到了，你可能也會遇到，我們一起看看。</p>
<h2 id="ai-寫作的傾向">AI 寫作的傾向</h2>
<p>AI 生成的開頭容易偏向恐嚇式，因為訓練資料中大量的技術文章用「你可能不知道的 N 件事」「你一直在犯的 N 個錯誤」作為 hook。這些 hook 在點擊率導向的平台上有效，但在技術社群中會降低信任——讀者會覺得「你在教我做事」。</p>
<p>生成端防護：寫完 hook 後檢查有沒有「正在」「靜默」「不知不覺」「你可能」等暗示讀者無知的措辭。</p>
<p><strong>場景邊界</strong>：此判斷標準適用於經驗分享和檢討文章。教學文章的第二人稱指引（「你應該先安裝 X」）屬合理用法——教學的語氣本就是引導式。</p>
]]></content:encoded></item><item><title>文章範圍漂移：從 CLI 工具到工具設計的泛化過程</title><link>https://tarrragon.github.io/blog/report/article-scope-creep-cli-to-tool-design/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/article-scope-creep-cli-to-tool-design/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>文章範圍的泛化（CLI → 工具設計）需要在五個位置同步調整，遺漏任一個都會讓文章的「說的」和「做的」不一致：title、開頭 hook、原則段措辭、對照表範例、結尾 checklist。&lt;/p>
&lt;h2 id="漂移軌跡">漂移軌跡&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>階段&lt;/th>
 &lt;th>範圍&lt;/th>
 &lt;th>觸發&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>初稿&lt;/td>
 &lt;td>CLI 工具的 opinion&lt;/td>
 &lt;td>從 ticket CLI 事件出發&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>R1 修法後&lt;/td>
 &lt;td>CLI 工具，但原則段已泛化&lt;/td>
 &lt;td>審查建議補遷移性&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>作者第一次回饋&lt;/td>
 &lt;td>「不應該侷限於 CLI」&lt;/td>
 &lt;td>作者指出核心觀點適用於所有工具&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>泛化修正&lt;/td>
 &lt;td>所有工具設計&lt;/td>
 &lt;td>調整 title / hook / 原則 / checklist / 對照表&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>作者第二次回饋&lt;/td>
 &lt;td>語氣從指令式改為分享式&lt;/td>
 &lt;td>title 中「你的 CLI 應該有 opinion」太喊話&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="教訓">教訓&lt;/h2>
&lt;p>&lt;strong>案例具體、原則泛化&lt;/strong>是 work-log 的理想結構：用具體的 CLI 事件作為案例（讀者需要具體故事才能共鳴），但原則段和 checklist 不綁定在案例的技術棧上（讀者需要帶走可遷移的 takeaway）。&lt;/p>
&lt;p>泛化時容易遺漏的是&lt;strong>中間地帶&lt;/strong>——title 和 hook 已經泛化，但內文的某句話仍寫著「Opinionated CLI」或「列出你的 CLI 所有參數」。這類殘留在自己反覆讀時不容易發現（因為知道意思），但冷讀者會注意到 title 說「工具設計」而內文只講 CLI。&lt;/p>
&lt;p>逐行 grep 原始範圍的關鍵詞（如 &lt;code>CLI&lt;/code>、&lt;code>命令列&lt;/code>）是最有效的殘留偵測方式。每處命中判斷：是案例引用（保留）還是原則陳述（改泛化）。&lt;/p>
&lt;p>這個 pattern 適用於任何「把具體經驗提煉為通用原則」的寫作——技術 blog、內部 postmortem、教學文章。泛化的時機通常在第一輪回饋後，觸發點是讀者說「這不只適用於你的場景」。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>文章範圍的泛化（CLI → 工具設計）需要在五個位置同步調整，遺漏任一個都會讓文章的「說的」和「做的」不一致：title、開頭 hook、原則段措辭、對照表範例、結尾 checklist。</p>
<h2 id="漂移軌跡">漂移軌跡</h2>
<table>
  <thead>
      <tr>
          <th>階段</th>
          <th>範圍</th>
          <th>觸發</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>初稿</td>
          <td>CLI 工具的 opinion</td>
          <td>從 ticket CLI 事件出發</td>
      </tr>
      <tr>
          <td>R1 修法後</td>
          <td>CLI 工具，但原則段已泛化</td>
          <td>審查建議補遷移性</td>
      </tr>
      <tr>
          <td>作者第一次回饋</td>
          <td>「不應該侷限於 CLI」</td>
          <td>作者指出核心觀點適用於所有工具</td>
      </tr>
      <tr>
          <td>泛化修正</td>
          <td>所有工具設計</td>
          <td>調整 title / hook / 原則 / checklist / 對照表</td>
      </tr>
      <tr>
          <td>作者第二次回饋</td>
          <td>語氣從指令式改為分享式</td>
          <td>title 中「你的 CLI 應該有 opinion」太喊話</td>
      </tr>
  </tbody>
</table>
<h2 id="教訓">教訓</h2>
<p><strong>案例具體、原則泛化</strong>是 work-log 的理想結構：用具體的 CLI 事件作為案例（讀者需要具體故事才能共鳴），但原則段和 checklist 不綁定在案例的技術棧上（讀者需要帶走可遷移的 takeaway）。</p>
<p>泛化時容易遺漏的是<strong>中間地帶</strong>——title 和 hook 已經泛化，但內文的某句話仍寫著「Opinionated CLI」或「列出你的 CLI 所有參數」。這類殘留在自己反覆讀時不容易發現（因為知道意思），但冷讀者會注意到 title 說「工具設計」而內文只講 CLI。</p>
<p>逐行 grep 原始範圍的關鍵詞（如 <code>CLI</code>、<code>命令列</code>）是最有效的殘留偵測方式。每處命中判斷：是案例引用（保留）還是原則陳述（改泛化）。</p>
<p>這個 pattern 適用於任何「把具體經驗提煉為通用原則」的寫作——技術 blog、內部 postmortem、教學文章。泛化的時機通常在第一輪回饋後，觸發點是讀者說「這不只適用於你的場景」。</p>
]]></content:encoded></item><item><title>主題偏移：內部系統知識洩漏到面向讀者的論述</title><link>https://tarrragon.github.io/blog/report/topic-drift-internal-knowledge-leak/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/topic-drift-internal-knowledge-leak/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>當一句話在技術上正確但偏離文章主題時，刪除比保留好。補充內部系統的細節滿足的是作者的完整性需求，不是讀者的理解需求。&lt;/p>
&lt;h2 id="案例">案例&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>版本&lt;/th>
 &lt;th>語句&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>修正前&lt;/td>
 &lt;td>「opinion 是最可靠的防線。&lt;strong>規則檔和 memory 系統也能傳遞教訓，但工具在操作當下的即時引導是離決策點最近的攔截——規則是知識層，工具是執行層，兩者互補但執行層更難繞過&lt;/strong>」&lt;/td>
 &lt;td>粗體部分展開了作者專案的內部架構（規則檔 / memory / 知識層 / 執行層），偏離了「工具應該有 opinion」的主題&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修正後&lt;/td>
 &lt;td>「opinion 是最可靠的防線，因為工具在操作當下的即時引導是離決策點最近的攔截」&lt;/td>
 &lt;td>保留核心論點，刪除內部系統細節&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>修正前的語句在技術上完全正確——規則檔和 memory 系統確實是防線的一部分。但這個補充回答的是「作者的系統有哪些防護層」，而不是「為什麼工具 opinion 重要」。讀者來這篇文章是想知道後者。&lt;/p>
&lt;h2 id="判斷流程">判斷流程&lt;/h2>
&lt;p>對每段補充依序判斷：&lt;/p>
&lt;ol>
&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;/ol>
&lt;p>三者任一指向「不服務主題/讀者」→ 刪除。「規則檔和 memory 系統」的補充在三項測試中都指向刪除：它回答的是「作者的系統有哪些防護層」（衍生問題）、刪掉不影響理解、受眾是作者。&lt;/p>
&lt;h2 id="延伸">延伸&lt;/h2>
&lt;p>AI 生成的文章容易出現這類偏移——prompt context 中的系統知識會被 AI 當作「相關因此應寫入」。但「推理中相關」和「讀者需要知道」是兩件事。同類問題（AI 把內部推理殘留外露到文章中）的另一面見 &lt;a href="https://tarrragon.github.io/blog/report/reader-does-not-need-to-know/" data-link-title="讀者不需要知道 — 刪除比解釋更尊重讀者" data-link-desc="「整理目的」blockquote 告訴讀者這篇文章的寫作動機和邊界。但讀者不需要知道作者為什麼寫這篇文章——他們需要知道讀完能帶走什麼。meta 資訊（寫作動機、邊界聲明、脈絡解釋）服務的是作者的組織需求，不是讀者的閱讀需求。">reader-does-not-need-to-know&lt;/a>。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>當一句話在技術上正確但偏離文章主題時，刪除比保留好。補充內部系統的細節滿足的是作者的完整性需求，不是讀者的理解需求。</p>
<h2 id="案例">案例</h2>
<table>
  <thead>
      <tr>
          <th>版本</th>
          <th>語句</th>
          <th>問題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>修正前</td>
          <td>「opinion 是最可靠的防線。<strong>規則檔和 memory 系統也能傳遞教訓，但工具在操作當下的即時引導是離決策點最近的攔截——規則是知識層，工具是執行層，兩者互補但執行層更難繞過</strong>」</td>
          <td>粗體部分展開了作者專案的內部架構（規則檔 / memory / 知識層 / 執行層），偏離了「工具應該有 opinion」的主題</td>
      </tr>
      <tr>
          <td>修正後</td>
          <td>「opinion 是最可靠的防線，因為工具在操作當下的即時引導是離決策點最近的攔截」</td>
          <td>保留核心論點，刪除內部系統細節</td>
      </tr>
  </tbody>
</table>
<p>修正前的語句在技術上完全正確——規則檔和 memory 系統確實是防線的一部分。但這個補充回答的是「作者的系統有哪些防護層」，而不是「為什麼工具 opinion 重要」。讀者來這篇文章是想知道後者。</p>
<h2 id="判斷流程">判斷流程</h2>
<p>對每段補充依序判斷：</p>
<ol>
<li><strong>主題相關性</strong>：這段話回答的是文章標題承諾的問題，還是一個衍生的子問題？</li>
<li><strong>刪除測試</strong>：刪掉這段話，讀者對主題的理解會減少嗎？</li>
<li><strong>受眾測試</strong>：這段話的受眾是讀者（幫助他理解主題），還是作者（滿足自己的完整性偏好）？</li>
</ol>
<p>三者任一指向「不服務主題/讀者」→ 刪除。「規則檔和 memory 系統」的補充在三項測試中都指向刪除：它回答的是「作者的系統有哪些防護層」（衍生問題）、刪掉不影響理解、受眾是作者。</p>
<h2 id="延伸">延伸</h2>
<p>AI 生成的文章容易出現這類偏移——prompt context 中的系統知識會被 AI 當作「相關因此應寫入」。但「推理中相關」和「讀者需要知道」是兩件事。同類問題（AI 把內部推理殘留外露到文章中）的另一面見 <a href="/blog/report/reader-does-not-need-to-know/" data-link-title="讀者不需要知道 — 刪除比解釋更尊重讀者" data-link-desc="「整理目的」blockquote 告訴讀者這篇文章的寫作動機和邊界。但讀者不需要知道作者為什麼寫這篇文章——他們需要知道讀完能帶走什麼。meta 資訊（寫作動機、邊界聲明、脈絡解釋）服務的是作者的組織需求，不是讀者的閱讀需求。">reader-does-not-need-to-know</a>。</p>
]]></content:encoded></item><item><title>信號不是承認 — 技術寫作中的歸因語氣</title><link>https://tarrragon.github.io/blog/report/signal-not-admission/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/signal-not-admission/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>描述系統行為時，使用「信號」「提醒」「觀測」等中性詞，避免「承認」「暴露」「證明了失敗」等歸因詞。工程上的信號是指向可改善之處的指標，不是對過去決策的道德判定。&lt;/p>
&lt;h2 id="案例">案例&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>版本&lt;/th>
 &lt;th>語句&lt;/th>
 &lt;th>問題&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>修正前&lt;/td>
 &lt;td>「每一個『寫文件提醒』都是&lt;strong>承認&lt;/strong>『工具沒做到位』的信號」&lt;/td>
 &lt;td>「承認」是歸因詞——暗示設計者做錯了、需要認錯&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修正後&lt;/td>
 &lt;td>「每一個『寫文件提醒』都是一個&lt;strong>信號&lt;/strong>——工具的預設行為還有空間改善」&lt;/td>
 &lt;td>「信號」是觀測詞——指向改善方向，不判定對錯&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>兩句話指向相同的行動（評估能否把提醒轉化為工具預設行為），但讀者的接收姿態不同。「承認」讓讀者進入防禦模式（「我的工具沒做錯，文件有文件的用途」）；「信號」讓讀者進入改善模式（「確實，這個文件提醒可以被工具化」）。&lt;/p>
&lt;h2 id="判斷標準">判斷標準&lt;/h2>
&lt;p>寫完一句帶有歸因意味的描述後，問：&lt;strong>這句話在描述事實，還是在分配責任？&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>事實：「文件提醒的存在表示工具的預設行為有改善空間」&lt;/li>
&lt;li>歸因：「文件提醒的存在承認了工具沒做到位」&lt;/li>
&lt;/ul>
&lt;p>如果描述的目的是引導讀者改善，用事實語氣。歸因語氣適合事故報告（需要追溯責任），不適合技術分享（目的是傳遞改善思路）。&lt;/p>
&lt;h2 id="延伸">延伸&lt;/h2>
&lt;p>同類歸因詞在技術寫作中常見的變體：&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>歸因詞&lt;/th>
 &lt;th>中性替代&lt;/th>
 &lt;th>差異&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>承認&lt;/td>
 &lt;td>表示、反映&lt;/td>
 &lt;td>「承認」有認錯語意&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>暴露了&lt;/td>
 &lt;td>顯示出&lt;/td>
 &lt;td>「暴露」暗示刻意隱藏&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>證明了失敗&lt;/td>
 &lt;td>顯示有改善空間&lt;/td>
 &lt;td>「失敗」是終結判定&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>被迫&lt;/td>
 &lt;td>選擇、改為&lt;/td>
 &lt;td>「被迫」暗示無奈而非決策（描述外部強制約束時可保留）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>描述系統行為時，使用「信號」「提醒」「觀測」等中性詞，避免「承認」「暴露」「證明了失敗」等歸因詞。工程上的信號是指向可改善之處的指標，不是對過去決策的道德判定。</p>
<h2 id="案例">案例</h2>
<table>
  <thead>
      <tr>
          <th>版本</th>
          <th>語句</th>
          <th>問題</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>修正前</td>
          <td>「每一個『寫文件提醒』都是<strong>承認</strong>『工具沒做到位』的信號」</td>
          <td>「承認」是歸因詞——暗示設計者做錯了、需要認錯</td>
      </tr>
      <tr>
          <td>修正後</td>
          <td>「每一個『寫文件提醒』都是一個<strong>信號</strong>——工具的預設行為還有空間改善」</td>
          <td>「信號」是觀測詞——指向改善方向，不判定對錯</td>
      </tr>
  </tbody>
</table>
<p>兩句話指向相同的行動（評估能否把提醒轉化為工具預設行為），但讀者的接收姿態不同。「承認」讓讀者進入防禦模式（「我的工具沒做錯，文件有文件的用途」）；「信號」讓讀者進入改善模式（「確實，這個文件提醒可以被工具化」）。</p>
<h2 id="判斷標準">判斷標準</h2>
<p>寫完一句帶有歸因意味的描述後，問：<strong>這句話在描述事實，還是在分配責任？</strong></p>
<ul>
<li>事實：「文件提醒的存在表示工具的預設行為有改善空間」</li>
<li>歸因：「文件提醒的存在承認了工具沒做到位」</li>
</ul>
<p>如果描述的目的是引導讀者改善，用事實語氣。歸因語氣適合事故報告（需要追溯責任），不適合技術分享（目的是傳遞改善思路）。</p>
<h2 id="延伸">延伸</h2>
<p>同類歸因詞在技術寫作中常見的變體：</p>
<table>
  <thead>
      <tr>
          <th>歸因詞</th>
          <th>中性替代</th>
          <th>差異</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>承認</td>
          <td>表示、反映</td>
          <td>「承認」有認錯語意</td>
      </tr>
      <tr>
          <td>暴露了</td>
          <td>顯示出</td>
          <td>「暴露」暗示刻意隱藏</td>
      </tr>
      <tr>
          <td>證明了失敗</td>
          <td>顯示有改善空間</td>
          <td>「失敗」是終結判定</td>
      </tr>
      <tr>
          <td>被迫</td>
          <td>選擇、改為</td>
          <td>「被迫」暗示無奈而非決策（描述外部強制約束時可保留）</td>
      </tr>
  </tbody>
</table>
]]></content:encoded></item><item><title>讀者不需要知道 — 刪除比解釋更尊重讀者</title><link>https://tarrragon.github.io/blog/report/reader-does-not-need-to-know/</link><pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/report/reader-does-not-need-to-know/</guid><description>&lt;h2 id="結論">結論&lt;/h2>
&lt;p>文章中的 meta 資訊（「這篇文章的目的是…」「本文邊界是…」「先交代脈絡，否則…」）服務的是作者，不是讀者。讀者打開文章的問題是「這篇文章對我有什麼用」，而非「作者為什麼寫這篇文章」。&lt;/p>
&lt;h2 id="案例">案例&lt;/h2>
&lt;h3 id="案例一整理目的-blockquote">案例一：整理目的 blockquote&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>版本&lt;/th>
 &lt;th>內容&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>修正前&lt;/td>
 &lt;td>&lt;code>&amp;gt; **整理目的**：這不是一次性事件的檢討報告，而是對「工具設計者的責任邊界」的反思。&lt;/code>&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修正後&lt;/td>
 &lt;td>（整段刪除，改為直述讀者能帶走什麼）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>「整理目的」告訴讀者作者為什麼寫這篇文章。但讀者的問題不是「你為什麼寫」，而是「我為什麼要讀」。兩者的差別：&lt;/p>
&lt;ul>
&lt;li>作者視角：「這是一篇反思，不是事件報告」→ 在做分類&lt;/li>
&lt;li>讀者視角：「讀完這篇我能改善什麼？」→ 在評估投入回報&lt;/li>
&lt;/ul>
&lt;h3 id="案例二脈絡解釋">案例二：脈絡解釋&lt;/h3>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>版本&lt;/th>
 &lt;th>內容&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>修正前&lt;/td>
 &lt;td>「先交代脈絡，否則後面的事件沒有參照點。」&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>修正後&lt;/td>
 &lt;td>（整句刪除，直接進入脈絡敘述）&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這句話是寫給自己的編輯註記——「提醒自己為什麼要寫背景段」。讀者不需要知道作者的編輯考量。章節標題（「背景：我們怎麼管理版本和工作項目」）已經告訴讀者接下來是脈絡交代。&lt;/p>
&lt;h2 id="判斷標準">判斷標準&lt;/h2>
&lt;p>寫完一段 meta 描述後問：&lt;strong>這段話消失後，讀者的閱讀體驗會變差嗎？&lt;/strong>&lt;/p>
&lt;ul>
&lt;li>「整理目的」消失 → 讀者仍然能從內文判斷這是反思而非報告 → 不會變差 → 刪除&lt;/li>
&lt;li>「先交代脈絡」消失 → 讀者仍然會讀到脈絡段 → 不會變差 → 刪除&lt;/li>
&lt;li>semver 背景段消失 → 讀者會在事件段卡住 → 會變差 → 保留&lt;/li>
&lt;/ul>
&lt;p>meta 資訊的本質是「替讀者做他已經能自己做的事」。讀者能從標題和內文推斷文章類型，不需要作者顯式宣告。&lt;/p>
&lt;h2 id="ai-寫作的傾向">AI 寫作的傾向&lt;/h2>
&lt;p>AI 生成的文章高頻出現 meta 資訊，因為 AI 的生成過程包含「規劃→組織→寫作」三步，meta 資訊是規劃步驟的殘留——AI 把內部的推理過程（「我接下來要先交代脈絡」）外露到了文章中。&lt;/p>
&lt;p>生成端防護：完成初稿後掃描所有 blockquote 和段首句，問「這句在描述內容還是在描述寫作過程？」描述寫作過程的句子刪除。&lt;/p>
&lt;p>&lt;strong>場景邊界&lt;/strong>：此判斷適用於短篇分享文。長篇技術文件或 RFC 的 scope 聲明（「本文不討論 X」）有不同作用——幫讀者快速判斷是否繼續讀，屬合理 meta。&lt;/p></description><content:encoded><![CDATA[<h2 id="結論">結論</h2>
<p>文章中的 meta 資訊（「這篇文章的目的是…」「本文邊界是…」「先交代脈絡，否則…」）服務的是作者，不是讀者。讀者打開文章的問題是「這篇文章對我有什麼用」，而非「作者為什麼寫這篇文章」。</p>
<h2 id="案例">案例</h2>
<h3 id="案例一整理目的-blockquote">案例一：整理目的 blockquote</h3>
<table>
  <thead>
      <tr>
          <th>版本</th>
          <th>內容</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>修正前</td>
          <td><code>&gt; **整理目的**：這不是一次性事件的檢討報告，而是對「工具設計者的責任邊界」的反思。</code></td>
      </tr>
      <tr>
          <td>修正後</td>
          <td>（整段刪除，改為直述讀者能帶走什麼）</td>
      </tr>
  </tbody>
</table>
<p>「整理目的」告訴讀者作者為什麼寫這篇文章。但讀者的問題不是「你為什麼寫」，而是「我為什麼要讀」。兩者的差別：</p>
<ul>
<li>作者視角：「這是一篇反思，不是事件報告」→ 在做分類</li>
<li>讀者視角：「讀完這篇我能改善什麼？」→ 在評估投入回報</li>
</ul>
<h3 id="案例二脈絡解釋">案例二：脈絡解釋</h3>
<table>
  <thead>
      <tr>
          <th>版本</th>
          <th>內容</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>修正前</td>
          <td>「先交代脈絡，否則後面的事件沒有參照點。」</td>
      </tr>
      <tr>
          <td>修正後</td>
          <td>（整句刪除，直接進入脈絡敘述）</td>
      </tr>
  </tbody>
</table>
<p>這句話是寫給自己的編輯註記——「提醒自己為什麼要寫背景段」。讀者不需要知道作者的編輯考量。章節標題（「背景：我們怎麼管理版本和工作項目」）已經告訴讀者接下來是脈絡交代。</p>
<h2 id="判斷標準">判斷標準</h2>
<p>寫完一段 meta 描述後問：<strong>這段話消失後，讀者的閱讀體驗會變差嗎？</strong></p>
<ul>
<li>「整理目的」消失 → 讀者仍然能從內文判斷這是反思而非報告 → 不會變差 → 刪除</li>
<li>「先交代脈絡」消失 → 讀者仍然會讀到脈絡段 → 不會變差 → 刪除</li>
<li>semver 背景段消失 → 讀者會在事件段卡住 → 會變差 → 保留</li>
</ul>
<p>meta 資訊的本質是「替讀者做他已經能自己做的事」。讀者能從標題和內文推斷文章類型，不需要作者顯式宣告。</p>
<h2 id="ai-寫作的傾向">AI 寫作的傾向</h2>
<p>AI 生成的文章高頻出現 meta 資訊，因為 AI 的生成過程包含「規劃→組織→寫作」三步，meta 資訊是規劃步驟的殘留——AI 把內部的推理過程（「我接下來要先交代脈絡」）外露到了文章中。</p>
<p>生成端防護：完成初稿後掃描所有 blockquote 和段首句，問「這句在描述內容還是在描述寫作過程？」描述寫作過程的句子刪除。</p>
<p><strong>場景邊界</strong>：此判斷適用於短篇分享文。長篇技術文件或 RFC 的 scope 聲明（「本文不討論 X」）有不同作用——幫讀者快速判斷是否繼續讀，屬合理 meta。</p>
]]></content:encoded></item><item><title>Blog 文章模板設計：作者品質閘門與正文分工</title><link>https://tarrragon.github.io/blog/posts/blog-article-template-design/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/posts/blog-article-template-design/</guid><description>&lt;h2 id="問題定位">問題定位&lt;/h2>
&lt;p>文章模板的責任是穩定作者流程，正文的責任是承載技術文章本身。讀者進入文章時，需要看到概念、判讀、取捨與路由；作者在寫作時，需要一組欄位檢查文章是否具備可維護的最低結構。&lt;/p>
&lt;p>本 blog 同時由人類作者、Claude Code 與 Codex 協作產生內容。模板若只放在單一 agent 的設定裡，就會形成工具分岔；模板若直接放進 backend 正文，又會把作者工作流暴露成讀者負擔。因此模板的單一真實來源放在 &lt;code>content/posts/&lt;/code>，作為本 blog 專屬的寫作設定記錄。&lt;/p>
&lt;h2 id="放置決策">放置決策&lt;/h2>
&lt;p>模板放置位置的核心判準是讀者與維護者是否一致。backend 文章面向技術讀者，report 面向可重用事後檢討，posts 面向 blog 自身的規範、設計與工具鏈紀錄。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>位置&lt;/th>
 &lt;th>適合內容&lt;/th>
 &lt;th>本議題判斷&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>content/backend/&lt;/code>&lt;/td>
 &lt;td>技術文章正文、概念推導、案例分析&lt;/td>
 &lt;td>保持讀者主線，作者模板留在上游&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>content/report/&lt;/code>&lt;/td>
 &lt;td>從具體 case 抽出的工程原則&lt;/td>
 &lt;td>可寫抽象原則，操作模板留在 posts&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>content/posts/&lt;/code>&lt;/td>
 &lt;td>blog 規範、設計決策、工具鏈契約&lt;/td>
 &lt;td>作為模板設計的 SSoT&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>.claude/&lt;/code>&lt;/td>
 &lt;td>Claude Code 執行規則&lt;/td>
 &lt;td>可引用本文，本文維持語意來源&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>.codex/&lt;/code>&lt;/td>
 &lt;td>Codex 執行規則&lt;/td>
 &lt;td>可引用本文，本文維持語意來源&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>這個分工讓模板同時支援 Claude Code 與 Codex，也保留文章對讀者的自然技術敘事。&lt;/p>
&lt;h2 id="模板責任">模板責任&lt;/h2>
&lt;p>模板是品質閘門，責任是讓文章保留關鍵判準。它要檢查文章是否具備責任、判讀、風險、邊界與下一步路由，正文仍用技術文章的推導順序排列。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>模板欄位&lt;/th>
 &lt;th>作者要回答的問題&lt;/th>
 &lt;th>正文呈現方式&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>責任&lt;/td>
 &lt;td>這篇文章解決哪一類工程問題&lt;/td>
 &lt;td>概念定位或開頭原則段&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>判讀&lt;/td>
 &lt;td>讀者如何知道自己遇到這個問題&lt;/td>
 &lt;td>核心判讀、判讀訊號、表格&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>風險&lt;/td>
 &lt;td>判讀錯誤或缺漏會造成什麼代價&lt;/td>
 &lt;td>風險段、反模式、情境段&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>邊界&lt;/td>
 &lt;td>這篇文章處理到哪裡，交給誰接續&lt;/td>
 &lt;td>交接路由、與其他章節分工&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>回寫&lt;/td>
 &lt;td>案例或事故教訓應回寫到哪個章節&lt;/td>
 &lt;td>下一步路由、復盤段&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>模板欄位可以出現在文章大綱、作者檢查清單或 agent brief 裡。正文要以技術文章方式展開，讓讀者看到推導，作者填表痕跡留在工作流內部。&lt;/p>
&lt;h2 id="backend-技術文章最小模板">Backend 技術文章最小模板&lt;/h2>
&lt;p>Backend 技術文章的最小模板是「概念定位 → 核心判讀 → 判讀訊號 → 風險與邊界 → 交接路由」。這組欄位適合 04 / 06 / 08 這類語言無關的後端能力文章。&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln"> 1&lt;/span>&lt;span class="cl">&lt;span class="gu">## 概念定位
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 2&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 3&lt;/span>&lt;span class="cl">{概念} 是 {能力 / 流程 / 控制面}，責任是 {它在系統中承擔什麼問題}。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 4&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 5&lt;/span>&lt;span class="cl">這一頁處理的是 {抽象層級}。它跟 {相鄰章節} 的分工是 {邊界}。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 6&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 7&lt;/span>&lt;span class="cl">&lt;span class="gu">## 核心判讀
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 8&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln"> 9&lt;/span>&lt;span class="cl">判讀 {概念} 時，先看 {第一判準}，再看 {第二判準}。
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">10&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">11&lt;/span>&lt;span class="cl">重點訊號包括：
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">12&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">13&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {訊號 1}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">14&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {訊號 2}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">15&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {訊號 3}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">16&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">17&lt;/span>&lt;span class="cl">| 判讀面向 | 最小可用判準 | 常見失真 |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">18&lt;/span>&lt;span class="cl">| --- | --- | --- |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">19&lt;/span>&lt;span class="cl">| {面向} | {判準} | {失真} |
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">20&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">21&lt;/span>&lt;span class="cl">&lt;span class="gu">## 判讀訊號
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">22&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">23&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {真實服務中會看到的徵兆}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">24&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {工程團隊會踩到的操作問題}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">25&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {事故或演練會暴露的缺口}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">26&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">27&lt;/span>&lt;span class="cl">&lt;span class="gu">## 交接路由
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">28&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">29&lt;/span>&lt;span class="cl">&lt;span class="k">-&lt;/span> {上游章節}：{承接內容}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">30&lt;/span>&lt;span class="cl">- {下游章節}：{下一步處理}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這份模板只定義文章最低結構。若某篇文章需要完整案例、方案比較或實作步驟，正文可以增加章節；增加章節時仍要保留責任、判讀、風險與路由。&lt;/p>
&lt;h2 id="案例前置欄位">案例前置欄位&lt;/h2>
&lt;p>案例前置欄位的責任是讓服務案例能回寫到文章系統。它屬於作者拆案例時的內部欄位，正文只吸收欄位背後的判讀與取捨。&lt;/p>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>欄位&lt;/th>
 &lt;th>用途&lt;/th>
 &lt;th>例子&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>來源&lt;/td>
 &lt;td>案例來自事故、演練或公開實踐&lt;/td>
 &lt;td>post-incident review、SRE case&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>觸發&lt;/td>
 &lt;td>事件如何被發現&lt;/td>
 &lt;td>alert、customer ticket、vendor status&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Evidence&lt;/td>
 &lt;td>判讀使用哪些證據&lt;/td>
 &lt;td>log、metric、trace、audit log&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Decision&lt;/td>
 &lt;td>當時做了什麼取捨&lt;/td>
 &lt;td>rollback、degradation、containment&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>Impact&lt;/td>
 &lt;td>影響到誰與什麼功能&lt;/td>
 &lt;td>tenant、region、feature、financial impact&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>回寫&lt;/td>
 &lt;td>教訓回到哪個章節&lt;/td>
 &lt;td>04.17、6.20、8.19&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;p>04 / 06 / 08 的案例拆解可共用這組欄位，但正文仍要用技術文章敘事。欄位幫作者維持可比性，文章幫讀者理解機制。&lt;/p></description><content:encoded><![CDATA[<h2 id="問題定位">問題定位</h2>
<p>文章模板的責任是穩定作者流程，正文的責任是承載技術文章本身。讀者進入文章時，需要看到概念、判讀、取捨與路由；作者在寫作時，需要一組欄位檢查文章是否具備可維護的最低結構。</p>
<p>本 blog 同時由人類作者、Claude Code 與 Codex 協作產生內容。模板若只放在單一 agent 的設定裡，就會形成工具分岔；模板若直接放進 backend 正文，又會把作者工作流暴露成讀者負擔。因此模板的單一真實來源放在 <code>content/posts/</code>，作為本 blog 專屬的寫作設定記錄。</p>
<h2 id="放置決策">放置決策</h2>
<p>模板放置位置的核心判準是讀者與維護者是否一致。backend 文章面向技術讀者，report 面向可重用事後檢討，posts 面向 blog 自身的規範、設計與工具鏈紀錄。</p>
<table>
  <thead>
      <tr>
          <th>位置</th>
          <th>適合內容</th>
          <th>本議題判斷</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>content/backend/</code></td>
          <td>技術文章正文、概念推導、案例分析</td>
          <td>保持讀者主線，作者模板留在上游</td>
      </tr>
      <tr>
          <td><code>content/report/</code></td>
          <td>從具體 case 抽出的工程原則</td>
          <td>可寫抽象原則，操作模板留在 posts</td>
      </tr>
      <tr>
          <td><code>content/posts/</code></td>
          <td>blog 規範、設計決策、工具鏈契約</td>
          <td>作為模板設計的 SSoT</td>
      </tr>
      <tr>
          <td><code>.claude/</code></td>
          <td>Claude Code 執行規則</td>
          <td>可引用本文，本文維持語意來源</td>
      </tr>
      <tr>
          <td><code>.codex/</code></td>
          <td>Codex 執行規則</td>
          <td>可引用本文，本文維持語意來源</td>
      </tr>
  </tbody>
</table>
<p>這個分工讓模板同時支援 Claude Code 與 Codex，也保留文章對讀者的自然技術敘事。</p>
<h2 id="模板責任">模板責任</h2>
<p>模板是品質閘門，責任是讓文章保留關鍵判準。它要檢查文章是否具備責任、判讀、風險、邊界與下一步路由，正文仍用技術文章的推導順序排列。</p>
<table>
  <thead>
      <tr>
          <th>模板欄位</th>
          <th>作者要回答的問題</th>
          <th>正文呈現方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>責任</td>
          <td>這篇文章解決哪一類工程問題</td>
          <td>概念定位或開頭原則段</td>
      </tr>
      <tr>
          <td>判讀</td>
          <td>讀者如何知道自己遇到這個問題</td>
          <td>核心判讀、判讀訊號、表格</td>
      </tr>
      <tr>
          <td>風險</td>
          <td>判讀錯誤或缺漏會造成什麼代價</td>
          <td>風險段、反模式、情境段</td>
      </tr>
      <tr>
          <td>邊界</td>
          <td>這篇文章處理到哪裡，交給誰接續</td>
          <td>交接路由、與其他章節分工</td>
      </tr>
      <tr>
          <td>回寫</td>
          <td>案例或事故教訓應回寫到哪個章節</td>
          <td>下一步路由、復盤段</td>
      </tr>
  </tbody>
</table>
<p>模板欄位可以出現在文章大綱、作者檢查清單或 agent brief 裡。正文要以技術文章方式展開，讓讀者看到推導，作者填表痕跡留在工作流內部。</p>
<h2 id="backend-技術文章最小模板">Backend 技術文章最小模板</h2>
<p>Backend 技術文章的最小模板是「概念定位 → 核心判讀 → 判讀訊號 → 風險與邊界 → 交接路由」。這組欄位適合 04 / 06 / 08 這類語言無關的後端能力文章。</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln"> 1</span><span class="cl"><span class="gu">## 概念定位
</span></span></span><span class="line"><span class="ln"> 2</span><span class="cl"><span class="gu"></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></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="gu">## 核心判讀
</span></span></span><span class="line"><span class="ln"> 8</span><span class="cl"><span class="gu"></span>
</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><span class="line"><span class="ln">13</span><span class="cl"><span class="k">-</span> {訊號 1}
</span></span><span class="line"><span class="ln">14</span><span class="cl"><span class="k">-</span> {訊號 2}
</span></span><span class="line"><span class="ln">15</span><span class="cl"><span class="k">-</span> {訊號 3}
</span></span><span class="line"><span class="ln">16</span><span class="cl">
</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></span><span class="line"><span class="ln">19</span><span class="cl">| {面向} | {判準} | {失真} |
</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="gu">## 判讀訊號
</span></span></span><span class="line"><span class="ln">22</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">23</span><span class="cl"><span class="k">-</span> {真實服務中會看到的徵兆}
</span></span><span class="line"><span class="ln">24</span><span class="cl"><span class="k">-</span> {工程團隊會踩到的操作問題}
</span></span><span class="line"><span class="ln">25</span><span class="cl"><span class="k">-</span> {事故或演練會暴露的缺口}
</span></span><span class="line"><span class="ln">26</span><span class="cl">
</span></span><span class="line"><span class="ln">27</span><span class="cl"><span class="gu">## 交接路由
</span></span></span><span class="line"><span class="ln">28</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">29</span><span class="cl"><span class="k">-</span> {上游章節}：{承接內容}
</span></span><span class="line"><span class="ln">30</span><span class="cl">- {下游章節}：{下一步處理}</span></span></code></pre></div><p>這份模板只定義文章最低結構。若某篇文章需要完整案例、方案比較或實作步驟，正文可以增加章節；增加章節時仍要保留責任、判讀、風險與路由。</p>
<h2 id="案例前置欄位">案例前置欄位</h2>
<p>案例前置欄位的責任是讓服務案例能回寫到文章系統。它屬於作者拆案例時的內部欄位，正文只吸收欄位背後的判讀與取捨。</p>
<table>
  <thead>
      <tr>
          <th>欄位</th>
          <th>用途</th>
          <th>例子</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>來源</td>
          <td>案例來自事故、演練或公開實踐</td>
          <td>post-incident review、SRE case</td>
      </tr>
      <tr>
          <td>觸發</td>
          <td>事件如何被發現</td>
          <td>alert、customer ticket、vendor status</td>
      </tr>
      <tr>
          <td>Evidence</td>
          <td>判讀使用哪些證據</td>
          <td>log、metric、trace、audit log</td>
      </tr>
      <tr>
          <td>Decision</td>
          <td>當時做了什麼取捨</td>
          <td>rollback、degradation、containment</td>
      </tr>
      <tr>
          <td>Impact</td>
          <td>影響到誰與什麼功能</td>
          <td>tenant、region、feature、financial impact</td>
      </tr>
      <tr>
          <td>回寫</td>
          <td>教訓回到哪個章節</td>
          <td>04.17、6.20、8.19</td>
      </tr>
  </tbody>
</table>
<p>04 / 06 / 08 的案例拆解可共用這組欄位，但正文仍要用技術文章敘事。欄位幫作者維持可比性，文章幫讀者理解機制。</p>
<h2 id="agent-共用方式">Agent 共用方式</h2>
<p>Claude Code 與 Codex 共用模板時，本文是 blog 內的穩定契約。<code>.claude/</code> 與 <code>.codex/</code> 可以引用本文的欄位與判準，但實際模板語意以本文為準。</p>
<table>
  <thead>
      <tr>
          <th>使用者</th>
          <th>使用方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>人類作者</td>
          <td>寫作前確認文章是否需要這組欄位</td>
      </tr>
      <tr>
          <td>Claude Code</td>
          <td>依本文判斷正文與作者模板的分工</td>
      </tr>
      <tr>
          <td>Codex</td>
          <td>依本文建立、補寫與檢查 content 文章</td>
      </tr>
      <tr>
          <td>mdtools</td>
          <td>檢查 Markdown 結構與連結，語意模板交給作者流程</td>
      </tr>
  </tbody>
</table>
<p>這個安排避免 <code>.claude/</code> 與 <code>.codex/</code> 各自演化成不同模板，也避免把 agent 操作細節寫進 backend 讀者正文。</p>
<h2 id="使用邊界">使用邊界</h2>
<p>模板適合用在多篇系列文章、跨模組路由與案例回寫。單篇短文、事故紀錄或工具使用筆記可以採較輕的結構，只要仍能說清楚核心責任與下一步。</p>
<table>
  <thead>
      <tr>
          <th>情境</th>
          <th>使用方式</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td>Backend 能力章節</td>
          <td>使用完整最小模板</td>
      </tr>
      <tr>
          <td>服務案例拆解</td>
          <td>使用案例前置欄位，正文呈現案例判讀與取捨</td>
      </tr>
      <tr>
          <td>Blog 工具鏈規範</td>
          <td>依主題調整，保留 posts 的規範與工具鏈定位</td>
      </tr>
      <tr>
          <td>Report 原則卡</td>
          <td>依 report 固有結構，維持 case-driven 原則抽象</td>
      </tr>
      <tr>
          <td>Skill reference</td>
          <td>使用 skill 自身 portable 結構，維持跨專案可移植</td>
      </tr>
  </tbody>
</table>
<p>模板開始主導正文時，需要降級成作者檢查清單。文章完成後的檢查重點是讀者能否理解技術推導，並確認欄位已在文章背後支撐判讀。</p>
<h2 id="完稿檢查">完稿檢查</h2>
<p>完稿檢查的責任是確認技術文章維持主線。檢查時先看正文是否能獨立閱讀，再看欄位是否完整支撐交接。</p>
<ul>
<li>首段是否先說概念責任</li>
<li>判讀訊號是否來自真實服務情境</li>
<li>表格項目是否有延伸說明</li>
<li>交接路由是否指向具體章節</li>
<li>案例欄位是否能回寫到 04 / 06 / 08</li>
<li>正文是否保留技術推導，並把欄位轉成讀者可理解的判讀</li>
</ul>
]]></content:encoded></item><item><title>Snippet、Template、Skeleton 的差別</title><link>https://tarrragon.github.io/blog/til/snippet_template_skeleton/</link><pubDate>Wed, 22 Apr 2026 00:00:00 +0000</pubDate><guid>https://tarrragon.github.io/blog/til/snippet_template_skeleton/</guid><description>&lt;p>這三個字都和「可重用的內容結構」有關，但重點不同。&lt;/p>
&lt;h2 id="一般英文中的意思">一般英文中的意思&lt;/h2>
&lt;p>&lt;code>snippet&lt;/code> 原本是「片段」或「摘錄」。&lt;/p>
&lt;ul>
&lt;li>可以是一小段文字&lt;/li>
&lt;li>也可以是程式碼、對話、影像或聲音的片段&lt;/li>
&lt;li>重點是它是從整體中切出來的一小部分&lt;/li>
&lt;/ul>
&lt;p>&lt;code>template&lt;/code> 是「模板」或「範本」。&lt;/p>
&lt;ul>
&lt;li>表示一個可以反覆套用的格式&lt;/li>
&lt;li>通常會保留一些空位，等人填入內容&lt;/li>
&lt;li>重點是「先有結構，再填資料」&lt;/li>
&lt;/ul>
&lt;p>&lt;code>skeleton&lt;/code> 是「骨架」。&lt;/p>
&lt;ul>
&lt;li>表示最基本、最少的框架&lt;/li>
&lt;li>還沒有完整細節&lt;/li>
&lt;li>重點是「先把架構立起來」&lt;/li>
&lt;/ul>
&lt;h2 id="技術寫作中的意思">技術寫作中的意思&lt;/h2>
&lt;p>在技術文件、程式開發、教學內容裡，這三個詞常常各自負責不同層級的重用。&lt;/p>
&lt;h3 id="snippet">&lt;code>snippet&lt;/code>&lt;/h3>
&lt;p>通常指短小、可直接插入的內容片段。&lt;/p>
&lt;ul>
&lt;li>一小段程式碼&lt;/li>
&lt;li>一小段設定&lt;/li>
&lt;li>一小段說明文字&lt;/li>
&lt;li>一小段固定格式的提醒&lt;/li>
&lt;/ul>
&lt;p>它的特徵是短、穩、可重複使用。&lt;/p>
&lt;h3 id="template">&lt;code>template&lt;/code>&lt;/h3>
&lt;p>通常指帶欄位的完整格式。&lt;/p>
&lt;ul>
&lt;li>有固定順序&lt;/li>
&lt;li>有需要填寫的位置&lt;/li>
&lt;li>適合反覆產生同類內容&lt;/li>
&lt;/ul>
&lt;p>它的特徵是完整、可套用、可替換變數。&lt;/p>
&lt;h3 id="skeleton">&lt;code>skeleton&lt;/code>&lt;/h3>
&lt;p>通常指最小可用的結構輪廓。&lt;/p>
&lt;ul>
&lt;li>先定大標題與章節&lt;/li>
&lt;li>細節之後再補&lt;/li>
&lt;li>常用在草稿、設計、規劃階段&lt;/li>
&lt;/ul>
&lt;p>它的特徵是先搭架構，再補內容。&lt;/p>
&lt;h2 id="情境式範例">情境式範例&lt;/h2>
&lt;h3 id="1-snippet-的例子">1. &lt;code>snippet&lt;/code> 的例子&lt;/h3>
&lt;p>你在寫信時，常常會重複用到一句固定話術，例如：&lt;/p>
&lt;blockquote>
&lt;p>請在方便時回覆。&lt;/p>&lt;/blockquote>
&lt;p>這句話就是一個 &lt;code>snippet&lt;/code>。它短、固定、可以直接貼上。&lt;/p>
&lt;p>如果你每次都要通知對方資料格式，也可以保留一小段固定內容，例如：&lt;/p>
&lt;blockquote>
&lt;p>姓名：___&lt;/p>
&lt;p>日期：___&lt;/p>&lt;/blockquote>
&lt;p>這種短段落也屬於 &lt;code>snippet&lt;/code> 的概念。&lt;/p>
&lt;h3 id="2-template-的例子">2. &lt;code>template&lt;/code> 的例子&lt;/h3>
&lt;p>如果你要寫一封活動通知，可以先準備一個模板：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">標題：{活動名稱}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">時間：{日期}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">地點：{地點}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">對象：{受邀者}
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">說明：{補充內容}&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這就是 &lt;code>template&lt;/code>。&lt;/p>
&lt;ul>
&lt;li>結構先固定&lt;/li>
&lt;li>需要的資料留空&lt;/li>
&lt;li>每次只要填入不同內容就能使用&lt;/li>
&lt;/ul>
&lt;h3 id="3-skeleton-的例子">3. &lt;code>skeleton&lt;/code> 的例子&lt;/h3>
&lt;p>如果你要先寫一篇文章，但還沒想好內容，可以先畫出骨架：&lt;/p>





&lt;div class="highlight">&lt;pre tabindex="0" class="chroma">&lt;code class="language-markdown" data-lang="markdown">&lt;span class="line">&lt;span class="ln">1&lt;/span>&lt;span class="cl">&lt;span class="gh"># 主題
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">2&lt;/span>&lt;span class="cl">&lt;span class="gh">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">3&lt;/span>&lt;span class="cl">&lt;span class="gu">## 背景
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">4&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">5&lt;/span>&lt;span class="cl">&lt;span class="gu">## 問題
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">6&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">7&lt;/span>&lt;span class="cl">&lt;span class="gu">## 方法
&lt;/span>&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">8&lt;/span>&lt;span class="cl">&lt;span class="gu">&lt;/span>
&lt;/span>&lt;/span>&lt;span class="line">&lt;span class="ln">9&lt;/span>&lt;span class="cl">## 結論&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>這就是 &lt;code>skeleton&lt;/code>。&lt;/p>
&lt;ul>
&lt;li>只有章節&lt;/li>
&lt;li>沒有細節&lt;/li>
&lt;li>目的是先把文章的基本輪廓立起來&lt;/li>
&lt;/ul>
&lt;h2 id="三者比較">三者比較&lt;/h2>
&lt;table>
 &lt;thead>
 &lt;tr>
 &lt;th>詞&lt;/th>
 &lt;th>核心意思&lt;/th>
 &lt;th>常見用途&lt;/th>
 &lt;th>完整度&lt;/th>
 &lt;/tr>
 &lt;/thead>
 &lt;tbody>
 &lt;tr>
 &lt;td>&lt;code>snippet&lt;/code>&lt;/td>
 &lt;td>片段&lt;/td>
 &lt;td>重用短句、固定段落、常用設定&lt;/td>
 &lt;td>最短&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>template&lt;/code>&lt;/td>
 &lt;td>模板&lt;/td>
 &lt;td>固定格式、帶欄位的可套用結構&lt;/td>
 &lt;td>中等&lt;/td>
 &lt;/tr>
 &lt;tr>
 &lt;td>&lt;code>skeleton&lt;/code>&lt;/td>
 &lt;td>骨架&lt;/td>
 &lt;td>先建立框架，之後再補內容&lt;/td>
 &lt;td>最初步&lt;/td>
 &lt;/tr>
 &lt;/tbody>
&lt;/table>
&lt;h2 id="直覺分辨法">直覺分辨法&lt;/h2>
&lt;p>如果要用最簡單的方式分辨：&lt;/p>
&lt;ul>
&lt;li>&lt;code>snippet&lt;/code> 是「拿來貼的短段」&lt;/li>
&lt;li>&lt;code>template&lt;/code> 是「拿來填的格式」&lt;/li>
&lt;li>&lt;code>skeleton&lt;/code> 是「拿來搭的骨架」&lt;/li>
&lt;/ul>
&lt;p>也可以這樣記：&lt;/p>
&lt;ul>
&lt;li>&lt;code>snippet&lt;/code> 解決「每次都要重寫同一句」&lt;/li>
&lt;li>&lt;code>template&lt;/code> 解決「每次都要重建同一種格式」&lt;/li>
&lt;li>&lt;code>skeleton&lt;/code> 解決「先把架構搭起來，再慢慢補細節」&lt;/li>
&lt;/ul>
&lt;h2 id="什麼時候用哪一個">什麼時候用哪一個&lt;/h2>
&lt;ul>
&lt;li>想重用短句或固定提醒時，用 &lt;code>snippet&lt;/code>&lt;/li>
&lt;li>想重複產生同類文件或表單時，用 &lt;code>template&lt;/code>&lt;/li>
&lt;li>想先把內容架構起來、還沒準備好細節時，用 &lt;code>skeleton&lt;/code>&lt;/li>
&lt;/ul>
&lt;h2 id="結論">結論&lt;/h2>
&lt;p>這三個詞都可以翻成「片段」或「範本」的近義概念，但在技術寫作裡，它們的分工很清楚：&lt;/p>
&lt;ul>
&lt;li>&lt;code>snippet&lt;/code> 偏短，重點是可直接重用&lt;/li>
&lt;li>&lt;code>template&lt;/code> 偏完整，重點是可套用的格式&lt;/li>
&lt;li>&lt;code>skeleton&lt;/code> 偏框架，重點是先有架構再補細節&lt;/li>
&lt;/ul></description><content:encoded><![CDATA[<p>這三個字都和「可重用的內容結構」有關，但重點不同。</p>
<h2 id="一般英文中的意思">一般英文中的意思</h2>
<p><code>snippet</code> 原本是「片段」或「摘錄」。</p>
<ul>
<li>可以是一小段文字</li>
<li>也可以是程式碼、對話、影像或聲音的片段</li>
<li>重點是它是從整體中切出來的一小部分</li>
</ul>
<p><code>template</code> 是「模板」或「範本」。</p>
<ul>
<li>表示一個可以反覆套用的格式</li>
<li>通常會保留一些空位，等人填入內容</li>
<li>重點是「先有結構，再填資料」</li>
</ul>
<p><code>skeleton</code> 是「骨架」。</p>
<ul>
<li>表示最基本、最少的框架</li>
<li>還沒有完整細節</li>
<li>重點是「先把架構立起來」</li>
</ul>
<h2 id="技術寫作中的意思">技術寫作中的意思</h2>
<p>在技術文件、程式開發、教學內容裡，這三個詞常常各自負責不同層級的重用。</p>
<h3 id="snippet"><code>snippet</code></h3>
<p>通常指短小、可直接插入的內容片段。</p>
<ul>
<li>一小段程式碼</li>
<li>一小段設定</li>
<li>一小段說明文字</li>
<li>一小段固定格式的提醒</li>
</ul>
<p>它的特徵是短、穩、可重複使用。</p>
<h3 id="template"><code>template</code></h3>
<p>通常指帶欄位的完整格式。</p>
<ul>
<li>有固定順序</li>
<li>有需要填寫的位置</li>
<li>適合反覆產生同類內容</li>
</ul>
<p>它的特徵是完整、可套用、可替換變數。</p>
<h3 id="skeleton"><code>skeleton</code></h3>
<p>通常指最小可用的結構輪廓。</p>
<ul>
<li>先定大標題與章節</li>
<li>細節之後再補</li>
<li>常用在草稿、設計、規劃階段</li>
</ul>
<p>它的特徵是先搭架構，再補內容。</p>
<h2 id="情境式範例">情境式範例</h2>
<h3 id="1-snippet-的例子">1. <code>snippet</code> 的例子</h3>
<p>你在寫信時，常常會重複用到一句固定話術，例如：</p>
<blockquote>
<p>請在方便時回覆。</p></blockquote>
<p>這句話就是一個 <code>snippet</code>。它短、固定、可以直接貼上。</p>
<p>如果你每次都要通知對方資料格式，也可以保留一小段固定內容，例如：</p>
<blockquote>
<p>姓名：___</p>
<p>日期：___</p></blockquote>
<p>這種短段落也屬於 <code>snippet</code> 的概念。</p>
<h3 id="2-template-的例子">2. <code>template</code> 的例子</h3>
<p>如果你要寫一封活動通知，可以先準備一個模板：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><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></code></pre></div><p>這就是 <code>template</code>。</p>
<ul>
<li>結構先固定</li>
<li>需要的資料留空</li>
<li>每次只要填入不同內容就能使用</li>
</ul>
<h3 id="3-skeleton-的例子">3. <code>skeleton</code> 的例子</h3>
<p>如果你要先寫一篇文章，但還沒想好內容，可以先畫出骨架：</p>





<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-markdown" data-lang="markdown"><span class="line"><span class="ln">1</span><span class="cl"><span class="gh"># 主題
</span></span></span><span class="line"><span class="ln">2</span><span class="cl"><span class="gh"></span>
</span></span><span class="line"><span class="ln">3</span><span class="cl"><span class="gu">## 背景
</span></span></span><span class="line"><span class="ln">4</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">5</span><span class="cl"><span class="gu">## 問題
</span></span></span><span class="line"><span class="ln">6</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">7</span><span class="cl"><span class="gu">## 方法
</span></span></span><span class="line"><span class="ln">8</span><span class="cl"><span class="gu"></span>
</span></span><span class="line"><span class="ln">9</span><span class="cl">## 結論</span></span></code></pre></div><p>這就是 <code>skeleton</code>。</p>
<ul>
<li>只有章節</li>
<li>沒有細節</li>
<li>目的是先把文章的基本輪廓立起來</li>
</ul>
<h2 id="三者比較">三者比較</h2>
<table>
  <thead>
      <tr>
          <th>詞</th>
          <th>核心意思</th>
          <th>常見用途</th>
          <th>完整度</th>
      </tr>
  </thead>
  <tbody>
      <tr>
          <td><code>snippet</code></td>
          <td>片段</td>
          <td>重用短句、固定段落、常用設定</td>
          <td>最短</td>
      </tr>
      <tr>
          <td><code>template</code></td>
          <td>模板</td>
          <td>固定格式、帶欄位的可套用結構</td>
          <td>中等</td>
      </tr>
      <tr>
          <td><code>skeleton</code></td>
          <td>骨架</td>
          <td>先建立框架，之後再補內容</td>
          <td>最初步</td>
      </tr>
  </tbody>
</table>
<h2 id="直覺分辨法">直覺分辨法</h2>
<p>如果要用最簡單的方式分辨：</p>
<ul>
<li><code>snippet</code> 是「拿來貼的短段」</li>
<li><code>template</code> 是「拿來填的格式」</li>
<li><code>skeleton</code> 是「拿來搭的骨架」</li>
</ul>
<p>也可以這樣記：</p>
<ul>
<li><code>snippet</code> 解決「每次都要重寫同一句」</li>
<li><code>template</code> 解決「每次都要重建同一種格式」</li>
<li><code>skeleton</code> 解決「先把架構搭起來，再慢慢補細節」</li>
</ul>
<h2 id="什麼時候用哪一個">什麼時候用哪一個</h2>
<ul>
<li>想重用短句或固定提醒時，用 <code>snippet</code></li>
<li>想重複產生同類文件或表單時，用 <code>template</code></li>
<li>想先把內容架構起來、還沒準備好細節時，用 <code>skeleton</code></li>
</ul>
<h2 id="結論">結論</h2>
<p>這三個詞都可以翻成「片段」或「範本」的近義概念，但在技術寫作裡，它們的分工很清楚：</p>
<ul>
<li><code>snippet</code> 偏短，重點是可直接重用</li>
<li><code>template</code> 偏完整，重點是可套用的格式</li>
<li><code>skeleton</code> 偏框架，重點是先有架構再補細節</li>
</ul>
]]></content:encoded></item></channel></rss>