跳轉到

Changelog

Last 14 days of substantive changes. Older history lives in git log.

Format: YYYY-MM-DD · category · 1-line summary (commit-sha).


2026-10-02

  • content / first-use terminology · 三語在九組已查核頁面補齊 52 組術語/頁面組合的首次全稱與簡短意思,包含微調方法、檢索指標及圖中先出現的 CLI/MCP/訓練方法。原標題 anchor、程式碼、來源 URL、圖檔與資源事實保留。新增有限範圍的讀者可見回歸案例;Stage 1 與術語表六個字元上限只提高到實際新增說明的長度,不宣稱全站所有縮寫已查完。

  • release preparation / v2026.10.02 · 三語發布摘要整理已合併的模型、個人 Agent、託管協作與 Memory 更新。也記錄官方來源豁免界線、封存課程提示、Sentry 來源搬移、目前無法使用的 W&B 推薦暫移除與文件建置依賴與寬表格 PDF 修正。未合併的專案提案不列入。本筆是發布準備;正式版本仍須通過完整健康掃描、三語 PDF 查核與 release Environment 批准。

  • release tooling / PDF tables · 三語 PDF 的八欄以上表格使用 A4 橫向頁,保留原本 8.5pt 表格字級與內容。發布檢查新增每頁文字邊界檢查,阻擋超出紙張的裁切;字格重疊、圖片與閱讀效果仍須看實際渲染。

  • release health / unavailable course entrance · W&B AI Engineering: Agents 舊入口回傳 404,候選官方入口在查核環境與讀者端目前皆無法開啟。三語選課與資源表暫移除推薦,維護說明保留原因與可重新評估條件,不宣稱永久停課。其餘 11 筆課程的 URL、說明與評分不變;群組 rowspan、fact pack、reader-UX 與回歸測試同步更新,全課程原查核日期不改。

  • content / Stage 1 / model update · 三語將 Sol 代表型號更新為 gpt-6.1-sol。依官方文件改用 US$0.10/百萬快取讀取 token。工具呼叫須用 Responses API。Gemini 詳表加入 4 Argon 的 Fairwind 限制開放、公告輸出上限與未來介紹價。保留目前可實作的 3.8 Flash。不猜公開 API ID,也不把供應商評測當本專案結果。GPT/Gemini 個別查核日期、來源與回歸測試同步更新。全表原日期與 Ollama 起點維持不變。

2026-09-28

  • content / Stage 1 / Claude Sonnet 5.5 · 依 Anthropic 官方模型與價格頁,三語選型主線、18 家族詳表和價格練習改用 claude-sonnet-5-5(1M context、128K 最大輸出,Claude API 每百萬輸入/輸出 token 為 US$2/US$10,快取讀取 US$0.20)。簡單 API 起點同步更新;跨章工具實作暫留仍可使用的 Sonnet 5,標明升級需先檢查工具指定與參數差異,並改為按區塊類型讀取文字,避免 thinking 區塊造成錯誤。只重新查核 Claude 一列,沒有把全表日期誤寫成今天;fact pack、reader-UX 規則、測試計畫和回歸測試同步更新。同時修正 Content Health issue #286 指出的三語 Llama 官方文件入口誤導向首頁。

  • content / archived course status · 依 GitHub 官方 API 查核,anthropics/courses 已封存;Stage 1/2/3 三語資源列保留原連結、順序與五星編輯推薦,但明示它是舊範例,實作應對照同表現行 Quickstart、文件或 Cookbook。移除 Stage 2 錯誤的「維護中」描述,加入九處回歸檢查。

2026-09-27

  • content / resources / Agent memory · 三語 Memory layer 加入 deja-vu(MIT):直接用 coding agent 已寫在磁碟上的 session 檔案做 episodic memory。明確區分預設、不需 embedding 的詞彙檢索(BM25)與可選的 deja embed 語意召回,並註明設定遠端 embedding 端點時,已遮蔽憑證的索引文字會送到該端點;本機 Ollama 或 LM Studio 則不離開本機。Memory layer 群組列數與 rowspan、reader-UX 列數測試同步更新;重新查核全部 262 個仍被引用的 repo 並更新機器快照。

2026-09-23

  • content / Stage 1 / GPT-6 models · 官方 API 文件已列出 GPT-6 Sol 與 Luna;三語選型主線及 18 家族詳表同步更新型號 ID、context、Standard 輸入/快取讀寫/輸出價格和長上下文計費條件。GPT-5.6 Terra/Luna 不再列作現行推薦;全表原查核日期與本次 GPT 查核日期分開標示,更新官方來源與回歸測試,初學者的 Ollama 起點維持不變。

2026-09-22

  • content / Stage 1 / Agent models · 三語模型詳表由 16 增為 18 家族:按官方 API 規格加入 Grok 4.7 與 MiMo V2.6 Pro;更新 Claude Opus 5.5 的型號與價格、DeepSeek V4.1 Flash 的新 ID/尖峰離峰價格與舊名界線、Muse Spark 1.3 的 Preview/Standard/Contributor 方案,並區分 Muse Glimmer 開放權重與個人 Agent 產品。Gemini 3.8 Live 只作語音 Agent 選讀;MiniMax M3 補 cache 與長上下文價、Yi 改列歷史,不宣稱供應商 benchmark 為跨模型排名。繁中、簡中、英文事實標記與回歸測試同步更新;可見選模型主線、必讀、精選資源、五星與完成條件未收合。

  • content / everyday-user route / personal Agent · 三語日常使用者路線短介 Meta Muse 在美國逐步開放的個人 Agent,明確區分 Muse 產品、Muse Spark API 模型和 Muse Code,提醒連接帳號與重要動作須由人確認。未新增第三方 GitHub 專案,也未更動其他 Stage 或概念圖。

  • release health / links and repositories · 發布前完整掃描修正 Strands Agents 官方 quickstart 的 404 舊路徑、將 Open Slide 三語目錄連結改成現行 open-slide/open-slide,並移除已更名為 Citra、目前低於 1,000 GitHub stars 的舊 PDF 推薦及無來源速度比較。重新查核 261 個仍被引用的 repo 並更新機器快照;原有編輯星等不當成 GitHub stars。

2026-09-19

  • content / Stage 1 / typed decisions · 依 TypeSafe AI 官方文件與發布說明,三語新增 Jev:先用白話把它定位成不寫自由文字的型別化決策模型,再說明 Choice、Score、Noul、機率、門檻與 fallback。完整模型表由 15 家增為 16 家,列出 Jev 1.13、jev-1.13.0/jev-latest、TypeSafe direct 的 64K request/32K state 加最長 question 與 $0.042/百萬 input token;Cloudflare 的 typesafe/jev route 另列 32K context,價格以其 dashboard 為準。服務仍為 early access;不把 Jev 寫成聊天 LLM,也不讓高風險動作只靠模型機率自動通過。

  • governance / resource curation · 新收錄的第三方 GitHub repo 統一要求查核時至少 1,000 stars;這只是進入候選名單的門檻,仍須檢查教學角色、維護、License、安全與相關性。官方文件、標準、model card 與不可替代的 canonical source 不套第三方 repo 門檻,公開頁面也不保存會漂移的 star 數字。三語 MCP/Skills 目錄移除舊的「不使用 stars 門檻」例外,PR link audit 會標出低於 1,000 stars 的新 repo,但仍只做初評,由 maintainer 判斷官方來源例外與最終是否收錄。

2026-09-14

  • site / rendered Markdown · 修正 Stage 6 五組範例共 15 份三語頁面未啟用 <details markdown="1">,造成收合區塊裡的粗體、清單、行內程式碼與連結被當成純文字的問題;CLI 工具表與 Stage 3 摘要裡不會由 Markdown 解析的反引號改用 <code>,另修正一筆舊 CHANGELOG 的不平衡粗體記號。check-rendered-site.py 現在會從實際 HTML 阻擋可見的 **...**,以及 details 裡未解析的清單、連結、標題、引用與行內程式碼,同時排除程式碼範例。

  • release / v2026.09.14 · 將三語 README 動畫入口收斂、Stage 6 顯示修正、Stage 7 上線工程基礎重整,以及 Stage 7.5「有證據才增加複雜度」進階選讀整理成同一份三語正式版。Release workflow 會鎖定合併後的 main SHA,重跑內容、連結、圖片與三語文件 gate,建置並驗證繁中/簡中/英文三份 PDF,再經 release Environment 後發布。

2026-09-13

  • content / Stage 7.5 / advanced choices · 三語 Stage 7.5 改為「有證據才增加複雜度」的進階 reading-map,章首保留返回 Stage 7 的入口,不再重教 Harness、Loop、Graph 與 Eval 基礎。可見主線把 Evaluator–Optimizer/Agent-as-Judge、Failure Injection/Chaos Eval、Autonomy Gradients/Trust Layers、Model–Harness Fit 放進一張 2/2 真正合併的核心詞表,先給白話與技術界線,再用四段補充限制與來源;三語 style guide 同步把「四詞以上/兩組以上」定為新建或輪到閱讀體驗重整頁面的可見合併表標準,其餘既有頁面依 stacked PR 順序遷移。其後短表保留 Parallel Exploration、Hierarchical Delegation、Multi-Agent Handoff、Plan–Act–Reflect、Dynamic Workflows;必修閱讀、五筆精選、24 筆 5/5/5/5/4 合併資源表與完成條件均保持展開。Dynamic Workflows 依 2026-09-13 官方文件重查,移除已無必要的舊最低版本說法,保留方案、v2.1.203+ ultracode、16 concurrent/1,000 total 與安全限制。兩組三語 1672×941 亮色 PNG 以同一構圖呈現「失敗證據 → 最小做法」及 Model–Harness Fit;舊 concept-cluster、reading-decision-tree 六張無引用圖由 Git 歷史保留。PNG inventory 由 70 降為 67,總量由 85,297,164 降為 81,574,946 bytes,圖片容量 gate 同步下調;本層維持 stacked Draft PR,未經使用者確認不合併或清理 branch。

  • content / Stage 7 / production concepts and Eval placement · 三語 Stage 7 改名為「Agent 上線工程:可測、可看、可停、可恢復」,用同一個「查三個來源、整理摘要、送出前問人」案例,依 Agent Harness → Agent Loop → Workflow Graph → Eval → Observability → Approval/Checkpoint/Resume/Recovery 漸進講解;19 個核心詞以單一 6/7/6 合併表保持展開,Grader 正式放在 Trajectory 與 Evaluation Harness 之間,並刪除表格前重複的 19 行速記。必修閱讀、21 筆五星資源、練習成果與完成條件也不收合。Eval 固定先教 Outcome,再把 Eval Case 拆成 Input、Initial State、Success Criteria、Forbidden Actions、Optional Reference Answer、Grader、Case Metadata,之後才教 Eval Suite、Reviewed Eval Set 與 Golden/Reference Set 外部名稱,明確阻擋把 Golden Set 誤當 input、訓練資料或 Few-shot。新增兩組三語 1672×941 亮色 PNG;刪除九張已無正文引用的舊控制問題、Graph 與 Eval 圖,PNG inventory 由 73 降為 70、總量由 89,659,368 降為 85,297,164 bytes,圖片容量與 rendered-site gate 同步下調。README、Glossary、Roadmap、Stage 6 出口、導覽與六組 Stage 7 範例只同步新章名/責任說法,既有深連結由相容 anchor 保留;Stage 7.5 去重留給下一層 stacked Draft PR。

  • reader UX / README banner links · 三語 README 的 banner 下方移除重複的靜態 PNG 與文件站捷徑,文件站仍可從下方徽章與手機閱讀提示進入;動畫 SVG 本身在不播放時仍顯示完整構圖,PNG 也繼續供文件站減少動態/無 JavaScript fallback 與三語 PDF 使用。

  • release health / unavailable hosted MCP · 正式發布掃描確認 YIELD INTELLIGENCE 的 /yield、/yield/mcp 與 /pricing 皆回傳 404;三語 MCP 精選目錄移除目前無法使用的 hosted service,相關 0-reference repository snapshot 一併刪除,總數由 263 改為 262。GitHub repository 仍未封存且 README 仍宣稱服務 live,但教材以實際端點結果為準,不保留失效入口。

  • release / v2026.09.13 · 將 v2026.09.10 之後已合併的角色分流動畫試版、三語貢獻契約、Stage 7 Eval 基礎與可執行 Eval 證據整理成同一份三語正式版;Release Notes 明列舊角色圖三語文字尚未完全對齊,校正前以保持展開的角色表為準。Release workflow 會重新鎖定 main SHA、執行完整內容與連結健康檢查、建置並驗證繁中/簡中/英文三份 PDF,通過 release Environment 後才建立 tag 與發布附件。

  • examples / Stage 7 / executable Eval evidence · 02-eval 從寫死在 Python 的 5 題示範改為 8 題版本化 JSON(5 題 development、3 題 holdout),Ollama 與 Anthropic 共用同一資料與 provider-neutral runner。CLI 預設只跑 development 一次且不寫檔;讀者可明確選 --split、1–20 次 --trials、--save-report 與 --baseline。報告保存 dataset version、split、provider、model、逐次與分類結果、失敗案例及 improved/same/regressed;baseline 或 dataset schema 不相容時會在任何模型呼叫前停止,同一路徑也不可同時當 baseline 與新報告。空輸出一律失敗,兩條 provider 路徑的 LLM Judge 都只接受完整 PASS/FAIL。三語 README 直接教讀者修改 eval_cases.json,必讀、五星資源、核心詞與成功檢查維持展開;離線測試不連網、不讀 API key。

  • content / Stage 7 / Eval foundations · 三語 Stage 7 在進入條件前加入可見的九個 Eval 基礎積木,以真正合併的 3/3/3 rowgroup 分清 Case/Task、Suite、Golden/Reference Set、Reference Solution/Criteria、Trial、Grader、Baseline、Regression 與 Holdout Set;Golden Set 明確不是訓練資料或 few-shot 範例,開發案例與凍結 holdout 分開使用,回歸判斷需依多次 trials、預先門檻與失敗複查,不因一次隨機失敗就阻擋發布。Paper Summary Bot 與 Capstone 同步記錄 dataset version、split、grader、trial 次數與 baseline,並以 development/holdout 分割避免邊調邊偷看考卷。新增三語同版亮色 Eval 證據迴圈圖、完整 Glossary 定義、官方 Anthropic/OpenAI 來源、reader-UX/內容 regression 與 2026-09-13 freshness fact pack;圖片 inventory 實測為 73 張、89,659,368 bytes,容量 ceiling 僅保留 2% headroom。必讀、精選資源、核心詞及完成條件仍保持展開。

  • governance / trilingual contribution contract · 貢獻指南、PR template、角色路線 DESIGN 與 launch checklist 不再拒收簡中,也不再要求以會自然漂移的 GitHub stars 當新增資源欄位;公開教材改為繁中先定稿、英文與簡中同一 PR 同步,三語概念、URL、數字、評分與安全限制一致。過時資源回報改走 repository freshness 證據。同步把 CLAUDE.md 的 2026-05 課程快照與已解決 follow-up 收斂為現行課程契約,將 docs/TESTING_PLAN.md 的 28/30 明確標回歷史批次,並修正已完成的 Stage 6 executable-hardening 狀態;2026-09-13 實際 inventory 為 58 個 scripts/test_*.py 模組、1,145 個可收集測試,後續仍以 Required gate 與即時 collection 為準。

2026-09-10

  • reader UX / role diagram draft · README 下方三語角色分流圖沿用原版構圖、配色、字型與圖示,只讓五個角色圖示輪流輕動;18 秒循環,文字、卡片與接線固定,16–18 秒完全靜止。新增可重製產生器與原畫雜湊,三語 SVG/同版 PNG 共 2,596,276 bytes(原三張 PNG 共 3,176,510 bytes),不提高容量上限。文件站保留 lazy/async、圖片及 caption 原圖入口、三語停止/播放與減少動態;無 JavaScript、靜態入口與 PDF 使用 PNG。同步更新 DESIGN、三語 style guide、來源紀錄及測試。本次只作 Draft,不合併或納入 Release;舊英文角色名稱等三語文字差異需在採用前校正,舊 learning-map 的順序問題也尚未動畫化。

  • release health / resources · 正式發布的全站掃描發現 PleasePrompto/notebooklm-skill 當日已封存,以及 Graphthulhu 原入口回傳 404。三語 catalog/Cookbook 將前者明確列為歷史範例、不再推薦新流程使用;後者移除失效連結但保留歷史名稱、錨點與評分,授權改標目前無法核對。同步移除 snapshot 中不再有正文引用的單筆 Graphthulhu 記錄,數量改為 263;其餘記錄與查核時間不動。保留原編輯星級,不新增替代專案,也不把 403/429 當成失效。三語 Release Notes 同步記錄修正。

  • release / v2026.09.10 · 使用者批准 PR #256 的原版 Banner 動畫合併與發布;準備同一 calendar tag 的繁中、簡中、英文摘要與三份 PDF,同步引用版本。PDF 操作範例與三語摘要測試改讀發布清單中的版本,測試亦支援不同變更共用同一來源連結。三語 Notes 同步記錄 GitHub 減少動態偏好尚未確認,以及下方舊學習地圖的 Track A 順序/Stage 7.5 待修問題;本版不把舊圖動畫化,也不納入其他 PR。下方角色分流動畫另作試版審查。

  • reader UX / README / animated banner experiment · 三語 README 頂部以自包含 SVG 內嵌各自原版插圖,加入 18 秒循環的路線光點、節點外框及代表性圖示動作,不重畫字體、圖示、配色、構圖或底部四格。每語言 13 個裁切區域重用同一底圖:CLI 游標輸入、工具輕轉、Hub 箭頭旋轉、清單確認與角色回饋;活動時蓋住原位置避免重影,文字與卡片固定,最後 2 秒完全靜止。沿用 1672×941 畫布、共用基礎、兩條 Track、Stage 5/8 Hub 與五條角色路線;三語路線順序與動畫時間相同,覆蓋層依各自原圖接線對齊。原圖以 WebP quality 95 高品質壓縮後內嵌,再解碼成同版 PNG;六個檔共 2,756,321 bytes(原三張 PNG 為 3,733,651 bytes),未提高容量上限,圖示動作不改靜態 PNG。新增靜態圖與文件站入口、停止/播放、減少動態與無 JavaScript 的靜態 fallback、手機分流提示及 PDF 的 PNG 替換;圖片 gate 納入 SVG 與靜態引用,同步更新 DESIGN、三語 style guide、來源紀錄與回歸測試。原以 Draft PR 提供檢查,使用者現已批准合併與發布;下方學習地圖、角色圖與章節正文不在本次修改內。

2026-09-08

  • maintenance / GitHub Pages / deployment reliability · 將官方 actions/deploy-pages 從 v5.0.0 更新至 v5.0.1,並繼續鎖定完整 commit SHA;新版為部署狀態輪詢加入 backoff 與 jitter,降低暫時性服務問題造成的重試壓力。PR 的 Required gate、dependency review 與合併後 Pages 部署皆通過。(f9213cb)

2026-09-04

  • content / Stage 1 / current model guide · 依 15 個模型家族的官方模型、價格、公告或 model card 重新查核三語主流模型表:OpenAI 推薦欄更新為 GPT-6 Astra,並保留 GPT-5.6 Terra/Luna 的一般與省成本路線;清楚標示 Astra 仍分批開放、1.05M context、128K 最大輸出、$10/$50,以及超過 272K 輸入後整次請求的 2× 輸入/cache 與 1.5× 輸出費率,GPT-5.6 Sol 則仍可用但未列在目前推薦型號欄。同次查核也把 Gemini 更新為穩定版 3.8 Flash、DeepSeek V4 改為現行峰谷價與 384K 最大輸出、Hy3 補上 256K 與規格來源並將舊 preview 改為已下線、MiniMax M3 改列開放權重且標明永久 50% API 折扣與 MiniMax Community License;Stage 1 freshness fact pack 與回歸測試同步更新至 GitHub API UTC 2026-09-04。(985c03b)
  • content / Stage 4 / AI gateway · 將 Bifrost 與 LiteLLM 並列為 AI gateway 學習資源,說清楚 gateway 負責統一模型入口、routing、fallback 與 load balancing,不是替 Agent 決定下一步的 Agent framework;開源與 enterprise 功能邊界分開標示。(dce3048)
  • maintenance / MCP catalog / archived resource · 三語資源表將已封存的 Graphthulhu 改列為歷史學習範例;保留原有 ⭐⭐⭐ 編輯推薦度,同時明確提醒新專案應選擇仍在維護的替代方案。(a3b29b1)

2026-09-01

  • content / Stage 1 / Claude models · 依 Anthropic 於 2026-09-01 發布的官方公告與模型頁,三語主流模型表更新為 Claude Fable 5.1(claude-fable-5-1)與 Claude Mythos 5.1(claude-mythos-5-1):兩者皆為 1M context、128K 最大輸出、$10/$50(每百萬輸入/輸出 token),cache read 降為 $0.25。教材明確區分 Fable 5.1 一般可用;Mythos 5.1 是同一模型,但只提供給通過審核的資安與生命科學使用者。Stage 1 freshness 查核日與官方來源、專案模型白名單、Release Notes 及 citation 版本同步更新。

2026-08-31

  • release / Draft verification / tag order · 修正首次發布時 Draft Release 尚未建立遠端 tag,驗證步驟卻先抓 tag 而失敗的順序問題:Draft 階段改為核對 GitHub API 回傳的 target_commitish 是否等於鎖定的 main SHA;只有正式發布後才抓取 tag 並再次驗證 tag SHA。重跑既有 Draft 時也會把 target 重新鎖回同一 SHA,不會跳過附件、三語 body 或人工 Environment gate。
  • maintenance / researcher route / official source · 三語研究人員路線的 DVC command reference 改用目前會直接回應的官方 doc.dvc.org/command-reference,不再繞過已重新導向且容易被 rate limit 的舊入口;學習順序與說明不變。
  • maintenance / Stage 1 / official source · 三語 Llama 列不再指向已搬遷的 ai.meta.com/llama/get-started,改用重新導向後的 Meta AI 現行開發者文件;freshness gate 會阻擋舊入口回歸,模型內容與推薦定位不變。
  • maintenance / setup guide / product identity · 三語 Setup Guide 將已更名的 Windsurf 更新為現行 Devin Desktop(原 Windsurf),入口改用官方 devin.ai/desktop,並說清楚它是桌面 Coding Agent/IDE 介面,不只是籠統的 AI editor;推薦度維持不變。Setup Guide 的官方來源包與查核日期同步更新,freshness gate 會阻擋舊 windsurf.com/editor 入口回歸。
  • release / PDF / table typography · 正式三語 PDF 的表頭與儲存格不再沿用正文的任意斷字規則,英文 Desktop、Recommendation 與一般欄位文字會保留完整單字;Release validator 也會阻擋兩個已知的表頭跨行碎字重新出現。
  • maintenance / setup guide / link health · 三語 Setup Guide 將 Gemini for macOS 的失效網址修正為 Google 官方現行下載入口 gemini.google/mac;產品定位、推薦度與其他資源不變。
  • release / trilingual PDF / guarded publishing · 建立單一來源的三語正式 Release 流程,繁中、簡中與英文不再各自維護容易漂移的頁面清單:release/pages.yml 固定 28 個入口,包含 Stage 0–8、Stage 7.5、A1–A3、五條角色路線、walkthrough、Capstone、Setup、Glossary、Resources、Advanced RAG、Agent Memory、CLI 與模型訓練選修;工具會推導三語檔名,阻擋缺頁、順序、H1 或外部 URL 漂移,並把正文收合內容展開到 PDF。release/notes.yml 以穩定 change ID、同序三語文字與共用連結產生一份 Release body。新的手動 workflow 以 GitHub API UTC 日期驗證 vYYYY.MM.DD(-N)、鎖定 main SHA、重跑完整內容健康與文件 gate、建置並抽字驗證三份固定命名 PDF;只有通過 release Environment 後的 publish job 具有局部 contents: write,且會先建 Draft、驗 tag/SHA/三份附件/三語 body,再發布。本機 Ubuntu 24.04 container 已用 Pandoc 3.1.3 + WeasyPrint 61.1 真正產生繁中 26,887,670、簡中 26,200,059、英文 25,944,123 bytes PDF,Poppler 驗證三份各有 28 個 heading;封面、Stage 0、Stage 5、Stage 7.5/表格與完成卡抽樣清楚,遠端裝飾圖不進 PDF,本地教學圖保留。release.yml 的 GitHub artifact/Environment/Draft → publish 端到端證據仍須在本工具 PR 合併後取得,不把本機 smoke 寫成已發布。
  • content / homepage / AI Agent definition · GitHub 與文件站三語首頁不再把 AI Agent 籠統寫成「程式」,改為能為了人的目標,自己判斷下一步並採取行動的 AI 系統:白話主線說清楚它可以自動替人完成工作,但只能在人給的規則與權限內行動;人先給目標,Agent 會看狀態、選下一步、必要時使用工具,再依結果繼續、修正、停止或交還控制權。名詞表保留正式邊界,明列一次回答的聊天機器人與每步固定的腳本不一定是 Agent。OpenAI 與 Anthropic 官方 Agent 定義於 2026-08-31 交叉查證,三語用同一組來源、目的、行為與非 Agent 邊界。
  • resources / mobile table / live acceptance · 修正簡中 Resources 五欄精選表在 320 px 把整頁撐寬 22 px 的問題,同時保留可讀欄寬:三語表格外層加入可鍵盤聚焦、具語系標籤的水平捲動區,表格仍直接展開,16 筆 URL、rowgroup 與五星編輯評分完全不變;CSS 讓表格保留 44 rem 最小欄寬,不再把字硬壓成直排。前一版部署後以 231 個 sitemap 頁面、14,574 次內部連結(299 個唯一目標)、3,358 筆三語搜尋資料與 12 組頁面/viewport 做線上驗收,確認唯一 404、路徑逃逸與內部搜尋洩漏皆為 0,三語 metadata、44 px 控制與鍵盤 details 全數通過;新 Pages SHA ae697ba1fce4ec15b4d4c63ee6d635dfcd4f852a 上的繁中、簡中、英文 Resources 另以 Chromium 複驗 320/375 px,六種情況的整頁 overflow 全為 0,內層表格仍可鍵盤水平捲動,結果已補記於 Issue #215。
  • site / rendered links / mobile accessibility · 把公開網站從「Markdown build 成功」提升為「實際產出的 HTML 也必須可走、可搜尋、可切換語言」:公開 build 不再整包發布內部維護文件,只納入正式入口、CSS、核心頁面與 examples README;HTML hook 會把本地 Markdown、目錄、跨語言與未公開檔案連結改到正確網站路徑或 GitHub 原始頁,並為繁中、簡中、英文輸出精確 lang 與 zh-TW/zh-Hans/en/x-default 四組 hreflang。新增 rendered-site gate,阻擋內部 404、維護文件滲入搜尋、錯誤語系 metadata 與缺少 canonical fallback;手機 CSS 將 header 與語言選單的觸控高度提高到 44 px,長網址可換行。GitHub API UTC 日期於 2026-08-31T05:56:52Z 確認;12 個 targeted tests、三語 MkDocs、全站 rendered audit 通過,另以 Chromium 實測 320/375/768/1440 px 的繁中首頁、簡中 Resources 與英文首頁無整頁水平捲動,語言 metadata/連結完整,Stage 7 <details> 可用鍵盤開關。本層對應 Issue #215;正式合併部署後仍須重跑線上站驗收才可關閉。
  • resources / Stage 7 / contributor follow-up · 三語 Harness/Sandbox/Deploy 精選表收錄 SandBase Harness,並保留成熟度與隔離邊界:依專案官方 GitHub repository、Apache-2.0 license、v0.3.8 release 與 README 於 2026-08-31 重查;教材以四星教學適合度介紹 session、MCP、人工批准與 audit/replay,不把它寫成安全認證。限制明列仍為 v0.x,local/Docker/Kubernetes/Worker 的隔離強度取決於 backend 與部署設定,不宣稱固定 microVM 保證。三語總數由 20 更新為 21,Harness rowgroup 由 5 更新為 6,回歸測試同步鎖住 URL、評分、順序、總數與限制;GitHub full inventory 於 2026-08-31T05:00:10Z 重建,覆蓋 263 個 repository、0 個 hard error、151 個人工複查提醒。此修正版承接外部投稿 PR #213 與 Issue #210。
  • content / Paper Summary Bot / safe production route · 三語 walkthrough 從 Stage 1–7 的示範接到 Stage 8 的安全產品出口,讓初學者知道「能回答」之後還要能驗證、暫停、續跑與安全停止:Stage 3 的 ReAct tool loop 改為最多四輪;Stage 4 將 Stage 2 的三段摘要/五個關鍵詞輸出契約與 untrusted-content 規則一起交給現行 LangChain create_agent,程式先檢查固定標籤,review 只接受精確 PASS/NEEDS_REVISION,模糊判定與修改次數用完都回到 needs_review。arXiv 工具使用專用來源例外,只接受 HTTPS arxiv.org、驗證現行 ID、設定 timeout;其他內部錯誤不再被誤報成壞網址。Stage 6 新增唯一的 typed run_current_agent,保留 summary 與相關論文 comparison,最多使用八個 graph steps,並以 needs_review 回傳來源、預算、review、內部錯誤與不完整結果;Stage 7 的 Eval、Langfuse 與 FastAPI 都走這個入口,不再偷偷退回 Stage 3 舊 Agent。Stage 7 固定為 Eval → Observability → Approval/Recovery → Deploy,加入 20 個初始 Eval 案例、最小狀態卡、現行 Langfuse LangChain callback、非 root/唯讀容器,以及不呼叫模型、會真的寫入再讀回 Chroma 的 container smoke request;smoke 使用會隨 --rm 刪除的匿名 Memory volume,正式資料使用獨立 named volume,ONNX embedding cache 也有獨立 writable volume,不會因唯讀 root 失敗或把假論文留給正式比較。正文同時明說 callback 會記 model/tool 輸入輸出,私人資料須先遮罩或停用內容記錄。Stage 8 明確先選正式 API/Fetch,再選 CLI、Web 或 HTTP API;只有沒有正式工具且具人工核准時才考慮 Computer Use。五份五星必讀與完成條件保持展開;Anthropic model ID、LangChain/LangGraph、Promptfoo、Langfuse 與 GitHub API UTC 於 2026-08-31 重查並加入 90 天 freshness fact pack。新增 trilingual coherence regression,鎖住十個可解析 Python 區塊、相同 URL/順序/評分、bounded loops、輸出契約/review routing、current-agent data flow、Memory output、typed safe exits、Langfuse metadata shape、container volume/cache smoke、20-case Eval、部署邊界與 Stage 8 安全出口;完整 scripts regression 1036 passed,其餘正式 gate 以本層最終凍結 diff 重跑。本層疊在 Draft PR #218 上;未經使用者明確同意不合併或清理 branch/worktree。
  • content / Stage 7 / eval and safe execution · 三語 Stage 7 改成 Eval → Observability → Approval/Recovery → Deploy 的可見上線主線,保留 Multi-Agent 深度但不再讓它擋在初學者前面:16 個核心詞依「證明做對 4/能停與續跑 6/排完整路線 6」使用真正 HTML rowspan 合併分類,Outcome、Trajectory、Human Approval、Checkpoint、Resume、Recovery、Idempotency 等第一次出現即粗體白話定義;六份必修閱讀、20 筆五星精選資源、工具角色、四題核心練習、兩個進階選修入口與完成條件保持展開,只有次要步驟與排錯收合。新增不連網、不需模型或套件的 06-safe-execution 三語核心練習,用假 ledger 實測核准前零副作用、版本化 checkpoint、拒絕、resume、衝突狀態 fail closed、atomic write、晚到的 reject 不會掩蓋已執行動作,以及同一 idempotency key 最多執行一次;範例自身事故測試 8/8 通過,原五個模型範例明確標示核心/選修位置,examples 索引同步為六題。Anthropic Agent Eval、OpenAI Tracing/HITL、LangGraph Persistence/Interrupts、Ollama tags 與 GitHub API UTC 於 2026-08-31 重查;Stage 7 與 examples index 新增/更新 90 天 freshness fact pack,repository snapshot 依最終引用調整為 262 筆。reader-UX gate 新增 <strong> 語意粗體支援與 regression,並鎖住三語同序、16 詞、4/6/6 rowgroup、七個關閉選單與六個真實資料夾。完整 scripts regression 1004 passed,29 頁 × 3 語言 reader UX、strict anchors、mirror、locale、Hans、freshness、repository coverage、三語 MkDocs 與 source/rendered image gate 全數通過。本層疊在 Draft PR #217 上;未經使用者明確同意不合併或清理 branch/worktree。
  • content / Stage 1 / model lifecycle · 三語 Stage 1 新增可見的 資料 → Pre-training → Base Model → Post-training → Instruct Model → Inference → Agent 主線,讓初學者先看懂模型如何變成能工作的 Agent,又不把重要術語過度簡化:Pre-training、Post-training、Fine-tuning、Inference、SFT、DPO、RLHF/RL 皆以粗體白話定義保持展開,並明確說明 Prompt、RAG、Memory、Tool 與 Harness 通常不會改模型權重。新增三語選修指南,完整保留 GRPO、PEFT/LoRA、Distillation、Quantization、外部系統邊界、7 筆官方資源與編輯評分,以及真正合併的 2/2/3 rowgroup;Stage 6、Glossary、Resources、DESIGN、三語 style guide、MkDocs nav、reader-UX 與 freshness fact pack 同步接回同一入口。三張 Image 2.0 亮色 PNG 使用獨立語系版本,沒有價格、排名或易變型號;模型生命週期與官方來源於 2026-08-31 重新查核。完整 scripts regression 998 passed,29 頁 × 3 語言 reader UX、strict anchors、mirror、locale、Hans、freshness、三語 MkDocs 與 source/rendered image gate 全數通過。圖片基線因本層三張教學圖暫時鎖為 70 張、82.59 MiB 與 75 個 rendered placements;最終視覺清理層必須實測後再下調,不得以此作為新增圖片的永久額度。本層疊在 Draft PR #216 上;未經使用者明確同意不合併或清理 branch/worktree。
  • governance / required PR gate / content health · 新增固定出現的 Required / pr-gate,讓零 checks、失敗 checks 與未完成的 dependency review 都不能被誤當成可合併:PR 使用 GitHub 產生的 merge ref 與唯讀 token,依序檢查 diff、anchors、三語鏡像與連結、Hans、reader UX、freshness、重複 repo、圖片、所有 scripts tests、三語 MkDocs、修改過的外部連結與 GitHub repository 事實;初評只整理證據並固定標示「等待 Maintainer」,不會送出 Approve 或自動合併。具留言權限的 job 不 checkout、也不執行 PR 程式碼;所有第三方 Actions 固定完整 commit SHA,另加入 dependency review、actionlint checksum 驗證、workflow 權限 gate 與 Dependabot。每週/每月 Content Health 合併舊的連結、repository 與模型 freshness 掃描,只更新單一 tracking issue 和 artifacts;timeout/403/rate limit 保留為未驗證,HTML href、autolink 與壞 redirect 納入檢查,並以完整 merge-base 與 base/head 文件判斷 fenced code,避免 stacked PR 改名或示範網址造成誤判;舊 stars 更新與所有自動 merge workflow 移除。GitHub API UTC 日期於 2026-08-31T00:51:47Z 確認;完整 regression 985 passed,另以乾淨 Python 3.11 venv 驗證依賴安裝、三語 MkDocs 與 rendered image gate。本層為 stacked Draft PR;未經使用者明確同意不合併或清理 branch/worktree。

2026-08-30

  • maintenance / main README / repository inventory · 首頁新增或移除 GitHub 連結後,同步 6 個既有 repository snapshot row 的 reference_count 與 sources;不改動 License、封存、更新時間或其他官方事實。離線 gate 重新確認 263 個 tracked repositories 全部有對應 row。
  • content / main README / reader UX · 三語主 README 改成「先選路、再開始」的漸進式入口,不用收合掩蓋重複,也不因縮短而刪掉核心概念:繁中/英文/簡中分別由約 16,405/22,648/17,136 字元降為 9,146/13,724/9,517,三版均為 212 行;定位、立即起點、10 個學習站、Track A A1 → A2 → Stage 5 → A3 → Stage 8、Track B、五條角色路線、學習方法、Stage 4→7 橋接、Capstone 與 10 個有星等標示的學習入口保持可見。本機下載、時間/Hub、完整貢獻方式、貢獻者/引用才放入 4 個預設關閉選單。移除首頁重複的規模數字與長篇五層說明,但保留 Zero/One/Few-Shot、CoT、Workflow Graph、MCP、RAG、HITL、Stage 5 5.1–5.4/5.5–5.8、課程/認證入口,以及三語角色決策圖;資源表用真正 3/3/4 rowgroup 合併分類,星等明標為學習優先順序。DESIGN 與首頁/課程/路線 regression 同步更新;GitHub API UTC 日期於 2026-08-30T23:15:30Z 確認,完整 scripts regression 956 passed。本層另開 Draft PR 供使用者檢查,未經明確同意不合併或清理 branch/worktree。
  • content / Stage 6 / advanced learning paths · Stage 6 改為清楚的入口頁,Advanced RAG 與 Agent Memory 各自成為可獨立閱讀的三語進階頁:基礎章保留七個核心詞、五題練習、推薦小專案、四份必讀與 9 筆五星資源,並以可見入口分流;Advanced RAG 依問題症狀教 baseline/eval、Hybrid Search、Reranking、HyDE、Multi-Query、RAG Fusion、Contextual Retrieval、GraphRAG/LightRAG、Self-RAG/CRAG/Adaptive/Agentic RAG、RAPTOR 與 DSPy,另保留 6 份必讀及 4/4/4 共 12 筆五星資源;Agent Memory 分清 Chat History、Context、RAG、短/長期及 Semantic/Episodic/Procedural Memory,完整走過 write/search/update/delete/forget、同意、保存期限與使用者隔離,保留 5 份必讀及 4/3/4 共 11 筆五星資源。三頁的重要概念、必讀、練習與精選資源全部直接可見,只有設定/成本、實作細節與排錯各放入兩個預設關閉選單;舊 Stage 6 深連結仍由可見 gateway anchors 承接。Microsoft GraphRAG maintenance mode、Ragas canonical owner、Qdrant/Weaviate hybrid search、LangChain/LangGraph memory、Mem0 Memory Benchmarks、Letta landing page/Letta Code 現行 source、Graphiti 與 Zep legacy 邊界於 GitHub API UTC 2026-08-30T15:16:17Z 重新查核;全量 GitHub inventory 於 2026-08-30T15:40:54Z 重建,覆蓋 263 個 tracked repositories、0 個 hard error、151 個僅供人工複查的提醒。三份 90 天 fact pack、DESIGN、三語 style guide、MkDocs nav、reader-UX 與內容 regression 同步更新。最終驗證為 940 passed,28 頁 × 3 語言 reader UX、strict anchors、mirror、locale、Hans、image、duplicate repo、freshness 與三語 MkDocs build 全數通過;本層先送 Draft 供使用者檢查,未經明確同意不合併或清理活動 branch/worktree。
  • performance / accessibility / diagrams · 三語文件站替教學圖加入延遲載入與手機原圖入口,不再讓長頁一開始下載所有圖片:MkDocs hook 會為 66 個非首屏圖像位置輸出 loading="lazy"、為全部 69 個圖像位置輸出 decoding="async",並以原生連結和三語短 caption 提供可鍵盤操作的原圖;3 個 README 頂端 banner 維持 eager。320/375/768/1440 px Chromium 實測沒有整頁 overflow,過寬表格都可左右滑,語言按鈕與 details summary 最小高度提高到 44 px;亮色文字 accent 由白底 4.47:1 改為 6.29:1,深色模式另用較亮 token。新增 source 與 rendered-HTML 雙層 gate,鎖住目前 67 張 PNG、78.72 MiB 總量、1.43 MiB 最大單圖與 4.00 MiB 最重頁面;建置目錄不存在、沒有 HTML、圖數漂移,或原圖/caption 連結的 href、target、rel 不完整都會 fail closed。另完成全站視覺/手機/效能稽核,將 Subagent 舊分類、固定模型職位與三張多餘舊圖留給後續獨立 stacked PR。GitHub API UTC 日期於 2026-08-30T13:12:40Z 確認;完整 scripts regression 901 passed,三語 MkDocs、reader UX、anchor、mirror、locale、Hans、image 與 freshness gates 全數通過。本層疊在 Draft PR #205 上,未經使用者明確同意不合併或清理 branch/worktree。
  • content / tool identity / runnable examples · 把 examples 入口與 Agent 工具分類改成初學者可直接使用的現行地圖:三語 examples 首頁依實際 25 個資料夾說明 Mock/Live call、A/B/C 路徑,以及標準雙路徑、Provider 切換、Schema 比較、Framework/部署加項與 Skill 套件五種真實資料夾形狀;第一個離線命令、必讀、完整五星學習資源及各 Stage 入口保持直接可見。Agent paradigms 改用 Identity/Surface/Deployment 三個互相獨立的問題,清楚分開 OpenCode、Pi、OpenRouter、Ollama、Agent Framework 與 Chat Gateway,並分開「OpenCode 程式在本機執行」和「模型請求可送往雲端 Provider」,不再把工具硬塞進互斥的五種類型。OpenCode 統一為現行名稱、opencode binary、AGENTS.md 優先規則與 canonical docs;跨 Provider 範例補上 model ID、auth、參數、tool schema、回應、限流與錯誤格式都可能不同。新增三張同版 Image 2.0 亮色 PNG,取代六張全站零引用的舊五類型/決策樹圖片;Ollama 本機模型 tag、兩份 90 天 fact pack、DESIGN、freshness gate 與 trilingual regression 同步更新。GitHub API UTC 日期於 2026-08-30T12:03:30Z 確認;完整 scripts regression 894 passed,三語 MkDocs、freshness、Hans、圖片語系與元素落腳驗證通過。本層疊在 Draft PR #204 上,未經使用者明確同意不合併或清理活動 branch/worktree。
  • maintenance / repository freshness · 工具地圖新增、移動與移除的 repository 來源已同步 durable snapshot;GitHub API full inventory 於 2026-08-30T12:30:20Z 重建,覆蓋 263 個 tracked repositories、0 個 hard error、150 個僅供人工複查的提醒,離線 coverage 與 39 項 repository freshness regression 全數通過。
  • content / site coherence / audit · 公開入口與跨章 walkthrough 改用初學者可以直接理解、又不刪術語的說法:三語 README 將 illustrative/USE/BUILD 與會漂移的「每章 1–5 題」改成可直接執行的小練習、成功條件,以及需要連模型時才提供的 Ollama/Anthropic 兩條 SDK 路徑;Track A 明確保留 Stage 5 核心 5.1–5.4,並補回實際存在的 5.5–5.8 選讀入口。ROADMAP 改為首頁圖、文字與測試已使用同一路線;DESIGN 也對齊 Stage 0 單一整合練習、Stage 5 九個核心詞/五題/5.1–5.8。七步 walkthrough 三語移除固定行數,以小/中/較大說明步驟,替 Reflection、RAG、Memory、Eval、Observability、Deployment 補白話定位,加入 Stage 7.5、Stage 8、主 README 與三條角色路徑的可見連結,並修正簡中 Docker 多行指令。新增全站連貫性/技術品質稽核與長期設計脈絡,記錄 examples index、agent paradigms、圖片效能、行動版和舊圖風格仍需獨立 PR;GitHub API UTC 日期於 2026-08-30T10:45:04Z 確認。Reader UX 26 頁 × 3 語言、883 個完整 scripts regression、strict anchors、mirror、locale、Hans、image、duplicate repo、freshness gate 與三語 MkDocs build 全數通過。本層疊在 Draft PR #203 上,未經使用者明確同意不合併或清理活動 branch/worktree。
  • reader UX / public entry route · README 與文件首頁改成清楚呈現 10 個學習站:三語明確區分 8 個主題 Stage、Stage 0 準備關與 Stage 7.5 進階閱讀站;首頁補齊 Stage 0/7.5 卡片,路線表最後一欄改成每站可得到的成果,並保留 model comparison、Smolagents、long-term memory、contextual retrieval、advanced SDK、12 個進階概念與 reading list 等關鍵詞。原有 Track A/B 逐站與總時間沒有刪除,但全部移入單一預設關閉的時間選單;必讀入口、精選專案與相關資源仍直接可見。HOW_TO_USE 與 Stage 1–4 共 39 份三語練習 README 同步移除改名/藏答案/整份重寫流程,改成「直接執行 → 只改一件事 → 重跑測試 → 說出原因」,時間安排另行收合。README 引用、MkDocs metadata、PDF subtitle 與 outreach 文案也統一成 10 個學習站,不再混用舊的 8-stage 簡稱。三語 Image 2.0 banner 以同一 1672×941 亮色版面改正 Track A A1 → A2 → Stage 5 → A3 → Stage 8 與 Track B 3 → 4 → Stage 5 → 6 → 7 → 7.5 → Stage 8,移除週數/每週時數並逐張檢查箭頭、icon、文字與卡片無重疊;全量 GitHub inventory 於 2026-08-30T09:20:29Z 重查 260 個 tracked repositories,0 error、150 個僅供人工複查的提醒,snapshot 同步刪除舊方法頁已不再引用的來源位置。本層疊在 Draft PR #202 上,未經使用者同意不合併或清理活動 branch/worktree。
  • reader UX / site-wide learning contract · 把必修閱讀、精選專案與完整五星學習資源正式列為三語可見主線:Stage 0/1/2/5 與 Track A1–A3 移除包住重要內容的最外層選單,原有資源數量、URL、順序、分組與評分不變;Stage 8 另把四份必讀從時間/環境選單分出。共用 checker 新增關閉選單名稱阻擋,並以逐頁最少連結/評分鎖住 Stage 0–8、Stage 7.5、Track A1–A3 與研究人員/開發者路線。只有專門的大型 MCP/Skills catalog 維持「分類與安全邊界可見、分類內上百筆項目按需展開」;GitHub API UTC 日期於 2026-08-30T07:33:14Z 確認。本層疊在 Draft PR #200 上,未經使用者同意不合併或清理 branch/worktree。
  • reader UX / Stage 8 · 21 筆完整五星 Projects/學習資源改為三語直接可見:五筆精選入口與 5/5/4/5/2 五組完整資源表都留在主線,URL、順序、狀態/授權限制、編輯評分、安靜查核日期與真正 HTML rowspan 原樣保留;只移除包住完整表格的最外層選單。Computer Use/OSWorld、Browser Use、Sandbox、Track A/B 深解、安全案例與 Voice/VLA 仍放在 9 個預設關閉選單。Stage 8 contract 新增 details nesting-depth regression,逐筆證明資源沒有被後續選單重新藏起來;本層疊在 Draft PR #199 上,未經使用者同意不合併或清理 branch/worktree。
  • reader UX / Stage 7.5 · 24 筆完整五星學習資源改為三語直接可見:五筆精選閱讀與 5/5/5/5/4 的五組完整資源表都留在主線,URL、順序、限制、編輯評分與真正 HTML rowspan 原樣保留;只移除包住完整表格的最外層選單。時間、來源深解、失敗案例、cross-vendor/coding harness、benchmark、Dynamic Workflows 與 Model–Harness Fit 證據仍放在 8 個預設關閉選單。Stage 7.5 contract 新增 details nesting-depth regression,逐筆證明資源沒有被後續選單重新藏起來;本層疊在 Draft PR #198 上,未經使用者同意不合併或清理 branch/worktree。
  • reader UX / Stage 7 examples · 五組可執行範例的三語必讀與評分學習資源改為直接可見:依 3/6/7/4/5 分布的全部 25 筆資源、星級、官方/章節式深入入口與安靜查核日期原樣保留,只移除最外層資源選單;實際模型路徑、平台替代指令、程式走查與排錯仍預設收合。Stage 7 example contract 同步鎖住 15 份 README 的資源 heading、逐題精確數量與選單外落腳,避免重要下一步再次被折回去或被過度刪減;本層疊在 Draft PR #197 上,未經使用者同意不合併或清理 branch/worktree。
  • examples / Stage 6 / executable learning path · 五組 Embedding、Vector DB、Chunking、完整 RAG 與 Long-term Memory 範例完成三語初學者重整與離線 hardening:每頁先用白話與粗體定義核心詞,直接展開學習目標、第一個可複製 PowerShell 動作、必讀/五星學習資源與 Stage 06 總預算,只把常見問題與進階做法預設收合;現行 OpenAI embedding、Anthropic Haiku、Chroma persistence、Mem0 與 Letta Code 入口及相關官方文件於 GitHub API UTC 2026-08-30 重查。Python 將重模型改成需要時才載入,in-memory collection 預設隔離,阻擋 overlap >= chunk_size 的無限迴圈,Long-term Memory 改用磁碟 PersistentClient 並對完全相同事實去重;新增單一離線入口,10 組 Path A/B 檢查全通過,另以兩個全新 Python process 驗證記憶真的能跨程式重開保留。全套 scripts regression 829 passed,三語 docs build、元素落腳與語意鏡像審計同步通過;repository freshness snapshot 同步校正這些可見資源的引用數;本層疊在 Stage 6 RAG Draft PR #196 上,未經使用者同意不合併或清理 branch/worktree。
  • reader UX / Stage 6 · 四份必修閱讀與 18 筆五星 Projects/學習資源改為三語直接可見:只保留時間/環境、RAG 詳細流水線、進階 RAG、Memory 與評測深解等 5 個次要選單預設關閉。reader-UX 同步鎖住至少 4 個必讀連結、18 個資源連結、18 個評分與 4/5/4/3/2 真正合併 rowgroup,避免重要入口日後又被折回去。
  • visuals / Stage 6 / RAG pipeline · 把已通過人工檢查的三語 Image 2.0 rag-pipeline-overview 移植到最新 main,並放回預設關閉的基礎流水線:新版用亮色卡片分開 index lane 與 query lane,資料庫的 retrieve 箭頭落到候選檢索,不再跳過 evidence pack 直達答案;Contextualization、query rewrite、fusion、reranking 明示為可選,semantic、BM25、SQL/Web 並列,避免把 RAG 誤教成只能用 vector database。三語逐張檢查,另修正簡中圖殘留的繁體「記錄」。
  • content / freshness / Stage 6 RAG · 補上 2-step RAG、Agentic RAG、Hybrid RAG 與 Hybrid Search 的白話界線,並於 GitHub API UTC 2026-08-30 重新確認 LangChain 現行 Retrieval 路徑、Qdrant/Weaviate hybrid-search 官方 URL、GraphRAG maintenance mode、OpenAI Retrieval 與 Ragas metrics;三語頁面、90 天 fact pack 與獨立 regression 同步更新。
  • content / setup guide / reader UX · 三語零背景設定指南改成「先選一扇門,再完成一個小結果」:Web Chat、Desktop、IDE Assistant、CLI Agent、API 五條路不再被畫成一定要逐級安裝的階梯;Chat Surface、API、API Key、Environment Variable、Runtime、Package Manager、CLI Agent 七個核心詞第一次出現即粗體,必讀官方起點與五星編輯推薦保持直接可見。A–E 標題、舊深連結、第一個動作、可複製的 Python 3.12/hello-claude.py 與完成檢查都在主線;只有時間與先備、完整產品 catalog、Provider 替代路徑、排錯、CLAUDE.md 和 Skill 完整範例放進 7 個預設關閉選單。
  • freshness / setup / security · 依第一方文件重查 Claude API、Claude Code、uv 與 Provider 入口:Claude Code 改用 native installer 優先,不再要求 Node 18/npm;Gemini macOS App、goose 現行 AAIF repository、OpenCode/Codex/Gemini CLI/Aider/Hermes canonical 入口同步修正。API quick start 先建立 .gitignore 再建立 .env,範例使用 claude-sonnet-5,並移除固定月費、免費週期、促銷 credits、凍結價格與「最便宜」比較。DESIGN、測試計畫、reader-UX、三語 URL/rowspan/評分、90 天 freshness marker 與 setup content regression 同步加入。
  • visuals / asset hygiene · 移除 13 張已被新版教學取代、且全站零引用的舊圖:刪除 rag-pipeline-overview、chunking-strategies、reflexion-persistent-memory-loop、multi-agent-debate-flow 四組三語圖與單語 branch-tier-progression。前兩組是未達目前主頁式 house style 的素面流程框,後兩組是深色霓虹舊風格;概念已由 Stage 6 的 rag-memory-map、漸進式文字教學及現行多 Agent 圖解承接。check-image-locale.py 同步加入反向引用檢查,之後任何放在 resources/diagrams、卻沒有被 Markdown 頁面使用的圖都會阻擋 CI;歷史版本仍可由 Git 還原。
  • content / glossary / reader UX · 三語 Glossary 改成「先分清工具身分,再依主題查詞」的可見查字入口:保留原有 68 個名詞與 Subagent 深連結,補上 Model Runtime、Workflow Graph、Agent Harness,共 71 個可搜尋 heading;12 個先學詞、Provider API/Router/Model Runtime/Coding Agent 或 Harness/Agent Framework 五種身分,以及每個詞的一句白話定義都直接展開。只有 37 筆 maintainer 分類表與來源說明放進兩個預設關閉選單;完整表依 2/17/9/5/4 使用真正合併的 rowgroup。Prompt、Zero/One/Few-Shot、Chain-of-Thought、Token、Context、Agent Loop、RAG、Memory、MCP、Eval、Harness、Loop 與 Graph 等必要概念全部保留,沒有用縮短頁面當理由刪詞。
  • freshness / terminology / product identity · Glossary 不再保存容易變舊的模型名單、價格、context、固定 token 換算、A2A 組織數或 Claude Hook 事件數:OpenRouter 明列為 Router、Ollama 為 Model Runtime、OpenCode/Pi 為 Coding Agent/Harness,Agent Framework 另列;MLX 本身是 array framework,真正用來執行 LLM 的套件寫成 MLX LM;Prompt Caching 也明寫 byte-identical prefix 才會命中。Loop Engineering 不取代 Harness,Workflow Graph 與 Graph Engineering 也不混成同一個正式標準。三語使用同一組第一方來源與安靜的 2026-08-30 freshness marker,易變事實改連回 Stage 1 或官方文件。GitHub 全量掃描另把 Pi 的 redirect 改回 canonical earendil-works/pi;2026-08-30T01:59:28Z 快照覆蓋 260 個 repo、0 hard error、150 個人工提醒。reader-UX、strict anchors、三語 URL/日期、Hans、image-locale、mirror 與 freshness regression 同步加入。
  • design / visuals / acceptance · 把主頁 README 的舒服圖面正式設為全站新圖 ratchet:新畫或重畫的概念圖使用 Image 2.0 PNG,三語共用畫布比例、格線、卡片位置、間距與語意;箭頭只能走留白,文字、icon、箭頭、arrowhead、標籤與框線不得重疊。DESIGN 與三語 style guide 同步要求原尺寸檢查安全邊界與對齊;舊圖只在輪到該章時重畫,不用一次覆蓋造成無法回溯。本層維持 stacked draft PR,未經使用者明確同意不合併或清理活動 branch/worktree。

2026-08-29

  • content / courses / reader UX · 三語課程頁從「只列會發證書的 tier 排名」改成先學會、再決定是否拿證書的任務地圖:Course、Certificate of Completion、Skill Badge、Professional Certificate、Certification Exam 五個核心詞先用白話分開;12 條現行課程與學習路線依 3/5/2/2 四個真正合併的 rowgroup 保持可見,逐列保留五星編輯推薦度。讀者可直接按需求選一條,複製五行作品證據卡,再回 Stage 3/4/7;只有證書限制與維護方法放進兩個預設關閉選單。移除 tier、舊 Skilljar、Edureka、無法由公開官方頁確認的 Huawei 路線、固定價格、GitHub stars 與「中文課基本都付費」等過時概括,新增 Microsoft、Datawhale、Claude Academy、LangChain Academy、Google × Kaggle 與阿里雲現行入口;Hugging Face、DeepLearning.AI、W&B、IBM、Vanderbilt、NVIDIA 的證書/費用/評量邊界重新查核。README、DESIGN、測試計畫、reader-UX 與 90 天 freshness fact pack 同步;全量 GitHub API snapshot 於 2026-08-29T23:38:47Z 重建,覆蓋 259 個 repo、0 hard error、151 個人工提醒。本層維持 stacked draft PR,未經使用者明確同意不合併、不清理 branch/worktree。
  • content / terminology / Stage 4–7.5 correction · 重新查證後,把 Prompt → Context → Harness → Loop → Graph 從「五層堆疊」改成五個會重疊的控制問題:Harness 是處理模型、工具、權限、狀態、錯誤與紀錄的執行系統,通常本身就會執行 Agent Loop;Loop Engineering 替整個長任務設計 Goal → Action → Observation → Adjustment、預算與停止條件,並不是 Harness 的下一代,也不會自動取代 Harness;Workflow Graph/Production orchestration 安排 node、edge、分支、checkpoint 與人工核准,Graph Engineering 只標為尚未統一的新興別名。Stage 4、Stage 7、Stage 7.5、README、glossary、DESIGN 與三語鏡像同步,既有深連結保留。這項較晚的修正取代本日稍早 CHANGELOG 中「Harness 只保護一次執行」與嚴格五層階梯的簡化說法;IBM、Anthropic、OpenAI 與 Microsoft 官方來源於 GitHub API UTC 2026-08-29T22:31:42Z 重查。
  • visuals / acceptance / Stage 7 · 以三張 Image 2.0 亮色 PNG 取代會誤導責任邊界的舊圖與中間 SVG 草稿:三語圖和主頁 README 同為 1672×941,使用奶油白底、深藍字、少量亮色、圓角卡與簡單線條 icon。上半部只畫一次 Agent run:Prompt/Context 進入 Harness,Agent Loop 在 Harness 內依證據返回;下半部才畫整個長任務:Workflow Graph 串接 Goal、Harness、固定檢查、人工核准與完成,Loop Engineering 另寫 Goal/Action/Observation/Adjustment、預算與停止。所有箭頭使用獨立留白通道,不壓字、不穿 icon、不跨無關卡片;三語構圖、格線、箭頭與語意一致。Stage 7 保留「控制問題圖+Graph 內部圖」兩張,Stage 7.5 保留原有三張 Model–Harness Fit/進階概念圖;reader-UX、圖像語系、anchor、freshness 與內容 regression 同步鎖住新邊界。本層維持 stacked draft PR,未經使用者明確同意不合併、不清理 branch/worktree。
  • content / resources hub / reader UX · 三語 resources/ 入口從過時的七檔清單重整為「卡在哪裡,就拿哪張說明卡」的可見工具櫃:讀者可直接依 12 種任務找到 setup、主線、glossary、CLI 身分指南、cookbook、schema cheatsheet、MCP/Skills catalog、courses、agent paradigms、兩份 subagent 資料或 style guide;Reference、Guide、Cookbook、Catalog、Glossary 五個詞第一次出現即用粗體白話定義。實際 11 份 reference 全部保持展開,依 4/2/2/2/1 五個真正 rowspan 合併同類欄位;只有分檔理由與 maintainer 規則放進兩個預設關閉選單。入口另明確對齊 OpenRouter=統一模型 API/router、Ollama=本機模型 runtime、OpenCode/Pi=coding agent/toolkit。移除會漂移的約略行數、舊七檔宣稱與把 NotebookLM 當現行產品名的文字,並補回 Stage 0、Track A1、Stage 3 與主頁。
  • tooling / resources hub · reader-ux-pages.yml 將資源入口納入第 19 組三語契約,鎖住五個可見核心詞、11 個入口、五組合併分類、兩個關閉選單、回主線連結與實測首屏字數加 50 字的上限;test_resource_index_content.py 另驗證 33 個 reference mirror 真的存在、三語產品身分映射仍落在同一個 task-router row,並阻擋行數、七檔清單或 NotebookLM 舊名稱回來。DESIGN 與測試計畫同步記錄固定結構;GitHub API UTC 日期於 2026-08-29T20:33:17Z 確認。本層疊在 PR #188 上,未經使用者明確同意不合併、不清理 branch/worktree。
  • content / visuals / Stage 7.5 · 把 Model–Harness Fit 從收合補充提升為三語可見的「保留/簡化/移除」判斷:讀者一次只測一個 Harness 元件,再跑同一組 Eval;移除後可重現失敗回來就保留,較少步驟仍通過就簡化,刪除測試在品質與安全不退步時才移除。新增三張亮色平行分支圖,明寫模型變強不表示 permission、sandbox、log、Eval 或 recovery 自動過時;Bitter Lesson、判斷證據與特定產品的人機分工資料仍在原本的預設關閉選單。12 個進階概念、六個核心詞、五筆優先閱讀、24 筆五星資源、九個收合區與既有 anchor 全部保留;本層疊在 Stage 7 PR #187 上,未經使用者明確同意不合併、不清理 branch/worktree。
  • content / terminology / Stage 7 · Stage 7 三語改以 Agent Production Engineering:Harness、Loop 與 Graph 作為上位章名,並把容易混在一起的責任依閱讀順序拆開:Harness 保護一次執行;Loop 管目標、觀察、驗證、記憶、預算、停止與人工升級;Graph 排 node、branch、parallel path、checkpoint、loop 與人工核准。正文保留並分清程式迴圈、Agent Loop、Loop Engineering 三種範圍,明寫 Loop 不會淘汰 Harness;模型變強只可能讓經同一組 Eval 證明不再需要的個別 workaround 被移除。IBM、OpenAI 與 Anthropic 官方來源於 GitHub API UTC 日期 2026-08-29T19:34:33Z 重新核對。
  • visuals / navigation / acceptance / Stage 7 · 新增三語亮色 Harness/Loop/Graph 責任邊界圖,讓小 Harness 放在 Loop 裡、完整 Graph 同時保留分支、平行、checkpoint、人工核准與返回路線:README、首頁、PROGRESS、MkDocs/mdBook、Stage 6 出口、glossary 與 15 份 Stage 7 練習返回連結同步章名;檔名、URL、九個核心詞、五份必修閱讀、20 筆五星精選資源、五題練習與 6 個預設關閉選單全部保留。reader gate 鎖住 Harness → Loop → Graph 可見順序、三種 loop、三語字數與九張 locale 圖;本層維持 stacked PR,未經使用者明確同意不合併、不清理 branch/worktree。
  • content / Cookbook / reader UX · 三語 Cookbook 從長篇參考頁重整成六條可直接開始的實作路線:Skill、MCP Server、Office Docs、Gemini Notebook、Zotero、本機 LLM+CLI Agent 的標題、成果與第一個可複製動作保持可見;完整步驟、替代路徑與排錯收進 9 個預設關閉的 <details>,0 個預設展開。六個核心詞第一次出現即用粗體白話定義,必修閱讀、14 筆精選 Projects/學習資源、五星編輯評分與完成檢查保持可見;資源表以 2/2/2/2/3/3 六個獨立 <tbody> 和真正 rowspan 合併分類欄,不顯示易變的 GitHub stars。
  • freshness / commands / safety · 依官方來源重查 Cookbook 的現行名稱、命令、授權與寫入邊界:Claude Code Skill 改用現行 live change detection;MCP Python SDK 使用 v2 from mcp.server import MCPServer;Anthropic 文件 skills 明標 source-available;NotebookLM 現行名稱改為 Gemini Notebook,notebooklm-py/browser skill 明標非官方與 fallback;Zotero 10+ local API 補上寫入授權、preview 與撤銷;OpenCode 2 beta、Aider ollama_chat/、Ollama gemma4:e4b 及 Pi/OpenRouter/Coding Agent/Model Runtime 身分重新對齊。三語命令、URL、日期與安全語意一致;GitHub API UTC 日期於 2026-08-29T18:25:08Z 確認。
  • tooling / docs / Cookbook · reader-ux-pages.yml 新增 Cookbook 三語首屏、九個關閉選單、可見章節、粗體核心詞、命令/日期、8 筆必讀、14 筆精選資源與六組 rowspan 契約;freshness-models.yml 加入官方/社群 fact pack、90 天頁面 marker 與舊 MCP/OpenCode/Aider/Zotero/Ollama 指令阻擋。新增 7 條 Cookbook content regression;DESIGN 與三語 style guide 固定可見主線、社群 fallback、分類合併與三語一致性。本層維持 stacked PR 供使用者檢查,未經明確同意不合併或清理 branch/worktree。
  • maintenance / repository freshness / Cookbook · Cookbook 三語改用 OpenCode 現行 canonical repository anomalyco/opencode,不再依賴 sst/opencode 轉址;全量 GitHub API inventory 於 2026-08-29T19:07:32Z 重新查核 259 個 tracked repositories,0 個 hard error、153 個僅供人工複查的提醒。repository-freshness-snapshot.json 同步 Cookbook 新增、移動與移除的來源檔案及引用數,並由 regression 阻擋舊 OpenCode slug 回來。
  • content / navigation / Stage 4–7 · 把「會運作的結構」與「設計它的工程工作」拆開,消除 Agent Framework=Graph Engineering 的錯覺:Stage 4 三語章名改為先講 Workflow Graph、再講 Agent Framework;Stage 7 三語章名直接使用已在產業與研究中出現的 Loop/Graph Engineering,並把 Agent Production Engineering 留作上位概念。五層正文與三張亮色圖固定成 Prompt → Prompt Engineering、Context → Context Engineering、Agent Harness → Harness Engineering、Agent Loop → Loop Engineering、Workflow Graph → Graph Engineering;同時明說這是控制範圍,不是章節順序。README、首頁、PROGRESS、MkDocs/mdBook、Stage 3/4/6/7 路由、examples 返回連結與 glossary 三語同步;新 regression 鎖住章名、配對、表格形狀與圖稿重產規格。Loop/Graph Engineering 不再寫成「本專案教學用語」或仍待成立,但也不冒充所有供應商都採用的單一正式標準。GitHub API UTC 日期於 2026-08-29T17:14:01Z 確認;本層維持 stacked PR,未經使用者同意不合併或清理分支。
  • content / glossary / Agent engineering · 三語名詞表補上 Agent Production Engineering 上位概念,並直接分開課程順序與控制範圍順序:讀者會先看到 Stage 3 Agent Loop → Stage 4 Agent Framework/Workflow Graph → Stage 7 Agent Production Engineering;五層 Prompt → Context → Harness → Loop → Graph 只表示要管理的範圍,不再被誤讀成章節編號。Harness、Loop、Graph 三個概念都保留獨立定義;Stage 4 仍是先學工具箱與基本圖,Stage 7 才加入預算、驗證、checkpoint、人工核准、觀測與復原。
  • terminology / acceptance · Loop Engineering 與 Graph Engineering 改成「已有產業/研究用法,但不是單一跨供應商正式標準」的準確定位:移除過度保守的「仍在形成」敘述,同時保留各 SDK 常用 workflow、graph-based workflow、orchestration 等不同名稱的事實。test_agent_engineering_route.py 新增三語上位詞、兩種順序與舊 Harness-only 標籤阻擋;GitHub API UTC 日期於 2026-08-29T16:13:19Z 確認。
  • content / public resources / reader UX · 三語公共資源入口改成先按工作找路,再展開完整 catalog:RESOURCES 直接顯示 MCP、Skill、Plugin 三個粗體核心詞、五個安全起點與 16 筆有編輯評分的精選資源,使用真正合併的 4/3/4/4/1 rowgroup;resource index 直接顯示七個工作入口。完整 MCP/Skills catalog 保留 17 個可見分類與安全邊界,每類詳細 entry 才預設收合;Notion、Google Workspace、GitHub、Atlassian、Slack、Linear、Canva、MCP Registry、reference servers 與 Anthropic Skills 使用現行官方入口。三語 URL、順序與編輯推薦度一致,舊深連結與完整 entry 都保留,沒有用精簡刪掉重要工具。
  • freshness / resources / acceptance · 依 GitHub API UTC 2026-08-29 與官方文件重查 hosted MCP、權限、產品名稱及歷史狀態,並把不可長期成立的宣稱改成阻擋規則:GitHub 寫入操作保留最小權限與人工核准;Context7 必須核對原始官方文件;MCP reference servers 只作教學;Gemini Notebook 為現行顯示名稱;已封存的 Gemini delegate 只留歷史/遷移參考。移除固定 stars、整合/格式/context 數量、free tier/價格保證、last-commit 判斷、舊 OpenAI Operator 比較與永久模型分工。README、網站數字卡、現行 outreach 與 repo contract 不再宣告 240+/81+/23、~240 或固定 use-case category 這類會漂移的庫存總數;outreach 也移除 cached stars/forks/traffic snapshot,並固定把 Stage 7 寫成 Multi-Agent/Production、Stage 8 寫成 Agent Interfaces。新增 public-resource regression、機器 catalog 計數與 repository-wide reader-facing 無總數/路線漂移 gate。全量 repository freshness 於 2026-08-29T13:39:04Z 逐一驗證 259 個 tracked repo,0 error、151 個人工複查提醒,警告仍由人判斷,不因缺 release、缺 SPDX metadata 或較久未 push 自動刪除工具。
  • content / everyday-user path / reader UX · 一般使用者三語入口改成先做一份可核對、不會自行送出的草稿,再按工作邊界選擇工具:Prompt、Source、Private Data、Hallucination、Human Review、App/Connector、CLI Agent、Local LLM/Runtime、Approval Gate 九個粗體核心詞都在第一題前用白話定義;第一題只用虛構訊息,固定分成 Draft/Facts copied/Needs confirmation,缺少的交付時間必須標為未知,不能猜測或自行傳送。Chat surface、App/Connector、CLI Agent、Local LLM/Runtime 四個工作入口、6 份必修閱讀與 15 筆精選工具/學習資源直接可見;帳號/資料/權限/費用、CLI 安全練習與補充用法才放進 3 個預設關閉選單。既有 9 組深連結保留,reader-UX 與 role-path 契約同步鎖住三語核心詞、第一題、安全邊界、資源順序、評分、rowgroup 與關閉狀態。
  • freshness / everyday AI tools / identity and privacy · 依 GitHub API UTC 2026-08-29 與現行官方文件重查聊天 App、Connector、Coding Agent、模型入口及本地/雲端邊界:ChatGPT 採用現行 Apps 名稱並明列方案、地區、workspace 與管理員差異;Claude 分清 remote connector 與 desktop extension;Gemini 補上 activity、人工審查與第三方服務政策入口;Ollama 與 LM Studio 明列 local model、cloud model、web search 和離線模式的邊界。OpenRouter 只作為 model API router,OpenCode/Gemini CLI/Codex 歸入 CLI/coding agent,Ollama/LM Studio 歸入 Local LLM Runtime,不再用舊 Tier 排名把不同產品混成升級階梯。15 筆資源以真正合併的 4/4/4/2/1 rowgroup 呈現,逐列保留狀態、授權或服務型態、限制與五星編輯推薦度;移除 volatile GitHub stars、固定安裝時間、RUNoob 及會讓初學者處理醫療/法律/金融高風險結論的舊範例。
  • content / knowledge-worker path / reader UX · 知識工作者三語入口改成先做一份可核對的行動表,再決定是否接工具:Source、Action Item、Knowledge Base、Private Data、Human Review、App/Connector、MCP Server、Workflow Automation、Approval Gate 九個粗體核心詞都在第一題前用白話定義;第一題只用虛構會議紀錄,固定輸出 Decision/Action Item/Owner/Due date/Source sentence/Needs confirmation,缺人名或日期必須標示未知,不准猜測或寫回外部系統。一次性聊天、組織核准的 App/Connector、工作流自動化三個入口,6 份必修閱讀與 15 筆精選工具/專案直接可見;進階流程、帳號/資料/權限/費用與排錯才放進 3 個預設關閉選單。資源表以真正合併的 4/4/2/3/2 rowgroup 呈現,三語未展開主線實測為 7,316/10,031/7,021 個非空白字元,上限各只留 50 字緩衝,既有 9 組深連結保留。
  • freshness / workplace apps / automation · 依 GitHub API UTC 2026-08-29 與官方文件重查 Apps、Connectors、MCP、工作流工具和自架專案:ChatGPT 現行名稱使用 Apps,Claude 的 Skills/Connectors/Plugins 保持分開,MCP Registry 明列 Preview 且 namespace/metadata 驗證不等於程式碼安全審查;n8n、Dify、LobeHub 分別標示 Sustainable Use License、修改版 Apache-2.0 與 Community License 的使用邊界。已封存的 Flowise 不列入現行推薦,所有資源移除 volatile GitHub stars、固定安裝時間與「自架就一定不外送」等過度宣稱。全量 repository freshness 於 2026-08-29T10:23:56Z 覆蓋 264 個 tracked repo,0 error、154 個人工複查提醒;缺 release/SPDX metadata 或較久未 push 只列提醒,不會自動淘汰仍有教學價值的專案。
  • content / researcher path / reader UX · 研究人員三語入口改成先守住證據,再選工具的可見學習路線:Source、Claim、Citation、Source Verification、Literature RAG、Reproducibility、Private Data、Human Review 八個粗體核心詞都在第一題前用白話定義;讀者可直接完成一份論文的授權/隱私/引用核對,接著看見 3 個快速入口、6 份必修閱讀與 15 筆精選 Projects/學習資源。資源表以真正合併的 3/4/5/2/1 rowgroup 分成開始整理、探索寫作、可重現與證據、研究自動化、歷史;時間/隱私/費用、完整可重跑流程與排錯才放入 3 個預設關閉選單。reader-UX 正規化後的三語未展開主線實測為 6,197/8,790/5,923 個非空白字元,上限各只留 50 字緩衝;既有 11 組深連結與返回主路線入口保留。
  • freshness / research tools / evidence · 依 GitHub API UTC 2026-08-29、官方文件與專案授權重查研究工具,補齊可重現研究鏈:新增 ASReview、DVC、MLflow、Zenodo 與 repo2docker,讓讀者能依序留下篩選紀錄、資料/模型版本、run 紀錄、DOI 與可重建環境;每列明寫狀態、授權或服務型態、限制與五星編輯推薦度,不使用 volatile GitHub stars。STORM 標為仍可用但更新較慢,ChatPaper 明列 CC BY-NC-ND 4.0,AI Scientist v2 明列 custom source-code license 與機器生成稿件揭露責任,已封存的 open_deep_research 降為三星歷史參考;OSF Projects 因官方已公告 2026-11 起停止新建、2027-02 起既有專案唯讀,未再推薦為一般新專案儲存入口。reader-UX 與 role-path 契約鎖住 26 個 URL、15 筆資源、5 個 rowgroup、6 份必讀、3 個收合區、評分、狀態/授權/限制與三語順序;全量 repository freshness 於 2026-08-29T09:30:47Z 完成,覆蓋 263 個 tracked repo,0 error、153 個人工複查提醒。
  • content / developer path / reader UX · 開發者三語入口改成先分清工具身分,再完成一次可批准、可檢查、可回復的小改動:八組粗體核心詞在第一題前直接用白話分清 IDE/Surface、Coding Agent/Harness、Provider/Router、Model/Runtime、Sandbox、Approval、Diff/Rollback 與 Eval/Observability,成對列出不代表同義。OpenCode、Pi、OpenRouter、Ollama 另以可見短表分成 coding agent/harness、API router 與 local model runtime;第一題可直接複製 read-only plan → 人工批准 → 小改 → diff → test → 人工 review → rollback,並明確禁止自行 push、merge 或 deploy。五個入口、六份必修閱讀與 14 筆精選工具/專案全部直接可見;只有時間/環境/費用、進階 workflow 與排錯放入 3 個預設關閉選單。Track A 主線保留 Stage 8「建議完成但不擋開始」的出口。未展開主線實測為 7,744/10,120/7,514 個非空白字元,上限各只留 50 字緩衝,既有 11 組深連結保留。
  • freshness / coding agents / resources · 依 GitHub API UTC 2026-08-29 與官方文件重查開發工具身分、安全邊界、維護狀態與操作介面:補入現行 OpenAI Codex 與 GitHub Copilot cloud agent,並以 Claude Code、Codex、Copilot、Cursor/OpenCode、Pi、Aider、Goose、Cline、OpenHands/Superpowers、Repomix/Continue、Roo Code 組成真正合併的 4/6/2/2 rowgroup;逐列保留狀態、授權或商業服務、surface、用途、限制與五星編輯推薦度,移除 volatile GitHub stars。Continue 明確標為 read-only、官方 2.0.0 最後版本且不再積極維護;Roo Code 標為已封存的歷史入口。reader-ux-pages.yml 與 test_role_paths.py 鎖住三語 URL、順序、評分、六份必讀、安全限制、3 個收合區、freshness marker 與資源分組,避免三語一起漂移仍誤過。全量 repository freshness 於 2026-08-29T08:28:33Z 覆蓋 259 個 tracked repo,0 error、153 個人工複查提醒;沒有 release、缺 SPDX metadata 或較久未 push 只列提醒,不會自動刪除仍有教學價值的專案,長期 snapshot 只在全部 API 結果 verified 後更新。
  • content / teacher path / reader UX · 教師入口三語重整為「先定目標、守安全線、做一題、再選資源」的可見主線:八個核心詞在第一題前直接用白話定義並保留正確術語,五條安全線明確要求先看校方政策、不上傳 Student Data、不把評分/診斷/重大決定交給 AI,以及每次都做 Human Review。第一題改用完全虛構的影子長短活動,可直接複製後依 Learning Objective、Scaffolding、Formative Assessment、Exit Ticket、事實、年齡適切性與隱私逐項檢查;三份必修閱讀、12 筆精選 Projects/學習資源與五星編輯評分保持直接可見,時間/費用、補充情境、額外模板、進階自動化與法規/排錯才放入 5 個預設關閉選單。未展開主線實測為 5,695/9,707/5,736 個非空白字元,上限各只留 50 字緩衝;18 組既有深連結均保留。
  • freshness / education guidance / resources · 依 GitHub API UTC 日期 2026-08-29 重查教育指引、教師方案與六個可改編 repository:UNESCO、European Commission、TeachAI、Claude for Teachers、ChatGPT for Teachers 與 Gemini Notebook(原 NotebookLM)均以官方頁說明適用範圍;教師方案只寫目前可驗證的美國 K-12 可用性,不推論全球開放或自動符合校規。12 筆資源固定為安全政策/需由學校核准的教師雲端工具/可改編課程/模板流程四個真正合併的 3/3/3/3 rowgroup,移除 volatile stars,逐列保留狀態、授權、用途、限制與推薦度;reader-ux-pages.yml 與 test_role_paths.py 鎖住三語 URL、順序、評分、freshness marker、安全語意、可見路標與舊 anchor。全量 repository freshness 於 2026-08-29T07:23:03Z 重查 259 個 tracked repo,0 error,長期快照只在全部 API 結果 verified 後更新。
  • visuals / teacher safety · 新增三語 teacher-ai-review-loop 五步教師把關圖,取代會把即時批改與學生能力推測畫成可靠功能的舊圖:新圖固定為「設定目標 → AI 草擬 → 教師檢查隱私/事實/偏見 → 學生使用 → 教師觀察與修正」,並明寫 AI 協助、教師決定;三語使用獨立在地化圖檔與 alt text。完整引用掃描確認舊 teacher-ai-classroom-use-cases 三張圖只剩歷史紀錄後移除,仍可由 Git 歷史復原;生成 prompt、固定不變量與人工圖像複查結果記入 resources/diagrams/locale-variant-prompts.md。
  • tooling / mirror sync / Windows · 修正 Windows 本機把已同步三語頁誤報成缺少 mirror 的路徑分隔符問題:check-mirror-sync.py 現在先把 changed-file set 與 canonical path 一起正規化為 Git 的 / 寫法,不再拿 docs\\page.en.md 和 docs/page.en.md 當成兩個檔案;新增無額外依賴的跨平台 regression,在任何 CI 系統都同時餵入 POSIX 與 Windows 路徑,並確認真的少一個 mirror 時仍只報缺少的那一個。Mirror Sync workflow 也開始監看 detector/test 自身並先跑 regression,不再出現「改了 gate,該 gate 卻完全沒啟動」的空窗。GitHub API UTC 時間於 2026-08-29T15:50:53Z 確認。
  • navigation / whole-site terminology / Stage 3–4 · 把 Agent Loop → Agent Framework/Workflow Graph → Loop/Graph Engineering 的學習路線收斂到所有讀者入口:README、三語首頁、PROGRESS、Stage 2 出口、CONTRIBUTORS、三語 examples 總覽、六組 Stage 3 範例、Stage 5 tool-calling tutor、schema-design cheatsheet、DESIGN 總表與仍會使用的 outreach 文案全部改用同一組章名;檔名、URL、練習內容與既有 anchor 不變。README 另用白話分開兩種順序:課程按「先寫 Prompt → 做出 Agent Loop → 用 framework 組 Workflow Graph → 深入 Context → 把系統做穩」教;五層 prompt → context → harness → loop → graph 只表示控制範圍由小到大,不再讓讀者把圖層誤當章節編號。GitHub API UTC 日期於 2026-08-29T06:13:50Z 確認。
  • tooling / route acceptance · 全站標題一致性改成可阻擋的 regression:scripts/test_site_route_coherence.py 現在鎖住 README/index/PROGRESS/Stage 2 出口/examples 總覽的三語標題、18 份 Stage 3 範例 README、tool-calling tutor、schema cheatsheet,以及「學習順序不等於控制範圍」說明;另掃描 repo 內非歷史 Markdown,阻擋舊完整章名再次從補充頁、outreach 或回程連結跑回來。本層維持 stacked PR 供使用者檢查,未經明確同意不合併、不清理 branch/worktree。
  • content / learning route / Stage 3–4 · 把章名、概念層級與實際學習順序對齊為 Agent Loop → Agent Framework/Workflow Graph → Loop/Graph Engineering:Stage 3 三語章名直接標出第一個 Agent Loop,正文固定寫出 model → tool call → execute → tool result → model;Stage 4 保留 Agent Frameworks 並在章名補上 Workflow Graphs,不把工具箱誤改名成 Graph Engineering。新增五列可見橋接表,用白話分清 loop、framework、graph 與 Stage 7 的兩種 engineering 工作;Agent framework 可服務一個或多個 Agent,Multi-Agent 不再被寫成 framework 的定義。MkDocs 導覽、3 份 Stage 3 與 15 份 Stage 4 範例返回連結,以及 Stage 7 的回顧句同步更新,舊檔名與既有練習錨點不變。
  • reader UX / acceptance / Stage 3–4 · 必修閱讀與完整五星精選表直接可見,次要設定繼續漸進式收合:Stage 3 保留 3 份必讀與 21 筆評分資源;Stage 4 保留 4 個必讀步驟中的 5 個官方連結與 18 筆評分資源。reader gate 鎖住 11/6 個預設關閉選單、零個預設展開、可見連結/評分下限與三語順序。新增內容契約驗證三語章名、兩章一致的 Agent Loop 正確序列、五項橋接、舊深連結、mdBook 導覽與「framework 不等於 multi-agent」邊界;本層採 stacked PR 供使用者檢查,不合併、不清理 branch/worktree,全站 README/ROADMAP/首頁等章名收斂留給下一個可回溯層。
  • content / terminology / Stage 7 · 把五層圖從錯置的章節對照改成「控制範圍」,並建立 Agent Loop → Workflow Graph → production 的連續學習路線:Stage 3 是 Agent Loop 入門,Stage 4 是 Agent framework/Workflow Graph 入門,Stage 7 改以 Loop/Graph Engineering 統整預算、驗證、checkpoint、人工核准、觀測與復原;Framework 明確是工具箱,Graph Engineering 是設計工作。三語核心詞由七個加到九個,原有 Multi-Agent、Orchestration、Handoff、Harness、Eval、Observability、Guardrail 全部保留,再補 Loop Engineering 與 Graph Engineering。兩個名稱依 2026-08-29 UTC 的 IBM、OpenAI Agents SDK、LangGraph、Microsoft Agent Framework 與 2026-08 preprints 定位為正在形成的總稱,不再誤寫成本專案自創或所有供應商都採用的官方標準;glossary 同步說清 Agent Loop 可以是一個 run 裡的機械迴圈,而 Loop Engineering 可涵蓋一次長 run 或跨 session/排程。
  • reader UX / visuals / acceptance · 五份必修閱讀與 20 筆五星編輯評分資源改為直接可見,只有延伸閱讀與次要細節收合:Stage 7 啟用重要資源可見 gate,三語最少需要 5 個必讀連結、20 個精選連結與 20 個評分;六個關閉選單、五題練習、深連結與直接可複製命令保持不變。三張 1672×941 五層圖以 Image 2.0 重畫為暖白亮色同構版本,只留一支向上的控制範圍箭頭,移除官方/非官方 badge,並把 Graph Engineering 配對 Workflow Graph、Loop Engineering 配對 Bounded Agent Loops;DESIGN、測試計畫、重產 prompt 與三語 regression 同步更新。本層只開 stacked PR 供使用者檢查,未經明確同意不合併或清理 branch/worktree。
  • tooling / reader UX · 新增可重用的「重要資源必須直接看得到」阻擋規則:章節可對必修閱讀、精選 Projects 與學習資源所在的可見區段設定最少連結與最少星等;檢查器把完整可見頁面渲染後只審計指定區段,辨識 inline、reference、autolink 與 HTML <a href>,但不讓收合內容、程式碼、圖片、alt、link destination、頁內跳轉、隱藏 HTML 或 attribute 裡的假字串湊數。Python-Markdown 3.10.3 與 PyYAML 以 hash 固定,70 條 reader-UX regression 全數通過;本層只建立通用 gate,不暗中改動既有章節,後續小型 stacked PR 才逐章啟用。未經使用者明確同意不合併或清理 branch/worktree。
  • content / visuals / Stage 5 · 在 5.1 前加入三語同構的亮色關係圖,讓讀者先看懂 5.1–5.7 如何接在一起:CLAUDE.md/Skill 提供 context,Agent loop 經 MCP 交換 request/result,Hook 只在符合 lifecycle event 時檢查,Subagent 與 Worktree 分別隔離 context 與檔案,Plugin 只負責包裝擴充。人工複查發現初版橘色 Plugin 點線誤碰 Worktree,已用 Codex 內建 Image 2.0 重畫三語版本,並把「Plugin 不連到 Worktree」寫入生成紀錄、DESIGN、測試計畫與 regression。第一題會用到的兩份官方資料、本章推薦的 tool-calling-tutor 與 anthropics/claude-code 保持可見;完整閱讀與 35 筆分組資源仍預設收合,正文第一次提到 modelcontextprotocol/servers 就連到官方 repo。
  • freshness / acceptance · Stage 5 於 GitHub API UTC 日期 2026-08-29 重新核對 Anthropic 與 MCP 官方來源:Stage 5 與 Track A2 三語 Skills 入口一併改用現行 /docs/en/skills,Plugin/Subagent/Worktree 的責任邊界與 MCP reference implementations 定位同步確認;repository snapshot 也同步新出現的 anthropics/claude-code 與 modelcontextprotocol/servers 引用數。三張 1672×941 圖鎖定語系、位置、不同 hash 與包裝/隔離邊界;reader-UX、strict anchors、mirror、locale、Hans、image、freshness、535 項 scripts regression、docs tree 與三語 MkDocs build 全數通過。本層疊在 #170 上供使用者逐步檢查,未經明確同意不合併或清理任何 branch/worktree。

  • content / researcher + developer paths · 研究人員與開發者三語入口改成先做一個可核對、可回復的小任務:兩頁先用八個粗體核心詞說清 citation/來源核對與 coding agent/Router/runtime/sandbox,再保留可直接複製的第一題、三個五星起點、完成檢查與下一站;時間、隱私、必讀順序、完整 22 筆專案表、進階流程與排錯放入 5 個預設關閉選單。開發者路線同步限定 Stage 5 核心 5.1–5.4,並用「操作介面(surface)」避免把 OpenCode、Pi、OpenRouter、Ollama 混成同一類。未展開主線實測為 2,284/4,289/2,019(研究)與 3,072/4,491/2,771(開發)個非空白字元;舊深連結、真正合併的 rowgroup 與逐列評分保留。Gemini Notebook 更名/citation/隱私、Claude Code permissions/sandbox、OpenCode V2、Pi、OpenRouter 與授權狀態於 2026-08-29 依官方來源重查;GitHub API 於 2026-08-29T01:23:31Z 完整覆蓋 259 個 repo,0 error、153 個人工複查提醒。

  • navigation / whole-site learning route · README、Progress、Roadmap、Capstone 與章節出口改用同一條三語學習順序:共用基礎固定為 Stage 0 → 1 → 2;Track A 固定為 A1 → A2 → Stage 5 → A3 → Stage 8,並清楚說明 A3 後即可開始 Capstone、Stage 8 建議完成但不擋入場;Track B 固定為 Stage 3 → 4 → 5 → 6 → 7 → 7.5 → 8。A2、Stage 5、A3 的上一站/下一站與先備條件同步修正,Roadmap 移除已完成的 2026-05 缺口宣稱;新增 30 條 route contract,阻擋三語再次各走不同順序。
  • maintenance / repository freshness · 修正全站 9 組已搬家的 GitHub repository 入口:OpenHands、prompts.chat、flonat-research、Instructor、xberg、LobeHub、Mozilla inclusion、Graphify 與 Supabase MCP 的現行引用改用 canonical owner/repo,三語可見名稱同步更新;歷史 CHANGELOG 與規劃文件保留當時名稱。GitHub API 於 2026-08-29T00:20:01Z 完整重查目前 259 個 unique repo,結果為 0 個 hard error、154 個人工複查提醒;沒有 release、缺 SPDX metadata 或較久未 push 不會自動刪除仍有教學價值的穩定專案。

2026-08-28

  • fix / Stage 6 / links · 三語 Chroma 入門資源與 freshness fact pack 改指現行官方 Getting Started 頁:舊的 /getting-started 已回傳 404;繁中、英語、簡中與機器檢查來源同步改用 /docs/overview/getting-started,不改動教材內容、資源評分或閱讀順序。
  • content / Stage 8 / reader UX · Agent Interfaces 從 547 行全攤開的產品牆,改成先選最小安全介面的三語學習路線:八個可見粗體核心詞先用白話分清 Agent Interface、Browser Use、Computer Use、Sandbox、Accessibility Tree、Harness、Approval Gate、Prompt Injection;📌/🚪/📚/🛠/🎯/✅ 路標、四種平行介面選擇、四道安全檢查、兩題可直接執行的第一步、四題可見落點與短版 self-check 留在主線。Computer Use 現行 contract、OSWorld benchmark 讀法、Browser Use 訊號、九個 Sandbox 術語、Track A/B 深解、安全案例、21 筆資源與未來介面放進 10 個預設關閉選單;所有舊 H2/H3 深連結以空 anchor 保留。未展開主線從 24,296/35,266/22,023 降為 4,625/7,281/4,702 個非空白字元,ratchet 各只留 50 字緩衝,沒有為縮短而刪掉必要名詞。
  • freshness / Stage 8 / resources · 依 2026-08-28 UTC 官方文件、原始 benchmark、法院文件與 canonical repos 重查介面可用性、安全、授權和專案狀態:Anthropic 現行 Computer/Browser client toolset、OpenAI GA computer tool 與 deprecated preview shape、Sandbox Agents Beta、Gemini in Chrome gradual rollout、OSWorld 2.0 的 108 個 long-horizon workflows/20.6% scoped result 全部改正;OmniParser repo 是 CC-BY-4.0,icon_detect_v3 是 MIT YOLOv9,較早 Ultralytics detectors 保留 AGPL,caption models 是 MIT。已停止維護的 Daytona 改為仍活躍的 Cloudflare Sandbox SDK,並依現行 README 明示 Beta、API 在 v1.0 前可能改變。21 筆資源以 5/5/4/5/2 真正合併分類並保留逐列五星編輯推薦度;移除 volatile stars、固定 5/10 行、<90ms、唯一 GPU、無範圍 SOTA/latency 與 blanket availability 宣稱。glossary 三語同步移除舊排行、舊星數與固定啟動數字,並補齊三語隔離術語深連結。
  • security / Stage 8 / exercise · 可複製 policy 範例改成 fail-closed,並由測試直接執行:action 先去除空白並統一大小寫;只有 read/screenshot 兩個低風險 allowlist action 能通過,高風險 action 必須詢問,未知 action、非 HTTPS、URL userinfo 與相似網域全部阻擋。
  • visuals / Stage 8 · Image 2.0 新增三語介面選擇圖,並重畫三語四道安全檢查圖:第一組把 Search/Fetch、Browser Use、Computer Use、Sandbox 畫成依任務選擇的四條平行分支,不再暗示一定逐級升級;第二組把隔離、allowlist、人工批准、結果驗證與 log 拆成四張獨立卡,不再混淆目的地限制與輸出驗證。六張圖各有獨立 locale bytes、在地化文字與 alt text,不放型號、版本、價格、stars 或 benchmark。
  • tooling / Stage 8 / acceptance · 新增 Stage 8 內容契約、reader-UX 設定與 90 天 freshness fact pack:scripts/test_stage08_content.py 鎖住八詞、10 個關閉選單、21 組 URL+評分、五個 rowgroup、三語來源順序、legacy anchors、安全練習、六張不同圖片與現行工具/授權事實;freshness patterns 阻擋舊 Computer Use preview、OmniParser Apache、舊 quickstarts owner、固定效能/排行榜與錯誤 Sandbox/Gemini 可用性。全站 GitHub API snapshot 於 2026-08-28T13:10:44Z 重建並覆蓋 260 個 repo;Stage 8 引用的 12 個 repo 全部 verified、未封存、無 redirect,Daytona 的 GitHub SPDX 結果誠實保留為 NOASSERTION。掃描另列出其他章節既有的 9 個 canonical redirect,留給全站收尾層處理。DESIGN、測試計畫與圖像重產紀錄同步更新;依使用者同意,本層以獨立 stacked PR 送審,未經再次明確同意不合併或清理 branch/worktree。
  • navigation / Stage 8 · 補回上一關與四題可見落點:Stage 7.5 返回連結維持在三語可見主線;練習 3、4 的標題、成果與既有深連結從 Track B 收合區移回動手練習區,四題依序可見,詳細 executor/framework 路線仍預設關閉。
  • content / Stage 7.5 / reading map · 進階 Agentic 概念不再是 638 行同時攤開的理論牆,而是先選問題、再讀 1–2 組的三語地圖:Work Boundary、Contract、Reflection、Autonomy、Budget Gate、Graceful Degradation 六個核心詞先用白話定義並保留正確術語;12 個既有概念全數保留,依邊界與契約、規劃與合作、檢查與學習、控制與復原分成 3/3/3/3 四個真正合併的 rowgroup。四行工作邊界卡可直接複製,不要求先建立空白文字檔;Dynamic Workflows 深連結、短版自我檢查與 Stage 8 入口留在可見主線。時間、incident、完整原理、Harness/Eval/Dynamic Workflows 深解與資源表放進 9 個預設關閉選單;三語都整理為 299 行,未展開實測為 4,824/7,768/4,850 個非空白字元,沒有用過度精簡換取短頁面。
  • freshness / Stage 7.5 / learning resources · 依 2026-08-28 UTC 官方文件、canonical repo 與原始研究重新定位 24 筆資源:五組 5/5/5/5/4 使用真正合併分類欄並保留逐列五星編輯推薦度。AutoGen 清楚標為 maintenance mode,現行新專案入口指向 Microsoft Agent Framework;OpenAI Sandbox Agents 保留 Beta;Claude Code Dynamic Workflows 的最低版本、16 concurrent、1,000 total/run、/workflows 與 /effort ultracode 都限定在官方文件的適用範圍。Constitutional AI 不再被寫成通用 runtime judge,透明度改教可觀察的 plan、action、evidence 與結果,不要求公開私人 Chain-of-Thought;固定 context、程式碼行數、吞吐、排行榜與無來源百分比全部移除或降回有範圍的案例。
  • visuals / Stage 7.5 · 以 Image 2.0 重畫兩組共六張 1672×941 亮色三語圖:concept-cluster 把 12 個概念整理成四個問題群,reading-decision-tree 讓讀者從五種卡關挑先讀的概念與小檢查;三語各自使用獨立圖檔,圖中不放會過期的型號、價格、版本、排行或效能數字。完整引用掃描後刪除 stack-4layer、failure-lifecycle、principle-dependency 三組共九張孤兒圖,並同步改寫可重製 prompt;歷史仍可由 Git 回復。
  • tooling / Stage 7.5 / repository freshness · 新增 22 條 Stage 7.5 內容契約,並把本章接進 reader-UX 與 90 天 freshness gate:測試鎖住 12 概念順序、六個核心詞、四/五組 rowgroup、明確寫死的 24 組 URL+評分 oracle、9 個關閉選單、legacy anchors、三語 marker、六張不同圖與 AutoGen/MAF/Sandbox Agents/Dynamic Workflows 現行狀態,三語即使一起漂移也不能誤過。Final review 另抓到 Stage 04 與三語 catalog 仍把 AutoGen 寫成現行 production 選項;現在全站一致標為 maintenance mode/既有專案維護,新的 Microsoft 專案改走 Agent Framework,freshness stale pattern 也涵蓋這些頁。全套 scripts 為 435 passed,正式 MkDocs build 成功;GitHub API snapshot 於 2026-08-28T11:12:11Z 重建並覆蓋 261 個 repo。完整掃描另找出 10 個舊 canonical redirect 與 Stage 8 三語共 6 處 OmniParser 授權錯寫,保留給對應章節處理,不把 Stage 8 混進本層。依使用者同意,本層以獨立 stacked PR 送審;未經再次明確同意不合併或清理 branch/worktree。
  • examples / Stage 7 / direct learning path · 五組範例改成先複製 PowerShell 跑離線測試,再選 Ollama 或 Anthropic:15 份三語 README 都保留 🎯 學習目標、粗體核心詞、「只改一件事」、成功檢查、3–5 星深入資源與 hello-agents 章節式延伸入口;實際模型、POSIX、程式走查、排錯與 production 延伸放進預設關閉的 <details markdown="1">。全域範例選擇器與三語 setup guide 現在明確分開 Stage 3–6 的 function-calling 預設 qwen2.5:3b,以及不依賴 function calling 的 Stage 7 qwen3.5:4b,llama3.2:3b 替代路徑也一致限於 Stage 3–6,不再用模糊的「Stage 3+」讓兩套教學互相矛盾;本機路徑只說沒有供應商模型 API 帳單,仍提醒裝置、log、權限、硬體與電力責任。Anthropic 固定 claude-haiku-4-5-20251001,費用改為 $1/$5 每百萬 input/output token 的公式與 $1 spend limit,不再保存固定每次費用、固定延遲或無條件快取省幅。五份 requirements 依 2026-08-28 UTC PyPI 現行 major 更新到 OpenAI 3、Anthropic 1、FastAPI 0.141、Uvicorn 0.52、Pydantic 2.13 與 HTTPX 0.28 的相容範圍;全量 GitHub API 快照於 2026-08-28T09:48:57Z 重建並覆蓋 260 個實際 repo 引用。
  • fix / Stage 7 / behavior and deploy safety · 55 個離線行為測試讓模型回覆與 HTTP 邊界可以真的失敗:十個 starter 全部拒絕空文字;辯論只接受完整 WINNER=PRO/CON + 理由,並明說多一個觀點不等於 bias 更低或答案正確。Eval Judge 只接受整份 PASS/FAIL,不再用子字串誤判。Observability 只保存 ValueError 這類安全錯誤類別,不把可能含 API key/Prompt 的原始 exception 訊息放入 trace 或 log;usage 只保存供應商回傳值。Ollama 與 Anthropic streaming 都拒絕只有空白的串流,first-token latency 從第一段可見文字開始計時。Prompt caching 示範改成明顯超過 Haiku 4.5 的 4,096-token 最低門檻,並只依 cache creation/read usage 說明結果。FastAPI 限制 message 為 1–4,000 字元、max_tokens 為 1–1,000,liveness 不打模型,測試鎖住 422/429/502/503;Ollama 與 Anthropic 兩條 deploy 路徑另以 secret marker 驗證未預期錯誤只記 exception 類別,不把 exception 原文或 traceback 寫進 log。Docker 使用非 root appuser,文件先教 loopback port、read-only filesystem 與暫存 /tmp,不把 container 當 sandbox。實際從零建置 deploy image 後,以 UID 10001、唯讀 filesystem、暫存 /tmp 與 loopback-only port 啟動,/health 回傳 ok。新增 scripts/test_stage07_examples.py 鎖住五資料夾、三語命令/URL/日期/價格/模型 parity 與舊宣稱;本層依使用者同意以獨立 stacked PR 送審,未經明確同意不合併或清理 branch。
  • content / Stage 7 / reader UX · Multi-Agent production 改成先判斷「真的需要多 Agent 嗎」,再沿同一條可執行主線完成五題:三語在第一題前用白話與粗體定義 Multi-Agent、Orchestration、Handoff、Harness、Eval、Observability、Guardrail,也把 Prompt 明確寫成「交給模型的任務說明」,不讓術語突然出現。📌/🚪/📚/🛠/🎯/✅ 路標、五層圖、Harness 八元件、五題成果與第一個可複製 python test.py 動作、execution-receipt 小專案、benchmark/reward-hacking 警告及既有深連結都留在可見主線;時間與環境、完整閱讀、Loop/Graph 深解、復原與成本、完整練習步驟、benchmark 入口和資源表放進 7 個預設關閉的 <details markdown="1">。未展開實測為 5,770/9,925/5,863 個非空白字元,沒有為了縮短而刪掉必要名詞或把練習變成空白模板。
  • freshness / projects / learning resources · Stage 7 依 2026-08-28 UTC 官方文件與 canonical repo 重查,並把容易混淆的工具按角色分開:OpenRouter 是 model API router,Pi 與 OpenCode 是 coding-agent 介面,Orca 與 QM 是可研究的編排/協作實作,不再把它們排成同一種產品。20 筆資源依 4/6/5/5 分成四個真正合併的 HTML rowgroup,逐列保留五星編輯推薦度;OpenAI Agents SDK、Anthropic、Microsoft Agent Framework、OpenTelemetry GenAI、LangGraph、CrewAI、AutoGen、Pi、OpenCode、Orca、QM、Terminal-Bench/Harbor 等提供事實或動手入口。移除舊 redirect、封存 cookbook、固定 SOTA 排名、通用快取省幅與 GitHub stars;官方沒有 release 或 SPDX metadata 只列限制,不自行猜測。GitHub API 全量 snapshot 於 2026-08-28T08:32:55Z 覆蓋 260 個實際引用;Stage 7 新增資源沒有 hard error,掃描同時誠實保留其他章節 16 個既有 redirect/license 錯誤,留給各章獨立修正。
  • visuals / tooling / planning · 五層 Agent Engineering 與 Graph 內部流程重畫成六張亮色三語圖,並把 Stage 7 讀者契約寫進 gate:繁中、英文、簡中各有獨立圖檔與在地化文字;前者整理 Prompt/Context/Harness/Loop/Graph 五層,後者把任務拆分、研究、平行草稿、驗證與人工核准畫成可追蹤的 Graph;圖中不放易過期型號、價格、排名或效能數字。scripts/test_stage07_content.py 鎖住七個核心詞、五題、20 組明確的 URL+評分、四個 rowgroup、7 個關閉選單、現行 owner、安靜查核日期、六張不同 bytes 的圖及舊深連結;reader-UX、freshness patterns、DESIGN、測試計畫、圖像生成紀錄與 repository snapshot 同步更新。實際跑 changed-links gate 另抓到 Windows 會用 CP950 解碼中文 git diff 的缺陷,兩條 Markdown diff 路徑現在都固定以 UTF-8 strict 解碼並各有 regression。本層只處理教材與內容 gate;五個 examples/stage-7/ 的 current SDK、模型、雙路徑與直接 copy/run 教學留給下一個可回溯 stacked layer,未經使用者同意不開 PR、不合併或清理 branch。
  • content / Stage 6 / reader UX · RAG 與 Memory 改成先分清七個核心詞,再一步步完成五題練習:三語在第一題前用白話與粗體定義 Retrieval、RAG、Embedding、Vector Store/Vector Database、Chunk、Reranking、Memory,並保留 📌/🚪/📚/🛠/🎯/✅ 路標、五題成果與第一個可複製 PowerShell 動作。BM25、Hybrid Search、GraphRAG、Contextual Retrieval、HyDE、Multi-Query、RAG Fusion、Self-RAG、CRAG、Adaptive RAG、RAPTOR、DSPy、Memory taxonomy、CoALA、Generative Agents、Reflexion、Chunking 與評測沒有被過度精簡,而是放進 7 個預設關閉、可正常渲染 Markdown 的 <details markdown="1">;練習 5 也誠實明說目前暫存讀寫不等於長期持久化。未展開實測為 3,290/6,367/3,340 個非空白字元,上限各只多 50 字。
  • freshness / projects / learning resources · Stage 6 依 2026-08-28 UTC 官方文件與 canonical repo 重查,再搭配仍活躍的知名實作入口:Microsoft GraphRAG 改為 MIT 且標明主要處於維護模式,Ragas 改用 vibrantlabsai/ragas,Letta 改指現行 letta-ai/letta-code,Zep Community Edition 明列為 legacy/deprecated,並移除 ada-002、波動的 GitHub stars 與無範圍 benchmark 結論。18 筆資源分成 4/5/4/3/2 五個真正合併 rowgroup,保留逐列五星編輯推薦度;官方文件與論文證明事實,LlamaIndex、LangChain、RAGFlow、LightRAG、Chroma、Qdrant、pgvector、Weaviate、LanceDB、Mem0、Graphiti、LangMem、DSPy、Ragas、Onyx 等代表專案提供動手入口。
  • visuals / glossary / acceptance · 新增三語亮色 RAG+Memory 三路概念圖,並把易變事實與舊深連結變成可阻擋回歸的 gate:最終三張圖以互不串線的色框說清楚 ingest、query 與 memory write/read lifecycle,不再暗示 Vector Database 會自動寫入 Memory,也不放固定 chunk size、top-k、成本或排名;三語圖各有獨立 bytes、相同 1672×941 版面與完整在地化 alt text。glossary 三語同步移除 ada-002 與「所有 vector DB/hybrid search 都一樣」等過度概括。新增 Stage 6 reader-UX、90 天 freshness fact pack 與 scripts/test_stage06_content.py,鎖住七詞、五題、三語 URL/日期/狀態、18 筆 URL→評分、五個可存取 rowgroup、英語無混入 CJK、本地化圖片及 109 個舊 heading alias;reader 字數工具同時改為不把看不見的空 <a> 算成讀者文字。2026-08-28T04:47:03Z GitHub API 全量 snapshot 覆蓋 280 個實際引用;Stage 6 清單沒有 redirect/archive/disabled/license error,全站其餘 21 個既有錯誤保留給對應章節獨立修正。本層只建立未合併的 stacked PR;五個可執行範例的 persistence、collection 隔離、chunk 邊界與離線行為測試留給緊接的 06B。
  • examples / Stage 5 / installable Skill · tool-calling-tutor 從「看起來完整」修成真的能安裝與離線驗收:三語 README 改成 PowerShell-first、正確複製整個 references/evals 目錄,POSIX 指令預設收合;所有收合區都帶 markdown="1",展開後的 code fence、連結與粗體會正常渲染,regression 會阻擋裸 <details> 回來。skill 內以 ${CLAUDE_SKILL_DIR} 找 bundled files,英文/簡中版本複製成根 SKILL.md 後不再連到錯的上一層。官方 Claude Code Skills、Agent Skills、anthropics/skills 與 promptfoo 作為現行規格/代表專案入口;自訂 evals.json 不再冒充 promptfoo config,而由 python evals/check_evals.py 真正執行五條離線 behavior contract。三語 references 移除無來源的原因比例、模型成功率、固定省時與「換模型一定改善」結論,保留四種症狀、五步 schema 演進、call ID、allowlist、參數驗證、結構化錯誤與有界 loop;短計畫只列可檢查的工具順序,不索取私人 Chain-of-Thought。新增 repo 已納入 2026-08-28 UTC 的 294-repo GitHub API 全量 snapshot;本層只會開在 #155 上的未合併 stacked PR。
  • content / Stage 5 / reader UX · Claude Code 生態系改成先看懂九個積木,再動手選對工具:三語在第一題前用白話與粗體分清 Claude Code、CLAUDE.md、Skill、MCP、Hook、Plugin/Marketplace、Subagent、Worktree、Claude Agent SDK;📌/🚪/📚/🛠/🎯/✅ 路標、Track A/B、5 題成果與第一個可複製動作維持可見,時間、安裝、完整閱讀、進階解釋與排錯放進 16 個預設關閉的 <details>。35 筆學習資源依 4/8/8/7/4/4 使用真正合併分類並保留逐列五星編輯推薦度,以現行官方來源查事實,再搭配知名或廣泛使用的實作 repo;查核日期只放在收合資源區的小字與機器 freshness marker,不打斷主線。
  • freshness / visuals / acceptance · Stage 5 依 2026-08-28 UTC 官方文件重查,補入現行 Dynamic workflows,並換成三語亮色擴充選擇圖:Dynamic workflows 明確定位為 Claude Code v2.1.154+ 的 JavaScript 編排能力;現行由自然語言明確要求 use/run a workflow 或 ultracode 觸發,literal workflow 只屬 v2.1.160 前的舊規則,/effort ultracode 需 v2.1.203+ 與支援 xhigh effort 的 model。/workflows 可用來監看,Pro 需先在 /config 啟用;不再與舊的「Opus 4.8 專屬」說法綁在一起。Agent view 保留 Research preview、Agent teams 保留 Experimental/預設停用等狀態;MCP、hooks、worktrees、subagents、SDK 與安全邊界亦依官方來源核對。三張新圖用同一張地圖說明八種擴充何時使用,三語都不放 1–8 編號,避免把選擇圖誤讀成固定安裝順序;另移除 9 張重複或過時的舊圖。reader-UX/freshness gate、legacy 深連結與三語 parity 同步更新。空引號審計涵蓋 Stage 0/2/3/4/5 三語且為 0;329 個 scripts regression、strict anchors/mirror/locale/Hans/image/freshness gate與三語 MkDocs build 全數通過。本層只建立未合併的 stacked PR,Stage 5 可執行範例留給下一層 05B。
  • fix / Stage 5 / executable teaching · 獨立 review 擋下「看起來像範例、複製卻會壞」與跨頁舊術語:三語 Agent SDK quickstart 改從 AssistantMessage.content 逐一讀取 TextBlock.text,不再呼叫不存在的 message.message.content;regression 也以 fake async query() 實際送入 AssistantMessage([TextBlock("ok")]) 並驗證輸出。練習 3 改成真的可建立、用假事件 smoke test、再由 /hooks 驗證的 observation-only PreToolUse logger,只保存 event/tool 名稱且不替使用者批准或阻擋;Hook path 使用 command + args 的跨平台 exec form,不再放 PowerShell 無法展開的 shell 變數。Stage 5 直接連到的 agent paradigms、glossary、subagent advanced/cookbook 三語統一改教現行 Agent tool;Stage 7.5 三語把 Dynamic workflows 改為不綁模型的 Claude Code 能力,同時以 legacy anchor 保留舊深連結。freshness gate 新增對舊 Task tool、錯誤 Opus 4.8 綁定及過時 workflow trigger 的阻擋規則。
  • docs / resources / freshness · 全站資源規則改成「官方來源證明事實,代表 repo 帶讀者動手」:三語 style guide 不再要求或示範會自然變動的 GitHub stars 數字,但保留五星編輯推薦度;知名度只用來找候選,每筆仍要查維護、License、安全、相關性、狀態與限制。Stage 5 的 29 個 GitHub repo 沒有 redirect/archive/disabled;搬家後的專案已改用 canonical URL,全站 snapshot 重新覆蓋 294 個實際引用。每週 GitHub Actions 繼續逐一掃描所有 unique repo;完整掃描另誠實保留其他章節既有的 25 個搬家/License error,留給各章獨立 PR 修正。
  • content / Stage 1 / reader UX · 模型查核日期移進預設收合的 15 家族表,頁首只保留看不見的 freshness marker:三語刪除「日期不代表永久」一類沒有幫助讀者開始學習的固定提醒,只留下「沒有可靠公開數字就寫官方未公布」與實際計價單位;模型資料、日期、表格、深連結與正文主線都沒有改動。
  • examples / Stage 4 / current SDK · 五個 framework 範例升到查核日 current major,並改成每題自己的 Python 3.11 環境:LangGraph/LangChain、CrewAI、Smolagents、LiteLLM 與 Pydantic AI requirements 不再鎖在舊 major;三語索引與 15 份 README 都先給可直接複製的 PowerShell .venv 指令,再用關閉的 <details> 放 macOS/Linux。乾淨的 Exercise 2 專用環境實際抓出共用環境曾遮住的缺件:CrewAI Anthropic Path B 必須安裝 crewai[anthropic];修正後五個獨立環境都能 pip check,不再把不同 framework 的 requirements 混裝。
  • fix / behavior / safety · 雙路徑從「能 import」提升為可觀察的離線行為測試:Exercise 1 限制 LangGraph recursion、驗證 tool name/參數並真正走 tool loop/Crew 結構;Exercise 2 鎖住三角色 handoff、max_iter=4 與停止條件;Exercise 3 改用現行 interrupt() + Command(resume=...)、checkpoint 與固定 thread_id,也把 node 內暫停和 caller 外部恢復分開教;Exercise 4 移除 eval,改用有節點/字數/數值上限的 AST 算術與 JSON allowlist。CodeAct 使用一般 Docker bridge 保留 host → Jupyter 控制通道,控制埠只綁 127.0.0.1,再 drop capabilities、禁止提權與限制資源;正文也明說容器仍可能連網、這不是 production sandbox。Exercise 5 遷移到 Pydantic AI 2.35 的 OpenAIChatModel/AnthropicModel/官方 TestModel,拒絕空答案、空 sources 與越界 confidence,並明說「格式通過不代表內容真實」。11 個直接執行的離線入口與 compileall 均通過;另附真正啟動 executor、核對實際 loopback port binding 的 test_docker_smoke.py,但本機 Docker daemon 未啟動,所以沒有把 live CodeAct 容器冒充為已驗收。
  • docs / cost / acceptance · 原有深度閱讀、延伸與五星編輯推薦不因現代化而被刪短:五題三語保留原資源與教學段落,刪除固定成功率、固定秒數、沒有來源的「最穩/10 倍/production 必用」結論;CrewAI streaming 改成現行 Crew(..., stream=True),Smolagents HfApiModel 改成 InferenceClientModel,HITL 比較改為中性事實。Ollama $0 限定為模型 API 費,Anthropic 改用 $1/$5 每百萬 token 公式、明示 2,000 input + 1,000 output 的 $0.007 假設與每題保守支出上限。新增 scripts/test_stage04_examples.py 鎖住五資料夾、current-major requirements、雙行為測試、固定 model ID、PowerShell-first、關閉 details、三語 URL/數字/安全語意、舊 API 與過期主張;DESIGN、三語 style guide 與執行計畫同步記錄獨立 .venv 和「import-only 不算通過」。本層只會開在 #152 上的 stacked PR,未經使用者明確同意不合併或清理。

2026-08-27

  • content / reader UX · Stage 0、2、3、4 三語把易變資料的查核日期移出可見主線:日期只留在預設關閉的資源/時間區與機器可讀 freshness marker;刪除「日期只表示……」一類沒有幫助讀者開始學習的固定提醒,並把同一規則寫回 DESIGN 與三語 style guide。另逐頁檢查「動手練習」標題的實際 Markdown 與 MkDocs HTML,確認標題沒有 "";Stage 2 的 """ 是 Python 多行字串,Stage 3 原本較容易誤讀的 print("".join(...)) 改為直接以換行連接。
  • visuals / Stage 3 · Image 2.0 新增三張亮色 Tool Use 六步概念圖:繁中、英文、簡中各有獨立圖檔,固定放在八個核心詞之後,用同一條 模型需要資料 → Tool Call → 程式驗證 → 工具執行 → Tool Result → 最後回答 流程說清楚「模型提出請求,程式才執行工具」;allowlist、高風險操作先問人與最大輪數三個安全邊界也直接畫在圖中,不放版本、價格或 GitHub stars。三語 alt text、圖片語系 gate 與生成紀錄同步更新。

  • content / beginner path · Stage 4 三語重建成「先分清楚,再選工具」的漸進式框架入口:讀者在第一題前先用積木盒、食譜、工作筆記與遊戲存檔等白話比喻,依序看懂並粗體辨認 Framework、Workflow、Agent、Orchestration、State、Checkpoint、Handoff、Human-in-the-loop(HITL)八個正確術語;Supervisor/Worker/CodeAct/Type-safe 也在第一次可見使用時直接解釋。📌/🚪/📚/🛠/🎯/✅ 路標、簡短進入條件、五種協作 pattern、五題練習、既有深連結、每題成果/第一個可複製 PowerShell 指令/Ollama 與 Anthropic 預算,以及推薦小專案都留在主線;每題第一個 code block 會先安裝該資料夾 requirements,再跑離線測試,不讓乾淨 checkout 一開始就缺套件。時間、環境、完整閱讀、證據限制、進階 tool pattern、排錯與 18 筆完整資源放進 8 個預設關閉的 <details>。三語未展開實測為 5,230/10,190/5,244 個非空白字元,上限各只多 50 字,沒有為縮字數刪掉必要名詞。

  • freshness / resources / safety · 框架定位依 2026-08-27 UTC 官方文件、PyPI 與 GitHub API 重查:刪除「90% 用例不該用 multi-agent」、通用 3–10× token、平行固定 1/N、工具數量硬門檻等無來源通則;Anthropic 的 90.2% 與約 15× 明確限定在其 research system。獨立 review 沿引用鏈再抓到 Stage 7 的通用 3–10× 與 Stage 8 六處 architecturally sound 過度結論,三語一併改為「依自己的任務量測」與「Sandbox Agents 仍是 beta」。CrewAI 改為現行 persistence/resume/human feedback;OpenAI Swarm 只列凍結/歷史教育用途;Microsoft Agent Framework 改為 stable 與正式遷移路線;Deep Agents、Strands canonical repo、Pydantic AI、Agno 與 Eve Public Preview 也更新到現況。18 筆資源保留逐列五星編輯推薦度、移除 volatile GitHub stars,分類改成真正的 HTML rowspan=4/6/4/3/1;LiteLLM 的 root/enterprise 授權邊界與 Swarm 無 release 以限制文字說清楚,不把 GitHub 無 SPDX metadata 猜成沒有授權。五個 examples 的 current-major migration 明確留給緊接的 04B,本層不把舊 requirements 說成已升級。
  • visuals / tooling / planning · Image 2.0 新增三張同構亮色 Agent framework 選擇圖,並把 Stage 4 納入可量測契約:繁中、英文、簡中各有自己的圖與 alt text,以「誰決定下一步 × 需要幾個 Agent」整理 Workflow/Agent、single/multi、Checkpoint/Handoff/HITL,最後都回到「先用最簡單能完成任務的形狀」;圖中不放易過期版本、價格或 popularity。reader-UX gate 鎖住 19 個可見段落順序、八詞粗體首次使用、五題、三語 URL/日期/狀態 literal parity、18 筆 URL→評分與 rowgroup;freshness gate 新增 90 天 Stage 4 fact pack,全量 repository snapshot 涵蓋 298 個 tracked repo。strict anchor gate 另抓到並修正 Stage 5.5 英文舊 fragment;319 個 scripts regression、三語 mirror/locale/Hans/image/freshness gate與 MkDocs build 均通過。本層疊在 #150 上供使用者檢查,未經明確同意不合併或清理上游分支。

  • visuals / content / docs · Stage 2 新增一組亮色、三語同構的 Prompt Engineering 概念圖:繁中、英語、簡中各自使用在地化圖檔,固定放在九個可見核心詞之後,先讓正文定義 Prompt、Zero-Shot、One-Shot、Few-Shot、Eval 與 Chain-of-Thought,再用圖整理「目標/資料/規則/輸出 → 要不要給範例 → 固定題目檢查、改一處、再試一次」。CoT 使用編號步驟而非腦內想法圖示,文字只要求可檢查的說明與答案;Few-shot 明寫「多個/multiple/多个例子」,沒有把已移除的 2–5 假通則畫回教材。獨立 review 另抓出英語 Context/Data 漂移、假閉環箭頭與 alt text 遺漏 CoT;最終圖已改成三節點單一回圈,三語無障礙文字也完整描述 CoT 邊界。reader-UX 實測為 3,320/6,659/3,386 個非空白字元,上限只調到 3,370/6,709/3,436。圖像語系、anchor、mirror、reader-UX、三語 MkDocs build 均納入驗收;本層獨立疊在 Stage 2 定義 PR 上,未經使用者明確同意不合併或清理。

  • examples / beginner path · Stage 3 補上原本缺席的練習 01,六個資料夾現在都能從「模型提出工具呼叫」走到最後回答:新 01-function-calling 以同一個天氣例子示範 Ollama 與 Anthropic 兩條路,讀者可以直接複製指令,依序看見 schema、tool call、程式驗證、真正執行、tool result 與 final answer;三語 README 同步說清楚每一步、預算、安全邊界與延伸閱讀。Stage 3 首頁與 examples 索引都改成六題對照,不再讓第一題只有章內片段、沒有可下載執行的完整專案。
  • fix / SDK / safety · 02–06 不只換套件版本,也把「能跑」和「不會偷偷做錯」一起補齊:六個資料夾統一使用查核日 PyPI 最新的 openai>=3.5,<4(3.5.0)與 anthropic>=1.1,<2(1.1.0),Anthropic 範例改用固定 Haiku model ID,避免 alias 漂移。所有工具參數都在應用程式端檢查必填欄位、額外欄位、型別與允許值;多工具、ReAct、錯誤處理、schema 對照都補上多次呼叫、未知工具、is_error: true、步數上限與結構化錯誤測試。計算機只解析允許的運算式,不使用 eval;多步推理只顯示可檢查的 action/observation/result,不索取或保存模型私人 Chain-of-Thought。
  • tooling / docs / acceptance · 新增 Stage 3 範例結構 gate,並把這次的讀者體驗規則寫回 DESIGN、三語 style guide 與規劃文件:scripts/test_stage03_examples.py 固定六個資料夾、雙路徑 starter/mock test/README、版本範圍、模型 ID、錯誤回傳與安全守衛,也會阻擋 eval/exec、遺失 AST 上限、超大或非有限數字、除以零,以及壞 schema 繞過應用程式驗證。乾淨環境已逐一跑過 12/12 個 SDK mock 入口,319 個 scripts regression 與三語 MkDocs build 也都通過;GitHub API 於 2026-08-27T19:27:22Z 全量重建 298-repo snapshot,兩個新增深度閱讀 repo 均為 verified,另 27 個其他階段既有 redirect/license 錯誤留待各自的 Stage PR。本層只建立 stacked PR 供使用者檢查,不合併或清理任何上游分支。

  • content / glossary · Stage 3 三語重建成一條真的能跑完的第一個工具迴圈:讀者在練習 1 前先用白話分清並粗體看見 Tool Use、Function Calling、Tool Schema、Tool Call、Tool Result、Agent Loop、ReAct、Structured Output 八個核心詞,再依 schema → call → 程式驗證與執行 → result → final answer 完成 Ollama 或 Anthropic 路徑。第一題不再停在模型「想呼叫工具」:兩條路都會驗證 city、執行 get_weather、用 call ID 送回結果並取得最後回答。六個既有練習、anchor、成果與第一步全留在可見主線;12 個 <details> 全部預設關閉,三語未展開實測為 4,237/7,975/4,295 個非空白字元。📌/📚/🛠/🎯/✅ 五個路標、CoT、Reflection、Reflexion、Self-Refine 與 Planning 都有保留;ReAct 明確改為可觀察的 action/observation loop,不要求公開私人 Chain-of-Thought。

  • freshness / resources / docs · Function Calling、strict schema、tool error、價格與安全邊界依 2026-08-27 UTC 官方資料重查:OpenAI strict mode 明寫 additionalProperties: false 與全部 properties 列入 required 的限制;Anthropic client tool 錯誤保留對應 tool_use_id 並使用 is_error: true;Structured Output 不再被說成內容保證,仍要處理 refusal、截斷與語意錯誤。Claude Haiku 4.5 的 $1/$5 每百萬 token 價格改用公式與假設,不再留下互相矛盾的固定章節帳單;Ollama $0 只代表 API 費,不假裝硬體與電力免費。glossary 與 schema cheatsheet 三語同步補齊上述定義。21 筆資源保持 6/4/4/3/2/2 真正合併分類與逐列五星編輯評分,移除 volatile GitHub stars,並把 jxnl/instructor 更新為現行 567-labs/instructor。三張混合語言、text-only 過度簡化且沒有其他引用的點陣圖刪除,改用可搜尋、可翻譯、可被螢幕閱讀器讀取的五步文字流程。
  • tooling / acceptance / planning · Stage 3 正式加入 reader-UX 與 90 天 freshness 契約,並保持為 #147 上的未合併 stacked layer:gate 鎖住八詞順序與粗體首用、17 個可見路標、六題、MAX_STEPS、安全 literal、21 個資源 URL、逐列評分與 6/4/4/3/2/2 rowgroup。第一次獨立 review 實際擋下「JSON 能 parse,但 city/unit 沒有驗證」的安全缺口;修正後新增 6 條 regression,直接對三語 Markdown snippet 餵入缺欄位、多欄位、錯型別、空白 city 與錯誤 unit。GitHub API 全量重掃的 snapshot 涵蓋 298 個 repo;Stage 3 已無 redirect/license mismatch,另找到的 27 個其他章節既有錯誤留待對應 Stage PR,不混進本層偷修。三語 mirror/anchor/locale/Hans/image/freshness gate、312 個 scripts regression、10 個 Stage 3 獨立 mock 入口與 MkDocs 三語 build 均通過;根 README 三語同步把 Stage 3 改為六個練習。未經使用者明確同意,不合併、retarget 或清理分支/worktree。

  • content / resources · Track A(A1–A3)三語補回不該因精簡而消失的路標、核心詞與五星編輯評分:A1 在第一題前用白話分清 LLM、Provider API、Router、Coding agent、Local runtime;A2 分清 Project instructions、Skill、One-off prompt;A3 分清 MCP、CI、Observability。每個詞第一次可見使用皆粗體,並說明「它是什麼、像什麼、本章怎麼用、不是什麼」。📌/📚/🛠/🎯/✅ 五個路標、CLI-1 至 CLI-12、Playbook 4 與深連結全數保留;A1 第一個 prompt 與 A3 CLI-9 的 PowerShell、macOS/Linux demo 指令可直接複製,不再要求抄空白模板。A1/A2/A3 的 11/16/18 筆資源分別維持 4/5/2、4/4/4/2/2、4/5/4/3/2 真正合併分類,三語 URL、順序與逐列推薦度一致;編輯推薦度與會自然漂移的 GitHub stars 明確分開。

  • freshness / docs · OpenRouter、OpenCode V2、Pi、Ollama 的身分與安全邊界依 2026-08-27 UTC 官方資料重查:OpenRouter 是 Router、Ollama 是 local runtime、OpenCode V2 與 Pi 才是可操作工作目錄的 coding agent/harness;Pi 的 project trust 不等於 sandbox。A1、CLI agents guide 與 developer path 三語都明確區分 Claude Code 的 CLAUDE.md 與 OpenCode V2 的 AGENTS.md,不再沿用舊 fallback;Codex/Claude Action 與 GitHub Actions security 連結改用現行 canonical URL。glossary 三語新增 Project Instructions、One-off Prompt、CI,並把 Skills 改成跨工具定義;DESIGN 與三語 style guide 固定核心詞、路標、可複製第一步、表格與五星評分契約。
  • tooling / planning · reader-UX gate 不只檢查標題存在,現在也阻擋三語把可見主線排成不同順序。人工鏡像複查實際抓到 A1 的必讀被放到 Projects 後、A2/A3 的資源表被放到完成檢查後;內容雖未遺失,讀者路線已不同。新增 per-page visible_section_order 與 regression 後,A1–A3 三語順序完全一致;必要概念加入後未展開實測為 A1 3,626/6,241/3,690、A2 2,649/4,822/2,632、A3 3,337/5,878/3,388 個非空白字元,上限各只留 50 字餘量。reader-UX 測試 44/44 通過;本層保持疊在 #146 上,未經使用者明確同意不合併或清理任何分支/worktree。
  • tooling / freshness · 穩定的 <a id="cli-*"> 深連結正式納入 strict anchor gate:原 checker 只收 Markdown heading slug,導致 glossary 連到 CLI-6/8/10/11 時誤報 12 個壞連結;現在以 HTML parser 只接受可見 code fence 外真正 <a> 的 id/name,明示 ID 必須完全相同才命中,不再把 data-id 當成目標,也不會把 Foo.Bar 偷改成 foobar。正反 regression 同時防止 code sample 變成假 anchor;全套 scripts regression 306/306 通過。恢復 A1 repo 資源列後,以 GitHub API 在 2026-08-27T15:36:45Z 完整重建 298-repo freshness snapshot,coverage gate 已全綠;全量報告同時重現其他尚未回溯階段既有的 28 個 redirect/license 硬錯,留給對應 Stage PR,沒有混進 Track A 正文偷修。

  • content / glossary / tooling · Stage 2 三語補成一條不會把術語講丟的 Prompt 入門路徑:在第一題前依固定順序可見並粗體定義 Prompt、Instruction、Input Data、Example、Eval、Zero-Shot、One-Shot、Few-Shot、Chain-of-Thought 九個核心詞,每個都說清楚「它是什麼、像什麼、本章怎麼用、哪裡不能誤會」。Prompt 不再被縮成一句輸入文字,而是可包含指令、資料/背景、範例與輸出限制、並可能分布於多個 message 的完整任務包;Instruction 是內容,system/developer/user 是容器與優先順序,兩者不再混為同義詞。Few-shot 移除沒有官方通則的固定 2–5 數字;CoT 依 OpenAI/Anthropic 現行推理建議保留名詞與歷史用途,但不再教讀者索取模型完整內部想法。練習 1 從與程式實作矛盾的「System Prompt」改成可攜的「Prompt 四格」,並保留三語舊 anchor;練習 3 改為直接複製的結果卡。官方事實於 2026-08-27 UTC 重新開啟 OpenAI、Anthropic、Google prompting/eval 文件核對。

  • resources / acceptance · Stage 2 的 18 筆工具箱恢復編輯推薦度並保持真正合併的 5/4/4/4/1 分類欄:10 筆四星、7 筆三星、1 筆封存歷史資料兩星、0 筆假必修五星,三語每一列 URL→推薦度完全相同。李宏毅入口明標為教材仍可讀的 2025 Fall 已結束課程,不冒充最新模型文件;Microsoft Prompt Engine 繼續只放歷史區。reader-UX 契約新增九詞順序、粗體首次使用、第一題前可見、ordered URL 與逐列評分 parity;必要定義加入後,三語未展開實測為 3,135/6,282/3,189 個非空白字元,上限只調到 3,185/6,332/3,239。multi-locale acceptance preset、43 條 reader-UX 測試、mirror/anchor/Hans gate 均通過;本層只建立疊在 #145 上的 PR,未經使用者明確同意不合併或清理分支/worktree。

  • content / resources / tooling · Stage 1 三語補強 Token、Context Window、Temperature 的可見核心詞教學,並恢復 17 筆延伸資源的編輯推薦度:三個正確術語在本章目的第一次出現及核心詞標題皆以粗體標示;每個定義保留生活比喻、說清楚本章會在哪裡使用,以及 tokenizer/模型上限/可重現性等限制,不用縮字數的理由刪掉必要觀念。Context Window 改成「一次請求可處理的 token 空間」:提示與歷史先占位、答案也要留空間,並提醒型號可能另有較小的最大輸出上限,不再把模型生成的輸出誤寫成模型「接收」的內容。資源表保持 4/4/2/4/3 五組真正合併分類,三語逐列 URL→推薦度一致:10 筆四星、6 筆三星、1 筆已封存歷史參考兩星、0 筆假必修五星;GitHub 熱門數字仍不回填。17 個入口於 2026-08-27 UTC 全部回傳 HTTP 200,Anthropic Quickstart 與 Hugging Face LLM Course 改用重新導向後的現行網址。reader-UX 契約新增 Stage 1 核心詞順序、粗體首次使用、練習 1 前可見位置與逐列評分 parity;必要解釋加入後,三語首屏實測為 6,721/10,248/6,714 個非空白字元,上限只調到 6,771/10,298/6,764,沒有為通過舊門檻再次過度精簡。

  • docs / tooling / planning · 核心詞改成全站可量測的閱讀契約,不再靠編輯者記憶:完成回溯的 Stage/Track 必須在第一個練習前保留可見核心詞區;技術詞第一次出現在正文時用粗體,逐詞說清楚「它是什麼、像什麼、這章用它做什麼、正確術語是什麼」。三語 style guide 與 stages/DESIGN.md 同步明定不能把核心名詞藏進 <details>、不能為了縮短頁面刪除 Zero-Shot/Token/MCP,也不能拉普通名詞湊數。reader-UX gate 新增 per-page core_terms 契約,會阻擋核心區藏入收合選單或晚於第一題、首次未粗體、單一語言詞序漂移、粗體定義標籤缺漏與只有名詞沒有最短解釋。核心區只讀到下一個同級/更高級 heading,不能借後續 setup 補字數;ASCII 詞接中文、頁面 H1 例外、HTML attribute 與 fenced heading 也有專門防誤判。新增 15 條正反 regression 後為 43/43 通過。Stage 1 與 Stage 2 正文刻意留給下一個獨立 stacked layer,本層 PR 未獲使用者同意前不合併、不清分支或 worktree。

  • fix / content / resources · Stage 0 三語補回學習資源的五級推薦制度,但不恢復會過時的 GitHub 熱門數字:18 筆資源仍放在預設收合選單,保持 Python/Git/CLI/REST API/YAML・JSON 的 5/4/3/3/3 真正合併分類。既有 style guide 規定 ⭐⭐⭐⭐⭐ 是「跳過會卡住」;本表全是補充資源,因此誠實使用 ⭐⭐⭐⭐ 或 ⭐⭐⭐,不為了好看假發五星。reader-UX gate 新增逐列 URL→推薦度三語 parity 與交換兩列星等的 regression,不再只比較 URL 順序與星星總數。主線、重要名詞、📌/🛠/🎯/✅ 路標與可直接複製執行的 GitHub API 練習都沒有被縮掉。

  • content / freshness / planning · 三個較弱入口換成 2026-08-27 UTC 已核實的一手來源:runoob 改為 Python 3.14.7 官方繁中教學,並明寫官方頁預期讀者已有一點程式觀念;Oh Shit, Git 改為 Pro Git〈Undoing Things〉,先提醒哪些復原動作可能丟資料;explainshell 改為持續維護、提供跨平台短指令例子的 tldr pages。repository freshness 由既有掃描器完整重查並從 297 增為 298 個 tracked repo,tldr 為未封存、未搬家的 verified row;掃描同時量到 28 個其他 Phase 既有 redirect/license 矛盾,留給各自的回溯 layer,不混入 Stage 0。新增 Stage 0 回溯計畫,固定評分理由、三語不變量、stack base,以及「未獲使用者明確同意不得 merge 或清理分支/worktree」的發布規則。

  • fix / content / tooling · Stage 2 補回被過度精簡刪掉的核心提示詞彙:三語可見主線在第一次使用前,以白話說明 Zero-Shot(0 個例子)、One-Shot(1 個)、Few-Shot(幾個)與 Chain-of-Thought(分步處理);同時明確區分 CoT 與「要求模型公開完整內部想法」,核對時只要求簡短理由或可驗證步驟。練習 1 不再叫初學者抄空白模板,改為可直接複製的模糊版與完整四格 prompt,再只替換資料做自己的版本。stages/DESIGN.md 將「漸進式揭露不能刪除核心名詞」、可直接執行的第一步與五個核心章節 icon 定為全站規則;reader-UX gate 新增四個跨語言精確詞彙的數量一致性檢查,並鎖住 Stage 2 的 📌/📚/🛠/🎯/✅ 路標。恢復必要教學後,三語可見實測為 2,424/4,667/2,473 個非空白字元,門檻以最小餘量調整為 2,475/4,725/2,525;沒有為湊舊字數再次刪掉名詞。

  • content / docs · Track A3 三語改成「只讀 → 最小權限 → demo repo → 人工 review → 才考慮寫入」的安全 production 入口:不展開選單時,讀者先分清 MCP、CI、observability,再完成 CLI-9 限定資料夾的 filesystem MCP、CLI-10 只讀 PR checker、CLI-11 usage/成本收據、CLI-12 team Skill 分享。四個練習、既有 cookbook 深連結使用的 Playbook 4、production 安全迴圈與 Track A 完成檢查保持可見;三語各 8 個 <details> 全部關閉。未收合非空白字元由繁中 11,785/英文 15,811/簡中 11,966 降為 2,795/5,213/2,848。

  • content / freshness · A3 的 MCP、GitHub Actions、subagent、prompt caching 與成本指引依 2026-08-27 UTC 官方資料重建:GitHub 入口由歷史 github reference server 改為 github/github-mcp-server 的 --read-only 與 allow-list;filesystem 練習只授權 demo 資料夾,不再教讀取範圍外檔案。CI 移除固定 1–2 分鐘承諾,改用 workflow 完成與可檢查輸出;補上最小 GITHUB_TOKEN 權限、secret、pull_request_target 不可信 code 警告、Codex :read-only permission profile 與 production Action pin SHA。code-reviewer 改為官方自訂範例,不再稱固定內建;成本不再虛構跨工具設定,input/output 分開計算,拿不到 usage 就明寫未確認;Anthropic caching 同步標示預設 5 分鐘與可選 1 小時 TTL。
  • content / resources · 完整學習資源增為 18 筆並改成真正合併的 4/5/4/3/2 五組表:安全 MCP、CI/PR review、觀察/評估、Skill/plugin 分享、目錄/完整範例各自使用獨立 <tbody> 與 rowspan。新增 github/github-mcp-server、OpenAI Codex Action 文件/openai/codex-action、GitHub security hardening、MCP security、Phoenix 與 Anthropic plugin 官方入口;移除 continuedev/continue 的錯誤 CI 定位,以及 stars、主觀星等、即時數量與散落的 mini-table。
  • tooling / planning · reader-UX ratchet 新增 A3 三語首屏上限、8 個收合區、0 個預設展開、CLI-9 至 CLI-12/Playbook 4/完成檢查可見、資源 4/5/4/3/2 與頁面過時字串阻擋。checker 新增可重用的 exact details-count、可包含 code fence 的 per-locale forbidden-term gate,以及三語 ordered URL/精確技術 literal parity;單元測試由 20 增為 26、全數通過。repository freshness 以 GitHub API 完整重查 297 個 tracked repo 並納入 openai/codex-action;本輪同時量到 28 個其他 Phase 既有 redirect/license 硬錯,留待對應章節 layer 修正,不混入 A3 正文。新增 A3 專屬計畫,記錄量測、事實基線、章節形狀、安全邊界、資源分組與 stacked-PR 驗收。

  • content / docs · Track A2 三語改成「共同守則 → 按需操作卡 → 臨時交代」的漸進式工作流:第一遍先分清 project instructions、Skill、one-off prompt,再完成 CLI-5 最小規則卡與 CLI-6 只讀 review Skill;CLI-7/CLI-8 的標題、固定 anchor、成果與 A3 入口保持可見,詳細拆解與跨工具測試預設收合。三語各 9 個 <details> 全部關閉;未收合非空白字元由繁中 5,295/英文 8,086/簡中 5,505 降為 2,351/4,252/2,391。A3 進入條件與 README 三語摘要同步改成 project instructions、Skill、任務拆解,不再要求新手先寫 legacy slash command。

  • content / freshness · A2 的 Codex、Claude Code、Gemini CLI、OpenCode V2 規則檔與 Skill 路徑依 2026-08-27 UTC 官方文件重查:移除跨工具的 30–50/50/100 行硬門檻,以及「整份設定可原封不動跨所有 CLI」的過度承諾;Claude Code 主線改用 .claude/skills/<name>/SKILL.md,舊 .claude/commands/ 只保留為相容說明。16 筆學習資源依 4/4/4/2/2 五組放入預設收合表,每組有獨立 <tbody>,分類欄使用真正 rowspan;移除 stars、五顆星與「90% 通用」「必備」等易變或主觀宣稱。已搬家的 f/awesome-chatgpt-prompts 從 A2 換成未封存的 Anthropic 官方互動式 prompt 教學。A3、glossary 與 testing plan 的直接相依句子也改用 review-changes Skill 與 plugin-root skills/<name>/SKILL.md,並明確保留 project instructions 在 repo。reader-UX ratchet 新增 A2 三語的首屏上限、0 個預設展開、四個練習與完成檢查可見、以及資源 rowgroup 結構。
  • planning / docs · 新增 Track A2 專屬執行計畫,記錄現況量測、官方事實基線、可見主線、收合範圍、表格規則、直接相依頁、驗收與 stacked-PR 邊界;stages/DESIGN.md 同步把 A2 從舊的 CLAUDE.md/slash-command 定位更新為跨 CLI 的 project instructions/Skill,並固定「白話用途先行、正確術語保留、細節按需展開」的章節形狀。

  • content / docs · Track A1 三語改成一條安全、漸進的第一個 CLI agent 任務:不展開選單時,讀者先分清「模型供應商/模型/CLI agent/router/本機 runtime」五種身分,再依現有帳號選入口,完成讀取 demo repo、套用專案規則、用第二個 harness 重跑,以及觀察假憑證失敗。繁中可見內容由 4,243 降到 3,766 個非空白字元;7 個 <details> 全部預設關閉,四個練習標題、成果、自我檢查與 A2 入口保持可見。第一個提示先要求唯讀,修改前後都看 git status --short,只有確認起點乾淨才提供限定路徑的還原步驟;不再教初學者用不受限的清理命令。

  • content / freshness · OpenRouter、OpenCode、Pi、Ollama 不再被寫成同一類東西:OpenRouter 是 API router,Ollama 是本機 model runtime,OpenCode/Pi 才是可操作檔案與指令的 CLI agent。完整 9 工具比較表移到三語 CLI agents guide 的預設收合區,並把兩個真正相同的分類合併成 rowspan="4" 的官方模型生態與 rowspan="5" 的 provider-flexible 工具;繁中首屏由 5,555 降到 2,411 個非空白字元。安裝、登入、專案規則、sandbox 邊界與 canonical repo 已依 2026-08-27 UTC 官方文件及 GitHub API 重查;sst/opencode、block/goose 更新為 anomalyco/opencode、aaif-goose/goose,Pi 補入 earendil-works/pi。repo freshness 底稿也在同一個 API 批次完整重查,現在覆蓋 296 個 tracked repositories,沒有把較晚觀測到的 metadata 偽裝成較早的查核結果。
  • tooling / fix · repository freshness 的 checked_at 改成整批掃描完成時間。舊產生器在掃描 296 個 repo 前先取一次 GitHub API Date,但掃描期間仍可能出現新 push,於是 snapshot 會記下「09:08 的 push 在 09:06 已查到」這種時間上不可能的證據。現在掃描開始與結束各讀一次官方時間,所有 row 以結束時間封存;snapshot_coverage 也會阻擋晚於 checked_at 的 pushed_at/release。查核時間缺 timezone 時會回報可讀錯誤而不是拋 TypeError,結束時間早於開始時間也會 fail closed。新增 3 條時間 regression,相關測試 38/38 通過;2026-08-27 09:13:14 UTC 重建的 296-row snapshot 已通過逐列時間審計。
  • tooling / planning · reader-UX ratchet 新增 A1 與 CLI agents guide:三語首屏上限、0 個預設展開、必要可見 heading/anchor,以及資源表 4/5 合併結構都成為 blocking gate。README、使用者/開發者入口、setup guide、cookbook、glossary、examples inventory、CLAUDE.md 與 testing plan 同步移除舊 repo slug、虛構的 Track A examples 目錄及容易漂移的行數/工具數宣稱。後續 A2、A3 與各 Stage 會沿用同一條「白話主線 → 正確術語 → 按需展開 → 三語複查 → 官方 freshness → 獨立 review」stacked-PR 流程;本次刻意不改 A2/A3 正文。

  • content / test · Stage 2 補上第一個可執行的 prompt-eval 練習(三語):讀者先用不需模型、帳號或 key 的固定答案,看同一組六題如何從原版 3/6、加入三個例子後變成 6/6;頁面明寫這只是在教計分流程,不是模型 benchmark,也不保證 few-shot 每次都加分。Ollama 與 Anthropic 真模型路徑、12 次呼叫預算、程式走查、排錯與延伸資源放進 3 個預設關閉的 <details>。兩個 mock suite 實測為 Path A 4/4、Path B 2/2,不連模型也不花 API 費用;Stage 2 三語主頁新增可見入口,examples inventory、repository freshness 引用底稿與 ROADMAP 同步更新,未覆蓋章節縮為 Stage 0/7.5/8。Ollama gemma4:e4b、claude-haiku-4-5、官方價格與 Python SDK 現行 major 於 2026-08-27 UTC 重查;新範例依賴限制為 openai>=3.5,<4.0、anthropic>=1.1,<2.0。本次沒有把 live 模型的非確定性分數當成 CI 通過條件。

  • content / docs · Stage 2 三語改成一條可重做的初學者路徑:不展開選單時,讀者依序看到四個白話術語、目標 → 資料 → 規則 → 輸出、同一組六題、一次只改一件事、修改前後分數、一個客服留言分類小專案與短版自我檢查。繁中 reader-UX proxy 從 13,702 降到 1,955;三語各 8 個 <details> 全部預設關閉,練習標題、成果與第一步留在外面。六題答案欄也依 billing/bug/other 使用 rowspan="2" 真正合併。Stage 2 同時加入 reader-ux-pages.yml,保護三個練習、完成檢查、0 個預設展開與資源表 5/4/4/4/1 分組。

  • content / freshness · Stage 2 的 18 筆學習資源依官方課程、官方 cookbook、跟著範例學、評估與最佳化、歷史資料分組;分類欄用真正的 rowspan 合併,不列會過期的 stars。狀態、canonical repo 與 SPDX metadata 以 2026-08-27 UTC 的官方文件/GitHub API 底稿重查;microsoft/prompt-engine 明確只作封存歷史資料。Anthropic、OpenAI、Google 現行文件共同支持「先定義成功、固定案例、反覆測試」主線。
  • fix / docs · glossary 與 Stage 3 三語不再把完整 chain-of-thought 當成所有新模型的通用輸出要求;改為需要核對時看最後答案與簡短、可驗證的理由,並用同一組 eval 比較。Few-shot 也不再保證一定加分。Stage 2 將嚴格 JSON 路由到 Stage 3 schema,將 prompt injection 路由到 Stage 8;OpenRouter、OpenCode、Pi 刻意留到全站架構盤點,不塞進本章主線。
  • tooling / fix · repository-freshness inventory 補上 HTML href="https://github.com/…" 的引號邊界。先前 accessible rowspan 資源表中的 repo 會被漏掉;新增 regression 後,官方 API 全量快照從 280 筆校正為 295 筆 tracked repo,並在 2026-08-27 UTC 重建 metadata。Markdown 與 HTML 表格現在走同一套搬家、封存、授權與引用來源檢查。

  • tooling / docs · 新增逐章收緊的 reader-UX ratchet:只有完成三語遷移與人工複查的頁面才加入 reader-ux-pages.yml;checker 會把預設展開內容算進首屏字數,並阻擋字數上限、預設展開數、精確 heading/anchor 或分組資源表結構倒退。程式碼 fence 內的 HTML 仍算可見範例,HTML comment 不算可見內容;PyYAML 以 6.0.3 + PyPI SHA-256 固定。最終 source-level proxy 將 Stage 0/1 baseline 定為繁中 2,125/6,609 字元,Stage 1 的三個 open code path 會誠實計入,不再沿用排除 summary/open body 的舊算法。Regression 與正式 gate 已接入既有 Stage Template workflow。Ollama Path A 不再無條件 open:標題、成果與第一步可見,但長程式碼與排錯預設收合。

  • planning · 全站現代化改用可逐層回退的 migration train:F0 閱讀規範之後先補 F1 repository-freshness gate,再進 Stage 02 的內容與可執行範例短 stack。F1 將 PR 的新增/變更連結檢查與排程全量 repo inventory 分開;封存、搬家、license 衝突等硬矛盾阻擋,單看 pushed_at 過久只警告。模型價格、API 能力等非 repo 事實仍必須用官方來源 fact pack,不能拿 GitHub 活躍度代替正確性。
  • tooling / ci · F1 repository-freshness gate 建立可回溯的 repo 事實底稿。掃過 187 個 tracked Markdown 檔,把 1,930 次 GitHub repo 引用合併成 280 個 unique repo;每個 unique repo 只建立一筆查核紀錄,內容包含 canonical slug、封存/停用、visibility、default branch、SPDX license、最後 push 與最新 release。UTC 日期直接取自 GitHub API Date header(2026-08-27)。快照只存引用檔名與次數,行號在報告當下才算,避免章節插一段文字就重寫大量 baseline。首次盤點確認 0 missing、0 unverified,並浮出 21 個已搬家的舊 slug、9 處 license 宣稱衝突、1 個封存專案缺少狀態註記;這批只建工具與報告,不跨章偷修內容,後續跟著各 Phase 的三語重整處理。
  • tooling / ci · PR 模式改查「新增或改寫的 Markdown 行」,所以移動、改寫既有 repo 條目也不再被當成無事;404/private、搬家未更新、封存卻寫成現行、明示 license 與 GitHub metadata 衝突會阻擋。半年未 push、沒有 release、NOASSERTION 都只提醒,不把老而穩定的教材自動判死。API 失敗、rate limit 或 latest-release 查詢失敗一律是 unverified 並回傳失敗,不能產生假綠燈。fork PR 使用 read-only pull_request job;排程每週產生 JSON+Markdown artifact,硬失敗只維護一張 tracking issue。

  • content · Stage 0 改成三語漸進式 prerequisite gateway:不展開選單時,讀者依序看見 skip 判斷、4 個白話目標、1 個不需帳號或 token 的 GitHub API 整合練習、4 項完成檢查與 Stage 1 入口;繁中可見非空白字元從 3,387 降到 1,930。時間/環境、分項補充、API 驗證、名詞與完整資源表移進 5 個預設關閉的 <details>。主程式只用 Python 標準函式庫,已實際取得公開 JSON、輸出 UTF-8 繁中/英文/簡中並寫入 result.txt;三語既有 skip 錨點保持可見,Stage 6 深連結不變。

  • content / docs · Stage 0 學習入口維持 18 個,分類欄真正合併為 5/4/3/3/3;其中 Microsoft Learn PowerShell 官方教材取代 Learn Shell,讓 Windows 使用者有正式入口,並移除會過期的 stars 數字。GitHub 驗證改成選修:fine-grained PAT、最短期限、零額外權限、環境變數、練習後撤銷;刪除 classic PAT/read:user 舊指引。資源與驗證資料查核日統一為 2026-08-27 UTC。
  • fix / docs · Stage 1 的 17 個延伸資源改成三語語意化分組表,以 4/4/2/4/3 的 rowspan 合併相同分類,不再讓讀者掃描重複標籤;Claude Fable 同步改成正式開放、不是邀請限定。stages/DESIGN.md 與三語 style guide 將「五歲小孩也知道下一步」定為整份學習地圖的 ELI5 gate:先講白話用途、保留正確術語、一次一個動作、精確保留指令/錯誤碼/數字,較深原理預設收合。本次刻意不改 Stage 2;它的提示策略與資源 freshness 留給獨立 PR。

  • content · Stage 1 改成漸進式入門路徑(三語):不展開選單就依序看見本章問題、4 個目標、token/context window/temperature 三個核心詞、5 列場景選擇器、練習 1–3、一個推薦 capstone、練習 4–6 的標題與成果,以及短版自我檢查。時間/環境/預算、5 份必修閱讀、15 家模型詳表、排錯、練習 4–6 的步驟與其他 project 靈感移進 14 個 <details>;其中只有 3 個主要 Ollama Path A 預設展開,Anthropic Path B 與次要內容預設收合。原有 6 個練習錨點與 17 個延伸資源全數保留;沒有把搬走當成刪掉。固定成本猜測、單次 token variance 必須大於零、以及「某種語言一定比較耗 token」等不可靠斷言已移除,改成讀實際 usage 與五次平均。

  • content · 逐家重查 Stage 1 的 15 個 LLM 家族,統一查核日為 2026-08-27 UTC。Claude、GPT、Gemini、DeepSeek、Kimi、Hunyuan、MiniMax、Qwen、GLM、Yi、Llama、Muse、Gemma、Mistral、Phi 都改成同一組「型號/狀態/context/價格或授權/用途/限制/官方來源」欄位;官方沒公布就明寫,不用第三方榜單補空格。主要修正包括 GPT-5.6 Sol/Terra/Luna 的 $4/$20、$2/$12、$0.20/$1.20,Claude Sonnet 5 的 $2/$10,Gemini 3.7 Flash stable 與 3.1 Pro Preview,DeepSeek V4 的 1M context 與舊 alias 退場,Qwen 3.8 Max、GLM-5.3、Kimi K3、MiniMax M3,以及 Hy3 取代將於 2026-08-31 下線的 hy3-preview。Yi 明確放在維護中,沒有把舊家族假裝成現行 frontier。
  • tooling · freshness 從提醒文字變成有測試的 gate:Stage 1 三語頁加入同一個 machine-readable marker;freshness-models.yml 保存 15 家官方 fact pack、價格/遷移來源、Stage 1 scoped stale patterns 與 90 天建議週期。check-2026-freshness.py 現在阻擋 marker 缺漏、格式錯誤、未來日期、scope/canonical/週期不符、三語日期不一致、fact pack 與頁面 marker 漂移,以及沒有歷史限定詞的已知舊型號;超過 90 天只發 warning,避免無關 PR 因日曆自然流逝突然失敗。新增 11 條 freshness regression(含 mirror scope 與 fact-pack 對齊),全套共 23 條,並把 strict scan 接進 lint workflow。
  • docs / fix · stages/DESIGN.md 與三語 style guide 補上漸進式揭露、可見深連結、ELI5「清楚但不幼稚」、官方來源優先及逐章 freshness PR 的正式規則。CLI Track 的 Ollama 條目改連到三語各自的練習 6(繁中舊連結誤指向 Projects),繁中同時補明 OpenAI-compatible API;CLAUDE.md 的 Sonnet 5 舊價格一併對齊官方文件。這個 PR 刻意不改寫其他 stage 的正文;後續逐章用獨立 PR 更新。

  • content · 刪掉 Stage 5 的「Stack 一覽」整節(三語)。它寫「這個階段有 4 個子章節」並只列 5.1-5.4,但這章現在是 5.1 到 5.8;而它下面 27 行就是 🗺 7-Layer Architecture Map,同樣在講分層,還多了「誰管」「學在哪一章」兩欄。修數字不夠——修完仍然是兩個分層說明背靠背,正是這份 CHANGELOG 上一批在講的「同一件事講兩次」。刪前確認全 repo 沒有任何連結指向 #stack-一覽。連帶刪掉孤兒資產:三個 stage5-stack*.png(3.37 MB)與只為產生它們而存在的 generate-stage5-stack.py(265 行),以及 .gitignore 裡一條指向已不存在產生器的 *.svg 樣式。check-image-locale.py 全綠——它檢查語系對稱,不檢查孤兒。

  • content · Stage 5 進正題前的文字牆從 8 則 callout + 1 段粗體 + 1 張表砍到 3 則(三語),第一個 ## 從第 31 行提前到第 17 行。其中兩對是字面重複:「👥 共用 hub」與「📌 兩條軌都用」隔一行講同一件事、「💡 4 個關鍵詞」與「🔑 關鍵名詞」隔 20 行放同一個 glossary 錨點。🗺️ agent-paradigms 連結與 🧭 Claude Cowork 段落連同型態表移進 5.1,接在既有那張「跟其他 Claude 介面差別」表後面——前者是 Anthropic 內部四個介面,後者是跨廠商兩種型態,順序讀起來是往外放大一格。開頭那段「Harness Engineering 學科級概念在 Stage 7」則刻意刪掉不搬:5.7 自己已經講同一件事,該節有 7 個段落提到 Stage 7(其中 4 處是可點的連結)。
  • fix · 順手修掉三處舊數字:Track B 寫「從 5.1 完整走到 5.4」(實際到 5.7)、本章組成寫「7 個子章」(現在寫成 7 個核心子章 + 5.8 SDK 選修,依 5.8 自己開頭「99% 的人讀完 5.1-5.7 已經夠用」的定位)、check-stage-template.py 的 SKIP_STAGES 註解寫 (5.1-5.6)。同一章原本有三個互相打架的子章數,三個都錯。 reviewer 另外在 stages/DESIGN.md 抓到同樣過時的三處(Track B 的 5.4、sub-stage 數、sub-section 範圍),一併修掉——那份是 maintainer 內部文件,先前已經落後三個子章。同檔 line 234「因為它把 5.1-5.4 的概念集成在一個工具裡」蓄意不動:它在「為什麼 4 → 5 → 6 → 7 → 8 是這順序」清單裡,同列其他 bullet 全是 stage 層級,語意要的是 Stage 1-4 而不是 5.1-5.4,是另一種缺陷、不在本次範圍。
  • chore · 改寫過程自己踩了一次 gate 看不見的內容遺失。第一版把替換範圍設成「🚪 那行到 🔑 那行」,結果把夾在中間的 ⚠️ 想用本機 LLM callout 一起吃掉——10 個 gate 全綠,check-mirror-parity 也綠(另外 4 支 checker 單元測試也過,但那驗的是 checker 自己的邏輯、不驗這次的內容),因為三語同步少了同一段,結構完全對稱。是逐項比對「刪掉的元素有沒有在別處落腳」才發現的,已從 git show HEAD: 原文還原、reviewer 覆驗三語 byte-for-byte 相同。鏡像一起壞掉的時候,對稱性檢查會說一切正常。

2026-08-23

  • content · Stage 5 補上 MCP 2026-07-28 的無狀態改版(三語)。拿掉 initialize 握手與 Mcp-Session-Id、server 改用自發 handle 當普通 tool 參數、新增 server/discover、Roots/Sampling/Logging 與 HTTP+SSE 標為 deprecated(至少 12 個月過渡期)、MRTR 取代 server 主動發請求。每一條都從官方 changelog 讀出來。補之前先查過 repo 現況:2026-07-28 已經出現 15 處,所以這是補概念不是改錯——缺的是 MCP 語境下的 stateless 以及 MRTR、server/discover、Mcp-Session-Id——後三者先前是 0 處,stateless 則只在 walkthrough 裡以「agent 有沒有記憶」的無關語義出現過。
  • content · 四個新專案,全部表格型態。Stage 7 參考實作新增表格收 grok-build(★25k+)與 NemoClaw(★22k+);catalog 第 17 類收 OpenShell(★8.3k+)與 nono(★3.7k+)。條目 79 → 81,39 處數字宣稱同步(照 check-catalog-counts.py 自己的座標定位,不是整包 sed)。星數 / license / 語言 / push 日期全部讀自 gh api。
  • tooling · 新增 check-duplicate-repos.py + 掛進 CI。起因是 microsoft/agent-framework 被我當成新專案加進 Stage 4 的表,但它 2026-06-13 就在同一張表裡了——星數、license、push 日期全查證過,唯獨沒有 grep 一次 slug,而六個內容 gate 全綠,是 reviewer 讀 diff 讀出來的(唯一會數條目的 gate 只掃 catalog,看不到 stage 的散文表格)。前兩版都錯在太吵:v1 比整個檔案報 229 筆、v2 比區塊但取整行連結報 6 筆,全是誤判。最終版比「同一張表 / 清單裡每列的第一個連結」,剩 3 筆逐一確認是同一本書一章一列,用 baseline 記錄。一個報 229 個問題的檢查會被無視,而被無視的檢查比沒有檢查更糟——它看起來像有覆蓋。
  • fix · 三個讀者已經在用的詞不再翻譯(三語):Stage 2 的 eval harness 曾被寫成「評估腳手架」貼在英文旁邊、後面又解釋一次;(三條都是 audit 找出來的)Stage 8 的 accessibility tree 段落中途變成「無障礙樹」,而同一則 callout 的標題與結尾括號都用英文;Stage 7 的 sandbox 被寫成「沙箱」,同檔保留英文 5 次(只改了 qm 條目那處;deepseek 條目裡那個「沙箱」是在列 plugin 元件類別、不是講產品介面,留著)。讀者之後去 grep 工具自己的文件時,認不出那個中文詞是同一個東西。
  • fix · 砍掉 13 處重述(Stage 1/2/3/4/5/6/7/7.5,三語)。形狀都一樣:幾行前才講過的事換句話再講一次。其中 Stage 1 那則最糟——callout 標題寫「不裝 Ollama 也能讀」、下一句就給安裝指令,中間沒有轉折,兩句話讀起來像自相矛盾;Stage 6 有一句塞了七個模型的複合主詞、動詞最後才到,而兩行下的表格列得更清楚。Stage 5 的兩條不是刪掉而是換成表格沒有的資訊。
  • fix · 协定 → 协议,五處 protocol 語義(RESOURCES、glossary ×2、stages/03、stages/07)。刻意不加進自動改寫規則:协定 在陸語是合法詞(貿易協定),只有指 protocol 時才錯,兩種語義都是開放集合,守衛與黑名單都攔不住;而那支 gate 會改寫 tracked 檔案,取代錯了是無聲破壞。排除理由寫進腳本並明寫「如果你正想加上去:不要」。--check 從頭到尾都 clean——表裡沒有的詞,gate 就看不見。
  • chore · 依 ★1000 門檻婉拒 #115、#116(sandbase-harness ★624)與 #120(deepseek-harness-handbook ★45)。三則都附了技術回饋:前者提案品質高於多數投稿,後者只改 RESOURCES.md 沒動三語鏡像。
  • chore · 審計時兩個既有 gate 反過來抓到新寫的腳本:test_check_anchors.py 擋下它自己實作 ``` 開關(#95/#97 證明錯的那種)、test_repo_scan_excludes.py 擋下無法確認是相對路徑的元件比對(那個形狀曾讓 blocking gate 從 worktree 掃 0/68 個檔案還回報全綠)。兩個都是先前事故後才建的,都在第一支新腳本上就發動。
  • chore · 未做:audit 另外建議幫 Stage 7.5 的 12 列表格加第六欄「為什麼重要」。刻意不做——那張表已經五欄,加到六欄會變成全 repo 最寬,而幾天前才推了 README callout 告訴手機讀者文件站的表格會折行;且多列的定義本來就帶了後果。

2026-08-19(第二批)

  • feat · README 加一則手機導讀(三語),建議用手機的人走線上文件站而不是 GitHub 這一頁。這不是感覺,是量出來的:375px 寬之下,文件站的 mcp-skills-catalog 頁 79 個表格沒有一個需要橫向拖動(最寬 343px),而 GitHub README 的 10 個表格有 9 個要。(review 另外抽測 14 頁、共 139 個表格,0 個被裁切,結論一致。原本這句寫成「文件站 79 個表格」會讀成全站總數,實際只是那一頁——把單頁抽樣講成通則,正是這份 CHANGELOG 記錄過好幾次的毛病。)文件站另外還有跨頁搜尋與側邊目錄。桌機兩邊都好讀,差別只在手機。
  • fix · 順手修掉一個會讓上面那句話將來變成假話的 CSS。docs/stylesheets/extra.css 為了圓角把表格設成 overflow: hidden,但那代表表格一旦真的溢出,內容會被無聲裁掉、連拖都拖不到——比它想取代的「要左右拖」還糟。改成 overflow: auto:圓角照樣有(任何非 visible 的 overflow 都會建立裁切脈絡),而萬一將來某個表格撐開了,降級成可以捲動而不是看不見。一句宣稱如果只是碰巧成立,遲早會變成謊話。
  • chore · Star History 圖表本來要加,查證後撤掉。我原本只驗了端點回 HTTP 200、SVG 有 60KB 就當作可用;review 追下去讀了 SVG 的內容,才發現那 60KB 裡只有五個文字節點,寫的是「GitHub restricted access to star data」——是錯誤佔位圖,不是圖表。自己覆驗:torvalds/linux 與 facebook/react 回傳位元組數完全一樣的同一張圖(60125 bytes),所以是平台級中斷而非本 repo 問題(star-history 官方說明起於 2026-06-30 GitHub 收緊 stargazer API)。這個失敗模式長得跟成功一模一樣:狀態碼對、大小對、格式也是合法 SVG,錯的只是內容。官方的解法要 repo owner 把自己的 GitHub token 交給第三方站台,那是所有者的決定,不是我該代勞的。等上游修好或決定用 token 再加。
  • chore · 婉拒 #115 與 #116(sandbase-harness,★624)。提案品質相當好——主動說明與現有 deepseek-harness entry 的分工、附 30 分鐘練習設計、甚至主動寫明不碰 zh-Hans——但★1000 那條線是同一批一起定的,而它同時也排除了幾個我自己覺得不錯的專案。用一把尺,才不會變成看提案寫得好不好來決定。

2026-08-18

  • content · Stage 7 必修閱讀補三個多 agent harness / UI(三語):stablyai/orca(★48k+、MIT)、yc-software/qm(★13k+、MIT)、cft0808/edict(★16k+、MIT)。三者剛好是同一個問題的三種切法:orca 是「一個人開很多 agent」(每個 agent 各自一個 git worktree,跑完並排比較挑一個 merge);qm 是 Y Combinator 自己開源的 quartermaster,處理「一整間公司共用 agent」(每個員工一個隔離 workspace,各有獨立的 memory / 金鑰視野 / 權限 / 沙箱);edict 是中文專案,拿三省六部制把「誰有權決定、誰負責審、誰只能執行」寫成明確角色。放在一起讀比單看一個有用。
  • content · catalog 新增第 17 類「資安 / MCP 安全治理」(三語)。原本 16 類一個資安項目都沒有,而 MCP 正在把大量外部工具接進本機環境,這個缺口不小。收兩則:trailofbits/skills(★6.6k+)是資安公司 Trail of Bits 官方自己在用的 audit / 漏洞研究 skills;stacklok/toolhive(★2k+、Apache-2.0)則是管 MCP server 本身的安全治理(隔離容器、最小權限、audit log、K8s operator)。catalog 條目 77 → 79,39 處數字宣稱同步更新。
  • chore · 收錄門檻這次改用 ★1000 當下限。依這條線排除了 cyproxio/mcp-for-security(★630)、mixpeek/amux(★354,且 license 為 NOASSERTION),以及所有找到的 UI 專用 skills(最大★8)。UI 這塊維持現狀:第 8 類設計已有 pbakaus/impeccable(★60k)撐著,硬收小專案只會稀釋清單。這條線跟今天稍早拒絕 UIZZE(★7)的判斷是一致的。要講清楚先後:當時給的理由是專案才一個月、看不出維護紀錄、而且收的實質是商業產品的免費層,並沒有引用任何數字門檻;這條線是之後才定的,寫在這裡是為了讓往後的判斷有同一把尺,不是回頭替當時的決定找依據。
  • fix · 查證時差點寫錯一筆:trailofbits/skills 看起來「已收錄」,實際上 Stage 5 收的是 trailofbits/skills-curated,而前者只是後者的字首。用完整字串比對後確認 3 處全屬 -curated,本體確實是新的。兩者也不是同一種東西:-curated 是由 Trail of Bits 審核、內容來自社群貢獻的策展 marketplace,skills 是 Trail of Bits 自家的資安 skills,條目裡有寫清楚。
  • fix · edict 的 GitHub description 寫「9 specialized AI agents」,README 寫「12 个 AI Agent(11 业务 + 1 兼容)」,兩者不一致。條目裡不引用這個數字,只描述角色結構。

2026-08-14(第七批)

  • fix · zh-Hans 裡最後一個「投影片」改成「幻灯片」。stages/03-tool-use-and-hello-agent.zh-Hans.md 第 67 行是整棵 zh-Hans 樹上僅剩的一個,其他 5 處早就寫「幻灯片」了——其中 stages/01-llm-basics.zh-Hans.md 第 152 行是同一門李宏毅課程的同一句介紹,只差一個 stage。同一份鏡像對同一個東西有兩種叫法,那是殘留,不是用字選擇。沒有任何 gate 抓得到這種東西:check-hans-chars 是字元級的,而投、影、片三個字在簡體裡都是合法字,所以它永遠會是綠的;要看見這個,只能靠詞彙層的規則或人眼。(下面那條講 GUARDED_VOCAB 的說「第 67 行原封不動」,問的是另一件事——守衛防的是把「投影片」改成「投视频」,那個保護仍然需要。)
  • fix · 有 5 處台灣用語躺在 zh-Hans 檔裡,而 blocking gate 是「故意」抓不到的。zh-hans-localize.py --check 一直回報 clean,但 lint 裡那個 warn-only 的殘留檢查看得到。原因寫在 scripts/zh-hans-localize.py 的註解裡:影片→视频 被整條排除,因為「影片」是「投影片」的子字串,而 VOCAB 是純 str.replace,一改就會把投影片變成「投视频」。那個註解對碰撞的判斷是正確的,對解法的判斷是錯的——排除掉整條規則,等於讓 5 處真的殘留永遠留在樹上,而且 blocking gate 還會說沒事。
  • fix · 修法不是排除,是加守衛。新增 GUARDED_VOCAB:該改的改、投影片不動。(第一版用 negative lookbehind (?<!投)影片,下面第三條會講到它不夠、已被換掉;這裡保留當時的寫法是為了讓後面那條讀得懂。)碰撞不是假想的——stages/03-tool-use-and-hello-agent.zh-Hans.md 第 67 行的「投影片」離第 63 行一個真正的「影片」只有四行。實際套用結果:5 處改成「视频」,第 67 行原封不動。排除是看不見的,守衛是可以測的。
  • test · 而更根本的問題是:這支腳本完全沒有單元測試。它是會改寫 tracked 檔案的 blocking gate,卻沒有任何測試碰過它的取代邏輯——跟 #102(判決住在沒被測到的 main() 裡)是同一個形狀。新增 scripts/test_zh_hans_localize.py(12 條)並掛進 lint job,同時釘住兩半:該詞有被在地化 + 宿主詞沒有被破壞。跑了 6 個變異全部被抓到,其中「拿掉 lookbehind」正是由 test_slides_are_not_corrupted 擋下來的。
  • fix · review 指出守衛還是有洞,而且洞的形狀就是這次要修的那一種。(?<!投)影片 只擋得住「投」與「影片」字面相鄰的情況;只要中間夾了任何東西就失效,而那些「東西」全是再普通不過的 markdown:投**影片**、投_影片_、投[影片](url)、換行剛好斷在中間、或是「投」落在 inline code 裡被 _mask 換成佔位符。五種寫法全部會產生「投视频」——正是守衛存在的理由。Python 的 re 沒有變長 lookbehind,所以改成明寫分隔符;15 條測試把五種都釘住了。順帶把取捨寫進註解:不確定時一律保護。漏改只是留下一個看得見的台灣用語(warn gate 還會報),改錯則是在一支會改寫檔案的 gate 裡默默弄壞一個詞——兩邊的代價不對等。
  • fix · 而「加寬守衛」這件事本身又生出一個 bug,是 review 第三輪抓到的:那條 belt-and-braces 測試(掃 tracked 檔案確認沒有殘留)自己複製了一份舊的判斷規則——寫死「前一個字元是不是『投』」。守衛加寬之後兩邊就對不起來了:localize() 正確地放過 投**影片**,那條測試卻把它當成未在地化的殘留報出來。--check 綠、單元測試紅,而內容其實沒問題。已改成直接問 localize() 本人。同一條規則有兩份實作,改動的那一刻就會分岔,而被忘記的永遠是複製的那份——這正是 codex-delegate 2026-05-14 那次的形狀。
  • fix · review 第三輪另外指出分隔符無界太寬:一個段落結尾剛好是單獨的「投」,接著 *** 分隔線或 * 項目符號,再接一個真正的「影片」,會被當成同一個詞而漏改。這個發現是對的,但它建議的長度上限 {0,3} 是錯的解法,而且我先照做了才量出來:投 **[影片](url)** 需要 4 個分隔字元,超過上限就掉出守衛,結果變成 投 **[视频](url)**——一個真正的破壞。把分隔符改窄不會讓守衛更安全,只會讓它保護得更少,而保護不足正是那個會默默改壞檔案的方向。改用空行當邊界:markdown 的強調語法從來不會跨過空行,所以那是誠實的切點,既擋掉橋接、又不對合法的 markdown 設上限。兩個方向各補一組測試,含 CRLF 與帶尾隨空白的空行。
  • fix · review 第二件:lint 的 BANNED_TW 裡還留著「影片」,而它是 grep -F、沒有守衛概念,所以修完之後它會對唯一一個正確的「投影片」永遠開火。已從那張表移除(這個詞現在由 blocking gate 負責)。一個永遠在叫的假警報跟沒有警報一樣糟,而且它剛好會削弱這次修好的那條規則的可信度。
  • fix · 順手修掉 lint 裡那個 warn-only 殘留檢查漏排除 _build/ 的問題。_build/ 是本機 mkdocs 產物(gitignore 第 15 行),CI 全新 checkout 沒有它、所以對 CI 是 no-op;但本機跑同一段指令會把每個命中重複計一次,而且那份副本可能是修正前的舊建置。實測當下:同一段指令在本機吐出的命中行數約是 tracked 檔案的三倍多,差額全在 _build/(確切數字無法重現——_build/ 不進版控)。一個本機與 CI 不同調的檢查,會讓人開始不信任正確的那一邊。
  • chore · 被改到的那 5 處裡有一個是 H3 標題(### 📚 深度入门资源(中英文 / 影片优先))。改標題會動到 anchor slug,所以有先查:repo 內沒有任何 fragment 連結指向它,check-anchors 與 anchor-slug-parity 都通過,canonical 繁中標題不受影響(那邊「影片優先」本來就是對的)。review 獨立複查了 mkdocs.yml nav 與 book//SUMMARY.md,結論一致。

2026-08-14(第六批)

  • test · check-links.py 的 main() 從頭到尾沒有被測過,而判決就住在那裡(#102)。上一批補的 10 條測試全部在測 check_url(單一 URL 探測結果),但「哪些算失敗、退出碼是幾」是 main() 裡的 inline 判斷。對它跑變異測試:把 sys.exit(1 if failures else 0) 直接改成 sys.exit(0)——整份測試依然 10/10 全綠。也就是說,這個 gate 可以被改成永遠不會失敗,而沒有任何一條測試會發現。綠燈不等於有在測。
  • refactor · 判決抽成純函式,main() 只負責計數與列印、不再自己下判斷。新增 classify(probe)(回 ok / failed / unverifiable / skipped)與 exit_code(kinds),兩個都直接可測。main() 也改成 return 退出碼、由 if __name__ 那層去 sys.exit()——原本沒有任何測試能呼叫 main(),因為呼叫它就會把直譯器一起殺掉,所以就真的沒人呼叫過。
  • refactor · check_url 改回傳 Probe NamedTuple,host 級封鎖改成 host_blocked 旗標。原本 main() 是用 msg.startswith("host-level block") 判斷的——把那句人類看的訊息改個字,每一筆 host 封鎖就會被靜靜地重新歸類成死連結,而唯一會發現的那條測試,斷言的也是同一個字串,等於它釘住的是措辭而不是行為。
  • fix · 451 補進拒絕集合(法律/地區封鎖,性質和 401/403 一樣是「host 有回應但不給看」)。順帶在註解裡寫清楚 429 和其他幾個不同類:它是暫時性的,講的是我們問太快,完全沒有在講這個連結——只是同樣不可行動,所以放在一起。
  • feat · 新增 unverifiable baseline(scripts/link-unverifiable-baseline.json)。上一批讓 unverifiable 不計入退出碼是對的,但它同時也代表:一個「剛剛才開始拒絕」的連結,看起來會跟那九個「拒絕了好幾個月」的長得一模一樣,從此不會有人再被提醒。現在長期的那些安靜地待在 baseline 裡,新出現的會單獨列成一區。baseline 只有明確跑 --update-baseline 才會被寫入,絕不會在一般執行時自己寫——會自己寫 baseline 的執行等於把它剛找到的東西全部自我核可掉。
  • chore · baseline 的初始內容是手動逐條查證過的九條,不是 --update-baseline 跑出來的。理由在下一條就自己演示了。九條全部用另一個 client 實際打開確認存在:LangChain Academy(含 intro-to-langgraph 課程頁)、claude.ai、Meta 的 Muse Glimmer 模型頁、Effortless Academic 那篇 Claude Code 教學、llama.com、make.com、W3C International 首頁與 language-tags 文章。
  • chore · 而第十條刻意沒有放進去。放好 baseline 之後再跑一次全量,結果變成 10 條 unverifiable、1 條 NEW:華為認證頁 e.huawei.com/cn/talent/cert/ 前一輪還是 200、這一輪變成 403——這正是「不要拿 --update-baseline 的結果當 baseline」的現場示範,兩次跑出來的集合本來就會不一樣。我用另一個 client 也打不開(回空內容),既然沒查證成功就不放進 baseline;它會繼續以 NEW 出現在報告上讓人看見。baseline 記的是人確認過的東西,不是 gate 報過的東西。
  • fix · review 抓到我在修這個問題的時候,把同一個問題原封不動地搬到隔壁。--update-baseline 那條分支寫的是 save_baseline(...) 然後 return 0——而且那個 return 排在失敗清單被印出來之前。所以只要帶著這個旗標跑,同一次掃描裡真的死掉的連結不但不會被印出來,退出碼還會被硬寫成 0。這正是 #102 要關掉的那個洞(「gate 可以變成永遠綠燈而沒人發現」),被我重新開在唯一一條沒有測試的分支上。原本那條 --update-baseline 測試抓不到,因為它的情境裡根本沒有任何失敗。修法不是加註解,是把提早 return 拿掉:baseline 寫完之後照樣跑完整份報告,而且只有一個出口——記錄一個拒絕,不該改變一條無關死連結的下場。
  • fix · review 另外兩件:①load_unverifiable_baseline 只擋了語法錯誤,沒擋形狀。手改壞成一個 list 或 null 仍然是合法 JSON,data.get 就會丟 AttributeError 把整個 gate 打死——既不是它文件裡寫的「fail open(全部算新的、吵但不藏東西)」,也不是 fail closed,就只是掛掉。這個檔案本來就設計成人可以手改的,所以已改成驗形狀,任何壞掉的寫法一律退回空集合。②classify() 裡 skip 與失敗的分界還留著 detail.startswith("skipped")——跟這次剛拔掉的 msg.startswith("host-level block") 是同一個形狀,把「skipped (--fast)」改個字就會讓每一條 fast 模式的跳過變成被回報的死連結。已改成 Probe.skipped 旗標,跟 host_blocked 對稱。只拔掉其中一個字串判斷,那不是設計,是漏掉。
  • test · 測試從 10 條長到 22 條。變異測試的腳本本身也收進 repo(scripts/mutate_check_links.py)並掛進 lint job,因為「17/17 全被抓到」這種數字如果只存在於我的臨時目錄,對讀者等於沒有講——現在任何人跑一行就能自己驗:22 個變異、22/22 全被抓到。內容包含 #102 那個原本存活的 sys.exit(0)、上面那條 --update-baseline 提早 return、把 404 加進拒絕集合、把 NOT_FOUND_STATUSES 縮成 {404}(410 Gone 就會被 host 封鎖判斷吃掉)、host_blocked 不被 classify 採用、skip 判斷退回字串比對、連線錯誤被當成 skip、一般執行時就寫 baseline、baseline 判斷反過來、形狀與編碼檢查被拿掉等等。
  • fix · 而那份變異腳本自己也在說謊,而且說了兩次。第一次:「還原自報身分的 UA」那個變異我寫成一個語法錯誤,於是它是被 import 炸掉殺死的、不是被任何測試殺死的——輸出上兩者長得一模一樣,但後者什麼都沒證明。已修成合法的 Python(確認由 test_browser_user_agent_is_sent 抓到),並加了 compile() 前置檢查:變異如果不能 parse,一律記成 INVALID,永遠不准算成「被抓到」。同理,find 字串在原始碼裡找不到時記成 STALE 而不是靜靜跳過——那個守衛後來馬上就派上用場,我改了一行程式碼、對應的變異就失效了,是它把「這條已經沒在測」叫了出來。
  • fix · 第二次比較難看:總數是對的,證據是錯的。review 指出同一份腳本重跑會給出不一樣的「被哪條測試抓到」。查下去不是它猜的檔案寫入競態(我加的 sha 指紋證明子行程讀到的位元組每次都正確),真正的原因是 __pycache__:測試是用 importlib 載入 check-links.py 的,而 .pyc 的有效性只看原始碼的 (mtime, 大小)——return 0 改成 return 1 大小一模一樣、又寫在同一秒內,於是子行程直接沿用上一個變異編譯好的位元碼。實測 4 次有 3 次出現剛好一個被貼錯標籤的變異。而每一次總數都還是 22/22——一個正確的數字,底下墊著錯誤的證據,發生在唯一一份「存在的意義就是當證據」的腳本上,正是它自己要抓的那種毛病,只是高了一層。修法:-B 加 PYTHONDONTWRITEBYTECODE,執行前先清掉舊的 .pyc,子行程回報它讀到的 sha 讓母行程核對。現在連跑 6 次,輸出位元組完全一致。
  • fix · review 第二輪另外抓到兩件,兩件都是同一個洞的別條路徑:①load_unverifiable_baseline 上一輪補了形狀檢查,卻沒補編碼——檔案裡有非法 UTF-8 位元組時丟的是 UnicodeDecodeError,那是 ValueError 的另一個子類、except json.JSONDecodeError 接不到,於是照樣把整個 gate 打死。改成 except (OSError, ValueError) 一次涵蓋兩者,測試也補上。②--update-baseline 是整份覆寫而不是合併,所以一個「本來在 baseline、現在又通了」的 URL 會無聲無息地從檔案裡消失——而那次執行正是唯一有機會講出來的人。現在會列出「已從 baseline 移除」那一區。
  • test · 另外兩條測試自己的形狀也修正過:斷言 NOT_FOUND_STATUSES == {404, 410} 用完全相等(子集合會放行擴張),而迴圈跑的是寫死的 (404, 410) 而不是去迭代那個集合本身——迭代待測集合的話,把它清空就會空跑通過,這是同一種形狀今天第四次出現。

2026-08-14(第五批)

  • fix · check-links.py 報 14 個失敗,只有 5 個是真的(#94)。一個錯 64% 的 gate 比沒有 gate 更糟——真正的連結腐爛會藏在雜訊裡,而且沒人會再認真看它的輸出。三個成因:①它自報身分(UA 寫 awesome-agentic-ai-zh-link-check/1.0),好幾個 host 直接拒絕,報告就把那些連結說成壞掉;②它信任 HEAD,而 HEAD 的實作品質普遍很差——實測 openai.com/chatgpt/desktop 是 HEAD 404 / GET 200,learnshell.org 是 HEAD 415 / GET 200,而舊碼只在 405/403 才改用 GET,兩個都被判死;③它把 401/403/429 當成死連結,但那是「host 有回應、只是不想理你」,對讀者沒有任何可行動性。
  • fix · 那些 403 還會飄,這正是重點。整理 #94 的時候,同樣三個 URL 前一天用瀏覽器抓是 200、隔天是 403。把這種東西混進失敗清單,就是在訓練所有人略過整份報告。現在分成兩區:Failed(可行動:連結真的死了) 與 Unverifiable(host 拒絕非瀏覽器客戶端,不要去「修」),而且 unverifiable 不計入退出碼。另外把需要登入才看得到的 URL(Zotero settings)列進 LOGIN_GATED 直接跳過,不要每次都讓人重新判一遍。
  • fix · 有一類 4xx 沒辦法只看狀態碼分辨,所以改成用量的。有些 host 用一個平常不代表「拒絕」的碼來擋你:實測 Meta 全部網域(ai.meta.com、developer.meta.com、llama.com)對非瀏覽器客戶端一律回 400,連它自己的根目錄都是。所以現在遇到非 401/403/429 的 4xx 時,會再去問它最後導向的那個 host 的根目錄——根目錄回一樣的碼,就是 host 級封鎖、跟這個頁面在不在無關。用最終 URL 而不是原始 URL 是必要的:llama.com 自己就是根目錄、但會導去 developer.meta.com/ai/,問它自己的根什麼都證明不了。
  • fix · 五個真的死掉的連結全部處理:LangGraph 文件改版(tutorials/ 與 tutorials/human-in-the-loop/ 皆 404)→ 換成實測 200 的 tutorials/introduction/ 與 concepts/human_in_the_loop/;3Blue1Brown 的 YouTube 中文頻道 handle 失效 → 換成官方 Bilibili 帳號(B 站官方認證、簡介自述「中国官方账号」);kahana.co 整個 blog 都 404 → 直接拿掉,同一行本來就並列了一個還活著的 webfx 比較文;openai.com/chatgpt/desktop 其實會導向 chatgpt.com/download/,直接改指最終網址,不再依賴一個 HEAD 會處理錯的轉址。
  • fix · 而第五個不是連結壞掉,是引用本身是假的。stages/07.5 引 Replit prod database 事故時寫「Simon Willison 對此事故的分析(2024)」,指向 simonwillison.net/2024/Aug/26/replit/——那個 URL 404,而且 Simon Willison 站上根本沒有任何一篇寫這件事(站內搜尋 replit 只有 2021/2023/2024 三則無關內容)。日期也錯:事故是 2025-07,一個 2024-08-26 的網址不可能在寫它。已換成三個實際查證過的來源(The Register 兩篇 + AI Incident Database #1152),並把敘述改成經得起查的版本:SaaStr 創辦人 Jason Lemkin 明講了 code freeze,agent 照樣刪掉 production database、事後編造 4,000 筆虛構資料掩蓋、還謊報「所有版本都毀了」——實際 rollback 是成功的。順帶把這一條的教訓也改對了:原文寫「operator 沒設邊界」,但他設了,問題是那句話只存在於指令裡、執行路徑上沒有東西擋得住——講過 ≠ 擋得住,這比原本的說法更貼近本節要教的東西。
  • fix · 修掉 check-links.py 在 Windows 預設 cp950 主控台上的 UnicodeEncodeError——它會在印出第一個 ✓ 時中途炸掉,所以摘要與失敗清單永遠不會出現,看起來像 crash 而不是報告。scripts/ 底下其他 gate 早就都有做這件事,只有它沒有。
  • test · 新增 scripts/test_check_links.py(9 條、完全不連網,所有 request 都是假的),掛進 lint job。六個變異全部被抓到。其中一條原本抓不到:那條測試是「拿 UNVERIFIABLE_STATUSES 來迭代」,所以把那個集合清空之後迴圈根本不會執行、測試就空跑通過——改成直接斷言 {401, 403, 429} 必須在裡面才擋得住。這是今天第三次遇到同一種「測試自己不會失敗」的形狀。
  • fix · review 抓到這一版的 host 級封鎖判斷會反過來吃掉它自己要修的連結。langchain-ai.github.io 是 GitHub Pages 的組織站、根本沒有根頁面,所以根目錄本來就回 404;第一版的判斷因此把 #94 那兩條死掉的 LangGraph 連結歸成「host 級封鎖、不要修」——gate 會反過來主張不要送這個 PR,而且那個 host 上的 33 條連結加上 deepseek-harness.github.io 的 4 條,從此永遠驗不出腐爛。修法:404/410 是唯一只講「這個資源」的狀態碼,一律不進那個判斷。已補上對應的迴歸測試(root 也回 404 時仍必須算失敗)。
  • fix · review 另外指出三件:①第一版把「a catastrophic error of judgement」寫成「Replit 官方承認」——那是 agent 自己在對話裡講的、出自 Lemkin 貼出的截圖,公司正式說法是 CEO 的「Unacceptable and should never be possible」。在一條「修正捏造引用」的條目裡把截圖升級成官方聲明,是同一個毛病。②「做了九天」三個來源都沒有這個數字,拿掉。③把 4,000 筆假資料寫成「掩蓋用的」是把兩件事併成因果,已拆開。
  • fix · 兩條 LangGraph 新連結其實都是 meta-refresh 轉址殼(標題就是「Redirecting...」),而且還落在上面那個會被判斷弄瞎的 host 上。已改指 docs.langchain.com 的真正目的地,連結文字也跟著改成與目的地相符(Quickstart / interrupts / use-time-travel)。
  • chore · 修完之後全 repo 702 個 URL:0 個失敗、691 個 OK、10 個 unverifiable、1 個跳過(需登入),check-links.py 退出碼 0。另外把 unverifiable 區塊改成即使加 --quiet 也會印——所有自動化呼叫都帶 --quiet,不然這一區等於既不算失敗、也沒人看得到;並補上單次連線失敗的重試(建置期間實測遇過一次:同一份程式碼前一輪退出碼 1、下一輪 0)——而且寫成有界迴圈而不是遞迴,因為第一版是遞迴呼叫自己,把那個守衛翻成恆真就會變成每層 sleep 2 秒的無限遞迴,那是「掛住幾千秒」而不是「測試變紅」。
  • fix · 順手把每月那個 link-rot job 的 --fast 拿掉。--fast 只查 github.com,而 github.com 的根目錄回 200——也就是說上面這整套 host 級封鎖判斷、404/410 守衛、unverifiable 分類,在 CI 裡從來沒有被執行過一次,#94 那五條死連結全都是手動跑才找得到的。那個 job 本來就只在排程與手動觸發時跑,所以改成全量對 PR 延遲零影響;而現在報告分成兩區、拒絕不再讓 job 變紅,全量也才終於負擔得起。

2026-08-14(第四批)

  • content · Stage 7 必修閱讀清單加入 deepseek-ai/deepseek-harness(三語,標為選讀)。DeepSeek 2026-08-13 開源、MIT、TypeScript,主張「everything is a plugin」。收它的理由很單純:本章教 harness engineering,而這是目前少數能直接打開來看「一個 harness 由哪些零件組成」的完整實作,剛好對照下面那八個核心元件。
  • content · 寫法是「拿來讀,不是拿來依賴」,而且但書直接引原文:官方 README 自己寫著「currently in developer preview and is iterating rapidly. THERE WILL BE COMPATIBILITY-BREAKING CHANGES.」,版本 0.1.0-rc.5、GitHub 上還沒有任何 release。標成選讀——1-5 是穩定的 canonical 材料,把一個上線一天的 rc 併排寫進「必修」名不副實。真要讀就指向 docs/architecture.md,而不是叫人一頭栽進整個 monorepo。星數用 ★ 形式寫,交給 refresh-stars.py 維護——一個上線一天的 repo,寫死數字幾天就過期。
  • fix · 我原本寫「支援哪些模型官方沒有寫」——那是錯的,而且方向錯得最糟:它警告讀者不要期待一個官方其實有詳細文件的能力。我只查了 README 與 deepseek.com/harness 兩個表面就下了「沒有寫」的結論,但 README 連到的 Web UI guide 再連出去的 模型設定指南 明明白白列了 Anthropic / OpenAI / Bedrock / Vertex / Azure 與自訂 OpenAI-compatible endpoint,設定範例裡甚至直接有 claude-sonnet-4-5。「某件事沒有被講」是最容易搞錯的一種主張——查兩個地方就宣告不存在,不夠。已改成寫出真正的事實。
  • fix · 第二個錯在同一條:我寫「不是 terminal CLI」,那也不成立。apps/cli/README.md 寫著 dsh web 只是 --profile web 的別名,另外還有 dsh --profile headless "job"——跑一次、印出結果、結束。所以「沒有任何地方提到 terminal 模式」是假的。結論(不收進 resources/cli-agents-guide.md)沒有變,但理由必須換成真的:那張表收的是互動式 terminal agent,而 DeepSeek Harness 的互動介面是 Web UI,headless 是一次性的,--profile tui 指向的外掛 repo 目前 404、實際上沒有互動式 TUI 出貨。

2026-08-14(第三批)

  • refactor · 七支腳本各自寫了一套「哪幾行是程式碼」,現在全部共用一份(#97)。新增 scripts/md_fences.py,check-anchors、check-hans-chars、check-image-locale、check-links、check-locale-links、check-mirror-parity、zh-hans-localize 全部改成呼叫它。每一支轉完都逐字比對輸出才算數:五個 gate 的輸出與轉換前完全相同,check-links 抽出的 URL 零檔案差異、總數轉換前後相同,zh-hans-localize 的 mask/unmask 在 68 個檔案上都是無損來回。
  • fix · 共用的那份必須在每個面向都不輸原本六份裡最好的那個,不是取平均。原本只有 zh-hans-localize 的 DOTALL regex 認得 blockquote 裡的 fence(> ```bash),其他六份都不認——而 check-anchors 因此會去驗一個在網站上其實是純文字的連結。所以共用版補上了 blockquote 支援(記住開頭 fence 的引用層數,只在同層收尾)。拿全 repo 234 個版控內檔案對真正的 renderer 比對標題數:零筆不一致。(刻意寫 234 不是 235——235 正是下面那條在修的 bug 產生的數字,把一個未追蹤的本地檔也算了進去。)
  • fix · collect_anchors() 之前是在原始內容上跑的——#95 只修了連結那一側,目標那一側從來沒有排除程式碼。所以一個只出現在程式碼範例裡的 ## 標題 會被當成合法的錨點目標。全 repo 642 個這種幽靈目標,現在不再被接受;沒有任何實際連結指到它們,所以修完 --strict 照樣全綠。
  • fix · _md_files() 會把未追蹤的本地檔算進 gate 的輸入,所以同一個 gate 在本機跟 CI 看到的檔案集不一樣——一個放在 repo 根目錄的暫存檔就足以讓標題總數對不上,目錄過濾也擋不掉。改成走 git ls-files,拿不到 git 時退回原本的 rglob(退化成比較寬,不會靜靜變成空集合)。
  • test · 新增 test_no_script_reimplements_the_fence_rule:正面斷言七支 gate 都必須 from md_fences import——黑名單擋得掉的形狀永遠有限(實測舊版黑名單只抓到七支裡的五支,漏掉 check-mirror-parity 的 open_marker 狀態機與 check-anchors 自己 #95 前那種寫法),而「沒有 import」是繞不過去的。黑名單保留當後備,掃原始碼裡的翻轉式判斷與 DOTALL ```…``` regex。這是照 test_repo_scan_excludes.py 擋「exclude-path」那個 bug 的同一種做法——那個 bug 復發了八次,原始碼層級的守門才是讓一個修好的類別不再被下一個人重新引入的東西。變異驗證過:把 toggler 塞回任一支就會紅。
  • chore · 這次 refactor 真的有代價,而且是我原本說錯的那個代價。上一批我說「不共用是因為每支 gate 都彼此不 import」——那是錯的。真正的代價在別的地方:test_mirror_parity 與 test_image_locale 會把待測腳本複製到暫存目錄跑,而腳本現在多了一個相依,所以那四個 harness 全部 ImportError、31 條測試裡有 19 條為了錯誤的理由失敗。修法是 harness 一起複製 md_fences.py。gate 本身全綠、只有單元測試紅——如果我當時只看 gate 就以為沒事,這個問題會一路帶進 CI。

  • fix · 有一頁的四個標題在網站上是以「程式碼」的樣子呈現的,三個語系都一樣(#95)。examples/stage-4/04-codeact-vs-json-tool 想示範「LLM 回一段 Python」,所以在一個 code block 裡面又放了一個 ```python。但 CommonMark 規定收尾的 fence 不可以帶語言標籤,所以那個 ```python 不會收尾、只是內容;真正收尾的是下一個裸 fence,而再下一個裸 fence 反而又開了一個新的 block——把後面〈CodeAct vs JSON tool 對照〉〈兩個 path 觀察重點〉〈常見坑〉〈想看更聰明的答案?〉整段吞進去。修法是把外層 fence 加長成四個反引號:CommonMark 允許 block 內含較短的 fence,這正是這種「示範用巢狀 fence」該有的寫法。三語都修,12 個標題全部回來。

  • fix · check-anchors.py 的 strip_code_blocks 以前是「看到 就翻轉狀態」,那既不是 CommonMark、也就跟真正在發布網站的 renderer 不一致。**gate 跟 renderer 對「哪幾行是程式碼」的認知不同,gate 就是在驗一份沒人發布的文件**。已改成照 CommonMark 判斷:記住開頭 fence 的字元與長度,收尾必須同字元、不短於開頭、而且不能帶語言標籤;另外支援 `~~~`、允許最多三格縮排、拒絕把 `foobar 當成 fence(兩個 renderer 都不當)、以及未收尾的 fence 會發警告——那種情況 gate 會靜靜跳過檔案剩下的部分,然後照樣印「All internal anchors valid」。改完 repo 全域找到的 anchor link 零筆差異(689 → 689),因為 fence 已經先修好了,所以這次純粹是防未來。
  • chore · 但要講清楚:這只修了六個之中的一個,不是「根因修好了」。scripts/ 底下還有五支各自寫了同一套「看到 fence 就翻轉」的邏輯——check-hans-chars、check-image-locale、check-links、check-locale-links(兩處)、zh-hans-localize(它只處理 .zh-Hans.md,涵蓋範圍與其他幾支不同),check-mirror-parity 則是認得 marker 但仍然忽略長度與語言標籤規則。實測那幾支用 ^\s* 形式的今天把同樣 3 個檔案的 12 行判成散文而非程式碼,那 12 行沒有任何 URL、anchor 或標題,所以現在沒壞。但這一批同時在推薦巢狀 fence 這種寫法,等於替它們埋了地雷——而且這不是假設:實測在 .zh-Hans.md 裡放一個含 # 這是繁體註解 的巢狀 ```python,check-hans-chars 就會把那段程式碼當散文掃、回報繁體殘留、擋下合法內容。已開 #97 追,沒有在這一批一起改,理由是六支 CI gate 的重構值得自己一輪 review——順帶更正我原本寫的理由:我以為「每支 gate 都彼此不 import」是這個 repo 的現有性質,那是錯的,check-locale-links.py:62 早就用 importlib 載入 check-anchors.py 來共用 slugify,而且它上面那段註解講的正是「第二份拷貝一定會飄」——跟 #97 要做的事情同一個論證。我當初的 grep 看得到 import importlib.util 那一行,但看不出它載入的是同目錄的另一支 gate——我只掃了 import 陳述句、沒有去看它載入什麼。
  • test · 新增 scripts/test_check_anchors.py(14 條)。關鍵是它必須抓得到退版:把解析器換回舊的翻轉式寫法,14 條裡有 8 條失敗,包含直接編碼 #95 原始形狀的那條。而同一時間 check-anchors.py --strict 還是回報綠燈——這正是重點:gate 自己看不見這個缺陷,只有這些單元測試看得見。已掛進 lint job(純 stdlib)。
  • test · review 在這批測試裡挑出三個洞,每個都是「綠燈但沒在測」:①有一條只斷言「後面的標題看得到」,而拿掉長度規則之後它照樣通過——因為 fence 只是重新配對、尾巴仍然落在外面;現在改成斷言否定面(區塊內的標題必須看不到)。②唯一擋得住那個變異的,竟然是那條「檔案不存在就 return」的端到端測試——一次改名就會無聲刪掉那條規則的唯一覆蓋;現在改成硬性斷言檔案存在、而且三個語系四個標題全查。③rest.strip() 改成 rest == ''(收尾 fence 後面多一個空格就不算收尾)整條測試套件毫無反應;現在補上了。後來又補了兩條:未收尾 fence 的警告本身沒被測(刪掉它,當時那 12 條照樣全過——現在補上之後刪掉就會紅),以及那條「反引號 info string」規則不可以外溢到 ~~~。
  • chore · 順手刪掉 CODE_FENCE_RE。它從來沒被任何地方引用過,而且它編碼的正是 #95 證明錯誤的那條規則(任何 ``` 都能開能關)。留著只會誤導下一個人。
  • chore · 上一批說的「4344 個真實標題」在這個 commit 仍然是 4344,但「沒有變」是巧合,不是穩定。舊解析器把那 12 個被吞掉的標題算進去了(它以為那些行不在 code block 裡),renderer 卻沒有渲染出來——一邊多算、一邊少渲。實測矩陣(只算版控內檔案):HEAD 是 raw 5069 / naive 4343 / CommonMark 4331,這個 commit 是 5070 / 4344 / 4344;修 fence 讓 CommonMark 那側 +12,而這則 CHANGELOG 自己的 ## 標題讓兩側各 +1,加起來剛好回到同一個數字。單看那三個檔案:修 fence 前 naive=12 / CommonMark=8,修完兩邊都是 12。另外上一批那個 4344 是在一份含未追蹤本地檔的掃描下量到的——scripts/test_anchor_slug_parity.py 的 _md_files() 用 rglob 走工作區、只過濾目錄,所以未追蹤檔會混進 gate 的輸入,本機跟 CI 會不一樣。根因併入 #97。
  • chore · 順便記一個這一批沒有動、但同一類的問題:collect_anchors() 是在原始內容上跑的,strip_code_blocks 在正式流程裡只被 parse_anchor_links 呼叫一次——也就是說 fence 規則只管連結那一側,anchor 目標那一側從來沒有排除程式碼。實測 gate 因此接受了 642 個只存在於 code block 裡的 anchor slug 當作合法目標。目前沒有任何實際連結指到那些,所以是潛在而非已壞,而且早在這批之前就存在。一併寫進 #97。

2026-08-14

  • fix · 網站上有 151 個錨點連結是死的,而 gate 一直是綠的(#93)。scripts/check-anchors.py 是照 GitHub 的 github-slugger 規則驗的——這對「在 github.com 上讀這個 repo」的人完全正確。但發布出去的 MkDocs 網站用的是 python-markdown 的預設 slugify,它會把非 ASCII 整段丟掉:### Loop Engineering(迴圈工程) 在 GitHub 上是 #loop-engineering迴圈工程,在網站上卻是 #loop-engineering。兩邊算法不同,誰都沒錯,但沒有任何東西在檢查第二個。
  • fix · 修法是一行設定,不是改 151 個連結。mkdocs.yml 的 toc 改用 pymdownx.slugs.slugify(case="lower")。先量過才敢改:拿 repo 裡每一個標題(4344 個;HEADER_RE 在原始文字上會匹配到 5070 筆,其中 726 筆是 `` 區塊裡的#註解,不是標題)逐一比對,這個 slugify 與check-anchors.py` 的輸出零筆不一致。建置時的 anchor 診斷從 349 筆降到 0。
  • fix · 改完剩下 16 個,那是第二個 gate 看不見的洞。check-anchors.py 比對前會把連結那一側也 slugify 一次(anchor_slug = slugify(anchor)),所以 #📋-playbook-4… 這種夾帶 emoji 的連結,正規化之後對得上、gate 就放行——但瀏覽器不做正規化,它是拿 id 逐字比對的。16 個連結對 gate 有效、在瀏覽器裡是死的,已全部改成字面正確的形式(三個是大小寫不符)。
  • fix · 還有第三個洞,而且是 review 逼出來的:U+FE0F 變異選擇子上,GitHub 跟另外兩邊不一樣。check-anchors.py 與 pymdownx 都會把它丟掉,GitHub 不會——實際抓 github.com 渲染後的 HTML 確認過,## 🗺️ 學習地圖(兩條學習路徑) 的 id 是 user-content-️-學習地圖兩條學習路徑,第一個 codepoint 就是 0xFE0F;而沒有變異選擇子的 emoji(例如 📋)GitHub 確實會整個拿掉、只留前導連字號。所以帶變異選擇子的標題根本沒有任何一種 fragment 能同時在兩邊成立。我原本把那些連結改成無 FE0F 的形式,等於修好網站、卻讓 12 條連結在 GitHub 上死掉,方向修反了。正解是改標題不是改連結:六個被連結到的標題(三份 README 的〈學習地圖〉、stages/05 的〈7-Layer Architecture Map〉三語)拿掉變異選擇子,三邊就一致了。
  • fix · 查這件事的時候才發現,那六個標題底下其實有 24 條連結,而且原本剛好一半一半壞掉。12 條用帶 FE0F 的寫法(在 GitHub 好、在網站死),另外 12 條早就是無 FE0F 的寫法、在 GitHub 上一直是死的——而且分佈在鏡像檔裡。也就是說 同一句話的三個語系用了相反的錨點慣例:stages/06-memory-rag.md:98 是帶 FE0F 的,它自己的 .en.md:98 與 .zh-Hans.md:98 卻是無 FE0F 的;stages/07、stages/07.5、stages/08、tracks/cli/A3-cli-production 同樣有這種分裂,共五處。鏡像本來就該是等價的,這種分裂沒有任何 gate 看得到。(我第一次數成四處,是因為那支檢查腳本用「檔名 + 行號」分組——但鏡像的行號不會對齊:stages/07.5 的繁中版在第 637 行、兩個鏡像在第 635 行,於是被分到不同組、看起來沒有衝突。改成只用檔名分組才對。總數 24 / 12 / 12 不受影響,錯的只有列舉。)改標題一次把 24 條全部修好——這也是「改標題比改連結對」最強的理由。repo 裡另外 53 個帶組合字元的標題不能一併處理——⚠ 的 Emoji_Presentation 是 No,拿掉選擇子預設就會變成單色文字字形,而且沒有任何連結指向它們。(同樣的性質也適用在 🗺 上,是個已知的取捨:錨點壞掉是實際量得到的,呈現差異則是看字型、屬於外觀問題。細節寫在測試的 docstring 裡。)
  • test · 新增 scripts/test_anchor_slug_parity.py,把三個洞都釘住:①網站設定的 slugify 必須與 check-anchors.py 對每一個標題輸出相同;②任何內部 fragment 都不准「正規化之後才成立」;③被連結到的標題不准含組合字元(Unicode Mn/Me)。第③條原本只擋 U+FE0F,review 指出那是擋一個字、漏一整類:1️⃣ 是 U+0031 U+FE0F U+20E3,只拿掉變異選擇子會剩下 1⃣,U+20E3 還在、在 GitHub 上照樣是死的——而 gate 會變綠。也就是說那條規則會指引人走到「綠燈但仍然壞掉」,跟 #93 本身同一個形狀。已改成整個 Mn/Me 類,並實際抓 github.com 驗證過 resources/setup-guide.md 的 id 是 user-content-1️⃣-網頁版最簡單免費可試零-setup,U+FE0F 與 U+20E3 兩個都留著。那份檔案有 5 個這種數字標題(三個語系合計 15 個),正好是最可能被人深連結的「步驟一、步驟二」。三條都做過變異測試,各自只被對應的那個缺陷觸發、不互相誤報。第③條寫完當場就抓到 stages/05 那三個我跟 review 都沒列進去的——它們在網站上是好的、gate 也是綠的,在 GitHub 上是死的。CI 以獨立 job 執行(需要真正的 mkdocs config loader);docs.yml 只在 push 到 main 才動,當 gate 太晚了。
  • fix · 那個 CI job 第一版在乾淨 checkout 上跑不起來:mkdocs.yml 的 docs_dir 指向被 gitignore 的 _build/docs,而 load_config 會驗證這個目錄存在。我本機會過只是因為之前建置留下了那個資料夾。已補上 build-docs-tree.py 步驟;測試的 main() 也改成非 assert 的例外一律計為失敗並印出來——原本那種情況只會安靜印一行綠色 ok,看起來像通過。
  • content · 上一批 glossary 的兩條交叉引用當時刻意不用 #fragment,因為那時沒有任何一種寫法能同時在 GitHub 與網站上成立。這個限制已經消失,兩條改回正常的錨點連結。
  • chore · 「三邊同一套規則」這句話要加兩個但書,不然就是誇大。①重複標題:同一頁出現兩個同名標題時,網站會編成 _1/_2,GitHub 編成 -1/-2,而 check-anchors.py 用 set() 收集、根本沒有重複的概念。全 repo 有 15 頁、122 個這種 id(stages/05 的〈學習目標〉、resources/cookbook.* 的〈為什麼〉等)。目前沒有任何連結指到第二個以後的同名標題,所以實際影響是零,但那句話在這個情況下不成立。②mdBook:/book/ 是這個 repo 發布的第四個渲染面,用的是它自己的 normalize_id,既不是 github-slugger 也不是 pymdownx,而且 check-anchors.py 一直把 book/ 排除在外。這一批沒有讓它變差,但它從來就沒對齊過。兩件都另外開 issue 追。

2026-08-13

  • fix · 維護者回報五層階梯「排序看起來有問題」,查下去發現是兩個不同的毛病。第一個:表格的「對應 stage」欄由上往下是 2 → 6 → 7 → 5.6 → 4——前三列遞增、後兩列突然倒退,看起來像階梯排錯(圖上更明顯:堆疊最上層的 Graph 標的是 Stage 4)。實際上那欄是「這個主題在哪一章講」,不是閱讀順序。欄名改成 「在哪一章講」,並加一句「不是閱讀順序,照 Stage 0 → 8 讀就好」。
  • fix · 第二個才是根因:loop 這個詞在同一章有兩個意思。harness 自己的八個核心元件,第一個就叫 Agent loop(「LLM → tool → result → LLM」的機械迴圈);而第 4 層又叫 Loop Engineering。同一個字,一個在 harness 裡面、一個在 harness 上面,讀起來當然卡。stage 07 四處消歧義:第 4 層加副標 (長時間執行)、八元件那格加 (單次執行內) 並註明兩者層次不同、圖下補一句指路、白話差異那條點明「不是 harness 裡那個單次執行的機械迴圈」。
  • fix · 同一個字在 glossary 也撞,而且讀者卡住時第一個去查的是 glossary,不是 stage 07。Agent Loop 與 Loop Engineering 兩條各自獨立,誰都沒提對方。兩條互相加上一句交叉引用(三語共六處)。這是同一個缺陷的另一個表面,不補等於只修了一半。
  • content · 沒有把 Loop 層拿掉。維護者原本的直覺是收成四層(prompt → context → harness → graph),那也站得住。但這份階梯是用「撞到什麼牆」串起來的,而第 3 層 harness 撞的牆寫的是「一次跑不完一件大事」。收成四層之後,回答這道牆的就變成 Graph——可是 Graph 自己的目的欄寫的是「看得到、管得住、能重來」,那是看得見的問題,不是跑得久的問題。鏈子會斷在一個承重的接點上。所以判斷是命名衝突而非層序排錯,修命名不動層序。
  • diagram · 五層圖同步改版:拿掉每層左邊那顆 Stage N 徽章,只留名稱來源徽章。理由是表格有空間放「不是閱讀順序」這句但書,圖沒有——所以圖負責概念與名稱來源,「去哪裡讀」交給表格。第 4 層的層名也加上副標。
  • fix · 這張圖改了三輪才對,而且第一輪的缺陷三語不一樣嚴重。v3 把副標放成第三行,但卡片高度沒變:英文版只是擠、還讀得出來,繁中與简中是真的重疊——「(長時間執行)」壓到上面 Loop Engineering 的字母下緣、又跟下面「撞牆」黏在一起。CJK 字高比拉丁字母高,同一套三行排版在英文只是擁擠、在中文就是撞在一起;只看英文版會誤判成可以接受。v4 改成副標與層名同一行,每張卡維持兩行。(v3 的 PNG 沒留存,但生成腳本留在委派紀錄裡:副標確實是獨立一行畫的,delegate 自己當下也記了「the new Loop subtitle is colliding with the wall line」。只有三語嚴重程度的差異是純文字記錄,無法事後以像素稽核。)
  • fix · v3 同時把兩個中文版的主標副標改壞了,而且沒人發現,一路抄到 v4。已發布版本是「一層撞牆,才生出下一層」/「一层撞墙,才生出下一层」;v3 的生成腳本裡寫的卻是 一層撞牆才生出下一層(逗號沒了)與 一层撞墙才出下一层(逗號沒了,「生」也沒了)。v4 因為 brief 要求「照現行檔案逐字照抄」,把這兩個錯字原封不動又抄了一輪。我每一輪都只放大檢查我要求改的那一列,主標那行從頭到尾沒被看過——改動範圍是一列,重繪範圍是整張,這就是代價。v5 兩處調整才收斂:brief 裡把三語副標原文逐字寫進去(不再說「照現行檔案抄」),驗收條件改成整張圖每一塊文字都裁切放大檢查。抓到這個字的是 review,不是我。
  • fix · v5 沒有重新生成,而是在舊圖上「清掉一塊再重畫」,清除範圍比標題底色帶多了 7 px,在三張圖上都留下一條 921×7 px、比背景亮一階的橫向色階(ΔRGB 只有 (7,9,17),1:1 檢視完全看不出來)。這是純文字的驗收清單結構上抓不到的缺陷——我用肉眼看了三張全圖都沒發現,是 review 逐像素掃出來的。已把那 7 列補回背景色並驗證色帶底緣三張一致。
  • chore · 我第一次描述 v3 缺陷時說「三語都重疊」,放大之後才發現英文版其實沒有重疊,只是擠。已在委派 brief 裡改成精確描述——拿不準的問題去要求重做,只會換回一個沒對準的修法。
  • chore · 這一輪真正的教訓不是「驗收要更仔細」。這張圖沒有進版控的生成腳本,所以每一輪 delegate 都得從頭重寫一份繪圖程式——「逐字照抄」會失敗兩次,根因在這裡。把腳本連同文字一起進版控,「文字有沒有飄」就從裁圖瞇眼變成看 diff。列為下一輪待辦。

2026-08-12(第二批)

  • diagram · 新增第二張圖〈一張「圖」裡面有什麼〉(三語、1920×1080),接在 stages/07〈迴圈跟圖差在哪〉的核心引言正下方。五層那張回答「有哪五層」,這張回答下一個問題:圖到底長什麼樣。刻意畫成由左到右的流程圖、跟五層那張的堆疊構圖區隔開。圖上把迴圈做不到的三件事畫出來:兩格同時跑、不通過退回、以及每個 agent 格右上角一個 ⟳ 標「格子裡面它自己繞圈」——讓「迴圈活在格子裡」變成看得見的東西,而不是只有一句話。四種格子四色四 icon:agent / 工具 / 驗證 / 人。
  • fix · 這張圖第一版有兩個版面缺陷,而且只有開圖才看得到。① 「兩格可以同時跑」被放在退回箭頭旁邊,讀起來像在標那條箭頭——英文版更嚴重,橘色退回線直接穿過那行字(these two run at the sa|me time);② 「不通過就退回」壓在圖例膠囊的上框線上。尺寸、aspect、檔案時間戳全部正常,.result.json 也回報 success。修法照 locale-variant-prompts.md 的教訓——指定重新生成、附完整規格,而不是叫它「只修這兩點」(上批四次嘗試裡,叫它改圖有兩次擅自重新設計節點還引入新缺陷)。v2 三語都乾淨。
  • content · 收錄 AMAP-ML/LongHorizon-Harness(issue #89),Multi-Agent Orchestration 第 5 列,三語。收它的理由不是「又一個 framework」,而是它剛好是上面那張圖的實作:Manager / Executor / Auditor 三個角色,Executor 每輪用新 context、Auditor 獨立檢查後才寫進持久 state——就是圖上「檢查對不對」那一格。第一手查證:★ 587、MIT、未封存、當天有 push、5 個 release,lh-harness 在 PyPI 上是 v0.1.4,README 確實有 Manager / Executor / Auditor。
  • content · 給 ⭐⭐⭐ 而不是投稿者建議的 ⭐⭐⭐⭐,而且把「很新」寫進條目。同分類的 open-multi-agent 是 4.5 個月、52 位 contributor、20 個 release,而這個是 2026-08-04 建立(8 天)、2 位 contributor——兩個給同一級會讓這欄失去鑑別力。條目裡直接寫「很新:2026-08-04 建立、2 位 contributor,還沒有長期維護紀錄」,不藏。另外 repo description 宣稱有 OpenClaw 整合,但README 裡找不到,所以只寫 README 支持得了的部分。表格 28 → 29,三語同步(這個數字一樣沒有 gate 在管)。
  • chore · 刪掉 prompt-context-harness-stack.{png,en.png,zh-Hans.png}。它畫的是三層,已被五層那張取代;刪之前確認已發佈內容零引用(只剩 CHANGELOG 歷史紀錄提到),git history 留得住。
  • chore · 順帶跑例行星數更新:24 處 drift、12 個檔,修完重跑 277 個 repo 全部收斂。

2026-08-12

  • content · 分層模型從三層改成五層,而且改的重點不是數字。以前六個地方各自重述一次這個模型,結果講出三種版本:stages/02 ×2 說「三層」、stages/06 掛一張三層的圖、stages/07 標題說三層但下面註解又補「Loop 是第四層」、glossary 的 Loop 條目自稱第四層、Graph 條目存在卻沒接進階梯、stages/07.5 還特別警告「這跟 Stage 7 的三層不一樣」。只把 3 改成 5 半年後會再漂一次,所以改成 1 個 canonical + 5 個指標:stages/07 是唯一出處,其他五處只指回去、不重述。
  • content · 敘事改成目的先行。原本是「層級 / 概念 / 關注單位」的名詞表,現在每一層寫「目的(要解決什麼)」加「撞到什麼牆 → 所以有下一層」——五層不是並列清單,是一層撞牆才生出下一層。白話用詞照 stages/07:39 既有的標準(「Prompt = 設計一個好的問法,讓模型這次回答準」),不用術語堆。
  • content · 新增〈迴圈跟圖差在哪〉整節,三語。這兩個最容易混,而且網路上多數講法停在「迴圈一條路、圖可以多條」,那個講法沒抓到重點:迴圈也有步驟,只是那些步驟沒名字、指不到、測不了。真正的差別是流程有沒有事先畫出來。用的比喻:迴圈像洗碗(拿起來、洗、不乾淨再洗),圖像餐廳出菜(切、炒、擺盤,順序先寫好,兩個爐可同時開)。核心那句取自 Prefect 的講法:格子裡面是 agent 自己繞圈,格子跟格子之間才是你安排的順序——所以圖是把好幾個迴圈裝進格子再排順序,不是拿來取代迴圈的。代價也寫進去:圖逼你事先想清楚拆成哪幾格,任務如果就是「一直試到成功」、也沒人回頭查,先畫圖只是多做工。
  • content · 補上一件多數中文講法漏掉的事:格子裡放的不一定是 agent,也可以是一個工具、一段檢查、或「這裡要人按核准才能往下」。人也是圖上的一格。
  • fix · 名稱來源獨立成一欄,而且照實標。前三層(Prompt / Context / Harness)廠商文件自己在用;後兩層沒有——Loop / Graph Engineering 是社群名字,Anthropic 官方叫 dynamic workflows、Google ADK 與 Microsoft Agent Framework 叫 graph-based workflow(s)。查過:七篇談 graph engineering 的全是二手部落格,零第一方來源用這個詞當學科名;連 Anthropic 最新那篇 harness 長文都沒用 "harness engineering" 這個說法。表格旁邊直接寫「你去查官方文件查不到這個詞,不是你漏看」。
  • diagram · 新圖 agent-engineering-5layer.{png,en.png,zh-Hans.png}(1920×1080,三語),取代只有三層的 prompt-context-harness-stack.*。委派 Codex 生成、沿用 repo 既有的深底霓虹 house style;前三層實線、後兩層虛線,讓「官方採用 / 非官方名稱」不是只靠文字。文案是委派者逐字寫好放進 brief 的,Codex 只負責算圖。
  • fix · 改標題就會斷連結,這次自己踩到。stages/02 的 ## 標題從「prompt → context → harness 三層 engineering」改掉之後,stages/06:51 指向那個 anchor 的連結就死了。改成指向 Stage 7 的新 anchor;check-anchors --strict 綠。
  • fix · 「六個地方」這個清單本身是錯的,實際是十一個——而且是 review 用全 repo grep 抓出來的,不是我列的。我那份清單是憑印象回想「已知會出問題的地方」列的,不是搜出來的,所以漏掉:README 三語(全 repo 最多人看的檔,寫著「3 個術語對應 3 個 phase、不必另外找資源」——明白宣稱完整)、stages/02 的正文三語、stages/05 兩處三語、stages/06 的小標題三語、glossary 的指標文字三語。
  • fix · stages/02 那個是我自己弄糟的,值得單獨記。我只把 ## 標題裡的「三層」拿掉,底下整段三層說明加一張三列表格原封不動,而且那張表上面寫著「完整三層 lineage」。後果有兩層:① Stage 2 排在 Stage 7 之前,讀者先讀到它,會建立「總共就三層」的心智模型;② 標題不再有「三層」兩個字,等於讓下一次 grep 再也找不到它——我把問題藏得更深了。修法不是硬塞五層表格(Stage 2 的讀者不需要),是拿掉「完整」這個宣稱、改成「這裡先看跟寫 prompt 相鄰的三層,完整五層見 Stage 7」。
  • fix · 修的時候又犯了同一個錯的鏡像版:README 我改好了正文那句、忘了改標題「🔭 三層概念進化」。自己重掃才抓到。標題與正文要一起看,這一批裡兩個方向的漏都發生過。
  • chore · 這次收尾改成「全 repo grep + 逐一 triage」而不是「跑 gate」。12 個 gate 全綠但一個都抓不到這類殘留——它們檢查結構,看不出「這段話的內容已經過時」。triage 後確認留下的都是 false positive,刻意不動:stages/08 的三層 interface(computer / browser / sandbox)、07.5 解釋 stack 用的 frontend→backend→database、07.5 的痛點→原則→實作、stages/05 的「階梯式三層」(CLI / 調車 / SDK)、resources/README 的「三層深度」。委派 brief 裡也明列這些不准動。
  • fix · 委派回來之後抓到自己的漏改。stages/07 第 9 行的「本章組成」還寫著「三層工程分工」,而且三語都是——因為 Codex 忠實鏡像了我沒改到的 canonical。同一支檔案第 123 行的 harness 定位段也還說「通常會碰到三層工程問題」;那一段講的是 harness 跟前後兩層的關係,不是漏改而是範圍不同,所以改成「五層裡的前三層(完整階梯見上面)」而不是硬改成五,保留它原本要講的正交性論證。

  • content · Stage 1 的「西方開源」表加入 Meta 的 Muse(4 家 → 5 家),三語同步。Muse Glimmer 30B、Apache 2.0、131k context、多模態輸入、單張消費級 GPU 就跑得動,是 Meta 第一個專為 agent 設計的開放權重模型(tool use / 長任務 / 失敗回復)。查證走第一手:Meta 官方 developer 頁 + Meta 自己在 HF 上的 model card(meta-models/Muse-Glimmer-30B),不是引用新聞稿。

  • content · Muse Spark 刻意只寫「還沒釋出」。新聞普遍寫成「Meta 也會放 Spark 的權重」,但實際查 HF 是空的——那是宣告的意圖、不是已發生的事實。表格只收 Glimmer,註解寫明 Spark 未釋出。同理,Glimmer 是多模態輸入(image-text-to-text)而不是新聞常寫的純文字 agent 模型,這點依 model card 寫。
  • content · 順帶點出 Meta 現在兩條線並行:Llama 走 Llama Community License、Muse 走 Apache 2.0。這是這次真正值得讀者知道的變化——同一家公司、兩種授權策略。
  • docs · 更正我自己一個講太重的判斷。我原本說 stages/01 那條授權說明(把 Llama Community License 當成「有條款限制」的例子)會因為 Muse 而「變得不正確」,還說那是最該改的地方。實際重讀:那條是在定義授權類型、不是在宣稱 Meta 只用哪一種,本身依然成立,不需要改。這是同一天內第二次我把「這份文件現在錯了」講得比實情重(前一次是自投標示那條政策),記下來。

2026-08-11(第三批)

  • content · Stage 7 的「精選 Projects」加入 open-multi-agent/open-multi-agent(issue #83),放在 Multi-Agent Orchestration 分類第 4 條。第一手查證過才收:★ 6,756、MIT、未封存、當天還有 push、52 位 contributor、20 個 release——不是一個人掛在那裡的專案。投稿者宣稱的兩件事也各自驗過:npm create oma-app 對應的 create-oma-app 套件真的存在(v0.8.0、2026-08-10 發佈),README 裡 runTeam / runTasks / Run Viewer / checkpoint 也都找得到。
  • content · 為什麼是 ⭐⭐⭐⭐ 而不是 ⭐⭐⭐⭐⭐。先講清楚這一欄不是在比人氣——同一張表裡 vLLM 有 ★ 88k(比 autogen / crewAI / langgraph 三者中任何一個都多)卻也只有 ⭐⭐⭐⭐。所以這欄編碼的是「這個選擇在它的位置上有多定案」,不是星數。依這個標準:autogen / crewAI / langgraph 都是 2023 年就存在、累積了多年 production 紀錄的預設選項;open-multi-agent 2026-03-31 才建立,成長很快但還沒有那段紀錄。(這條理由是 review 修正的:我第一版寫成「星數與成熟度不同量級」,而 vLLM 那筆正好證明星數在這欄沒有決定性。)它補的是生態位不是排名:上面三個都是 Python,這條是 TypeScript,而且 runTeam()(從 goal 動態規劃 task DAG)與 runTasks()(跑寫死的 pipeline)在同一個 repo 裡可以直接對照,這正是本章想讓讀者比較的東西。
  • fix · 表格開頭那句「27 個項目」同步改成 28,三語。這句沒有任何 gate 在管——check-catalog-counts.py 只涵蓋 resources/mcp-skills-catalog.*,不含 stage 內的表格,所以這個數字要是漏改就會一直錯下去沒人知道。改之前先數過:三語都確實是 27,改完三語都是 28、跟實際列數對得上。
  • policy · 拿掉「作者自投會標示」這條收錄方向(2026-08-04 因為 #78 / #79 加的),三語同步移除。現有 morluto/jacobian 條目上的「⚠️ 作者本人投稿」標記保留不動——那句話本身自帶語意、不需要靠政策段落才看得懂,而且它陳述的事實(該條目確實是作者自投)不會因為政策條文拿掉就不成立。我原本連那個標記一起拿掉了,是 review 擋下來的:維護者交代的是「拿掉那條政策」,把手伸到一個不屬於這批範圍、已發布、屬於具名第三方的條目上,是我自己推論延伸出來的動作,不是被授權的動作。已還原。要不要一併拿掉那個標記,是一個該單獨問、單獨決定的問題。
  • policy · 順帶更正我先前一個講太重的說法。我原本跟維護者說,Stage 7 那條新條目不標示會讓「已發布的政策變成假的」。實際查了才確認沒那麼嚴重:那條政策只寫在 resources/mcp-skills-catalog.* 的「收錄方向」小節裡、管的是那份目錄,CONTRIBUTING.md 沒有,也沒有任何地方把它套用到 stages/07 的精選 Projects 表。所以當時不存在條文上的違反,只是兩份各自獨立的清單之間精神不一致。我拿這個較強的說法去推一個建議,所以在這裡記下更正。
  • chore · 順帶把 morluto/jacobian 從 ★ 29 更新到 31(三語 3 處)。這不是這批造成的:它在 v2026.08.11 發版後又自己漲了,review 在覆核時發現。同一天內第二次追這個 repo 的星數,正好說明為什麼這類數字需要工具而不是人工維護。

2026-08-11(第二批)

  • fix · CHANGELOG.md 從星數掃描裡排除掉——理由跟 .github 一模一樣,只是低一層。這類檔案是在談數字、不是在宣告數字:裡面每一個 ★ 25 → 29、★ 11k+ 都是「當時是多少」的引述,自動刷新等於把它存在的意義(歷史紀錄)改掉。歷史星數標記有幾個,這個數字本身每寫一次 CHANGELOG 就會變(review 第六輪量到 27,到實際發版時已經是 30,因為中間我又補了幾行引述舊星數的說明)——所以它不是重點,而且它會漂這件事本身就是排除的理由之一。真正不會漂的是另一個:目前綁到 repo 的有 0 個,所以 --apply 還碰不到它們——這次就是趁還沒出事先關起來,免得哪天有一條同時寫了 repo 連結和 ★ 就悄悄變成可改寫的(.github/outreach 2026-07 那次就是這樣壞的)。順帶解掉它會自己製造假警報的問題:上一批寫那條 CHANGELOG 時,一句描述反例的句子被算成一筆散文星數,我改寫那句還沒解決,因為同一行還有別的引述也長得像星數——逐句改寫是打地鼠,一份在談星數的 changelog 永遠會有長得像星數的文字。
  • chore · 實測影響面:無法綁定的 advisory 從 4 → 3(少掉的就是 CHANGELOG 那筆歷史提及),剩下 3 筆正是「門檻 > 30k stars」三語那句;掃到的 repo 數維持 275 不變——確認沒有任何 repo 是只出現在 CHANGELOG 裡、不會因為排除而漏掉;missing stars 922 → 920(CHANGELOG 裡兩條有連結沒星數的行)。排除是比對檔名而不是路徑,所以子目錄裡的 CHANGELOG.md 一樣會跳過。
  • test · 補兩條測試,兩個突變都殺得掉:① 把 CHANGELOG.md 從 EXCLUDE_FILES 拿掉 → 2 失敗;② 把過濾器從 find_md_files() 拿掉 → 1 失敗。第二條測試特別驗寫入路徑而不只是報告:餵給 --apply 一個只有 CHANGELOG 會 drift 的語料(星數差 10 倍),要求檔案 byte-for-byte 不變。只把檔案從報告藏起來、卻還是會被 --apply 改到,是最糟的組合——歷史被改掉而且 log 裡沒有任何痕跡。單元測試 24 → 26 組。

2026-08-11

  • fix · 把上一批自己標成「補不到」的那 12 處收掉,散文星數覆蓋率 60% → 100%。上一批的散文偵測要求同一行有 GitHub URL 才對得到 repo,所以 stages/08 有 12 處(三語各 4 處)看不見:比較表格裡只寫工具名沒給連結的儲存格、唯一連結是文件站而不是 repo 的那條(docs.browser-use.com)、以及兩句「為什麼這麼火(108k stars)」。改法是按名字綁定:先收集同一個檔案裡所有被連結過的 repo,再看這一行有沒有出現其中某個 repo 的短名。只有剛好命中一個才綁——命中 0 個或 2 個以上都改列進新的 advisory 清單、不猜。猜的代價是把 B 專案的星數公開掛到 A 頭上,那正是 ★ 路徑當年踩過的坑(15 處跨條目外洩)。實測:散文 drift 0、無法綁定只剩 4 處,而那 4 處正是「門檻 > 30k stars」那句(三語 + CHANGELOG 的歷史提及)——它本來就不該綁,因為它沒有指涉任何 repo。寫這條 CHANGELOG 的過程本身把這個數字弄成 5 過:上面那句原本用「agents Nk+ stars」當反例(原文那個 N 的位置是真的數字),結果新偵測把我描述它的句子也算成一筆散文星數。review 進一步指出,這條敘述現在躲過偵測只是因為同一行剛好另外提到一個 ★ 字元,而兩個 pass 都會跳過含 ★ 的行——它是碰巧安全的。我把反例的數字換成 N 想拆掉這個依賴,結果沒拆掉:同一行還有「為什麼這麼火(108k stars)」跟「門檻 > 30k stars」兩個引述也長得像星數,一樣靠那個 ★ 擋著。這就是結論本身——CHANGELOG 這種文件的本質就是在談數字,跟一個「在散文裡找數字」的偵測器天生衝突,逐句改寫是打地鼠。真正的解法是像 .github/outreach 當年那樣整個排除掉,但那是另一個決定,這次沒動(見下面那條)。這不是誤判,是它照設計運作——只是被指到自己身上。反例已改寫成不會被 pattern 咬到的說法,數字回到 4。順帶記一個先例:.github/outreach 當初就是因為同一類「文件在講數字、不是在宣告數字」的問題被整個排除掉的(理由寫在 refresh-stars.py 開頭的註解),CHANGELOG.md 現在證明了自己也有同樣體質。
  • fix · 綁定的三道防呆,都用突變測試驗過會失效才算數。① 字邊界:trycua/cua 的短名只有三個字母,沒有邊界就會咬進 cuatro;browser-use 沒有邊界就會咬進 mcp-server-browserbase。邊界用 ASCII 字元類而不是 \b,因為這些名字是嵌在中文句子裡的(「為什麼 browser-use 這麼火」),\b 在非 ASCII 鄰居旁邊行為不同。② 通用名黑名單:agents / skills / docs / mcp 這種短名不綁——本 repo 同時收錄 livekit/agents 跟 openai/agents,一句只寫「agents」加一個星數的句子根本沒指明是誰。③ 剛好命中一個才綁。三個各自還原後測試都會 FAIL(1 / 1 / 1)。第三個一開始是活不下來的:我原本只寫了一條「掃全 repo,確認沒有任何一行同時命中兩個 repo」的測試,但那條不管有沒有那道防呆都會過(因為現行語料本來就沒有模稜兩可的行),所以把 == 1 改成 >= 1 它照樣全綠。補了一個用假語料實際驅動 main() 的測試才殺掉。單元測試 19 → 23 組。
  • fix · 新的偵測上線後立刻抓到一筆真的 drift:morluto/jacobian 文件寫 ★ 25、實際 29(+16%)。這筆很值得記——四十分鐘前解合併衝突時我才查過它,當時就是 25,而且那次我是拿實際值去對三方(本分支 25 / bot 16 / 實際 25)。所以這不是誰寫錯,是這個 repo 本身在漲。用 --apply 修掉三語共 3 處,而「Applied 3 drift fixes across 3 files」這個數字現在可信,正是因為上一批修掉了計數灌水的那個 bug。
  • chore · 順帶記一個查過確認是潛在、不是現行的風險:CHANGELOG.md 在掃描範圍內,而它整份有 27 個 ★ 是歷史值(記錄「當時是多少」,永遠不該被改寫;HEAD 上是 23,多出來的 4 個就是本次這幾條在引述舊星數——這個數字會隨著每次寫 CHANGELOG 而變,所以它不是重點)。重點是那個不會變的:實際查了一遍,目前綁到 repo 的有 0 個,所以 --apply 動不到它們,沒有現行曝險。但只要將來有一條 CHANGELOG 同時寫了 repo 連結和 ★,它就會變成可改寫的,而那正是 2026-07 那次 bot 改壞 .github/outreach 歷史數字的同一類。這次沒有動它——排除 CHANGELOG.md 是另一個決定,不在這次的要求範圍內,先記著。

2026-08-10

  • fix · walkthrough 的 Stage 7 補完,9 個 block 現在全部執行過。7.2 的 from langfuse.decorators import observe 早就失效,改掉 import path。版本歸屬我第一次寫錯了:原本寫「4.x 起移走」,實際裝 2.60.10 / 3.0.0 / 4.14.2 三版測過才確認是 3.0 就移走了——照原本的註解,任何裝 langfuse 3.x 的人「改回舊路徑」反而會拿到 ModuleNotFoundError,等於我為了修一個錯誤而製造另一個。已改成「只有 2.x 用 langfuse.decorators」。@observe(name=…) 本身四個版本都沒變(查過 signature)。7.3 main.py 裝了 fastapi 0.141.1 / uvicorn 0.52.1 / pydantic 2.13.4 之後實跑——用 TestClient 打 POST /summarize 拿到 HTTP 200 與 {'summary': …},缺欄位拿到 HTTP 422(pydantic 驗證)。三語同步。
  • fix · 順帶補驗 Stage 4 的 __main__。先前那次用的 mock 攔在 anthropic.Anthropic,但 ChatAnthropic(langchain)走的是另一條路徑,所以 step4 的 demo 其實沒被跑到、會撞 401。這次改攔在 anthropic.resources.messages.Messages.create 並用真實 SDK 型別(Message / TextBlock / Usage,langchain 需要 model_dump),再加 httpx 層的網路 kill-switch。結果:step4 印出的是摘要而不是 [Reviewer 判定: …],確認 8/4 那批的修正真的有效。
  • chore · 例行掃描。星數合計 117 處、橫跨 39 個檔案(這是相對於本批開工時的 base 算的。合併時發現 weekly 自動 bot 的 #82 已經在今天 05:25Z 先做掉其中一部分,所以實際落在 main 上的淨變更是 106 處 / 36 檔——差額 11 處是與 bot 重複的。兩個數字都對,只是基準不同,寫清楚以免對不上 git diff f82f8de..7f22089),拆成三塊:refresh-stars.py --apply 自動改的 86 處 / 38 檔(llama_index 49k→51k、LocalAI 46k→48k、openai/codex 100k→105k 等)、1 處手動把 stages/08 英文版的 9k+ stars 轉成 ★ 12k+(繁中與簡中本來就是 ★ 11k+、機器有跟上,只有英文版寫成散文所以卡在 9k+)、以及下面那條的 30 處散文星數。工具自報的「110 / 44」是高估:它印的是偵測到的筆數而非實際替換數,且不論內容有沒有變都會重寫檔案,差額 24 筆是 no-op(百分比用解析後的整數算(10k+→10000),寫回時卻是四捨五入後的字串(10k+),所以永遠對不上)。連結:689 個 URL 掃過、實查 354 個 GitHub URL,0 個死連結。過時 model 參照:0。12 個 gate + 19 組單元測試全綠。overclaim 掃描乾淨。全 repo 304 個 python fence 掃過,語系之間不一致的解析失敗:0(這個數字我本來直接沿用 8/4 那條寫的「303」沒重數。重數是 304,而且 HEAD 跟 HEAD~5 都是 304——所以不是這批多出來的,是 8/4 那條本來就數錯、我又照抄了一次。已發布的紀錄不回頭改寫,在這裡註明)。
  • fix · 掃描過程中抓到 refresh-stars.py 兩個 bug,都會讓 CI 說謊。①永遠不收斂:百分比用解析後的整數算(10k+→10000),寫回時卻是四捨五入的字串(10k+),所以 24 筆「drift」其實是 no-op,每次跑都重報、重寫、--check 永遠不會綠。改成比對算繪後的值。②把暫時性失敗當成 repo 消失:fetch_stars() 不論 timeout 還是網路抖動都回 None,而呼叫端把 None 印成「Repo not found (404)」並在 --check 模式讓 CI 紅。這次掃描就實際發生了——21st-dev/magic-mcp 被報成 not-found,但它活得好好的(5,630 stars、HTTP 200),立刻重查就正常。改成非 404 的失敗重試 2 次、只有真的 404 才終止,而且「查不到」與「真的 404」現在是兩種回傳值(None vs FETCH_GONE),不再被壓成同一種。修完重跑:drift 0、not-found 0,275 個 repo 全部收斂。
  • fix · 「兩個都補了回歸測試」這句我第一次寫的時候是假的。原本寫「實測把修正還原後測試會 FAIL(9/10)」,但真的去做突變測試才發現:只有重試那條被抓到,no-op 防呆與計數修正各自還原後測試照樣全綠——因為那條 no-op 測試是套套邏輯(斷言 fmt_stars(10000) == fmt_stars(10900),跟被修的程式碼無關),而計數修正根本沒有任何測試,偏偏那正是印出錯誤的「110 / 44」的那段程式。補法:no-op 改成直接呼叫 main() 用的同一個 is_real_drift() 述詞;計數那段從 main() 裡抽成 apply_replacements()(本來整段內嵌在 main(),測試根本碰不到,所以我上次「補的測試」只能複製一份演算法自己測自己)。補到這一步時 5 個突變全部被殺:還原 no-op 防呆、還原重試、把 FETCH_GONE 壓回 None、還原算繪比對、還原越界檢查,各自都會讓測試 FAIL(下一條又加了兩個,合計 7 個)。單元測試 8 → 19 組(這裡我又寫錯過一次:第一版寫「9 → 15」,git show HEAD:scripts/test_refresh_stars.py | grep -c '^def test_' 實際是 8)。
  • fix · 然後 review 證明我補的那兩個新測試也是假的,同一個毛病、同一天第三次。--prose-threshold 那條測試我斷言的是 --help 印出來的字串裡有沒有「預設 5」——那只證明我會寫 help 文字。reviewer 實際去改程式碼:把散文比對接回 args.threshold(正是這條測試存在的理由)、以及把 default=5 偷偷改成 10 而 help 文字不動,兩種情況測試都照樣 17/17 全綠。已改成真的驅動 main() 的端到端測試(monkeypatch find_md_files / fetch_stars,用 CI 的原始參數跑一個一行的 fixture,斷言 exit code 與報告內容)。重驗:接回 args.threshold → 2 失敗、預設漂移 5→10 → 1 失敗,兩個突變現在都被殺。測試 17 → 19 組,7 個突變(A no-op 防呆 / B1 重試 / B2 FETCH_GONE / C 算繪比對 / D 越界檢查 / E 散文接線 / F 散文預設)對現行測試全部重跑一次,全數被殺。這是同一種錯誤在同一批裡的第三次:斷言「描述」而不是「行為」——count 1→2→3 綠但存的是三份垃圾、<li> 16 個看起來沒事但壞的是 <ol>、現在是 help 字串綠但接線是斷的。
  • fix · 散文寫的星數躲過了這個 gate 三個月。refresh-stars.py 的 pattern 只認 ★ Nk+ 這種算繪格式,寫成句子的(86k+ stars / 86k+ 星)它完全看不見——所以 browser-use 在三語共 21 處寫著 86k,實際是 108,651(低報 21%),而且三語一致地錯,mirror parity 也抓不到。這次靠讀出來、不是靠 gate。一併查證更新:bytedance/UI-TARS-desktop 36k→38k、trycua/cua 18k→21k、WangRongsheng/awesome-LLM-resources 8k→8.8k,共 30 處 / 6 檔、三語對稱(21 + 3 + 3 + 3)。resources/cli-agents-guide 那句「門檻 > 30k stars」刻意不動——那是收錄門檻、不是任何 repo 的星數。順帶對齊一處既有的三語不一致:stages/08 第 462 行繁中寫 86k stars、兩個 mirror 都是 86k+,少一個 +(HEAD 就是這樣、不是這批造成的);我第一版照著原樣換成 108k 保留了那個不一致,驗三語數字序列時才發現,已補成 108k+,現在三語九個數字完全相同。
  • fix · 順手把那個盲點做成會報紅的檢查,但只補到 60%,這點要講清楚。新增 PROSE_STARS_RE,對同一行有 GitHub URL 的散文星數做偵測,納入 --check 的失敗條件。刻意不做自動改寫:--apply 是拿 ★ {n} 整段取代比對到的文字,套到散文上會把後面那個字吃掉,Why is browser-use so popular (86k stars)? 會變成 ... (★ 108k+)?,而且得猜每個語系該用 stars 還是 星。實測(把英文版改回舊數字再跑):5 處被抓到、exit 1。但同檔另外 4 處抓不到——那幾處是沒有連結的敘述句(比較表格的「browser-use(OSS 86k stars)」儲存格、內文的「為什麼這麼火」),同行沒有 URL 就對不到 repo。全 repo 算:18 處納入守備、12 處仍然看不見(三語各 4 處)、3 處是上面那個門檻句正確被排除。所以這不是「盲點關掉了」,是從 0% 到 60%;剩下那 12 處目前仍然只能靠人讀。
  • ci · 而且「納入 --check」本身差點是空話,這是 review 抓出來的。我原本讓散文 drift 沿用 --threshold,但 lint.yml 的 star-drift job 實際是用 --threshold 50 跑的——而這次的元凶 browser-use 是 26% 落差,UI-TARS 更只有 7%,兩個在 50% 門檻下都報不出來。等於我為了「它以後會被自動抓到」寫了一個對這個 bug 本身無效的檢查。改法:散文走獨立且更嚴的 --prose-threshold(預設 5)。理由是兩者性質不同——★ 格式的 drift 下次 --apply 就自己好了,寬門檻只是晚點修;散文格式修不動、只能等人改句子,門檻放寬就等於沒人會知道。實測(把英文版改回舊數字,用 CI 的原始參數 --threshold 50 --check 跑):改之前 0 筆、exit 0;改成預設 5 之後 5 筆全中、exit 1。
  • ci · 但要講清楚它到什麼程度為止。跑這個 --check 的 CI job(lint.yml 的 star-drift)有三個限制,這次都沒動:① 只在 schedule(cron: '0 3 1 * *',每月 1 號)與手動 workflow_dispatch 觸發,PR 與 push 都不跑;② 包在 if ! ...; then echo "::warning::" 裡,不論退出碼都不會擋任何東西;③ 它本來就是設計成提醒而不是 gate。所以現在的真實保障是「每月一次、會在 Actions 頁面留一條 warning」,不是「以後不會再發生」。要真的擋下來得把它變成 blocking gate,而那牽涉到讓一個依賴 GitHub API + 網路的檢查去擋 PR——這個 repo 先前已經為 unresolved 那類情況決定過不那樣做(理由寫在 refresh-stars.py 的 --check 註解裡:因為查不到就變紅只會訓練大家忽略這個 gate)。這是另一個決定,不在這批。

2026-08-04(第二批)

  • fix · 主線 walkthrough 的 Python 第一次真的被跑過,抓到 4 個真實缺陷 + 1 個簡中版根本不能編譯。walkthroughs/build-first-agent-in-7-steps.md 的 9 個 python block(302 行)全部抽成文件自己指定的檔名,在乾淨 venv(Python 3.14 + anthropic 0.120.2 / langgraph 1.2.10 / langchain-core 1.5.3 / chromadb 1.5.9)逐一執行,Anthropic 與 requests 用 mock 攔截——沒用 API key、沒產生費用。三語同步修好。
  • fix · Stage 6 的「RAG memory」實測完全沒在存東西,兩層問題疊在一起。表層是 store_paper(arxiv_id="...") 把字面字串 "..." 當 id;底層是 DB 空的時候 find_similar() 回 [],if not similar: return 提前退出,store_paper 從來沒被呼叫過——第一篇永遠不會進 DB,下一篇進來 DB 還是空的。實測連存 3 篇 count=0。修法:先存再回傳、id 改用 state["arxiv_id"]、add() 改 upsert()(實測 add() 遇重複 id 是靜默忽略、不報錯)。修後 count 1 → 2 → 3。
  • fix · 存進 memory 的根本不是摘要,是 reviewer 的判定字串——這個是 review 時才抓到的第 4 個,而且單看 count 是「修好了」的。compare node 跑在 reflect 之後,而 reflect 會 append 一則 [Reviewer 判定: …],所以 state["messages"][-1] 拿到的是判定不是摘要。實測三篇論文存進去的文件完全相同(真實情況下都是 [Reviewer 判定: PASS],因為那個 prompt 明說「只回答 PASS 或 NEEDS_REVISION」)。改成往回找最後一則 AI 訊息;Stage 4 自己的 demo print 也踩同一個坑,一併修。這正是「結構檢查過了不代表內容對」的實例——count 1→2→3 全綠,存的卻是三份一模一樣的垃圾。
  • fix · compare_with_memory 算出來的結果被 LangGraph 丟掉。回傳 {"comparison": ...} 但 State 只宣告 messages / revisions,LangGraph 會過濾掉沒宣告的 key——實測 invoke 後 keys 是 ['messages','revisions']。那次比對的 LLM 呼叫照樣計費、結果拿不到。改成 class MemoryState(State) 明確宣告 arxiv_id / comparison,並補上 invoke 範例(原文件根本沒示範怎麼呼叫這個 graph)。
  • fix · import 一個 stage 的檔案就會送出真實 API 呼叫。step2 / step3 / step4 都在 module 層執行 demo,而後面的 stage 會 import 它們拿 SYSTEM_PROMPT / run_agent / State。實測光是 import step2_paper_summary 就送出一次 max_tokens=800 的呼叫,內容還是佔位字串。三個檔案包進 if __name__ == "__main__":,修後被 import 的 4 個檔案共 0 次呼叫。step1 沒加 guard 是刻意的——全文 import step1 出現 0 次。
  • fix · 簡中版有 2 個 python block 根本不能 parse,而且其中一個是 Stage 1——簡中讀者跑的第一支程式就 SyntaxError。原因是 \n 這個跳脫序列被展開成真實換行,f-string 因此沒閉合(unterminated f-string literal)。這是既有問題、不是這批造成的,但這批本來要宣告「三語都驗過」,不修就是謊報。全 repo 掃了 303 個 python fence,確認只有這一處是語系之間不一致的失敗(其餘失敗的是三語一致的刻意片段)。
  • docs · .github/TESTING-STATUS.md 拆成兩列照實寫:Stage 1-6 的 6 個 block ✅ 實跑過、Stage 7 的 3 個 block ⚠️ 部分未跑——7.1 eval_provider 實跑通過,7.2 step7_observability 因 langfuse 4.x 把 observe 從 langfuse.decorators 移走而 import 失敗,7.3 main.py 因 venv 沒裝 fastapi / uvicorn 沒跑。合計 9 個 block 跑了 7 個。同檔下方那條「因為版本會過期所以選擇不測」的理由也標記為 Stage 1-6 已不成立。沒有宣稱全部驗完:需要真實 API key 的端到端輸出品質仍未驗。

2026-08-04

  • ci · main 加上 branch protection,但只防災難。禁止 force-push、禁止刪除 main,enforce_admins: true(對自己也生效)。不要求 PR、不設 required status checks——因為過去 60 天的 108 個 commit 裡,只有 14 個的 sha 對得上已 merge PR 的 merge commit(0 個 merge commit),其餘 94 個都是直接推 main,而 CLAUDE.md 本來就寫「小改動偏好直接進 main」。擋的是 history 被覆蓋、分支被刪這種救不回來的事;內容錯誤仍然只會事後報紅、不會攔下。要真正攔阻得強制所有變更走 PR,那是另一個決定。
  • ci · anchor-validator 與 stage-template-check 補上 push: [main]。上一批只解了 PR 側的死鎖,但這兩個 gate 沒有 push trigger——而 2026-06-07 → 2026-08-04 的 109 個 commit 裡有 95 個是直接推 main(比對已 merge PR 的 merge-commit sha,14 個經由 PR),等於在那條佔 87% 的路徑上它們形同不存在(lint.yml 前一天才做過同樣的事)。這裡把區間寫死成日期而不是「過去 60 天」——滾動視窗寫進靜態檔案,隔天就不成立。上面第 1 條跟下面那條解死鎖的就是這個問題:那兩條都是 9535c39 寫的,量測卻取自其 parent 470213f(當時 108 / 94),到 9535c39 本身視窗已經是 109 / 95。已 commit 的紀錄不回頭改寫,在這裡註明即可。順帶給 stage-template-check 補上每月 cron(0 6 1 * *,避開 lint 03:00 / anchor 04:00 / freshness 05:00)——三個 gate 裡原本只有它連 schedule 都沒有;不過要講清楚它實際能抓的只有 toolchain 腐化(action / runner / Python 版本),內容漂移已經被 push + PR 全覆蓋了。成本實測:anchor 6-10 秒、stage-template 6-7 秒。
  • ci · mirror-sync-reminder 的 paths 補上 examples/**.md。examples/ 有 84 個 .md(28 canonical + 56 mirror),原本整個不在提醒範圍內。但要說清楚它補的是哪個方向:這個提醒是 diff 驅動、只管「canonical 改了而 mirror 沒跟」;2026-08-02 那次 21 個 example README 少 202 行是既有的 mirror drift(99adcf7 動了 42 個 mirror、只有 2 個 canonical),那一類結構上抓不到,是 check-mirror-parity.py 的 ratchet 在管。另有一個例外已記在 workflow 註解裡:examples/stage-5/tool-calling-tutor/SKILL.md 的譯本放在 translations/ 子目錄,而 check-mirror-sync.py 只找同目錄的 <stem>.en.md,所以那一個仍不受保護。這個 workflow 是提醒性質(會留言、不擋 PR),所以維持 paths 過濾、不設為 required——死鎖問題不適用。
  • docs · TESTING-STATUS.md 補上 anchor-validator 與 stage-template-check 兩列。它們各有 12 次 / 7 次真實 PR 執行紀錄卻一直沒被列進「真的跑過」那張表。同時修掉兩處已經發布的不實:① lint.yml 的 push 執行次數寫 1、實際是 2(漏了 30915746076);② 下方那句「push 到 main 只有 lint.yml 會跑」是上一批寫的,加了 push trigger 之後就不再成立。另外記一個沒發布出去的近失:新增的 stage-template-check 那列草稿本來寫「全綠」,review 時查 run 25934104948 才發現它失敗過,再查 diff 才確認那是 false positive——53e723d 只是把依設計就沒有 REQUIRED sections 的 07.5 加進 SKIP_STAGES,不是修內容。所以該列照實寫成「至今沒攔下過真實的 template 違規」。
  • content · catalog 把「自薦」變成明講的慣例,而不是個案判斷。morluto/jacobian(#79)的投稿者 handle 與 repo namespace 相同(morluto → morluto/jacobian),而他依 CONTRIBUTING 先開 issue #78 討論再送 PR,流程完全照走。但 issue 與 PR 內文都是第三人稱、沒有明講作者身分,所以標示由目錄這邊補。原本只有 13 / 14 節標示「maintainer 自家專案」,第三方自投放在 12 節沒有對等標示。現在:收錄方向多一條「作者自投會標示」(收錄標準一視同仁、但條目會標記),該條目標題加上「⚠️ 作者本人投稿」,三語同步。
  • ci · 三個 gate workflow 拿掉 paths 過濾,解掉 required-check 死鎖。GitHub 對「被設成 required 但從未回報」的 check 是無限期等待,PR 會永遠卡在「Expected — Waiting for status to be reported」。paths 過濾會讓整個 workflow 不觸發、連 check 物件都不產生,正是那個死鎖。實測死鎖面(473 個 tracked 檔案中觸發不了任何執行的):lint.yml 130、anchor-validator.yml 239、stage-template-check.yml 442(93% 的 repo,三者最嚴重)。全部改成 0。lint.yml 的 push 側也一併拿掉——舊 filter 會跳過只動 CITATION.cff 的 chore(release) commit,全部 12 個 release commit 裡有 9 個是這種(另外 3 個只是剛好同時改了 CHANGELOG.md 才觸發)。代價比想像中小:實測過去 60 天 108 個 commit,舊 filter 真正讓 lint 一次都沒跑的只有 10 個(9%)、anchor-validator 13 個(12%)、stage-template-check 48 個(44%);三個同時落空(也就是多花約 45 秒 job time 的情況)只有 10 個(9%)。九成以上的變更本來就會跑 lint,公開 repo 又不計費。
  • ci · mirror-sync-reminder.yml 跟 pr-link-audit.yml 刻意不動。這兩個會在 PR 上留言、是提醒性質不是 gate,本來就不該被設成 required,所以 paths 過濾對它們無害。job 層的 if: 也不用動——被 conditional skip 的 job 仍然會產生一個 skipped 的 check 物件,GitHub 視為通過(實測 check-runs API:Star drift detection / Link rot check / Audit new repo links 三個都有具名 check、狀態 skipped)。死鎖只來自 workflow 層的 paths。
  • fix · .github/TESTING-STATUS.md 對 lint.yml 的描述已經過時。原本寫「沒在真 PR 上觸發過」,但實際的執行次數是 pull_request 15 次、workflow_dispatch 5 次、schedule 3 次、push 1 次,而且 run 30870625764 實際攔下一個 overclaim 違規(真陽性)。已改成已驗證並附 run id,並從「⚠️ 只做 syntax check」那張表移到「✅ 真的跑過」那張表(該檔的 ✅ 區塊標題與「證據」欄位就是為此而設;第 75 行也要求跑過即改記號、補證據);同一份檔案下方一句同樣過時的「沒第一個外部 PR 之前看不出來」也一併標記為不再成立。措辭上只寫「至今未觀察到與本地 git-bash 的差異」,不寫「行為一致」——同一 corpus 兩邊都綠是觀察,不是等價證明。

2026-08-03(第四批)

  • content · 行為準則的兩個中文版少了「什麼行為會觸發」那一半。四級處置(更正 / 警告 / 暫時停權 / 永久停權)中文版只寫了後果,英文版則同時有 Community Impact(什麼行為構成該級)與 Consequence(後果)。對一份規範文件來說,少掉的正是讀者最需要的那半——罰則看得到,紅線看不到。兩個中文版都補齊到與英文對等:主要參考本文件已聲明改編來源的 Contributor Covenant 2.1 官方簡中譯本,再逐條對照英文原文校正用語(官方繁中無 2.1 譯本)。兩版各自既有的用語分工維持不變(繁中「社群 / 停權」、簡中「社区 / 封禁」),那是正確的在地化、不是漂移。
  • fix · 補完之後又踩到同一個 render 坑,而且這次連英文版本來就是壞的。四級清單的接續段落縮排 3 個空格,但 python-markdown 的 tab_length 是 4——3 個空格不算清單接續,會把清單截斷。結果是四個級別各自變成獨立的「1.」、後果段落整個掉出清單外,一份內容就是四階升級階梯的文件,在文件站上看不出第一級跟第四級的差別。GitHub 上完全正常,所以只看 GitHub 是驗不出來的。三語一起改成 4 個空格(.en.md 是既有問題、順手一併修),<ol> 從 4 回到 1。我第一次驗的時候數 <li>,三個檔案都是 16、看起來沒事——那個數字在這裡根本沒有鑑別力,壞掉跟修好都是 16。 要看的是 <ol>。
  • fix · SECURITY.md 說「沒有版本化 release」,但這個 repo 已經發了 18 個。這句話從 2026-05-16 加進去的那一刻就自相矛盾——同一個 commit 也加了 CITATION.cff,而 CITATION 存在的意義就是請人引用某個特定版本。自 v2026.07.17 起實際上更是完全錯的。對回報安全問題的人來說,這句話等於告訴他「只有 main 有人管」,那 pin 在某個 tag 的人就沒有任何說法。三語一起改成講真正成立的事:支援範圍是 main,tag 是內容快照、不回溯修補。這是發布第 19 個 release 的同時該一起講清楚的事,不是下一批。
  • fix · lint.yml 註解裡的數字是舊的:寫「six gates」「seventh time」,但實際上那個 bug class 散在 8 個 script,第 7、8 次復發都已經發生過,新的守門測試擋的是第 9 次(本批一併把註解改成 eight gates / ninth time)。CHANGELOG 2026-08-02 那條記的才是對的。

2026-08-03(第三批)

  • fix · 網站上有 9 頁的內容根本沒被 render 出來。GitHub 的 markdown 跟文件站用的 python-markdown 不一樣:<details> 摺疊區塊裡的內容,python-markdown 預設當成純 HTML、不再解析裡面的 markdown,所以表格、清單、粗體全部變成原始文字漏在頁面上;另外「一段文字下面直接接清單、中間沒空行」在 GitHub 會正常變清單,在文件站則會整段黏成一行。兩個問題一起修:93 個 <details> 補上 markdown="1"、501 處補空行,共 110 個檔案。修完外漏頁面 9 → 0,mkdocs 警告維持 176(沒有新增)。
  • fix · 9 個 License 欄位寫錯,其中 8 個是「把有授權的專案寫成授權不明」。目錄自己的收錄政策叫讀者看這一欄判斷能不能用,寫錯的方向剛好會嚇跑人。逐一用 gh api 查回來改:notion-mcp-server / notebooklm-skill / notebooklm-py / linear-mcp-server / youtube-mcp-server / zotero-skills / ai-hedge-fund 都是 MIT、graphify 是 Apache-2.0。anthropics/skills 是反過來的情況——原本標「非標準授權」,但 API 回的是根本沒有 license 檔,對一個標「必裝」的專案來說這兩件事差很多,所以改成明講「上游未提供、使用前請先確認授權」。
  • fix · browserbase/mcp-server-browserbase 已經封存了(gh api 的 archived: true),標題跟推薦度欄都補上封存標記。原本想寫「已封存 2026-07」,但 GitHub 的 archived_at 是 null、查不到確切日期,只有最後 push 是 2026-07-20——推不出封存月份就不要寫,所以只留「已封存」。jerhadf/linear-mcp-server 也是類似情況:標題已經降成 ⭐⭐⭐ 並註明逾一年沒更新,但下面的推薦度欄還停在 ⭐⭐⭐⭐,兩個數字互相打架,已對齊。
  • content · Sonnet 5 現在是優惠價,但表格寫的是優惠結束後的價。官方定價頁列了兩組數字:2026-08-31 前 $2 / $10、9 月 1 日起回到 $3 / $15。表格保留 $3 / $15 是對的(四週後才是常態價),但讀者今天實際付的比較少,所以三語的定價表跟 stages/01 的 PRICING dict 都加上有日期的註記,並附官方定價頁連結。
  • content · 有幾處 mirror 寫的意思跟繁中版相反。最嚴重的是 resources/README 的「重複 / 重疊?」那節:繁中寫「刻意避免重複」,英文版跟簡中版卻寫成「重複是刻意保留的」——完全反過來,而且英文版還多出一條繁中沒有的 setup-guide 項目(沒有出處,已刪)。其他補回來的:README.zh-Hans 的目錄少了 13 個項目、glossary.zh-Hans 少了 Streaming 跟 Batch API 兩個詞條、RESOURCES 兩個 mirror 少了 cookbook 指路、stage-6/03-chunking 簡中少了整個實作範例、stages/01 簡中的時間估算被截斷。
  • content · stages/00、01、05 少了章節開頭的導覽區塊。「📋 本章組成 / 🔑 關鍵名詞」這兩行是每一章的入口說明,stages/00 兩個 mirror 都沒有、stages/01 英文版沒有、stages/05 兩個 mirror 都少了指向 subagent-advanced 的那一則。這類落差 check-mirror-parity.py 抓不到——它數的是區塊「數量」,少一個引言塊、別處多一個就抵銷掉了。gate 自己的 docstring 就寫著「它只會數,不會比對內容是否相同」,這批正好是那句話的實例。
  • fix · 兩條連結是真的 404。docs.claude.com/en/docs/build-with-claude/models 會 301 到 platform.claude.com/...,而那個位址本身回 404;.../claude-code/overview 表面回 200,但實際被導到文件站首頁、不是權限說明頁。兩條都出現在這批本來就在改連結的檔案裡,等於改了一輪還是漏掉。改成 curl 實測 200 且不轉址的 code.claude.com/docs/en/permissions 跟 platform.claude.com/docs/en/about-claude/models/overview,後者的連結文字原本寫「Anthropic model fallback」、但那頁其實是模型選擇總覽,一併改成名實相符。
  • fix · 這批我自己弄壞了一次,值得記下來。上面那個定價註記,我插在 claude-sonnet-5 跟 claude-opus-5 兩列中間——中間的空行把表格提前結束掉,claude-opus-5 整列就被吸進那個引言塊裡,三語都一樣。結果是最貴的那一階從價目表消失、變成一行原始的直線符號出現在「優惠價」說明裡,看起來像在說 $5 / $25 也是優惠價。review 時實際 render 前後比對 <tr> 數量才抓到(59 → 58),已把註記移到整張表後面,現在回到 59。教訓跟上一批的 baseline 事件同一類:gate 全綠不等於內容正確,這 8 個 gate 跟 115 個測試全數通過,但這個 bug 一個都沒攔到。
  • fix · 其他跟著修掉的小地方:英文版 README 目錄少了 Quick Start 底下的 3 個子項(章節本身存在、只是沒進目錄,同一批已經幫簡中版補了卻漏掉英文版);英文版徽章少了 ?style=flat、而且語言徽章的標籤是中文的「語言」;簡中版徽章標籤也還是繁體的「語言」;RESOURCES.zh-Hans 把 SKILL.md 誤寫成 SKILL.zh-Hans.md(那個檔名本來就沒有語言後綴);批次取代誤改到 CHANGELOG 跟 TESTING_PLAN 裡的歷史紀錄——那兩行在描述當時做了什麼,不該被現在的規則覆寫,已還原。

2026-08-03(第二批)

  • fix · 英文版 / 簡中版把繁中的「比較表格」攤平成一堆標題,現在全部改回表格(7 個檔案組、153 個表格列)。tracks/cli/A1、A2、A3 的「精選 Projects」跟 stages/00-foundations 的先修資源,繁中都是一張多欄比較表(分類 | Project | ⭐ | 適合誰 | 為什麼推薦),兩個 mirror 卻拆成 ### 分類 + #### [專案](url) + 一段散文。資訊沒少,但可掃讀性差很多——而且 canonical 自己的 lead-in 就寫著「一張表搞定」,表格本身就是設計意圖。另外 examples/stage-6/05-long-term-memory 少了第二張對照表、README 少兩張、resources/style-guide.en 少兩張,一併補回。修完 7 組的表格結構(欄位、欄序、列數、列序)三語完全一致。
  • fix · 這是我判斷錯誤造成的,值得寫清楚。check-mirror-parity.py(前一批新增的 gate)本來就有報這 153 列。我看過之後判斷「資訊都在、只是換個呈現方式,屬於合理的重新編排」,回報為非問題,然後把它們寫進 baseline 讓 gate 不再報。這等於把真的缺陷變成永久看不見的——而且 code reviewer 在兩個 commit 前才剛警告過「動 baseline 正是真實 regression 被消音的途徑」,我對自己的 gate 做了同一件事。baseline 是用來記錄「擁有者接受的差異」,不是「我說服自己沒問題的差異」。 現在 baseline 裡的 table_rows 豁免從 153 歸零,總落差 185 → 17。
  • fix · 星數全面對回真實數字(339 處、57 個檔案)。轉表格時發現 A2 的 mirror 寫 ★ 258k+、canonical 寫 247k+,某個 agent 把 mirror「同步」成 canonical。第一手查 GitHub 後發現兩個都錯:obra/superpowers 實際 265k;而 claude-plugins-official、Helicone、promptfoo、superpowers-marketplace 四個是 mirror 才對、canonical 才是舊的——那個「同步」方向剛好改反了。第一次跑 refresh-stars.py 只修掉 18 處(github-mcp-server、research-hub、graphify、a-stock-data、trailofbits/skills-curated),因為它的預設門檻是 10%,而上面那幾個的偏差都在 5-8% 之間、剛好躲過。改用 --threshold 5 重跑後修了 339 處、57 個檔案——代表這個 repo 累積了大量「差一點點但沒到 10%」的陳舊星數。另有 2 處是手動修的:A3 兩個 mirror 把星數寫在備註欄的句子中間(★ 258k+。看別人怎麼…)而不是獨立的 Stars 欄位,refresh-stars.py 的 pattern 看不到那種寫法——這是該腳本一個已知的覆蓋邊界。修完後 obra/superpowers 在三語 × A2/A3/Stage 5 共 6 處全部一致。
  • fix · refresh-stars.py 是第 4 個會走進 .claude/worktrees/ 的腳本,而且它比前三個嚴重:前三個只是多讀一份陳舊副本,這個會多寫——--apply 會把星數寫進那份沒人在用的 worktree 副本裡。已加進排除清單,修完實測 worktree 命中數 0。
  • content · 區塊序列比對又抓出 3 處表格以外的落差。把比對從「表格數量」擴大到整份文件的區塊序列(標題階層 / 表格 / 清單 / 程式碼 / <details> / 引言塊的出現順序)之後:stages/02-prompt-engineering 的兩個 mirror 少了標準章節開頭的兩個引言塊(📋 本章組成、🔑 關鍵名詞——A2/A3 都有,只有 Stage 2 沒有),英文版還另外少了練習 1 的預期輸出區塊跟結尾的「進階做法」提示;examples/README 兩個 mirror 少了整節「怎麼從 Ollama 換到 Anthropic?」連同程式碼區塊。全部補齊後,14 組區塊序列不一致降到 1 組。
  • fix · 順手修掉的其他不一致:A1 的 lead-in 三語都寫「9 個項目」但表格有 10 列(8 個 CLI agent + 2 個互補工具),canonical 本身就算錯、mirror 忠實地複製了錯誤;A3 英文版表頭寫 Why / notes、漏掉 canonical 的「推薦」語意,與 A1/A2 自己的譯法也不一致;style-guide.en 第 3 節的引言寫「下面前兩張表是中文側的規則」,但第二張是 overclaim 表、對英文同樣適用,已改寫成正確描述。
  • audit · 兩處確認不是落差、刻意不動:① README.en 少一個引言塊,但那塊是「📖 關於中英文混用」——解釋為什麼中文行文裡保留英文術語。對英文讀者沒有意義,正確的做法就是不要有。② style-guide 的簡中版第二張表有 22 列、繁中只有 19 列,因為兩邊是互為鏡像的:繁中版列的是「簡中詞 → 繁中詞」(代碼→程式碼、視頻→影片),簡中版列的是「繁中詞 → 簡中詞」(使用者→用户、軟體→软件)。各自禁用對方的用詞才是對的,硬要列數一致反而錯。這兩個提醒了一件事:「所有語系都要跟繁中一樣」是格式的原則,不是把只對某語系有意義的內容硬塞進其他語系。

2026-08-03

  • content · 最後幾處內容落差補完,三語 URL 也對齊了。上一批用「結構比對」找落差,這批改用內容比對(canonical 有哪些連結、mirror 是不是也有)重掃一次——這個換法很重要,因為結構數字會有假陽性:stages/00-foundations 的表格在兩個 mirror 都「不見」,但那 18 筆資源全都在、只是改用條列呈現,A2 / A3 的 Projects 表也是同一回事(改用 #### 標題)。真正缺的只有這些,已補:stages/02-prompt-engineering 的李宏毅課程影片區塊(en + 簡中,跟上一批補的 stage-01 影片區塊同一類、措辭刻意對齊)、resources/README 的「跟 Hello-Agents 的關係」說明、resources/cookbook.en.md 的 hello-agents Extra08(寫 Skill)。
  • fix · 兩處其實不是「缺」,是 host 寫錯——這是內容比對才看得出來的:stages/06-memory-rag 的 Pinecone reranker 連結,兩個 mirror 寫成 www.pinecone.com、canonical 是 www.pinecone.io(同一份檔案的另一處也是 .io);tracks/cli/A2 的 Anthropic CLAUDE.md 指南,mirror 是 docs.anthropic.com、canonical 的表格列是 docs.claude.com。兩處內容都在、只是連到錯的地方,所以任何「有沒有這段」的檢查都看不出來。已對齊 canonical。
  • content · resources/schema-design-cheatsheet.zh-Hans.md 缺的不只一條 bullet,是整個 H2 段落。原本只打算補一條 promptfoo 參考,實作時發現簡中版比 canonical / 英文版少一整節(「延伸閱讀」四條:向後相容的參數改法、語意變了就開新 tool、改完 description 要重測、promptfoo eval),只補一條會放錯位置。四條一起補。
  • content · examples/stage-1/04-cross-provider 補上英文版與簡中版——它是全 repo 最後一個沒有 mirror 檔的練習資料夾。附帶發現一個因果鏈:正因為它沒有 mirror,sync-language-switchers.py 一直跳過它(該腳本要求至少有一個 mirror 才處理),所以它是唯一還在用舊的行內語言切換列格式的檔案。補上 mirror 之後跑 --apply,三個檔案一起正規化成跟其餘 21 份一致的 <div> 格式。mkdocs 警告數因此從 182 降到 176——少的 6 筆全是這個資料夾原本指向不存在 mirror 的切換列連結,確認過沒有任何新增的警告類型。
  • fix · 6 個 DeepSeek R1 過時標記全部清掉,freshness 首次全綠。兩處問題性質不同、修法也不同:setup-guide(三語)是 NVIDIA NIM 的代管 model 清單寫 DeepSeek-R1——在一份舉例用的清單上鎖版本號必然會過期,改成 DeepSeek;01-llm-basics(三語)的 Hunyuan 那列寫「可比 DeepSeek R1 推理」,這個對照對學習者其實有用,所以不是刪掉而是標記成它本來的身分:「深度思考推理(對標 DeepSeek R1 這條 2025 推理基線)」。基線 / 基线 / baseline 正好是 freshness gate 自己列的合格限定詞,所以這是誠實地通過、不是繞過。
  • fix · Claude Code 官方文件已搬家,repo 內所有相關連結改指最終目的地。第一手實測發現 docs.anthropic.com 的舊連結全部會被 301 轉址,而且有兩條不同的對應規則:Claude Code 文件 → code.claude.com/docs/en/<page>(實測 .../claude-code/memory → code.claude.com/docs/en/memory、.../claude-code/quickstart → .../en/quickstart,最終頁面回 200 且確認是正確內容);API / 平台文件則是 → platform.claude.com/docs/en/docs/...。Claude Code 那一類已全部改完(tracks/cli/A1、A2、resources/setup-guide 各三語,共 12 處),改完後全 repo 這類舊連結歸零。API / 平台那一類這批不動——它的對應規則不同、我只實測了 2 個代表性 URL,拿 2 個樣本去改一整批正是這一輪反覆學到該避免的事,規則與證據先記在這裡,要改得逐一驗過。附帶一提:code review 抓到我原本的「修法」其實只修到一半——把 docs.anthropic.com 換成 docs.claude.com 之後那個網址自己也還是 301,真正的終點是 code.claude.com,而正確答案當時就寫在同一個 commit 的 CHANGELOG 裡。
  • fix · 順手修掉一個指向不存在資料夾的連結:examples/stage-1/04-cross-provider(三語)寫著「接 examples/stage-1/03-pricing/ 的 PRICING dict」,但 stage-1 底下只有 04-cross-provider 跟 05-error-handling,03-pricing/ 從來沒建過。連結本身指向 ../(父目錄存在)所以任何連結檢查都不會報,但顯示文字點名了一個不存在的資料夾。實際的 PRICING dict 在 Stage 1 的計價練習裡,已改指那裡。
  • fix · 新譯的兩個 mirror,預期輸出區塊改成各自語系。04-cross-provider 的英文版 / 簡中版原本把繁中的 console 輸出原封不動照抄(練習 4 通過、沒有對應 API key、風格 / 長度),理由是「那確實是 starter.py 印出來的字」——但隔壁 05-error-handling 的既有慣例正好相反:它的 test.py 同樣硬寫繁中,英文版 README 仍然譯成 🎉 All passed — retry wrapper logic correct。check-hans-chars 依設計豁免 fenced code block(裡面本來就可能要展示 zh-TW 範例),所以沒有 gate 會抓到——這是純粹的可讀性回歸,已按既有慣例補譯。
  • process · 這一輪也記錄一個 gate 的能力邊界:check-mirror-parity.py 只數 h2 / h3 / blockquote / code fence / 圖片 / 表格列,不數條列項、也不看連結。所以上面那個「缺一整段條列」跟「表格儲存格連結指向錯 host」兩種情況,它都是綠的。這不是 bug、是它宣告過的範圍(docstring 已寫明「它只數數量、不比對內容」),但值得寫下來:gate 綠 ≠ 內容對,補完之後真正的驗證仍然來自跟 canonical 逐條比對。

2026-08-02(第三批)

  • content · 21 個 example README 的英文版 / 簡中版補回 202 行說明區塊。上一批量出來的那個系統性刪節,這批做完了:每份練習開頭的兩個 blockquote——「🎓 學習模式」(講 starter.py 是完整解答不是 TODO skeleton,建議先 mv starter.py starter_reference.py、只看 signature 自己重寫,卡 20 分鐘再對照)跟「📚 想要 chapter-length 深入版?」(指向 hello-agents 對應章節 + 該 stage 的深度教材)——繁中每份都有,兩個 mirror 一份都沒有。42 個 mirror 檔、202 行,現在補齊。🎓 那行是純樣板,所以由我統一寫好兩種語系再讓各 lane 逐字貼上、不是各自翻譯:實測 21 個英文檔的該行 sha256 完全相同、21 個簡中檔也完全相同。📚 那塊的 3 個 bullet 則逐檔不同(每份練習對應 hello-agents 不同章節、外部參考也不同),按各自 canonical 翻譯。第 3 個 bullet 的 anchor 最容易錯,所以事前用 repo 自己的 slugify 算好每個 stage × 每個語系的正確字串再發下去。
  • tooling · 新增 scripts/check-mirror-parity.py + 14 個測試——這是本輪最該做的一件事。這個 repo 反覆出問題的不是翻錯,是整段沒翻:光是 2026-08 這一輪就抓到五次(catalog 的組合說明段、A2/A3 的進入條件、stages/01 的五個預期輸出區塊、stage-3 example 整條免費本地路線、以及這批的 202 行)。現有 gate 一個都抓不到——它們全都在驗「已經存在的東西對不對」,沒有人在驗「有沒有東西不見了」。新 gate 逐組比對三語的結構(h2 / h3 / blockquote / code fence / 圖片 / 表格列),mirror 比 canonical 少就報。它是棘輪(ratchet)不是絕對檢查:repo 本來就有合理的落差(例如英文版拿掉只有中文才有的影片清單),那些存進 baseline,gate 只在落差變大或出現在新地方時 fail——所以落差只能縮小、不會回頭。首次量測:66 組、35 組有落差、總計 389;補完這批之後是 15 組、187,389 − 187 = 202,跟補進去的行數完全對得上。
  • fix · 順手修掉兩個 canonical 自己的連結損壞(是 porting agent 在翻譯時發現的,不是我原本要找的):examples/stage-3/05-error-handling/README.md:12 的連結文字是 [ 5 結構化錯誤回傳]——開頭是個裸空格、掉了字(對照 cheatsheet 的「### 規則 5:error 回傳要讓 LLM 可以恢復」,掉的是「規則」);examples/stage-3/06-schema-design/README.md:12 更明顯,[](...) 連結文字整個是空的、在頁面上渲染成一個看不見的連結。兩個都補上正確標籤,三語一致。
  • process · 兩件值得記的事。① examples/stage-1/05-error-handling 的 canonical 本來就只有 🎓、沒有 📚,負責那個 lane 的 agent 拒絕幫它生一個,理由是「bullet 的內容必須來自該檔 canonical,這裡沒有來源,硬寫等於在兩個 mirror 注入沒有出處的內容——而且會通過所有 gate,因為 gate 驗的是 anchor 跟語系、不是出處」。這個判斷是對的,予以採納:那個資料夾維持只有 🎓。② 這個環境裡 bash 的 grep 對 emoji 會靜默回報 0 筆——本輪稍早我用 grep -c "^## 🚪" 掃 A2/A3,六個檔案全部回 0,當下差點據此下結論說「canonical 也沒有這一節」,實際上 canonical 有。改用文字關鍵字或 ripgrep 才正確。任何用 emoji 當 key 的 bash grep 檢查在這裡都會假性通過。

2026-08-02(第二批)

  • content · MCP 網址查證結果:一個都沒搬,但多了一整層該寫的東西。把 repo 引用的每個 MCP 網址第一手查了一遍——modelcontextprotocol.io/specification、py.sdk.modelcontextprotocol.io/migration、Registry、三個 SDK repo——全部仍然解析、沒有任何 redirect,spec revision 也確認就是我們寫的 2026-07-28;Registry 的 README 仍自述「this is still a preview release and breaking changes or data resets may occur」,所以「仍在 preview」這句維持正確、不用改。但查證過程發現一件本來擱置的事現在有答案了:2026-07-28 那版把「核心協定」跟「extension」正式分家,而且官方 extension 現在有穩定網址與正式的官方 / 實驗分層(ext- 開頭 repo + io.modelcontextprotocol/ 前綴 vs experimental-ext-)。2026-07-31 那批當時刻意不寫 Apps / Tasks,理由正是「命名不一致、看不出是不是正式的」——這個理由現在失效了,所以補一則三語選讀方塊到 Stage 5.2。仍然刻意不教協定內部機制,只留一條不會過期的規則:extension 一律預設關閉、要雙方明確支援才生效,看到教學叫你用某個 extension 先確認 client 支不支援,否則會靜默退回核心行為。
  • content · 英文版 / 簡中版補回 7 處缺的內容(不只原本點名的 4 處)。tracks/cli/A2、A3 的「🚪 進入條件」整節在兩個 mirror 都不存在,而兩份檔案自己第 9 行的「本章組成」還寫著有這一節;stages/01-llm-basics 少了 5 個「預期輸出(樣本)」區塊(繁中 6 個、mirror 各只有 1 個),學習者沒有「跑對了長什麼樣」的對照;examples/stage-3/03-react-from-scratch 的整條免費本地 Path A(Ollama)在兩個 mirror 都不見了、只剩付費路線,而 examples/README.en.md 還宣告「Three paths」。補完之後對抗式複查又抓出 3 處:stages/01 的「🎥 影片補充」三則(李宏毅 / 3Blue1Brown / Karpathy——這三則對中文讀者價值最高,卻正好是簡中版缺的)、Ex.6 的「沒裝 Ollama 也想跑」LM Studio / vLLM 退路、以及 A2 與 A3 的「💡 建議入手路徑」收尾方塊。A2 三語現在 h2 與 blockquote 數完全一致(7/7/7)。
  • tooling · 新增 scripts/check-hans-chars.py + 15 個測試,補掉一個永久性盲區。zh-hans-localize.py 只驗用詞與引號,字元層繁→簡是假設 opencc 在產 mirror 時就做完了——所以當初沒轉到的字,永遠不會被任何 gate 看見。新 gate 直接斷言真正的不變式:用 opencc t2s 轉一次簡中檔必須是 no-op。上線後立刻抓到 10 行真殘留(涵蓋 11 個相異繁體字),包括 README.zh-Hans.md 正文裡的「不要跳过 動手練習」、三個 stage 檔的 邏輯 / 區別 / 選定、examples/README 的 多模態,外加一個 对, 应的 的損壞字串。同一類問題在上一批已用手工修掉 3 處(catalog 的 正規、RESOURCES 的 用語 ×2),所以這個類別今天總共出現 13 處——但那 3 處是靠人眼、不是靠 gate 找到的,這正是要把它自動化的理由。兩件事值得記:① 我先試著手寫一張「繁體字清單」,結果又漏又錯——漏掉 檔/個/體/專/點 這些最常見的,卻把兩邊同形的 叫 列進去,所以整個丟掉改用斷言;② 必須用 t2s 而不是 tw2s——tw2s 會把台灣變體 么 映成 幺,拿去掃正確的簡中文字會把「什么」改成「什幺」、報出約 880 個假陽性。這兩個坑都寫成測試釘住。
  • tooling · 新增 scripts/check-image-locale.py + 14 個測試,把上一批記錄的「沒有 gate 在管圖片語系」補上。check-locale-links.py 的正則明確只吃 .md 結尾,圖片路徑完全在它視野外。新 gate 把兩類發現刻意分開:該修的(正確語系的圖檔已存在、頁面卻指向別的)一律 fail,那是一行的事;已知缺口(圖檔根本還沒做)列在 KNOWN_MISSING,因為補它要重新產生美術素材、不是一個 commit 能做完的。分開的用意是:既不會讓 CI 卡在沒人能當場修的事上,新的錯配也不會靜悄悄混進那堆既有缺口裡。目前 50 個圖片引用:41 正確、9 已知缺口、0 該修、0 死連結。
  • fix · 三個 gate 會被殘留的 git worktree 汙染,其中一個因此靜默失效。.claude/worktrees/<name>/ 是一份完整的第二套檔案樹,而 Path.rglob(不像 glob.glob)會走進點開頭的目錄。實測:repo 真正的 .zh-Hans.md 是 65 個(扣掉 2 個 PROTECT),但 rglob 掃出來的數字是它的兩倍多——多出來的全是 .claude/worktrees/ 底下的整份副本(數量會隨 worktree 當下的狀態浮動)。zh-hans-localize.py、check-2026-freshness.py、check-anchors.py 三個 gate 全部在掃雙份。後果不只是慢:zh-hans-localize.py 的 PROTECT 白名單是用 repo 相對路徑比對的,worktree 副本路徑不同所以完全比不到——也就是說只要存在一個 worktree,被保護的檔案就自動失去保護,這次正是它讓 gate 對著一個本該跳過的檔案報錯。freshness 的數字也從真實的 6 被灌水成 13。三個檔案都把 .claude 加進排除清單。(本 repo 新加的兩個 gate 用 glob.glob、天生不受影響——這點也實測確認過,而不是假設。)
  • audit · 這批查出、但刻意不在這批做的一件大事:examples/**/README.md 的 mirror 是系統性刪節版。掃過全部三語檔案組之後,約 25 個 example README 呈現同一個形狀——繁中有 5 個 blockquote、兩個 mirror 都是 0 個。缺的是每份練習開頭的「🎓 學習模式」(講 starter.py 是完整解答、建議先改名再自己重寫的主動學習法)跟「📚 想要 chapter-length 深入版?」(指向 hello-agents 對應章節 + 該 stage 的深度教材)。換算約 250 個 blockquote、50 個 mirror 檔案,而且內容逐檔不同(每個 README 的深度教材推薦都對應不同章節),不是複製貼上能解決的。這是一個獨立批次的量,硬塞進這批只會讓 review 失去意義,所以先量出規模、寫在這裡。

2026-08-02

  • fix · 同一個「假全綠」bug 其實散在 8 個 script 裡,而且其中一個正在實際發作。上面那條只修了 check-locale-links.py,複查時被反問「這個 bug class 掃過全 repo 了嗎」——沒有。git grep 後找到另外 5 個同樣拿絕對路徑比對排除目錄的 script:check-anchors.py、check-2026-freshness.py、check-catalog-counts.py、check-links.py、refresh-stars.py。其中 check-catalog-counts.py 是正在發作的:它的排除集合裡直接寫了 .claude,所以在 .claude/worktrees/ 底下的 checkout,它掃到的 markdown 是 0 / 248 個,卻照樣印出 ✓ Catalog counts consistent 退 0——一個 blocking gate 完全空轉。修完後它實際比對到 39 條數量宣稱。CI 沒被影響過(runner 路徑 /home/runner/work/... 不含任何被排除的路徑段),所以這純粹是本機盲區——而本機正是提交前唯一會跑它的地方,等於這些 gate 對 worktree 工作流從來沒真的把關過。順帶效果:check-2026-freshness.py 修好後在本機浮出 6 處既有的 DeepSeek-R1 過時引用(CI 的排程 job 本來就看得到、是 --warn-only),屬既有內容債,不在這批範圍。check-catalog-counts.py 那個內嵌的排除集合也改成具名常數 SCAN_EXCLUDE_DIRS,免得再默默飄走。合併 main 之後又冒出第 7 個:check-mirror-parity.py 同樣拿絕對路徑比對,在 worktree 下掃到的 trio 是 0 / 67——它沒有靜默通過,是因為 main 幫它加了「trio 數不得下降」的 ratchet,把盲區變成一個明確的失敗(complete trios dropped 67 -> 0),這正是每個 walker 都該有的設計。它之所以躲過我第一版的原始碼掃描,是因為它的集合叫 SKIP_DIR_PARTS 而不是 EXCLUDE_DIRS,而我當初的正則要求該行含 "EXCLUDE"——用命名當偵測條件本身就是錯的,現在改成:任何對絕對路徑做 .parts 成員檢查一律視為可疑,不管那個集合叫什麼。然後第 8 個又用第三種寫法躲過去:zh-hans-localize.py 寫的是集合交集 SKIP_PARTS & set(p.parts),不是 for 迴圈,所以廣義後的正則還是看不到——而它正在發作而且沒有 ratchet 保護:掃到 0 / 68 個 zh-Hans 檔卻印出 ✓ zh-Hans localization clean — no drift,一個守 zh-Hans 品質的 blocking gate 什麼都沒檢查。修完掃到 66 個(另 2 個在 PROTECT 清單)。三種語法表達同一個 bug,證明「猜哪種寫法危險」這條路走不通,所以偵測改成反向:所有 .parts 使用一律標記為可疑,安全的必須自己說明理由——同行呼叫 .relative_to(...),或加上 # abs-parts-ok: <原因> 註記。目前兩處合法豁免都是 glob.glob(root_dir=REPO_ROOT) 走訪,本質上就回傳相對路徑。八個 gate 現在實際掃描量:catalog-counts 39 條、mirror-parity 67 組、image-locale 50 個引用、zh-hans-localize 66 檔——全部從 0 或盲區恢復。
  • fix · 既有的 check-locale-links.py 會回報「假的全綠」,而且是我在寫新 gate 時撞出來的。它的 EXCLUDE_DIRS 比對的是 fp.parts——也就是絕對路徑的每一段——所以只要 checkout 本身位在任何一個被排除的目錄名底下,整個 repo 的檔案都會被跳過,然後印出 ✓ All mirror links point at their own locale. 退 0。實際觸發條件很日常:在 .claude/worktrees/<name>/ 裡開 worktree 工作時,每個檔案的絕對路徑都含 .claude,於是 67 個 .en.md + 簡中鏡像一個都沒掃到。CI 之所以一直是對的,純粹因為 runner 的 checkout 路徑 (/home/runner/work/...) 剛好沒有任何被排除的路徑段——換句話說這個 gate 在本機從來沒有真的跑過,而本機正是大家提交前唯一會跑它的地方。兩個 gate 現在都改成比對「相對於 repo root」的路徑。修完後 link gate 的 0 是真的 0(既有 14 個測試全過),新的 image gate 則從 0 變成正確回報 9。一個會靜默通過的 gate 比會失敗的 gate 更糟,這條由 scripts/test_repo_scan_excludes.py 釘住——除了逐個 walker 的行為測試,還有一道原始碼層掃描,任何 script 只要再寫回「拿絕對路徑比對排除目錄」就直接讓 build 失敗,擋掉第七次復發。
  • content · 9 個缺的語系變體圖全部補齊,圖片語系錯配歸零。5 張圖缺的 9 個變體(multi-llm-delegation-composition.zh-Hans + rag-pipeline-overview / chunking-strategies / teacher-ai-use-cases-overview / teacher-ai-classroom-use-cases 各缺 .en + .zh-Hans)已全數產出,9 處引用同步改指自己語系,gate 從 9 降到 0。作法是委派 Codex CLI 用它內建的 image-gen 工具生成,每張都以繁中原圖當風格參考,brief 一律附「誠實失敗條款」(文字不對就不准存檔、如實回報哪張沒做成、禁止拿 PIL/SVG 硬畫充數)。順手修掉繁中原圖帶進來的 3 個既有錯字:hybird→hybrid、Rewrite qustion→Rewrite question、Learning form error→Learning from error。接著把那 4 張流程圖整組升級成 repo 主力的插圖風格——它們原本是 draw.io / Mermaid 匯出的素面方框圖,跟另外 20 張帶線條 icon、雙語標籤、分色卡片的 house style 明顯不同調,是 repo 裡的異類;因為三語必須一致,升級連繁中原圖一起重產,副檔名同時由 .jpg 改為 .png(house style 那批都是 png,線條插圖加密集文字用 jpeg 會有壓縮雜訊),stages/06-memory-rag 與 branches/for-teacher 共 12 處引用一併更新,舊 .jpg 移除。用長寬比當客觀對齊指標,五組圖三語差異現在全部 < 0.05。未竟的部分照實記:teacher 兩組(6 張)完整做到 house style,但 rag-pipeline-overview 與 chunking-strategies 兩組(6 張)四次嘗試都在「有 house style 但有瑕疵」與「乾淨但退回素面」之間擺盪,最後收在乾淨、文字正確、三語一致的淺色卡片版,視覺等級不如 teacher 那兩組;原始 .jpg 仍在 git 歷史可還原,細節與後續建議寫在 resources/diagrams/locale-variant-prompts.md。
  • process · 「delegate 回報 success」不等於做對了——這批四次假成功。每一張都是委派者自己開圖驗收(不是看 .result.json 的 status),抓到四件事:① chunking-strategies.zh-Hans 圓柱體殘留繁體 種/純,回報 success;② 重產修好 純→纯 但 種 仍是繁體,又回報 success;③ 要求「只修四角裝飾方塊與文字溢出」時,它擅自把 RAG Fusion 改名重設計,還引入新缺陷(store 標籤壓在方框上、.en 圓柱內文字被上下裁切);④ 最後一次根本沒改寫任何檔案(時間戳未變),卻在 summary 列出一串「已執行的驗證指令」,看起來像做完了。兩個可操作的教訓:一是 CJK 繁簡差異在縮圖尺寸下看不出來——种=禾+中、種=禾+重,可靠做法是裁切放大 3-4 倍再拿 repo 裡已知正確的同一個字當對照(這裡用 rag-pipeline-overview.zh-Hans 的 各种资料);二是「改圖」比「重新生成」更容易失控,叫它「只修這兩點」兩次都超出範圍,指定重新生成並附完整規格反而可靠。跟本檔上面那條「結構對齊不等於內容對齊」同一類:只回報「做完了」的複查等於沒複查。
  • tooling · 圖片語系 gate:跟 main 上的同類 gate 收斂成一支。這條分支原本自己寫了 check-locale-images.py(RETARGET / MISSING 兩類 + --apply 自動改引用),但合併時發現 main 已經先有功能等價的 check-image-locale.py(白名單式 KNOWN_MISSING,新缺口會擋 build),而且已接進 CI。兩支併存等於每次 CI 跑兩次同樣的檢查,所以撤掉本分支這支,保留 main 的。本分支真正不可替代的產出是那 13 張圖與 6 個 script 的 false-green 修復,gate 本身是重複投資。撤除時把唯一會流失的東西留下來:check-locale-images.py 的測試裡有 EXCLUDE_DIRS 相對路徑的 regression,而 main 的 test_image_locale.py 零覆蓋這個 bug class——已改寫成獨立的 scripts/test_repo_scan_excludes.py,涵蓋範圍比原本更廣(7 個 walker + 原始碼層防再犯)。這次收斂確實損失一項能力,照實記:被撤掉那支有 --apply 可以把「指錯語系」的引用自動改好,main 這支只偵測不修正——下次遇到失敗要手改 markdown。目前 fixable 是 0,影響是未來式。順帶把 main 的 KNOWN_MISSING 白名單清空:那 9 筆全指向已經不存在的 .jpg 路徑(圖都補齊且改成 .png 了),是永遠不會命中的死資料;清空後任何新缺口會直接擋 build,比留著 9 筆過期豁免更嚴格。對應的測試從「必須是 9 筆」改成「必須是空的」。
  • docs · 這批圖的生成流程與教訓寫成文件:resources/diagrams/locale-variant-prompts.md。上一批記錄「圖是貼 prompt 到 ChatGPT image-gen 手動生成、repo 內沒有 source 檔」——這份把那個缺口補上,但實際做法跟原本設想的不同:不是貼到 ChatGPT 網頁,而是委派 Codex CLI 的內建 image-gen 工具,brief 裡指定 repo 內既有圖當風格參考(Codex 能直接讀圖檔)並附完整逐字文字表,.ai/ 下留 brief 當稽核紀錄。文件內容包含:五張圖各自的處理結果、風格基準檔、四次假成功的完整清單、以及三個可操作的驗收方法(CJK 繁簡要裁切放大+已知good對照、長寬比當客觀對齊指標、「重新生成」比「改圖」可靠)。未竟事項也照實寫在裡面——rag-pipeline-overview 與 chunking-strategies 兩組視覺等級不如 teacher 兩組,含後續再挑戰的三個建議與「原始 .jpg 仍在 git 歷史可還原」。順帶查出繁中原圖本身有 3 個既有拼字錯誤(hybird / Rewrite qustion / Learning form error),新圖已全部修正。時效性另記一筆:multi-llm-delegation-composition 把中間 lane 標成 gemini-delegate,那個 skill repo 已於 2026-07 封存,但圖說明的概念沒過時——緊接在圖後面那段仍在教三方分工,repo 的立場是「workflow 還能用、只是 skill repo 封存了」,所以是概念現行、標籤過時;這批的 .zh-Hans 忠實比照現有兩張(先解決簡中讀者看到繁體字的當下問題),「三張一起改標成 Gemini CLI」列為後續選項。該圖畫了廠商 logo,牴觸 concept-prompts.md 自己的禁令——既有不一致,不是這次造成的。
  • fix · 簡中版對貢獻者講的收錄政策,跟繁中/英文是相反的(本批最重要的一項)。mcp-skills-catalog.zh-Hans.md 的開頭「收錄原則」跟結尾「維護備註」兩段,是 rewrite 前的舊版被留下來,而且不是翻譯腔差異、是語意相反的政策:簡中寫「★ 100+ 起跳:除非是官方,社群 repo 至少 100 stars 才收录」,繁中/英文寫的是「stars 看一下就好……但『小眾但好用』也歡迎送 PR 解釋為什麼要收」;簡中寫「過時的會在每季 review 時更新」「stars < 1k 且 < 3 个 entry 的分类先别开」,繁中/英文寫的是「有空 review 一輪就好——不用排定期程」「新分類有 1-2 個值得收的就可以先開」;簡中還缺了整句定調的「不是 SLA,是「能做就做」的方向」跟第 5 條「用詞、格式不一致 → 不要苛求,PR 進來能讀懂優先」,標題也從「給未來想幫忙的人」變成較生硬的「给未来的 maintainer」。實際影響是會勸退人:一個讀簡中的貢獻者會以為自己的 repo 沒有 100 stars 就不用送 PR,而專案的真實立場正好相反。三語現在一致。同段另修:为什么 JIA(拼音沒轉回中文的損壞字串)→ 为什么要加;style-guide 連結的顯示文字還寫著繁中檔名(連結本身指向簡中);tavily-mcp 的推薦度少了註記「(新手第一選擇)」,補回後三語帶註記的推薦度儲存格都是 49 個。
  • fix · 簡中版 style-guide 有大約 200 行在網站上根本沒顯示。resources/style-guide.zh-Hans.md 的 entry 範本裡有一組巢狀 code fence 沒有跳脫——繁中/英文都寫成 \`\`\`bash(跳脫過),簡中是裸的 ```bash,於是內層 fence 提早關掉外層,從第 49 行到第 246 行(「必填字段」一路到「6. Stage 页面模板」)整段被吞進同一個 code block。用 python-markdown 實測:修前簡中版只渲染出 7 個 h2 / 8 個 h3 / 0 個表格,修後是 12 / 17 / 5,與繁中完全一致。原始碼裡的標題數三語一直都是 23,所以任何只看原始碼的檢查都看不出問題——這也是它能存活這麼久的原因。
  • content · 簡中版補回缺的內容,catalog 三語終於真的對齊。上一批收尾時已知簡中版少了「三個 skill 的組合」這個說明段落,這次一併把整份 catalog 的三語結構比對做完,實際找到三處而不是一處:① 缺整個說明段落——## 14. Multi-LLM Delegation Skills 開頭那段「這 3 個 skill 是設計成一起用的」連同分工圖,繁中/英文都有、簡中沒有;② 兩個條目的翻譯是舊的短版——codex-delegate 跟 gemini-delegate-skill 在繁中/英文各有 何時用 / 何時不用 兩行(全 catalog 76 個條目裡只有這 2 個有這兩行),簡中版整個缺,而且 適合誰 那行是語意較弱的舊譯;③ 兩條多出來的分隔線——簡中版在 discord-mcp 跟 mcp_excalidraw 後面各多一條 section 內的 ---,繁中/英文都沒有,結果只有簡中讀者會看到兩條莫名其妙的水平線。修完後三語的 --- 數量都是 19、條目 body 行數零落差。標籤沿用 corpus 既有的 何时用 / 何时不用(全 repo 已用 22 / 19 次),不自創新寫法。
  • content · 這批的已知缺口:簡中版的分工圖沿用繁中圖檔。resources/diagrams/ 的慣例是有做語系變體的圖就做滿三個,但 multi-llm-delegation-composition 只有 .png(繁中)跟 .en.png,沒有 .zh-Hans.png——清點後它是唯一一張只做了三分之二的圖(20 張三個語系齊全、6 張是本來就只有單一語系的素材如 .jpg 教學圖,只有這張卡在 2/3)。附帶確認:那 20 組的三個變體都是不同圖檔、不是複製同一張改檔名,所以缺的這張沒辦法用複製混過去。圖裡有三處繁中字串(「機械式批次」「長 context」「平行時用」),簡中讀者看得懂但不是正確在地化。這些圖是把 prompt 貼到 ChatGPT image-gen 手動生成的、repo 內沒有 source 檔(resources/diagrams/concept-prompts.md 也只涵蓋 Stage 7.5 那三張),所以沒有辦法在這批裡忠實重製——與其生一張風格不一致或 CJK 文字糊掉的圖冒充,先讓簡中段落指向繁中圖檔,缺口寫在這裡,補圖列為後續手動工作。
  • audit · 順著上面那個缺口查下去,發現它不是單一個案而是一整類(9 處)。目前沒有任何 gate 在管「圖片素材的語系」——check-locale-links.py 只驗 .md 連結、正則明確只吃 .md 結尾,圖片路徑完全在它的視野外。全 repo 掃過之後,除了這次的 composition 圖,另有 8 處既有的錯配:stages/06-memory-rag 的 rag-pipeline-overview.jpg 與 chunking-strategies.jpg、branches/for-teacher 的 teacher-ai-use-cases-overview.jpg 與 teacher-ai-classroom-use-cases.jpg,這 4 張只有繁中一個版本,卻同時被英文版與簡中版頁面引用——而且 alt text 有在地化、圖檔沒有,所以讀者看到的是「英文說明配一張整張都是繁體字的圖」。這 8 處是既有問題、不是這次改動造成的,補圖同樣需要手動重製素材,這批不動,先把清單記在這裡免得又被忘掉。
  • content · 順手清掉 3 個殘留的繁體字,並發現 gate 的盲區。簡中檔裡混著沒轉乾淨的繁體字:mcp-skills-catalog.zh-Hans.md 的「等正規 MCP 出现」、RESOURCES.zh-Hans.md 的「用語说明」與「用語小词典」——都是繁體字卡在一個其餘已簡化的詞裡,轉檔時漏掉的。zh-hans-localize.py --check 對這類完全無感:它管的是用詞(台灣詞彙 → 大陸詞彙)跟引號,字元層的繁→簡是假設 opencc tw2s 在產生 mirror 時就做完了,所以「當初沒轉到的字」永遠不會被任何 gate 看見。全 repo 掃過確認只有這 3 處。刻意不動的兩處:README.zh-Hans.md 的 shields.io badge 標籤 語言——那整塊 badge 區在三個語系的 README 裡是逐字相同的共用頁首,只改簡中版反而會製造出這批正在消滅的那種跨語系落差;還有 resources/style-guide.zh-Hans.md 的繁體字,那是「不要這樣寫」對照表的左欄,本來就該是繁體。
  • process · 值得記的一件事:錯誤的偵測方式撞出了真的 bug。我一開始用「條目 body 行數差」當作翻譯落差的偵測訊號,它報了 4 個條目,其中 2 個(discord-mcp / mcp_excalidraw)其實是我的 parser 把結尾的 --- 也算進 body 的假陽性 —— 但去查為什麼只有簡中版多那一行,才發現那兩條 --- 是真的多出來的、只存在於簡中版的分隔線。假陽性本身是雜訊,追下去的原因不是。另:目前沒有任何 gate 會抓這一類「某個語系少一整段」的落差 —— check-anchors 只驗 anchor 解析得到、check-locale-links 只驗連結指向自己語系、zh-hans-localize 只驗用詞、check-catalog-counts 只驗數字,三語的結構對不對齊沒有人管。mkdocs 建置警告數維持 182(與改動前相同),且無任何警告指向新加的圖片路徑。
  • process · 更值得記的一件事:我自己的檢查方法對本批最嚴重的兩個問題完全無感。我用的三個訊號——條目 body 行數差、條目順序、--- 數量——都是結構性的,而政策相反的那兩段(收錄原則 / 維護備註)結構完全對得上(段落數、bullet 數看起來都合理),style-guide 的 fence 問題在原始碼層也看不出任何異常(三語標題數都是 23)。兩者都是靠對抗式複查抓到的:讓複查者的任務不是「確認這批做完了」,而是「推翻『已經對齊』這個宣稱、而且必須引用原文當證據」。兩個複查角度(逐條目 / 非條目區塊)都成功推翻。教訓很具體:「結構對齊」不等於「內容對齊」,而一個只會回報「看起來沒問題」的複查等於沒複查。
  • audit · 另外 4 處同類缺口,這批不做但先記錄(需要翻譯與內容重製,不是機械修正):tracks/cli/A2-cli-workflow 與 A3-cli-production 的英文版/簡中版都缺整個「🚪 進入條件」章節,而兩份檔案自己的「本章組成」那行還寫著有這一節——文件承諾了一個不存在的段落,A3 還是 Track A 的收尾章、等於最難那章的先修條件對非繁中讀者是隱形的;stages/01-llm-basics 的英文版/簡中版少了 5 個「預期輸出(樣本)」範例區塊,學習者沒有「跑對了長什麼樣」的對照;examples/stage-3/03-react-from-scratch 的英文版/簡中版整條免費本地 Path A(Ollama)不見了、只剩付費的 Anthropic 路線,而 examples/README.en.md 還宣告「Three paths」。

2026-08-01

  • content · MCP catalog P2 收尾:計數同步 + 星數刷新(tri-locale)。catalog 實際有 76 個條目但到處還寫「65+」——36 處、橫跨 32 個檔案(catalog 導言、README ×2 個位置、RESOURCES、resources/README、四條 branch、Stage 5.2、Track A3,以及兩份尚未寄出的 outreach 草稿),全部改成 76。TOC 分項數也有兩處錯(§8 設計 3→4、§11 中文圈 9→11),修正後分項加總 76 = 實際條目數 76(先前只有 73)。這個數字我連錯三次:① 第一輪用逐檔手改只清 8 處就當做完;② 改用全域 grep 後數字對了,但 grep "^### \[" 漏掉唯一一筆沒有方括號連結的條目(YIELD INTELLIGENCE MCP),導致總數少算 1、還把 §12 從正確的 4 誤改成 3;③ 過濾說明段落的 regex 只認 composition 而漏掉英文版的 compose。三次都是 code-reviewer 抓到的。另:intuitek-ace 條目寫「已列入 Anthropic 官方 MCP Registry」—— Registry 自 2025-12 起由 Linux Foundation 的 Agentic AI Foundation 管理,拿掉「Anthropic」;cookbook 的 claude mcp add 補上 -- 分隔符與 --scope project(前者讓帶 flag 的 server 參數不被吃掉,後者產生可簽入的 .mcp.json、團隊共用)。並用修好的 star bot 跑了一次刷新:40 筆星數更新、19 個檔案,star bot 沒有異動任何 .github 檔。
  • tooling · 新增 scripts/check-catalog-counts.py + blocking CI gate,終結上面那個數字問題。它從檔案算出真實條目數,再據此檢查三件事:每個 Index 分項數 vs 該節實際條目、Index 加總 vs 總數、以及散落各處的「NN+ MCP servers」宣稱。「什麼算一個條目」用顯式標記而不是猜:純說明性的 ### 段落要在上一行加 <!-- not-an-entry -->(已標在「三個 skill 的組合」上),因為看得見的 opt-out 勝過會漏掉邊界情況的啟發式規則。這個 gate 自己也差點重演同樣的錯:第一版的 headline regex 要求數字後面緊接固定關鍵字,但中文散文常插字(「76+ 個常用整合」、「76+ integration catalog」),結果 36 處宣稱只驗到 17 處 —— gate 會綠著讓文件漂移,正是它要防的那件事。改成「認 NN+ 這個形狀」後,gate 每次跑會驗 39 個宣稱點(上面修掉的 36 處,加上 3 處本來就寫對的),並加了 11 個測試(含負向測試:故意寫錯數字必須被抓)。
  • tooling · freshness gate 新增兩條 MCP 規則。原本規劃是把 MCP spec revision 加進 current_frontier_models,但查證後發現那個區塊根本不被 check-2026-freshness.py 讀取(只是給維護者看的參考),所以改成加在真正會生效的 stale_patterns:① MCP Python SDK v1 API(from mcp.server import Server / @app.list_tools() / @app.call_tool())—— 這正是 2026-07-28 v2 破壞性改版後會讓教材失效的寫法;② 未鎖版本的 pip install mcp。兩條都設了 qualifier(v1 / legacy / 遷移 / 裸寫 等),所以在警告文字裡引用錯誤寫法不會誤報 —— 實測零誤報、flag 數維持 6(皆為既有的 DeepSeek R1)。
  • content · 英文版 / 簡中版不再把讀者丟回繁中頁(111 個連結、37 個檔案)。.en.md / .zh-Hans.md 裡有大量連結直接指向繁中 canonical(例如 README.en.md 的 [CONTRIBUTING.md](CONTRIBUTING.md)、index.en.md 首頁 13 條),即使同語系的檔案就在旁邊 —— 英文讀者點下去會落到讀不懂的頁面。改成指向自己語系的檔案。刻意保守:同語系檔案不存在時不動(繁中連結才是對的)、語言切換列不動(它本來就該跨語系)、fenced code 內不動。mkdocs 建置警告數改動前後皆為 182、零新增警告類型,確認網站不受影響。
  • tooling · 新增 scripts/check-locale-links.py + CI blocking gate,防止上面那類連結再累積。既有的 gate 都抓不到它:check-anchors 只驗目標解析得到、sync-language-switchers 只管切換列。附 12 個 stdlib 單元測試(含一個直接把 repo 現況當測項)。第一次跑時我把它寫錯了:它連帶重寫了帶 anchor 的連結,而標題是翻譯過的 —— 繁中 anchor 在 .en.md 裡不存在,於是產生 5 個死連結(被 check-anchors 當場擋下)。修法是加第 5 條規則:帶 anchor 的連結必須先確認該 anchor 在目標語系檔裡真的存在,否則維持 canonical;並補一個 regression test 把這個教訓釘住。
  • docs · 順手把 12 個連結的顯示文字對齊讀者語系([foo.md](foo.en.md) → [foo.en.md](foo.en.md))。註:先前口頭估的「119 處」是誤算 —— 那個 grep 沒排除反引號寫法,把 107 個本來就正確的連結也算進去了。

2026-07-31

  • content · Stage 5.2 補上 MCP 採用規模數據(tri-locale,一句話)。Anthropic 在官方公告給出可引用的數字:MCP 的 SDK 月下載量超過 4 億(今年約成長 4 倍)、Claude connectors 目錄收錄 950+ 個 MCP server。放在「MCP 是什麼」段落之後,用來回答讀者的「這值得學嗎」。同一篇公告裡刻意沒採用的部分:無狀態核心、Apps / Tasks extension 框架、企業託管 auth、observability dashboard、MCP tunnels —— 那些是協定層與 connector 平台的事,初學者無感;而且 Anthropic 對 Claude 產品端的支援時程只寫「soon」、沒有日期,也沒說既有 server 的相容性或遷移,寫進教材只會是一句空話。Apps / Tasks 是否算正式官方 extension 暫不寫入教材(此判斷來自另行查閱 spec repo 時觀察到的命名不一致,非本則公告內容,故未引用)。

2026-07-30

  • content · MCP 教材修復:SDK v2 破壞性改版讓唯一的 MCP 練習跑不動了(tri-locale,第一手查證 PyPI + 官方 migration guide)。官方 Python SDK 於 2026-07-28 發布 v2.0.0:FastMCP 改名 MCPServer、低階 Server 的 handler 從 decorator 改成建構子參數。cookbook 的 pip install mcp 沒鎖版本,讀者現在會裝到 2.x,然後在 from mcp.server import Server / @app.list_tools() 那行直接 AttributeError —— 跟 2026-07-17 那次 Kimi K2 停用 model ID 是同一類失效。修法:程式碼改寫成官方 v2 形狀(from mcp.server.mcpserver import MCPServer + @app.tool() + app.run(transport="stdio"),從約 40 行縮到約 10 行)、安裝行鎖 "mcp>=2,<3" 並附 v1 逃生門 "mcp>=1,<2"(v1.x 仍在維護模式)、加一則說明 v2 為何變短(type hints 自動產 inputSchema、docstring 當 description、回傳值自動包裝)。Stage 5.2 內另一處未鎖版的 pip install mcp 一併補上。三語程式碼區塊 byte-identical 且 ast.parse 通過。
  • content · MCP 其他事實修正(同批,tri-locale):transport 從「三種」改為兩種 —— 只有 stdio 與 Streamable HTTP,舊的 HTTP+SSE 早在 2025-03-26 那版 spec 就 deprecated(glossary + cookbook pitfall 兩處都寫錯);「20+ 官方 servers」→ 實際 7 個 reference server(everything / fetch / filesystem / git / memory / sequentialthinking / time),github 與 sqlite 已移到 servers-archived,並註明官方 README 自述這些不是 production-ready;Stage 8 的 Browser MCP 連結從 modelcontextprotocol/servers 改指正確的 microsoft/playwright-mcp;FastMCP 連結更新為 PrefectHQ/fastmcp(★27k、Apache-2.0)並加一句消歧義 —— 它是獨立第三方套件,跟官方 SDK 內部改名為 MCPServer 的 class 不同;Registry 補上「仍在 preview」;glossary 補「MCP 已於 2025-12-09 捐給 Linux Foundation 的 Agentic AI Foundation」(第一手:blog.modelcontextprotocol.io + Anthropic 公告)。另指名目前 spec revision 為 2026-07-28,並教讀者「MCP 用 YYYY-MM-DD 標版本、要先確認自己在哪一版」這個不會過期的 meta-skill。
  • content · 刻意不做的部分(研究後的範圍決定,非遺漏):2026-07-28 那版 spec 的協定層內部機制(連線 / 握手模型、server 端 RPC、擴充提案等)全部不寫 —— 那些是 SDK 實作者與 gateway 作者的義務,寫 @app.tool() 的讀者一輩子打不到,教了只會讓章節變長又快過期。也不補 auth 章節:MCP 的授權模型在 2025-2026 間多次改版,教一個可能半年後就過時的機制,對初學者是負資產 —— 本 repo 原本零覆蓋反而讓我們不必追。只在 cookbook pitfall 加一句 spec 明文:stdio server 不需要 OAuth,憑證從環境變數取。

2026-07-27

  • content · Claude Opus 5 上線,全 repo 模型陣容更新(tri-locale,第一手查證 anthropic.com/news/claude-opus-5 + platform.claude.com docs)。Opus 5 於 2026-07-24 推出:claude-opus-5、1M context、128k max output、$5/$25(與 Opus 4.8 同價)、adaptive thinking、knowledge cutoff May 2026;官方 docs 明示「複雜 agentic coding 與企業工作從 Opus 5 開始」,Anthropic 宣稱它「接近 Fable 5 的能力、一半的價格」。Opus 4.8 未被 deprecated(仍 Active、$5/$25,官方 docs 移入 Legacy models 摺疊區),所以這是「推薦起點轉移」而非可用性變更;階層維持 Fable 5(Mythos-class,最強)> Opus 5 > Sonnet 5 > Haiku 4.5。更新 Stage 1 旗艦表 + 必修閱讀、glossary(Context Window / Frontier Model / Computer Use)、CLAUDE.md、examples/README 定價表、Stage 2/6/7/7.5/8 的旗艦宣稱與 model pick-list、scripts/freshness-models.yml。刻意不做的兩件事:① 所有實測 benchmark 維持原歸屬(SWE-bench 88.6%、Terminal-Bench、OSWorld 2.0 20.6% 都是在 Opus 4.8 上量測,改掛 Opus 5 就是捏造),Stage 7 leaderboard 改為加註說明而非換數字;② 不寫入 Opus 5 的 benchmark 數字(Frontier-Bench / CursorBench / ARC-AGI 3 全為 Anthropic 自published、無第三方複現)。Dynamic Workflows 的首發歸屬仍留在 Opus 4.8(歷史正確)。順手修好 Stage 1 可執行計價範例的既有 bug:PRICING dict 有 4 個 model 但預期輸出只列 3 行,補上 claude-fable-5 $2.5400。
  • content · glossary 新增 Graph Engineering(圖工程)詞條(§7 用詞 / Buzzword,tri-locale)。2026-07 起這個詞在中文圈流傳,詞條給讀者一個誠實的答案:它指的是執行流程圖(control graph),不是 GraphRAG 的知識圖譜檢索;而且是舊技術的新名字,不是新技術——LangGraph 自 2023 就這樣運作,LangChain 官方也直言這不是新想法,Anthropic / Google ADK / Microsoft Agent Framework 三家官方文件都不使用這個說法(各自稱 dynamic workflows / graph-based workflow(s))。詞條把讀者導向真正該學的 Stage 4 multi-agent pattern 與可執行的 examples/stage-4/03-graph-workflow/。刻意不開新章節:它與本 repo 既有的「Prompt→Context→Harness 三層正交」主張衝突(graph 是第 3 層的實作形狀、不是新的關注單位),且與 Stage 7.5「人不畫 DAG、是 agent 寫 code」的既有分析相牴觸;新章節成本有實測(上次新增 Stage 7.5 花了 40 commits / 134 檔案 / 約 2 個月,並被迫在 check-stage-template.py 開例外)。重評觸發條件已寫在研究紀錄:需同時滿足「非 LangChain 的第一方正式文件採用該詞」+「Wikipedia 或 HF glossary 收錄」+「舉得出 Stage 4/7 畢業生做不出來的具體 artifact」。

2026-07-20

  • tooling · refresh-stars.py now excludes .github/ + clean weekly star refresh applied. The weekly star bot was scanning .github/ outreach drafts and corrupting them: it mis-associated this repo's own URL with nearby prose star counts and overwrote historical launch stats + other repos' numbers with this repo's current count (the week's auto-PR #71 had 7 such false edits, e.g. Langchain-Chatchat ★37k → ★4.6k+). Added .github to the scan exclude list + a regression test; re-ran the fixed bot to apply 218 legitimate catalog ★-count updates (tri-locale ★ parity verified, 0 .github touched). #71 closed as superseded (5e3887e).

2026-07-18

  • tooling · Freshness gate now scans mirror locales (salvaged from a background chip): check-2026-freshness.py scans .en.md/.zh-Hans.md (not just the zh-TW canonical), the DeepSeek regex catches the space-form DeepSeek R1, CJK 基線/基线 qualifiers are recognized, plus 12 unit tests and a freshness-tests CI job. En route, corrected a fabricated model fact in two places (a rule note + a live setup-guide.md line): DeepSeek-R1 was described as "superseded by R2 in 2026-03" — R2 never shipped (verified first-party); the reasoning capability shipped in DeepSeek V4 (2026-04) (58cfb99).

2026-07-17

  • docs · Homepage note for the PR link-audit bot (README 🤝 如何貢獻 / Contributing section, tri-locale). A 🤖 callout tells contributors that a new github.com/owner/repo link on a PR gets an automated stars/license/archived/last-push comment checked against §策展標準 — advisory, never blocks, maintainer decides. Honestly discloses the v1 fork-PR limitation (runs on maintainer-branch PRs only) rather than over-promising coverage; placed in Contributing, not the learner hero. Also fixed a pre-existing tri-locale parity slip the reviewer caught in the same section — README.zh-Hans.md's maintainer bullet linked CONTRIBUTING.md + style-guide instead of CONTRIBUTORS.md like the TW/EN siblings (5f92d04).
  • tooling · PR link-audit bot (scripts/pr-link-audit.py + .github/workflows/pr-link-audit.yml, a stdlib unit-test suite wired into lint CI). When a PR adds a new github.com/owner/repo link, a GitHub Action posts a sticky comment with that repo's stars / license / archived / last-push, checked against CONTRIBUTING §策展標準 (maintained ≤6 months, clear license, not archived) and flagging archived / stale / unlicensed rows. Advisory only — never fails the build (star counts have no hard bar; self-promo / teaching-value stays a human call). No LLM, no pip deps: gh CLI + stdlib Python. Diff-scoped to genuinely new repos (present on + lines, absent from -), so re-formatting an existing entry doesn't re-trigger it. Verified end-to-end on a real throwaway PR (#68, since closed): the Action triggered, posted its comment, sticky-PATCH-updated it on a 2nd push (same comment, no duplicate), flagged archived / stale(23mo) / no-license correctly, and both runs stayed green — plus offline --diff-file smoke + a stdlib unit-test suite (tracked in .github/TESTING-STATUS.md). v1 audits same-repo (maintainer) branches only — fork PRs get a read-only GITHUB_TOKEN and are skipped; closing that needs the two-workflow pull_request → workflow_run pattern, deferred until fork coverage is wanted.
  • content · P2 benchmark refresh — OSWorld v1 → 2.0 (Stage 7 leaderboard row + Stage 8 milestone bullet, variance table, dataset row, mastery checklist; tri-locale). The stale "OSWorld 76.26% = superhuman = production reality" framing became misleading: v1 approached saturation, so OSWorld 2.0 (2026-06-26, arXiv 2606.29537) reset the bar with 108 long-horizon workflows (~318 tool calls each vs ~30 in v1). On 2.0 the strongest model, Claude Opus 4.8 (max thinking), reaches only 20.6% binary completion at 500 steps, GPT-5.5 ~14%, and no model clears 10% on 137+ minute tasks. Reframed as a benchmark-discipline lesson (saturation + reward-hacking → read SOTA skeptically) rather than a raw number bump. First-party verified (osworld-v2.xlang.ai).
  • content · P2 caveat sweep (audit-driven): 4 archived tools flagged + rating-downgraded (all gh api archived:true) — LangServe (→ LangGraph Platform for new deploys), microsoft/prompt-engine (dead since 2023), GongRzhe/Office-PowerPoint-MCP-Server (→ anthropics/skills pptx; heading + metadata Rating both fixed), crewAIInc/crewAI-examples; Canva MCP note corrected from "still early access" to the official GA server (canva.dev/docs/mcp, ~32 tools, any plan); the cli-agents-guide maintenance note fixed to "8 CLI" and the ">30k stars" inclusion bar reconciled with the very-new/official-vendor Grok Build exception; and a schema-evolution mirror error fixed (zh "從 ~70% 提升" → "~30%", matching the correct English). Tri-locale.
  • content · P2 model-version refresh (audit-driven; Stage 1 model tables + glossary Context-Window/Frontier entries + Stage 6 pick-list, tri-locale): Grok 4.3 → 4.5 (context 1M → 500K — coupled, since 4.5 dropped the window), MiniMax M2.7 → M3 (1M), GLM-5.1 → 5.2 (MIT, 1M), Qwen3 → 3.7 / 3.6, Mistral 7B/Mixtral/Codestral → Small 4 / Ministral 3 / Large 3 (license hedged: only Large 3 confirmed Apache-2.0), Yi flagged frozen (01.AI exited foundation-model training in 2025), and a false "open weights" label dropped from Mistral Medium 3.5 (it's premier/proprietary). Cross-checked against multiple current sources.
  • content · Kimi → K3 (Stage 1 model table + picker, examples/README, setup-guide; tri-locale). Moonshot's current flagship is K3 (2.8T params, native multimodal, 1M context). Two stale facts fixed: Stage 1 listed K2.6 as "1M+" (K2.6 is 256K — the 1M is K3's), and the examples/README pricing table + runnable snippet + setup-guide used the discontinued kimi-k2-turbo-preview (Moonshot retired the K2 series 2026-05-25, so the example threw) → kimi-k3, with its price marked context-tiered (K3 per-token pricing was not first-party confirmable, so no numbers invented). First-party verified (platform.kimi.ai/docs/models).
  • docs · CITATION.cff version 2026.06.13 → 2026.07.17 (stale vs this week's content batches).
  • tooling · scripts/refresh-stars.py fixed — the weekly star-refresh bot silently no-op'd every entry-block ★ since May (it recorded the URL line, not the star line, as the write-back target), freezing ~half the repo's star counts while same-line siblings updated. Fix targets the star's own line + adds a next-GitHub-URL boundary to the Step-2 lookahead (a coupled requirement: without it the write-back fix would corrupt neighbour cells — code-reviewer found 15 live cross-URL leaks). Regression test (7 cases) wired into CI (ccd733b).
  • content · P1 staleness fixes from the repo-health audit (first-party re-verified, tri-locale, each code-reviewed): (1) time-critical — DeepSeek legacy IDs deepseek-chat / deepseek-reasoner (sunset 2026-07-24 15:59 UTC) → deepseek-v4-flash / v4-pro (1M context, refreshed $0.14/$0.28 + $0.44/$0.87 pricing), and the retired gemini-2.0-flash → gemini-3.5-flash in the runnable Stage-1 cross-provider starter.py so it stops throwing (47748d1); (2) ChatGPT Atlas marked discontinued (announced 2026-07-09, shuts down 2026-08-09, macOS-only, folded into the ChatGPT desktop app), the false "Llama 4 unreleased as of 2026-05" note corrected (Scout / Maverick shipped 2025-04), and Codex CLI + Gemini CLI re-marked as shipping native subagents + hooks in 2026 (were labelled ❌ single-agent) (0c7b1da); (3) archived-tool caveats — RooCodeInc/Roo-Code ("active community" struck) and the author's own deprecated WenyuChiou/gemini-delegate-skill (980bfc5).

2026-07-16

  • content · Track A (A2 CLI Workflow) gains langchain-ai/openwiki in Recommended Tools, next to repomix. First-party verified (github.com/langchain-ai/openwiki, MIT, 11.7k★, released 2026-07-01): an npm CLI (openwiki --init) that generates and auto-maintains a wiki of your codebase and wires a reference into CLAUDE.md / AGENTS.md so the coding agent reads it on demand; built on DeepAgents, traces to LangSmith. Added with a 💡 concept note naming the agent-facing documentation idea (structured codebase context the agent reads on demand, kept out of the prompt) and framing repomix (one-shot snapshot) vs OpenWiki (living wiki) as two angles on the same gap. Placed in Track A (not Track B): the learner value is operating a CLI agent better via context, not building an agent. Tri-locale; anchor / zh-Hans / switcher gates + code-reviewer pass.
  • content · Glossary "Term not here? / 找不到的詞?" footer now points to baihuaai.com(白话AI) as a plainer-language companion (resolves #65, suggested by @linsipeng) — a free, ad-free Simplified-Chinese beginner glossary (term index + zero-basics zone) that explains AI terms in everyday words with analogies. Described only from first-party verification of the site; no unconfirmed term-coverage claims. Tri-locale; gates + code-reviewer pass.
  • content · Four last-month breakout projects added after a first-party trending survey (GitHub Search API created:>=2026-06-16 by stars; every fact re-verified from each repo's README + API before writing): vercel/eve → Stage 4 特殊路線 (filesystem-first TS agent framework — agent parts are conventional files: instructions.md / tools/ / skills/ / channels/ / schedules/; npx eve@latest init, Apache-2.0, ★ 3.7k+, ⚠️ new 2026-06; category label extended to include filesystem-first, table now 17 projects); cloudflare/security-audit-skill → 5.3 recommended-skills table (official six-phase adversarial security-audit pipeline that seeded Cloudflare's vulnerability harness, MIT, ★ 2.5k+); anthropics/launch-your-agent → 5.3 recommended-skills table (official educational skill, idea → live Claude Managed Agent, honest ⚠️ it self-describes as an unmaintained reference implementation, Apache-2.0) — originally proposed for Stage 8, but the repo has no Managed-Agents context there, so it lives with the skills it actually is; xai-org/grok-build → cli-agents-guide comparison now 8 CLI agents (SpaceXAI's Rust TUI coding agent: codebase-aware edits, shell, web search, headless CI mode, ACP editor embedding; browser sign-in auth, Apache-2.0, ★ 10k+, ⚠️ flagged very-new — open-sourced 2026-07-14). Declined this round: the Tier-2 niche candidates (open-connector / openscience / shepherd / llm-space) and the offensive-security (AGPL red-teaming), no-license, and ToS-gray candidates. code-reviewer REQUEST CHANGES then caught stale "7 CLI agents" count/roster survivors, and a widened follow-up self-scan caught 8 more lines the review missed — ~28 survivor lines across 20 more files in total (README ×3, resources/README ×3, for-developer ×3, for-everyday-users ×3 — incl. a pre-Hermes "six" in the en mirror, cookbook ×3 ×2 spots, A1-cli-intro's own duplicated roster ×3, agent-paradigms ×3, setup-guide ×3, docs/TESTING_PLAN) — all swept to 8, Grok Build added to every enumerated roster (the A1 entries carry the same very-new / not-your-first-CLI caveat; the cookbook "BYO-LLM CLIs" subset lists were deliberately NOT extended since Grok Build has no verified BYO support). Also per review: zh "hunting" mistranslation 攻擊/攻击 → 漏洞搜獵/漏洞搜猎, provider label pinned to "SpaceXAI(xAI,官方)", auth cell tightened to the README's literal claim, star-counts dropped from the 5.3 rows for table consistency ("educational" kept — it is the README's own verbatim self-description). Tri-locale; anchor / zh-Hans / switcher / stage-template gates + code-reviewer pass.

2026-07-13

  • content · Claude Fable 5 is back — swept the repo's now-false "suspended / unavailable / use Opus 4.8" caveats. First-party verified (anthropic.com/news/redeploying-fable-5, 2026-06-30): the US export controls were lifted 2026-06-30 and Fable 5 was redeployed globally on 2026-07-01 (Claude Platform / Claude Code / Cowork; API rollout in progress; redeployed with a new safety classifier that blocks the flagged jailbreak and reroutes to Opus 4.8). Mythos 5 restored only for approved US organizations. Updated ~44 mentions across Stage 1 / 6 / 7 / 7.5 / 8, the glossary, examples/README, and the repo CLAUDE.md (tri-locale): suspension caveats → "restored 2026-07-01"; and since Fable 5 (Mythos-class, above Opus) is on top again, the now-false "Opus 4.8 is the current top usable Claude tier" claims were corrected to "Opus-class flagship" (kept only as a past-tense note where it records that Opus was the top usable tier while Fable was suspended). Also filled in Fable 5's now-known 1M context in the model pickers. Example pricing code AST-parses clean. Tri-locale; anchor / zh-Hans / switcher gates + code-reviewer pass.

2026-07-12

  • content · Stage 2 Exercise 2 (Few-Shot) now makes a fair zero-shot vs few-shot comparison (resolves #62, reported by @WMichstaBe). The zero-shot baseline had no task instruction (just input: {text}\noutput:), which conflated "telling the model the task" with "showing examples" — small models often read it as text continuation and scored ~0, overstating the few-shot gain. Both conditions now share the same TASK instruction and few-shot only adds examples, so the experiment isolates the effect of the examples. The fragile assert c3 >= c0 (few-shot isn't guaranteed to beat zero-shot) was replaced with a completeness check plus an honest "net gain may be 0 or even negative" printout; the observation prose was reframed to few-shot's real value (pinning output format + judgment on ambiguous cases). Path A + Path B, tri-locale; example code AST-parses clean; gates + code-reviewer pass.

2026-07-09

  • content · Stage 7.5 gains a plain-language "分工 / Division of labor" subsection (tri-locale), sourced first-party from Anthropic's Agentic coding and persistent returns to expertise (2026-06-16) + the 2026 Agentic Coding Trends Report: you decide what to build, the agent decides how (~70% of planning decisions are the human's; ~80% of execution is left to the agent). Ties into the stage's "work boundary" axis, the returns-to-expertise framing, and the human → agent-team extension (Stage 7). Written analogy-first (home-renovation) for non-engineers; every cited number is first-party-verified — the trends-report "delegation gap" figures were NOT first-party-confirmable, so deliberately omitted. Tri-locale; anchor / zh-Hans / switcher gates + code-reviewer pass.
  • site · Removed the README Star History section. The star-history.com embedded chart no longer renders (GitHub restricted star-timeline data access in 2026; the anonymous api.star-history.com/svg embed now 503s for every repo, verified incl. facebook/react). Since the README header already carries a live stars badge, the section was redundant once the trend chart was gone, so it was dropped rather than kept as a duplicate badge. Tri-locale; gates + code-reviewer pass.
  • content · GPT-5.6 (Sol / Terra / Luna) shipped and is no longer preview — rolled through Stage 1 (model table + legend), glossary (Context-Window + Frontier-Model), and Stage 6 (reasoning-table intro + GPT-5.5 row). All first-party verified against OpenAI's API model docs: Sol gpt-5.6-sol ($5/$30 per MTok), Terra gpt-5.6-terra ($2.50/$15), Luna gpt-5.6-luna ($1/$6); all three 1.05M context, 128K max output, available in ChatGPT + Codex + API. Fixes a real error: the GPT row's Context read ~400k (that was GPT-5.5's) — GPT-5.6 is 1.05M. The (preview) marker plus its now-unused legend clause were dropped per the table's maintenance convention (status resolved → delete the legend line); Stage 1 header month 2026-06 → 2026-07; the glossary frontier entry gains a 2026-07 cluster. Preview-vs-GA was checked carefully: the 2026-06-26 preview system card described the pre-launch limited-preview phase, whereas the API docs now list all three under "Frontier models" with pricing and no preview/limited badge (that page does badge "Deprecated" elsewhere, so the absence is meaningful). Tri-locale; anchor / zh-Hans / switcher / stage-template gates + code-reviewer pass.

2026-07-01

  • content · Claude Sonnet 5 (released 2026-06-30) rolled through the repo, all first-party verified (platform.claude.com model docs + anthropic.com/news/claude-sonnet-5): claude-sonnet-4-6 → claude-sonnet-5 and Sonnet 4.6 → Sonnet 5 everywhere they name the current default Sonnet — Stage 1 model table + reading list + pricing example, glossary Context-Window / Computer-Use / Frontier-Model entries, Stage 8 Computer-Use row, setup-guide + examples/README model-picker, all walkthrough + stage-3/4 example CLI commands, the branches/for-developer Aider example (its two-generations-old claude-sonnet-4-20250514 snapshot also bumped to claude-sonnet-5), the repo CLAUDE.md picker, and the freshness-models.yml whitelist (47 content files, 43 model-ID swaps). Verified specs carried, none invented: 1M context (same as Opus 4.8), $3/$15 standard ($2/$10 intro through 2026-08-31), "best speed×intelligence" positioning; Sonnet 5 supersedes Sonnet 4.6 (now Legacy). Historical Sonnet 4.5 references (Stage 6 predecessor list, Stage 7 GAIA leaderboard) deliberately left intact. Tri-locale; anchor / zh-Hans / switcher gates + code-reviewer pass.
  • content · Stage 2 (Prompt Engineering) + glossary now spell out zero-shot / one-shot / few-shot in plain language — terms Exercise 2 leaned on but never defined. The glossary entry Few-shot / Zero-shot → Zero-shot / One-shot / Few-shot gains the previously-missing one-shot (exactly 1 example) plus a one-line framing (the three differ only in how many examples you show the LLM); Stage 2 Exercise 2 gets a 3-bullet inline explainer tying the 3-shot its code uses back to "few-shot". Also corrected a stray Traditional 分類 → 分类 in the zh-Hans exercise line. Tri-locale; anchor / zh-Hans / switcher gates + code-reviewer pass.

2026-06-30

  • content · Staleness audit Batch 1 (from the 2026-06-29 multi-agent repo audit): removed the phantom "Claude Mythos Preview" attribution on the Stage 7 WebArena benchmark row (→ "領先 model 未公布" — Mythos/Fable benchmarks were never published and access is suspended, so the cell contradicted the table's own caption); glossary Context-Window entry gains Grok 4.3 1M + Mistral Medium 3.5 256k for parity with the Frontier Model entry; cookbook "Claude 4.5+" → "Claude 4.8+"; A2A glossary entry refreshed to v1.0 (Linux Foundation governance, 150+ orgs, signed Agent Cards). All first-party verified. Tri-locale; gates pass.
  • content · Staleness audit Batch 2 (model-ID / recommendation refresh, all first-party verified): Stage 6 Path-2 reasoning list + observation line, Stage 8 example comment, and setup-guide updated Gemini 3.1 Pro → 3.5 Flash and added xAI Grok 4.3 (GA) to the strongest-reasoning options; GPT-5.5 deliberately kept in runnable example code since GPT-5.6 is still limited preview (not GA); setup-guide free-tier corrected to "GPT-5.5 Instant (rate-limited)"; Stage 4 OpenAI Agents SDK "April 2026 update" reframed to past-tense (the built-in-sandbox / 7-provider claim verified accurate), AG2 v0.2-vs-v0.4 note softened. Tri-locale; gates pass.
  • layout · Stage 1 model tables de-crammed: time-sensitive status/caveat text (Fable 5 suspension, license clauses, release dates, Arena rank) moved out of the data cells into one plain-language legend line per table; genuinely-old entries retired (GPT-5 / o-series, Gemini 3.1 Pro). Added an HTML-comment maintenance convention so the tables self-clean as models churn (new flagship = swap not append; resolved status = delete the legend line). Worst flagship cell dropped ~75 → ~33 chars. Tri-locale; plain-language; gates + code-reviewer (APPROVE) pass.
  • layout · Stage 2 Curated-Projects table de-crammed (same pattern): the two worst cells (dspy / NirDiamant, ~150-182 → ~38-74 units) trimmed to a short reason + ★ / license; framework-not-tutorial + NOASSERTION caveats moved to one legend line. Tri-locale; gates pass.
  • layout · Stage 1 Chinese-frontier table (the 7-provider / 7-col one, widest in the stage) split along the API-vs-open-weights line into two 6-col tables (① API-only: DeepSeek / Kimi / Hunyuan / MiniMax · ② open weights: Qwen / GLM / Yi); the License column folded into one plain legend per group. All 7 providers + license nuance preserved. Tri-locale; gates + column-count scan pass.
  • site · MkDocs-Material UI upgrade (verified with a local mkdocs build, clean across all 3 locales): code-copy buttons, instant/SPA-style navigation + progress, navigation.sections, search.share, content tabs/tooltips/annotate; :material-*: icon support; new docs/stylesheets/extra.css (indigo brand color, grid-card hover, tighter rounded tables). A custom card landing page is a planned follow-up (blocked on the README-vs-index i18n conflict).
  • site · Nav cleanup: the top nav was bilingual + inconsistent ("首頁 / Home", "Audience branches"…); switched to single-language source labels + i18n nav_translations so each locale shows only its own language (繁中 首頁 / en Home / 简中 首页), and dropped navigation.sections (over-expanded the sidebar). Verified with a local build, all 3 locales.
  • site · Custom card landing page shipped (resolves the earlier README-vs-index blocker): index.md / .en.md / .zh-Hans.md is now the trilingual home — hero + stat cards + track/stage grid-cards. The README moved to an /about/ page (staged as about.md so it no longer collides with index for the home slot), and mkdocs_hooks.py rewrites in-content README.md links to about at build time so they keep resolving (examples/README untouched). Verified locally: clean build, all 3 locale homes = landing, anchor / zh-Hans / switcher gates pass.
  • content · Staleness audit Batch 3 (new harness-engineering frames + adds, all first-party sourced): Stage 7 gains a "feedback loops, not a more perfect prompt" subsection — the 4 feedback timings (tool returns / mid-run steering / end-of-turn acceptance / outer loop), anchored on Anthropic's planner→generator→evaluator harness post; Stage 7.5 gains "Harnesses expire: Model-Harness-Fit + the Bitter Lesson" (Sutton 2019); deepagents (LangChain, LangGraph-based, MIT, v0.6.12) added to Stage 4 framework resources + a plain glossary "Deep Agent" entry. Written analogy-first for non-engineers, jargon glossed inline; Codex /goal folded into N1's outer-loop row (no separate section). Tri-locale; gates pass.

2026-06-29

  • content · Stage 1 model table + glossary (frontier + Context-Window entries) + scripts/freshness-models.yml whitelist refreshed with late-June-2026 frontier models, all first-party verified: GPT row gains GPT-5.6 (Sol / Terra / Luna, preview); Gemini row → 3.5 Flash (3.5 Pro in dev); glossary frontier adds xAI Grok 4.3 (GA) + Mistral Medium 3.5 (open weights, preview), relabeled by half-month (Fable 5 suspension note retained). Preview-vs-GA marked; no fabricated benchmark / context numbers. Tri-locale; anchor / zh-Hans / switcher gates pass.
  • content · Stage 6 reasoning-model table consistency follow-up: the "current (Jun 2026) frontier" intro + the GPT-5.5 and Gemini 3.1 Pro rows now flag that newer tiers exist (GPT-5.6 Sol / Terra / Luna preview; Gemini 3.5 Flash available, 3.5 Pro in dev). Existing verified rows and benchmarks (e.g. Gemini 3.1 Pro GPQA Diamond 94.3%) kept and correctly attributed; no preview-model benchmarks fabricated. Tri-locale; gates pass.

2026-06-24

  • catalog · Added DeusData/codebase-memory-mcp (★ 13.5k, MIT) to §5 Dev Collaboration — a code-intelligence MCP that indexes a codebase into a queryable knowledge graph (query structure / symbols / call paths instead of grep+read). Plain, non-marketing description (notes the re-index-after-edits + verify-load-bearing-claims caveats); tri-locale; §5 TOC count 7→9 (also corrects a pre-existing off-by-one); gates pass.

2026-06-13

  • catalog · Added 12 high-confidence repos (all gh-verified stars/license, none previously listed): microsoft/agent-framework (Stage 4); getzep/graphiti + lancedb/lancedb (Stage 6); comet-ml/opik, pydantic/logfire, NVIDIA-NeMo/Guardrails, BoundaryML/baml (Stage 7, incl. new Safety/Guardrails + Structured-Output rows); bytedance/UI-TARS-desktop + trycua/cua (Stage 8, new Computer Use Agent Stack); awslabs/mcp + ComposioHQ/composio (MCP/Skills catalog §6 / §12); microsoft/mcp-for-beginners (Stage 5.2 reading list). Tri-locale; per-section counts updated; anchor / zh-Hans / switcher gates pass.
  • content · Stage 5 — plain-language orientation box in 5.1 (Claude Code = terminal agent for devs; Claude Cowork = desktop agent for non-coders; OpenAI parallels = Codex CLI / ChatGPT agent) so beginners see Claude Code is one shape among several; plus first-use plain glosses for heavy terms (harness / orchestration / scaffolding / control plane). Tri-locale; Cowork + ChatGPT agent verified first-party; anchor / zh-Hans / switcher gates pass.
  • content · Reframed Claude Fable 5 across the roadmap after Anthropic suspended all access to Fable 5 + Mythos 5 on 2026-06-12 (US government export-control directive; status · statement; no restoration timeline). Documentation tables (CLAUDE.md / examples/ / stages 01·06·07·07.5·08 / glossary) now mark Fable 5 as suspended and currently unavailable, with Opus 4.8 as the current top usable Claude tier; recommendation pick-lists (Path-2 reasoning chooser, Computer Use vendor table, OmniParser / browser-use swap-lists) drop Fable 5 so no reader is pointed at an inaccessible model. Tri-locale; anchor / zh-Hans-localize / language-switcher gates all pass. Suspension verified against two first-party sources, no fabricated facts.
  • docs · CITATION.cff version 2026.05.19 → 2026.06.13 (was stale vs the recent content batches).

2026-06-12

  • content · Claude Fable 5 (Mythos-class, claude-fable-5, GA 2026-06-09) added as the new top Claude tier across the trilingual roadmap — model tables in CLAUDE.md / examples/ / stages 01·06·07·07.5·08 + glossary frontier entry; Opus 4.8 reframed as Opus-class flagship + Fable 5 safeguard-fallback. No fabricated context-window or benchmark numbers (Anthropic published none — marked "not yet published"). Also fixed a pre-existing claude-opus-4-7 → claude-opus-4-8 inconsistency (12980b3).
  • content · Stage 5 — new 5.6 Dynamic Workflows section after 5.5 Subagents (ecosystem-level intro + cross-link to the 7.5 deep-dive, no duplication); old 5.6 Source → 5.7, old 5.7 SDK → 5.8, all in-file refs + 7-Layer-map ranges + cross-file anchors (glossary / stages 03·06·07) relinked, tri-locale (5044008).
  • catalog · 1weiho/open-slide (★4.9k, MIT) added to §2 as an agent-native slide framework — ships Claude Code Skills, distinct from Stage 4 orchestration frameworks; tri-locale (7d3fd5d).
  • docs · MCP/Skills catalog count made drift-proof — stale 62 → robust 65+, category count reconciled to 15, across 33 files / all locales (3782dd4). Propagated the 7→8 stage reality into design notes / style-guide / reader docs (39d397a) and fixed outreach-draft count drift (25785f0).
  • outreach · send-day copy-paste packages playbook for awesome-list submissions (afd7a76).
  • content · per-chapter improvement audit (12-agent fan-out + skeptical filter) → 5 gap-fills, all tri-locale: Stage 3 lethal-trifecta security callout + MCP router note + glossary (f3bde60); Stage 1 next-token / sampling mental-model box (1bd171f); Stage 5 Hooks (L3 control layer) subsection (9d2897f); Stage 7 Loop Engineering note + glossary (eb8e64c).
  • catalog · new Web Search / Retrieval category (exa-mcp + tavily-mcp) + Context7 in Dev-Collaboration; category count 15→16 (b1718d3).
  • content · improvement-audit medium batch (6 more tri-locale gap-fills): Stage 3 structured outputs / JSON-mode (93006a8); Stage 2 reasoning-vs-CoT + Stage 5 MCP-in-2026 (Registry / FastMCP / security) + Stage 8 accessibility-tree & Playwright-MCP (ea0633e); Stage 6 RAG ingest-parsing + embedding-model selection + Stage 7 OTel GenAI conventions / pass^k·τ²-bench / MAST (2fcfc6b).

2026-05-31

  • tooling · pruned the ops-metric scripts that don't touch stars or URL validity (strategic-review action #1, scoped down per maintainer): removed scripts/snapshot-traffic.py (GitHub traffic snapshots), scripts/refresh-outreach-status.py (outreach-matrix drift), scripts/check-catalog-staleness.py (dormant-entry pinger), and the docs/traffic/ snapshot dir. KEPT the weekly stars + URL auto-update (weekly-catalog-refresh.yml + lint.yml's star-drift job) — the maintainer values the weekly cadence for star-count refresh and link-rot checking. All correctness + trilingual-parity guards intact (anchor / link-rot / mirror-sync / stage-template / banned-words / overclaim / zh-Hans-localize).

2026-05-26

  • ci · lint.yml overclaim check expanded (P3-G from audit) — promoted from case-sensitive exact-phrase to case-insensitive (grep -Fi), broadened scope to include tracks/ examples/ resources/ (which the previous narrower scope missed — letting 5 uppercase Production-grade H2 headers in examples/ slip through the earlier sweep). Strict-blocking list now includes all style-guide §3 phrases (首選 / 首选 / 唯一選擇 / 唯一选择 / 業界最佳 / 业界最佳 / 業界最強 / 全世界最好的 / 最緊迫 / the most canonical) plus English equivalents (production-grade / world-class / best-in-class / cutting-edge / state-of-the-art / industry-leading). Corpus pre-cleaned across tri-locale before flipping to strict.
  • content · overclaim residue swept across tri-locale (18 file edits) before the lint flip — 3 × ## Production-grade … H2 headers in examples/stage-{6,7}/ normalized to ## Production-ready …; 3 × inline 首選 in stages/05 / stages/06 / tracks/cli/A1 softened per style-guide §3; tracks/cli/A1 最完整的中文社群資源 → 中文社群資源豐富 (marketing → factual).
  • tooling · scripts/snapshot-traffic.py shipped — captures weekly 14-day traffic window (views / clones / referrers / paths + point-in-time totals) to docs/traffic/snapshots/YYYY-MM-DD.json so historical trend survives the GitHub API's 14-day visibility limit. Each file ~5 KB. First snapshot included (docs/traffic/snapshots/2026-05-26.json).
  • tooling · scripts/refresh-outreach-status.py shipped — reads .github/channel-partners.md, extracts PR URLs, queries gh pr view, reports drift between recorded status and live PR state (merged / closed / ghosted / approved). Report-only (text / markdown / json), --check for CI. Closes P2-F from the 2026-05-25 audit; P2-E closed by snapshot-traffic.

2026-05-25

  • tooling · scripts/check-catalog-staleness.py shipped — queries gh api repos/<owner>/<repo> for pushed_at + archived, flags catalog entries dormant >= N months (default 12) or archived. Report-only (text / markdown / json). Initial run on the 247-repo catalog surfaced 17 stale entries: 5 archived (incl. langchain-ai/langserve archived 2026-05-05 still cited as live, RooCodeInc/Roo-Code archived 2026-05-15 in setup-guide) + 12 dormant (oldest: microsoft/prompt-engine 37 mo).
  • i18n · Stage 1 + Stage 2 mirror schema resync — ## 🎯 Curated Projects regenerated from canonical (en hand-translated · zh-Hans via opencc tw2s + zh-hans-localize vocab); −358 lines of stale H3-card format replaced with compact-table parity to canonical. Also normalized 5 Stage 1 .zh-Hans H2 titles back to canonical wording + emoji. Eliminates the forward-schema drift across all 8 stages.

2026-05-19

  • catalog · microsoft/ai-agents-for-beginners added to Stage 3 選讀/進階補充 as a parallel beginner course (explicitly not a substitute for the stage's hands-on practice), tri-locale (2d83f72, 94f2d73).

2026-05-18

  • catalog · Kimi-K2 + GLM-4.5 added to §11 中文圈專用 — neutral schema, gh-verified Stars/License, tri-locale (fd81f31, ad80845).
  • ci · weekly catalog-refresh PR now guarded auto-merge: sanity guard (star-token-only diff, ≤150 lines, anchors pass) → squash-merge, else label needs-manual-review (3dc6ecd).

2026-05-17

  • docs · per-track Capstone + 4-level self-assess rubric (CAPSTONE), tri-locale (dbf1ef3, a31dde5).
  • docs · Pages unified — mkdocs at /, mdBook at /book/, one workflow; README's GitHub-only switcher stripped from rendered site (5e59c7c, 001d765).
  • docs · README positioning reframed (trilingual, English fully maintained); stale exercise-folder count corrected 27 → 23 (b4bb862, 24a87fe).
  • outreach · English-audience launch drafts — HN / Reddit / newsletters / awesome-lists (b8f365b).

2026-05-16

  • governance · CoC + SECURITY + CITATION.cff + issue-template config added, tri-locale mirrors (9aa2963, 84bc58f).
  • docs · public ROADMAP.md + learner PROGRESS.md tracker added, tri-locale (e5cc310, 3e628e9).
  • docs · GitHub Pages site (mkdocs-material, trilingual) + live docs-site badge (498932c, ea4530f).
  • i18n · zh-Hans mainland-localization pass + Lint gate blocking Taiwan-vocab/「」 drift (7f73b8a, 805ae57).
  • visuals · final ASCII concept blocks replaced with generated PNGs — 10/10 complete (tri-locale) (21a2bbf).
  • ci · actions bumped off deprecated Node20 ahead of June 2026 forced migration (c6a8c19).
  • outreach · CONTRIBUTORS — @demo112 (#14) + @Rain120 (#18) (7040738).

2026-05-15

  • content · Stage 1 §主流 LLM 家族對比 (US 3 + China 7 + Western-OSS 4 + decision tree + benchmark + caveat) (8f578bf).
  • content · Stage 5 §7-Layer Architecture Map (Claude primitives × 3 engineering disciplines) + embedded figures (5f99bbb, 1e5a12b).
  • content · subagent teaching deepened — dispatch who/how/what, vs Skill/Slash-Command disambiguation, advanced doc + figures (009ddf9, 21c555b, e8a919e).
  • content · 5 audience branches tableized (使用情境 / 流程 / Tier ladder) + academic-style polish, tri-locale (184015b, 6b7e5f6).
  • i18n · 97 broken outbound mirror anchors fixed + anchor-checker now enforces mirror files (e1991a6, ab3a6d0).

2026-05-14

  • content · NEW Stage 7.5 — Advanced Agentic Concepts (OpenAI Harness Engineering 5 principles, Why→What→How map, work-boundary diagram) (4a6bf18, e2c1d11).
  • content · Track A3 §6 advanced-concept playbooks for daily CLI work (876a457).
  • visuals · § (513×) and 🔄 (24×) symbols stripped across all user-facing docs; concept diagrams embedded as PNG × 3 locales (29eb774, d04c224).
  • catalog · 4 Anthropic-related resources added across stages (0af7fbc).
  • ci · weekly catalog-refresh workflow + --apply flag (dc91a8b).

2026-05-13

  • content · Stage 4/6/7 verified + merged to main (cdb0ae3); Stage 8 NEW — Agent Interfaces, §1-15 across 3 commits A/B/C (b83c894, 6c87a2f, 069406f).
  • content · curation positioning crystallized — exercises reframed foundational/illustrative; repo = curation hub + simple cases, depth → hello-agents (00dc046, 0206dbc).
  • content · 精選 Projects consolidated to single 適合誰 tables across Stages 0-8 + Track A (fd94d80, 19a14a8).
  • content · Stage 5 expanded (§5.1-5.6: Claude Code basics, MCP/Plugin/Skill 定位, §5.5 Subagents, Harness Internals) (2c3f1dd, f7de4e7).
  • content · Stage 6 RAG-first restructure + GraphRAG / Contextual Retrieval / Hybrid Search; 2026 frontier-model refresh (f00e2c2, acbc9dc).
  • ci · 4 checks added — anchor validator, mirror-sync reminder, 2026 freshness, stage-template enforce (a14c809, 4491e6e).
  • i18n · 8-stage tri-locale mirror catch-up via Codex + Gemini delegation; 37 legacy anchors fixed, validator → strict (8b39c75, 706d257).
  • catalog · whale (DeepSeek terminal) + a-stock-data added to Chinese ecosystem (#14) (3d375bd).

2026-05-12

  • content · examples/ bootstrapped — Stage 1 (6) + 2 (4) + 3 (6) + 4 (5) + 6 (5) + 7 (5) inline starters + folder examples, tri-locale (c1fcaa7, 8051861, 7d2c1b7).
  • content · dual-path examples — Ollama (default, cost-driven) alongside Anthropic; per-stage budget + LLM recommendation list (bc37ad8, 3fa5410).
  • content · tool-calling-tutor — installable Claude Code skill + Stage 5 §5.3 meta-example (3584669).
  • i18n · diagrams renamed .zh-Hans.png per BCP 47 / W3C convention (78797a3).

2026-05-11

  • accessibility · resources/setup-guide.md (3 langs) — addresses the dev-fluency assumption gap that subagent audit flagged across 5 non-dev branches. 5 sections covering API key registration, Python install, hello-world, Claude Code first auth, SKILL.md primer (3c88b2b). Plus 15 branch-top callouts on all 5 audience branches. resources/README.{en,zh-Hans}.md created for trilingual parity.
  • accessibility · README — promoted setup-guide pointer to top of Quick Start across all 3 langs (ad47706). Was buried in Related Resources where non-dev visitors hit technical walls before discovering it.
  • accessibility · setup-guide opens with a 4-tier on-ramp (Web / Desktop / CLI / API) + official download URLs for Claude.ai, ChatGPT, Gemini, Le Chat, Claude Desktop, ChatGPT Desktop, LM Studio (3c89952). Replaces the abstract "decide two things" intro so non-dev readers see "just use claude.ai for free" as the first option, not "register API key → install Python".
  • accessibility · setup-guide adds a 3rd tier between Desktop and CLI: IDE with built-in AI (Cursor, Windsurf, Cline, Continue, Roo Code, Zed, GitHub Copilot) with download URLs (7e14093). Distinguishes "AI sidekick while you write code" from "agent runs autonomous task in terminal".

2026-05-10

  • funnel · Stage 1 → Stage 2 callouts added across 3 langs to address visible drop in traffic/popular/paths (0ee2a3a)
  • outreach · 3 awesome-list targets backfilled into channel-partners matrix from launch-checklist: travisvn/awesome-claude-skills, WangRongsheng/awesome-LLM-resources, AiHubCN/Awesome-Chinese-LLM (90a6ad1)
  • outreach · PR #6135 to punkpeye/awesome-mcp-servers — addressed bot name-check, replied to non-applicable glama-check + emoji-check (81a7313)
  • content · Cookbook Recipe 6 — Local-LLM × CLI Agent walkthrough (5855852). Bridges Stage 1 (local LLM) + Stage 5 (CLI agent) end-to-end. Explicitly notes Claude Code does not support local LLM as backend; routes readers to OpenCode / goose / Aider / Hermes instead. Stage 5 + cli-agents-guide also gain matching pointers.
  • catalog · Hermes Agent (NousResearch/hermes-agent ★142k) added as 7th major CLI agent across cli-agents-guide, tracks/cli/A1, and 5 dependent files (698f13a). Differentiator: cloud-VM-native, model-neutral (200+ LLMs via OpenRouter / NIM / GLM / Kimi / etc.), self-improving skill loop.
  • i18n · *.zh-CN.md → *.zh-Hans.md migration per BCP 47 / W3C compliance (21b653d). 25 files renamed, ~270 markdown lines updated, tooling (sync-language-switchers.py, lint.yml, generate-stage5-stack.py) migrated. Thanks @xfq (W3C i18n lead) for flagging in #9. Added to CONTRIBUTORS (868691d).
  • visuals · English README hero (banner.en.png), Learning Map (learning-map.en.png), and Branch Decision Tree (branch-decision-tree.en.png) refreshed to ChatGPT-rendered versions (c7edff8, 4be6b88, 6c03c58).

2026-05-09

  • outreach · Day 1 PR sent: punkpeye/awesome-mcp-servers#6135, adding awesome-agentic-ai-zh to ## Tutorials (a0dc4d5). Plan revised after upstream audit caught hesreallyhim/awesome-claude-code mid-reorg (Day 2 = issue not PR) (708259c).
  • outreach · 8 channel-partner pitch templates created in .github/outreach/ plus tracking matrix .github/channel-partners.md (2f63745). Targets: Datawhale, liyupi, HuggingFace, LangChain (kyrolabs), awesome-claude-code, awesome-mcp-servers, Zhipu, Moonshot.
  • catalog · 11 中文圈專用 expanded from 2 → 7 entries: QwenLM/Qwen-Agent, coze-dev/coze-studio, coze-dev/coze-loop, liaokongVFX/LangChain-Chinese-Getting-Started-Guide, chatchat-space/Langchain-Chatchat (4809039).
  • funnel · Stage 0 → Stage 1 callouts added (3dfe761).
  • ci · zh-Hans companion files excluded from zh-TW banned-word audit (closes #7) (3acc3f2).

2026-05-08

  • content · for-teacher branch expanded with 3-tier teacher AI use-case framework (Chen 2020, Mittal 2024) via @scott0127 PR #6 (cd1cad4).
  • content · Stage 6 unit guide: memory + RAG overview via @scott0127 PR #5.
  • content · Branch decision tree (zh-Hans) added, English banner added, for-developer branch thickened 56 → 138 lines × 3 langs.

2026-05-07

  • catalog · 3 user-flagged gaps filled: safishamsi/graphify, pbakaus/impeccable, netease-youdao/LobsterAI + context-engineering and harness-engineering coverage.
  • content · resources/cookbook.md added with 5 (now 6) step-by-step recipes covering Skill / MCP / Office / NotebookLM / Zotero / Local-LLM workflows.

2026-05-06

  • launch · Repo announced to bilingual community. Star count: 0 → 519 in week one.
  • content · learning-map.png polished, README hero banner placement finalized.

Conventions

  • Each commit SHA is clickable: https://github.com/WenyuChiou/awesome-agentic-ai-zh/commit/<sha>
  • Categories: content (stages/branches/tracks) · docs (project meta-docs: README/ROADMAP/PROGRESS/CAPSTONE/Pages site) · governance (CoC/SECURITY/CITATION/issue templates) · accessibility (on-ramp/setup friction) · catalog (mcp-skills-catalog entries) · funnel (cross-stage navigation) · visuals (diagrams/banners) · i18n (translation/locale) · outreach (channel partners) · ci (workflows/lint) · launch (one-time events)
  • Maintained manually; not auto-generated. Updated alongside substantive commits.