除了 Blog Commander(預設展開作為範例)之外,其餘 6 個 agent 預設為摺疊狀態。點擊摘要列即可展開,查看完整 G / Tier 1 / S / M / Anti-patterns。
O:提供一篇文章給忙碌的 practitioner,也就是 architect、spec writer 或一般產業讀者,讓他們從 Google 帶著問題進來時,能清楚到願意收藏、分享給同事,並在下次需要時再回來;同時,文章的結構也必須足夠完整,讓 LLM answer engine 可以準確引用,並讓 Waterson 的人工 reviewer 能在不重寫 base 的前提下,補上自己的銷售與現場洞察。若能以這個品質門檻持續發布 6 個月,watersonusa.ai 應可在自然搜尋排名與 AI engine 引用上都看到可衡量的成長。
以下兩個成功指標缺一不可:
只要任一成效缺席,就代表 O 未達成。文章寫得再漂亮,如果從不出現在搜尋結果中,仍然是失敗;有排名但沒有任何 AI citation,也同樣失敗。
Primary audience persona 取自 ~/.claude/skills/writing-guide/SKILL.md §2,共有三類目標讀者:
| # | 受眾 | 語氣 | 關注重點 |
|---|---|---|---|
| 1 | Architects & Specifiers | 技術精準,引用 NFPA/IBC/ADA 的 section number,並提供對照表 | code compliance,以及在 spec-review meeting 中是否站得住腳 |
| 2 | Building Owners & Facility Managers | 以 ROI 為主軸,強調 TCO 對比、lifecycle data 與 liability framing | 總持有成本、保險與責任風險 |
| 3 | Contractors & Installers | 偏重實作,提供產品對應用的判斷與具體安裝時間數據 | 施工問題、工時與現場排障 |
Audience Shape Decision(Commander 針對每個 candidate 的判斷):
v1 fleet 是 HSW-002 v5.1 的下游消費者,明確重用以下元件,禁止另起爐灶:
| v5.1 元件 | 重用位置(v1 blog fleet) |
|---|---|
/ai-fallback wrapper(call_with_fallback.sh) | 所有會呼叫外部 LLM 的 agent:Research Deepener、Fact Checker、Source Reviewer、Bilingual Publisher |
| P-015 WebSearch-primary pattern(research archetype) | Research Deepener(作為 primary path);/ai-fallback 僅用於 verification/synthesis |
| P-019 NEW-03 forbidden phrase list(7 條) | Fact Checker 的 Anti-patterns(逐字複製) |
| Direction Seed 9-field dispatch template | Blog Commander 透過此模板派遣 7 個 subagent |
| Pilot Dispatch pattern(先做 pilot 再 fan-out) | Blog Commander 在第 2 波並行化前,先讓 Research Deepener 跑 Pilot |
| Principle 7(embedded skill + model invocations) | 所有 agent 的 S 段落都攜帶完整 command format;Skill + Model Invocation Maps 是唯一 source of truth |
4 個 OGSM validator(validate_s_to_m_coverage.py 等) | 首次正式派遣前對本文件執行 |
| G-022 scope-aware polish discipline | Fact Checker 與 Source Reviewer 的 under-delivery escape clause(少而乾淨 > 多而髒) |
| Candidate Collector queue schema(10 fields) | Input contract(唯讀) |
| Reviewer-override pattern(raw model → reviewer 的 anti-pattern pass) | Fact Checker 與 Source Reviewer 重用 2-layer design |
| Brief Layering(Tier 1 ≤150 words + Tier 2 reference) | 所有 agent 都定義了 Tier 1 摘要區塊 |
最終會讀到這篇文章的 practitioner,其實是 fleet 從未見過的人。他們是在某門 HSW 課程把 research 送進 queue 之後,透過 Google 搜尋來到這裡。Blog Commander 的工作,就是確保 6 個下游 agent 全都是為了「那位 practitioner」而工作,而不是為了彼此,也不是為了 queue 內部的邏輯而工作。每一次 gate review 都要回答同一個問題:「如果現在有一位 architect、owner 或 installer 打開這篇文章,他會不會在看到第 2 段之前就停下來不往下滑?」
blog-gate-review-{slug}-waveN.md;audience shape decision 記錄於 queue entry;Pilot 5/5 check PASS 才 fan out;queue state 按 pending → researching → drafting → reviewing → ready_for_human_review 簽名轉換。call_with_fallback.sh;raw gemini / codex CLI 禁用(Principle 7,cf. v5.1 G-001 / G-012 / NEW-02)。.content-scout-queue.md 中 state = pending 的 candidate。Commander 必須對每個 candidate 決定 audience shape。若 research_data 的 factual core 對三類讀者的意義不同,就拆成 3 個版本;若是一個單一故事,且三類讀者都需要同一種表達形式,就寫成 1 篇文章。這個決定要以 YAML block 附加在 queue entry 的 ## Audience Shape Decision 之下,附上 rationale,確保可稽核。/blog/index.html)(b) research_data 的新鮮度(近波次優先於舊波次)(c) SEO/AEO 的複利價值(能與既有文章交叉連結者優先)來排序。priority 邏輯寫入 triage-{date}.md。dispatch-log-blog-{slug}.md 內簽名記錄這次轉換(含 wave ID、timestamp 與 rationale)。blocking-defect flag 並升級交由 Commander 處理。call_with_fallback.sh(依 v5.1 precedent,Principle 7 同樣適用於 Commander)。所有呼叫都必須記錄在 dispatch-log-blog-{slug}.md。blog-gate-review-{slug}-waveN.md 必須在每一波都存在,內容包含:「practitioner present?」(Y/N/Partial)、cited evidence paragraph 與 blockers list。## Audience Shape Decision 的 YAML block 必須附加到每個派遣 candidate 的 queue entry;rationale 至少 2 句,且不得省略。/ai-fallback 時,執行 log 是否存在?(5) Anti-patterns 是否逐字複製自 source agent 的 standard list?每個 check 都要引用具體段落或 line range。dispatch-log-blog-{slug}.md 中完成簽名;未簽名的轉換視為違反 S,deliverable 不算數。call_with_fallback.sh 使用紀錄必須包含 wrapper command、chain、answered model 與 exit code。grep -E '^(echo|gemini|codex)' dispatch-log-blog-{slug}.md 必須回傳 0 hit。call_with_fallback.sh,直接呼叫 gemini 或 codex — INSTEAD: 走 wrapper(Principle 7),全數記錄。如果沒有 Commander 逐一為 candidate 做 audience-shape decision,也沒有 base-layer discipline,fleet 最後通常只會產出兩種失敗結果:(a) 一種「all audiences at once」的模糊大雜燴,沒有 primary keyword cluster,SEO 很弱;(b) 一種過度專門化、人工 reviewer 幾乎無法 augment 的文章,直接違反 base-layer constraint。
讀到成品文章的 practitioner,除非某個 claim 能追溯到 primary source,否則不會相信它。Research Deepener 的工作,就是把 candidate 的 research_data 欄位(通常是一段 200–500 字、逐字摘錄的 course fragment)擴充成 800–1500 字、可直接供部落格使用的材料,並讓每一個 claim 都能和獨立的 primary source 交叉驗證。practitioner 並不會直接看到 Research Deepener 的 deliverable,他們看到的是下游 Article Writer 的版本;但只要 Research Deepener 做了半套 research,所有下游角色都會一起失敗。
research_data 的 course fragment 擴成 800–1500 字、在 claim 層級附 citation 的 blog-ready 材料。/ai-fallback 做 summarization / verification;每個 claim 都要有 first-party URL,否則降級。blog-research-{slug}.md 必須包含擴充材料與 per-claim source URL;超出 research_data 原有 citation 的新 primary source 至少 3 個;Execution Log 要記錄所有 WebSearch / wrapper call。bash ~/.claude/skills/ai-fallback/scripts/call_with_fallback.sh "<prompt>" "gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.5-pro,codex"(僅用於 verification/synthesis)。research_data,辨識每一個 factual claim(regulatory citation、numeric data、case reference、date、mechanism description),建立 claim-by-claim 的擴充表。絕對不能丟掉 queue 內容。Candidate Collector 的 verbatim 規則(v5.1 的 anti-pattern「NOT: fabricate research_data」)在這裡延伸成「NOT: discard or rewrite queue's research_data」。/ai-fallback。/ai-fallback 只用在 summarization 與 cross-verification:當多個 WebSearch 結果需要整合成連貫段落,或某個 claim 需要借助 LLM reasoning 驗證時,才呼叫 bash ~/.claude/skills/ai-fallback/scripts/call_with_fallback.sh "..." "gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.5-pro,codex"。Raw echo | gemini 與 raw codex exec 一律禁用(沿用 v5.1 Rule 8 與 P-015 的 WebSearch 遷移原則)。writing-guide/SKILL.md §2)。每個 claim 都要標註哪一類 audience 會在意,以及原因,供 Article Writer 判斷要走 per-audience 還是 universal 路線。secondary-only,讓下游降級成 estimate language。/ai-fallback call,都要記錄在 blog-research-{slug}.md 的 Execution Log 中,內容包括 query string、source URL 與 result summary。這條 auditor trail 是關鍵紀錄。blog-research-{slug}.md 含:
research_data(不得修改)secondary-only flag/ai-fallback callresearch_data 原有 citation 的新 primary source 至少 3 個(避免落入「只靠 LLM 把文字寫長」的 failure mode)。max(3, ceil(expanded_claims_total / 3))。Execution Log 至少要達到這個數量。/ai-fallback wrapper-call 驗證:每次 wrapper call 記錄 command + chain + answered model + exit code + timestamp。grep -E '^(echo|gemini|codex)' blog-research-{slug}.md 回 0 hit。secondary-only 的降級必須被遵守:凡是標為 secondary 的 claim,都不能在擴充材料中以 definitive statement 方式陳述,必須使用 hedged language(例如 "reportedly"、"according to trade press")。research_data verbatim block — INSTEAD: 完整複製後,在周圍建構擴充。echo | gemini 或 raw codex exec 做任何 LLM 呼叫 — INSTEAD: 只用 bash ~/.claude/skills/ai-fallback/scripts/call_with_fallback.sh "..." "<chain>" wrapper;raw CLI 是 hard failure(v5.1 G-001 / G-012 / NEW-02)。secondary-only flag + 下游 hedged language。如果沒有 Research Deepener,blog 文章很容易退化成「300 字 course fragment + 1500 字 LLM 幻覺補寫」的拼接品,既會被 Google Helpful Content system 降權,也會被 LLM answer engine 判定為內容單薄。Research Deepener 的角色,就是守住「只靠 queue 標題就把文章寫出來」這個 failure mode。
從 Google 搜尋落到這個頁面的 practitioner,必須在前 200 字內就看到自己問題的具體答案,而且這個答案要用他們熟悉的專業語氣來寫(architect、owner、installer 各不相同),並且直接給出他們需要的 code section 或具體數據。之後他們會繼續往下看,是因為下方展開的細節意外地有用;他們會把文章存起來,是因為知道日後還會再回來。而當 Waterson 的業務或現場人員之後要補上自己的 field-experience layer 時,也不需要重寫 base article,因為 hand-off slots 早就預留好了。
blog-draft-{slug}.md(shape=3 時為 -{slug}-{audience}.md)含前載答案、≥ 3 個標籤化的 <!-- HUMAN LAYER: sales-response --> / <!-- HUMAN LAYER: field-experience --> / <!-- HUMAN LAYER: sme-note --> slot;audience 明確寫在 YAML frontmatter;inline internal-link 建議。writing-guide 作為 reference — 檔案讀取,非 skill 呼叫;writing-guide 作 Tier 2 context)。writing-guide §§1–5(Tier 2 reference,不是 skill 呼叫):其中涵蓋產品事實、3-audience 框架、citation 規則、promotional ratio 與 quality checklist。這些是硬約束,不是建議。<!-- HUMAN LAYER: sales-response — append Waterson-specific product-to-application angle here --><!-- HUMAN LAYER: field-experience — append anecdote from field staff or SME here --><!-- HUMAN LAYER: sme-note — append subject-matter expert's thinking process here -->secondary-only flag。Writer 階段不得自行加入新的 uncited claim。<!-- INTERNAL LINK: suggest link to /blog/{related-slug}/ on the phrase "{anchor}" --> 這種 inline 提示。最後由 SEO/AEO Engineer 定案,但種子由 Writer 先根據既有 blog graph(/blog/index.html)埋好。blog-draft-{slug}.md(universal)或 blog-draft-{slug}-{audience}.md(per-audience):
audience: [architect | owner | installer | universal]title、keywords 欄位交叉驗證<!-- HUMAN LAYER: ... --> slotblog-research-{slug}.md claim ID 的 source pointer~/.claude/skills/writing-guide/SKILL.md §5 checklist;並在草稿末尾附上 ## Writing Guide Checklist 區段,列出檢查結果。grep -c "HUMAN LAYER:" blog-draft-{slug}.md 回 ≥ 3。0 hit = base-layer 違規,草稿 reject。<!-- HUMAN LAYER: ... --> slot 給 sales 或 SME reviewer append。universal,在一篇文章中混合 3 類 audience — INSTEAD: 尊重 shape;若 shape = 3 版本,每版聚焦單一 voice。blog-research-{slug}.md 的新 claim — INSTEAD: 需要該 claim 就升級到 Commander,重新開第 1 波做 research supplement,不得發明。O 的 SEO 成效(值得收藏、值得分享)靠的是前 200 字就把答案講清楚;O 的 AEO 成效靠的是 claim-level citation 的紀律;而 base-layer 原則則防止 fleet 產出那種人工 reviewer 根本無法 append 的文章。
如果 practitioner 要在 spec-review meeting 或保險理賠爭議中引用這篇文章裡的某個數字,他必須能用具體來源與年份替這個引用辯護。對這類受眾來說,一個無法追溯來源的數字,和沒有數字幾乎沒有差別。search-engine crawler 與 LLM answer engine 在這件事上的判準其實一致:有 source URL 的事實,才有可能排名、被引用;沒有來源的事實,就會被降級。
blog-review-{slug}-facts.md 記錄 first-party URL;最終草稿不能留下任何 NEW-03 forbidden phrase;under-delivery 要誠實記錄,不能用 padding 掩蓋。bash ~/.claude/skills/ai-fallback/scripts/call_with_fallback.sh "Verify: [number] [claim]. Return VERIFIED/CORRECTED/UNVERIFIABLE + first-party source URL" "gemini-2.5-flash,gemini-2.5-flash-lite,gemini-2.5-pro,codex" + WebSearch 作 Tier 2 backup(不是 Tier 3 optional)。call_with_fallback.sh 回傳 exit 3(chain exhausted),就必須針對同一個 query 執行 WebSearch,並獨立記錄結果。WebSearch 不是 optional fallback,而是 wrapper 失敗時必要的 Tier 2。{"hypothetical blog post", "example.gov", "search for X might yield", "discussion at DHI meeting", "based on industry consensus" (no URL), "commonly cited" (no URL), "count aligns with or is very close to" (no roster)}。該 claim 必須降級為 unverified。under-delivery reason: raw model returned placeholder phrasing / no first-party URL, demoted on anti-pattern scan。不能用 padding 補數。max(3, ceil(numeric_claims_total / 3)) 個真實 wrapper / WebSearch query(比照 v5.1)。4 個 claim 至少 3 個 query;12 個 claim 至少 4 個 query。這是為了防止退化成「Fact Checker 跑 3 個 query 就收工」。blog-review-{slug}-facts.md:
## Under-Delivery Log 區段## Execution Log 要記錄每次 wrapper 與 WebSearch call(query、URL、result summary)max(3, ceil(numeric_claims_total / 3)) query 最低;Execution Log 至少此數。/ai-fallback wrapper-call 驗證:grep -E '^(echo|gemini|codex)' blog-review-{slug}-facts.md 回 0 hit。{"hypothetical blog post", "example.gov", "search for X might yield", "discussion at DHI meeting", "based on industry consensus", "commonly cited", "count aligns with or is very close to"} 視為自動降級為 unverified。call_with_fallback.sh — INSTEAD: 只用 wrapper(Principle 7);raw CLI 是 hard failure。O 的 AEO 成效要求 crawler 能解析出可引用的事實;O 的 SEO 成效則要求 Google Helpful Content scoring 看到的是真實 citation,而不是幻覺內容。只要漏掉一個 hallucinated numeric claim,就可能同時拖垮這兩個目標。
如果 practitioner 想從文章一路追到原始來源,他應該可以在 5 分鐘內做到。這不是因為他信任這篇 blog,而是因為 citation format 讓他可以直接落到 primary document。reference list 要能作為帶得走、用得上的資料,而不只是把 footnote 一股腦倒上去而已。同時,opinion-vs-empirical 的邊界也必須被嚴格遵守,避免讓包裝成 data 的 anecdote 混進來。
/ai-fallback 執行(chain depth ≥ 3,用來避開 v5.1 G-001 的風險);在 raw model output 之上再加 reviewer-override layer;並把 opinion-vs-empirical rule(v5.1 §Source Reviewer)套用到每一個 first-person narrative claim。blog-review-{slug}-sources.md 必須包含與 Fact Checker 的 reconciliation table;100% citation 要做到 URL-verified 或 ID-verified;此外還要處理 pre-2018 version-note flag,以及 single-source ≤ 40% 與 Waterson-material ≤ 20% 的配額控制。bash ~/.claude/skills/ai-fallback/scripts/call_with_fallback.sh "Review all citations in [file]. Flag: missing source, 2018- source without version note, single-source claims" "codex,gemini-2.5-pro,gemini-2.5-flash-lite" — minimum chain depth 3(v5.1 G-001 Gemini Pro hang mitigation)。[Publisher]. [Year]. [Title]. [URL or Standard#].,這正是他們平常已經在使用的形式。empirical-unverifiable,必須 flag,並重寫或移除。例:「In my experience, architects underestimate panic hardware failure rates」屬於 opinion-exempt(沒有 signal);「Recent conversations with AHJ officials in three Midwest jurisdictions suggest submittal review times have doubled since 2023」則屬於 empirical-unverifiable(因為同時觸發 N=3 sample、Midwest geography、review-time metric、doubled directional change、since-2023 boundary)。/ai-fallback output 先檢查機械完整性(URL / date / publisher);接著由 Source Reviewer 獨立檢查 priority-violation:academic-over-primary、pre-2018-source-without-version-note、reference-list-mismatch。raw-layer flag 與 reviewer-override flag 必須在 deliverable 中分層呈現。blog-review-{slug}-sources.md:
blog-review-{slug}-facts.md 對應的 reconciliation table:claim_id / fact_checker_status / source_reviewer_status / agreement / action## Opinion vs Empirical Check 區段,標出每個 first-person claim 觸發了哪些 signalBUDGET-EXCEEDED 升級給 Commander)/ai-fallback call 上(v5.1 G-001 mitigation)— Execution Log 顯示 chain 中 3+ models。/ai-fallback wrapper-call 驗證:grep -E '^(echo|gemini|codex)' blog-review-{slug}-sources.md 回 0 hit。unverifiable_count / total_factual_claims / 5pct_cap / status。超出 cap 時,以 BUDGET-EXCEEDED 升級到 Commander(比照 v5.1 Tier A 規則)。empirical-unverifiable,flag + 重寫或移除。[source needed] 佔位符出貨 — INSTEAD: 首次發現即升級到 Commander;無 source 段落阻擋 reviewing 狀態轉換。AEO 成效的前提,是讓 LLM engine 願意信任文章中的 citation,進而反向引用 watersonusa.ai。只要有一個不可達的 URL,或一個偽裝成 data 的 opinion claim,就足以讓 crawler 判定這是不可信內容。
透過 Google 進站的 practitioner,之所以能在前段排名看到這篇文章,是因為 structured data、internal link graph 與頁面上的 on-page signals 都已針對 search-intent query 做好調校。而提出相關問題的 ChatGPT / Perplexity / Gemini 使用者,之所以會看到 watersonusa.ai 被引用為來源,則是因為 JSON-LD、FAQPage schema 與自然語言 Q&A 區塊,讓 answer engine 可以正確解析可引用的事實。這兩類受眾都不會直接看到 structured data,但他們最終都會因它而被導向這個頁面。
/blog/* 與 /solutions/*;FAQ block 同時作為 AEO anchor。/ai-fallback 做 schema validation + structured-data sanity check。door-site/blog/gate-hinge-buying-guide/index.html。沿用相同的 CSS variable、JSON-LD 結構與 FAQ block 設計,讓一致性持續累積 SEO authority。@type: Article 需包含 headline、description、datePublished、dateModified、author(Waterson)、publisher(Organization)、mainEntityOfPage、about(Thing entities)。可參考既有的 fire-door-insurance-architect-liability-compliance/index.html canonical 結構。@type: FAQPage 需包含 5–8 組 Q&A pair。問題設計要鏡射 architect / owner / installer 真正在 Google 輸入,或在 ChatGPT 裡詢問的內容。FAQ 是 primary AEO anchor,因為 LLM answer engine 通常會先抽取 Q&A pair。/blog/* 文章(透過 cross-link knowledge graph 累積 SEO 複利)/solutions/* 頁面(在合適的位置導流到產品頁)/aia/* CEU 課程(若題目與課程重疊)<link rel="alternate" hreflang="en" href=".../blog/{slug}/">、hreflang="zh-Hant" href=".../blog/zh/{slug}/"> 與 hreflang="x-default"。後續 Bilingual Publisher 會依賴這組設定。/ai-fallback Gemini Flash 做 schema validation:把 JSON-LD block 經由 wrapper 傳給 Gemini Flash,prompt 為:「Validate this schema.org JSON-LD for Article + FAQPage. Return STRUCTURALLY_VALID/INVALID + error list.」並記錄結果。keywords 欄位,交叉檢查草稿是否自然提到 primary cluster 至少 3 次(不能堆疊),以及 cluster variant(複數、形容詞、同義詞)至少 2 次。blog-seo-{slug}.md(structured-data annex),並把最終 HTML 注入草稿:
/ai-fallback Gemini Flash 的結果,必須記錄 wrapper command、chain、answered model 與 exit code。keywords 欄位的實際 search-intent query;FAQ 是 AEO extraction anchor。/ai-fallback Gemini Flash validate;malformed Article schema 會悄悄擊沉 AEO extraction。SEO 成效在這一層被直接工程化,因為這是第一個以 crawler 行為,而不是 practitioner 閱讀體驗,作為主要判準的 agent。AEO 成效也同樣集中在這裡,因為 FAQPage JSON-LD 是 LLM answer engine citation 最具槓桿的單一錨點。
繁體中文讀者(台灣門五金專業人士)與 web-AEO 讀者(LLM crawler),都必須在英文讀者看到文章的同一時間,以各自適合的格式收到內容:zh 版本要是自然的台灣專業語氣,web 版本則要帶有 AEO 最佳化的 schema。三個版本都必須 stage 進 door-site repo、通過/security-check,然後等待人工 reviewer 補上後續 layers,在任何人執行/upload之前都不能提前發佈。
door-site/blog/{en,zh,web}/{slug}/index.html,執行 /security-check,完成 stage commit,但不 push。/publish-article skill template;en→zh 依自然語氣規則翻譯(依 writing-guide §2 與 door-site CLAUDE.md);web 變體則重用 en 內容再做 AEO tuning;stage 前一定要先跑 /security-check。/security-check 必須 PASS;commit 要 staged,但不得 push。/security-check(stage commit 前強制)。/ai-fallback Gemini Flash 做中文自然語音 pass。/publish-article skill 的 HTML template(~/.claude/skills/publish-article/SKILL.md Step 3)。沿用 CSS variable、structured-data 位置與 FAQ 區段格式。路徑為:door-site/blog/{slug}/index.html。<html lang="zh-Hant">door-site/blog/zh/{slug}/index.htmldoor-site/blog/web/{slug}/index.html。內容以 en 版為基礎,再重排成 FAQ block + Article schema 置前的形式。door-site/sitemap.xml 新增 3 個 URL,priority 設為 0.9。/ai-fallback 進行中文自然語氣 QA:使用 Gemini Flash,prompt 為:「請閱讀這篇繁體中文文章。它的語氣是否自然,像是台灣門五金專業人士會寫出的內容,還是仍帶有機器翻譯感?請以 1–5 分評分,並列出任何僵硬不自然的措辭。」若分數低於 4,就必須修改。/security-check 為強制步驟:在 stage commit 前必須執行 /security-check skill。若出現密鑰洩漏,commit 就必須被阻擋。git add + git commit 的訊息中要含有 [BASE LAYER — awaiting human review before push]。不得執行 git push,也不得執行 /upload。/ai-fallback Gemini Flash 評分);log 記錄在 blog-publish-{slug}.md。/security-check log 必須顯示 PASS;blog-publish-{slug}.md 需包含 timestamp 與結果。sitemap.xml, llms.txt, llms-full.txt 更新。blog/index.html 的列表已更新。git status 顯示 staged),且訊息含有 [BASE LAYER — awaiting human review before push]。git push;驗證方式為確認 remote 相對 local HEAD 沒有變動。/ai-fallback wrapper-call 驗證:grep -E '^(echo|gemini|codex)' blog-publish-{slug}.md 回 0 hit。ready_for_human_review(Commander 簽名)。/upload 或 git push — INSTEAD: stage 後停;human reviewer 必須先 append layer。fleet 的產出是 base-layer;跳過 human review 直接 push 違反 base-layer 原則。<html lang="zh-Hant"> 但技術術語依 door-site 慣例保留原語言。/ai-fallback Gemini Flash 評分 ≥ 4;否則修改。/security-check — INSTEAD: 每次進行 staged commit 前都必須強制執行;JSON-LD metadata 中洩漏密鑰是真實的 failure mode。中文讀者本身就是真正的 practitioner,因此他們帶來的 SEO lift 同樣會持續累積(Google 會尊重 hreflang)。web/AEO 變體則是 LLM answer engine 抓取 schema 的主要位置。DO-NOT-PUSH 的紀律,就是把 base-layer 原則落實成操作規則;human reviewer 是 fleet 輸出與 live site 之間不可跳過的 gate。
| 波次 | Agent | 輸入 | 輸出 | 狀態轉換 |
|---|---|---|---|---|
| 第 0 波 | Blog Commander | .content-scout-queue.md 中待處理的 candidates |
Audience Shape Decision + Direction Seed + Pilot brief | pending(未變) |
| 第 1 波 | Research Deepener | Queue entry 的 research_data + Direction Seed |
blog-research-{slug}.md(擴充為 800–1500 字) |
pending → researching |
| 第 2 波 | Article Writer | blog-research-{slug}.md + writing-guide §2 |
blog-draft-{slug}.md(含 HUMAN LAYER slot) |
researching → drafting |
| 第 3 波 | Fact Checker + Source Reviewer(並行) | blog-draft-{slug}.md |
blog-review-{slug}-facts.md、blog-review-{slug}-sources.md、reconciliation table |
drafting → reviewing |
| 第 4 波 | SEO/AEO Engineer | Reviewed draft + queue keywords | blog-seo-{slug}.md + 已注入 JSON-LD 的最終英文 HTML |
reviewing(第 4 波為純追加階段,不做轉換) |
| 第 5 波 | Bilingual Publisher | 最終英文 HTML | 3 個 HTML 檔(en/zh/web)+ sitemap / llms.txt 更新 + 已暫存的 commit | reviewing → ready_for_human_review |
| 第 6 波 | 人工 reviewer(不在 fleet scope 內) | 已暫存的 commit | 補上 HUMAN LAYER 內容 → /upload → Vercel deploy |
ready_for_human_review → published |
Fleet 在 Gate 6 沒有 agent。 那是明確的人工作業邊界。只要把 Gate 6 納進 fleet,就會直接違反 base-layer 原則。
疑慮:v5.1 的 HSW fleet 有 Project Architect Advisor(Gemini Pro persona)擔任 external reviewer,但 v1 blog fleet 沒有。風險是 audience voice 可能慢慢漂移成過度通用的語調,卻沒有外部視角可以抓出來。
可能修正方向(暫不實作):(a) 在第 4 波增加 Audience Persona Reviewer agent(透過 /ai-fallback 使用 Gemini 2.5 Pro);(b) 以 shared reference 方式重用 v5.1 的 Project Architect Advisor;(c) 以 lightweight Fresh Eyes Reviewer 取代。
監控條件:前 3 篇中,是否有 ≥ 1 篇在 Gate 6 被人工 reviewer 抱怨「語氣過於通用」?若是,v2 加 agent。
疑慮:v5.1 有 Performance Supervisor 與 Quality Auditor 作為獨立的測量層,但 v1 blog fleet 沒有;7-agent 結構把測量責任塞進了 Blog Commander。風險在於 Commander 無法真正稽核自己。
可能修正方向:(a) v2 增加 Performance Supervisor,重用 v5.1 pattern;(b) 指派某個 agent(例如 Source Reviewer)兼任稽核;(c) 每批次執行 validate_s_to_m_coverage.py,作為自動化替代。
監控條件:前 5 篇中 ≥ 2 篇有可測量的 gap Commander 沒抓到?若是,加 agent。
疑慮:Commander 目前獨自決定要做 1 個版本還是 3 個版本。風險是 Commander 可能系統性偏好 1(工作較少)或偏好 3(可見產出較多),進而讓 fleet 失衡。
可能修正方向:(a) 每次 Audience Shape Decision 都透過 /ai-fallback 加一個 Gemini Flash 第二意見;(b) 追蹤決定分布,只要某一側超過 80% 就發出警示;(c) 定期進行 human audit。
監控條件:10 篇後,1-article / 3-article 分布是否合理(不超過 80% 偏一方)?
疑慮:ogsm-framework SKILL.md 明確要求,在首次正式生產前,必須強制執行 Layer 2.5 dry-run 派遣,以驗證每個 embedded skill 呼叫都能真的跑通。v1 草稿目前還沒做這件事。
可能修正方向:Commander 在第一次正式派遣前,先對 7 個 agent 全部跑一次 Layer 2.5 dry-run。預估成本約 7 分鐘。
監控條件:首次生產是否出現「parameter X missing」或「不知該呼叫哪個 skill」錯誤?若是,Layer 2.5 被不公平略過。
疑慮:「不得產出 sealed 文章」這條規則,目前仍仰賴 Article Writer 自律加上 Commander 的 gate review。技術上,Writer 完全可以輸出 <!-- HUMAN LAYER: sales-response --> 這種標籤,卻在後面偷偷填入實際 sales copy,等於破壞原意。
可能修正方向:(a) 建立 Grep 規則:每個 HUMAN LAYER comment 後 3 行內必須為空,或只允許 <!-- TODO: human reviewer fills in -->;(b) 建立 human reviewer feedback loop,若他們常發現 slot 已被預填 placeholder,就補上自動檢查。
監控條件:前 5 次 human reviewer append — 他們是否需要先刪除 slot 中的內容才加自己的?若是,加 grep 規則。
疑慮:目前中文自然語氣檢查只依賴單次 /ai-fallback Gemini Flash 分數。若出現細微的文化誤譯(例如繁體中文文章混入中國大陸用語),很可能會被漏掉。
可能修正方向:(a) 以 Gemini Pro 搭配台灣在地化 prompt 做第二層 persona check;(b) 追蹤不得出現的 glossary term(建立大陸用語黑名單);(c) 定期做人工作業 spot-check。
監控條件:中文讀者是否抱怨過大陸用語漂移?若是,加 glossary check。
這 3 篇文章是 Blog Writer Fleet V1 的第一輪 pilot 產出。V2 版機器人的產出將在這裡對照比較。