<?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>Batch-Writing on Tarragon</title><link>https://tarrragon.github.io/blog/tags/batch-writing/</link><description>Recent content in Batch-Writing on Tarragon</description><generator>Hugo -- gohugo.io</generator><language>zh-TW</language><copyright>Tarragon (CC BY 4.0)</copyright><lastBuildDate>Mon, 18 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://tarrragon.github.io/blog/tags/batch-writing/index.xml" rel="self" type="application/rss+xml"/><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></channel></rss>