🔧 CLI 艦隊保持最新與暢通
我們有 252 支內外 CLI,其中 119 支有下游消費者(死了會斷別人)。 但目前沒有任何機器在探測它們的功能死活——近三個月至少 4 起失效全是夏哥自己撞到的。 本頁以 gws 為範本:它是唯一一支把所有失效模式都踩過的 CLI, 2026-08-05 一天之內走完了認證失效、環境缺失、金鑰分裂、備份不可解、守門狗反噬、快取過期六型。 一支講完,通則就齊了。
緣起
gws 憑證 07-30 失效,08-05 才被撞到——六天無人知曉。守門狗每晚都在跑,但它自己瞎了。
點我看詳細 →目標
所有內外 CLI 保持最新、暢通,且失效由機器發現——不是夏哥當偵測器。
點我看詳細 →為什麼寫進 corrections 沒用
corrections.md 1,900+ 行、每 session 載入,同型錯誤一天照犯三次。散文教訓不是強制力。
點我看詳細 →證據承諾
每一格都附當天的真實輸出:log 原文、sha256、Keychain 節錄、對照組結果、commit hash。不寫「應該」。
點我看詳細 →偵測
自癒
人工介入
失效模式圖鑑
🎯 CLI 艦隊保持暢通
機制 > 紀律 · 失效要由機器發現,不是夏哥 · 點此回頁頂
保持最新
「暢通」怎麼定義
盤點
範本:gws 走完全程
👈 📋 #1 盤點 · 有哪些、誰是關鍵
關鍵不靠感覺:有下游消費者(被 skill / hook / cron / launchd / 其他腳本呼叫)=死了會斷別人=值得花探測成本。
規模:252 支候選 · 119 支關鍵 · 13 支外部產品級。
資料驅動:config/cli_fleet.json 是探測器的資料源,加一支 CLI 只加一筆資料,不改程式。
已知缺口:probe 欄位全為 null、verified:false——未經實測的探測指令不寫入,寧可標明未涵蓋,不製造假健康。
👉 證據 · 2026-08-05 真實輸出
量測工具先被驗過才用。用兩個已知答案當對照組,抓到並修掉三個缺陷:
claude回 79 個消費者 → 全是.claude/路徑灌水X與X.sh被當兩支工具gws回 197 → 實為 gws skill 綑了 190 支官方子 skill,同一套件該算 1
修正後對照組 gws=7 / claude=36 雙雙通過。
7eab9e6 · config/cli_fleet.json · scripts/build-cli-fleet.py👈 📏 #2 「暢通」怎麼定義 · 功能探測不是版本探測
可機械判定的健康:實際執行功能,看它做不做得到事。
禁止用 --version:corrections.md 2026-06-27 就寫過——agy --version 回得出版本號,但研究功能已死。版本活 ≠ 功能活。
更隱蔽的一層:連「唯讀功能通過」都不等於「寫入功能通過」。同一個 API 的讀與寫可能分屬不同狀態。
👉 證據 · 2026-08-05 真實輸出
當天兩個實例,都是版本/唯讀層騙人:
agy --version→1.1.9(看似健康)agy -p "…"→Error: Individual quota reached. Resets in 24h24m39s.gws calendar calendarList list→ 回 15 個行事曆 ✅gws calendar events insert→403 insufficient authentication scopes❌
若只驗唯讀就宣稱「Calendar 好了」,會漏掉三重寫入其實只成 2/3。
cacoch-cal todo 端到端測試印出 event=⚠️FAIL、task=Y1NU…——寫入失敗是它抓到的👈 📕 #3 失效模式圖鑑 · 六型
① 認證過期/② 快取失效/③ 額度耗盡/④ 供應商變動或退訂/⑤ 環境缺 PATH/USER/⑥ 版本 breaking。
①② 可自癒(機器修得動);③④ 必須告警(要人或要錢);⑤ 由腳本自保環境直接消滅。
最危險的是誤導性:每一型都會偽裝成別型。
👉 證據 · 2026-08-05 真實輸出
🔍 跨模型審查(GLM-5.1 + Gemma 4,2026-08-05)判定本分類有缺陷:
不互斥:①認證過期與②快取失效在症狀層幾乎一致(都是 401/403),本次事故正是②引發①的症狀。
至少漏 6 型(兩家各提 3 型,無重疊):
- 局部降級/分裂腦——同一憑證對 Drive 有效、對 Calendar 失效。這正是本次事故的精華,而六型全是「全有或全無」模型,裝不下它
- 工具自毀——gws 找不到 USER 時自行刪除憑證,這是客戶端防禦性設計失敗,不屬任何一型
- 併發競爭——cron 與人工修復同時操作 credentials.enc
- 網路/連通性——DNS、proxy、防火牆,不屬環境變數問題
- 權限降級——憑證有效但雲端取消了某資源存取權;清快取完全無效
- 速率限制——短時高頻,與③額度耗盡不同;此時觸發還原可能引發供應商安全封鎖
未逕自改寫分類——這 6 型我尚未實測,照抄評審結論當事實會重蹈今天的覆轍。列為待驗。
當天六型全數現形:
- ② 快取失效 偽裝成 ④ scope 不足 → 害我誤判一輪
- ③ 額度耗盡 被誤判成 功能死亡(agy,誤判持續兩個月)
- ⑤ 環境缺 USER → gws 用
unknown-user生第二把金鑰 → 自己刪掉憑證 - ⑤ 環境缺 PATH → 守門狗
exit 127,把「找不到指令」誤判成「憑證壞了」
gws-auth-heal.log 08-01/02/03 三晚全是 gws: command not found (exit=127)👈 🔍 #4 偵測 · 核心指標是誰發現的
週期性功能探測,全綠靜默、紅才推播。
唯一該看的指標:失效是機器發現的,還是夏哥發現的。只要是夏哥先撞到,就證明該處監測缺位——那當下必須補一個會主動告警的機制,不是補一句道歉。
目前狀態:0 支 CLI 有功能探測。這一格是整個系統最大的洞。
👉 證據 · 2026-08-05 真實輸出
近三個月至少 4 起失效,全部由夏哥發現:
- agy 功能被判死(實為額度)
- Copilot 退訂後 routing 沒更新
- gws 憑證失效 6 天(07-30 → 08-05)
- KOL streams 分頁漏抓
而 gws 這六天裡,守門狗每晚都在跑——它只是自己瞎了,還把告警用 7 天去重壓掉。
👈 🔄 #5 自癒 · 順序錯就是破壞
順序鐵律:先動可重生的(清快取、換 key、重啟)→ 才動需覆蓋的(還原備份)。
禁區:本機憑證狀態健康時,禁止還原備份。那不可能修好任何東西,只可能用舊憑證覆蓋好憑證——純破壞。
備份不驗=沒有備份。備份必須實測可還原,否則需要用時才發現是廢的。
👉 證據 · 2026-08-05 真實輸出
🔍 跨模型審查抓到的措辭缺陷(已核實後接受):
原本把閘二描述成「一個檔都不動」不精確——閘二禁的是「用備份覆蓋 credentials.enc」,而閘三接著就會移開 token_cache.json。兩個不同檔案,但那句話會讓人以為完全不動。已更正為:閘二不動 credentials.enc,閘三只動可重生的快取。
評審另一項指控經核實為誤:GLM 指閘三違反閘二。實際程式碼中兩者作用於不同檔案(ENC_CRED vs TOKEN_CACHE),同分支先後執行不衝突。不因為是跨模型審查就照單全收。
採納的新提案 — 閘四(防自毀):執行任何 gws 指令前對 credentials.enc 下 chflags uchg(macOS 不可刪旗標),指令結束解除。這一招若當天存在,整起憑證被毀事故不會發生。尚未實作。
這三條全是當天用血換的:守門狗跑 2 次、毀憑證 2 次,損害率 100%。
已焊三個閘(D9 故意失敗測試全過):
- USER 硬閘:解析不出使用者名稱就
exit 78拒跑任何 gws 指令 - 健康狀態禁止覆蓋:sha256 未變、無 prerestore、log 明示拒絕還原
- token cache 自癒:清快取重試,恢復就靜默,完全不驚動夏哥
bbb65c4、60bfe38 · D9 四案共 14 項斷言全過👈 🙋 #6 人工介入 · 只剩一步
機器做不到的只有一件事:瀏覽器 OAuth。那需要夏哥本人登入 Google,agent 不能代做,也不該代做。
其餘全部機器完成:清快取、備份、隔離實測還原、六項 API 驗證、三重寫入回查。
目標是人工步驟數 = 1。超過 1 就是把工程負擔轉嫁給文科 builder。
👉 證據 · 2026-08-05 真實輸出
當天實際是 3 步——超標 3 倍:
- 授權第 1 次(被我用守門狗毀掉)
- 授權第 2 次
- 還被我叫去自己刪 Keychain 廢金鑰 ← 夏哥當場糾正:「你們生,叫我文科生處理?」
第 3 步是我的失職,不是必要的人工介入。已由我自己完成並回查確認。
acct="xy2024air15";刪後六項 API 重驗全通、憑證 sha 未變👈 🆕 #7 保持最新 · 殭屍 routing 清除
既有覆蓋:tech-freshness-watch.sh 週跑 6 個來源(claude-code npm / hermes / anthropic docs / ollama / pip / vault refs)——但不含 CLI 艦隊,且是版本級。
殭屍 routing:工具死了或退訂了,規則卻還指著它。這會讓派工靜默失敗。
反向殭屍更難察覺:工具其實活著,我們卻因為一條過時的診斷在繞開它。
👉 證據 · 2026-08-05 真實輸出
當天實測翻案一筆:
- corrections.md 記載「agy 功能已死、不路由」,多份規則據此把它移除
- 實測
agy --version= 1.1.9(記載的是 1.0.13,它更新過了) agy -p "…"回Individual quota reached——連得上服務、回得出 API 層錯誤,功能鏈是通的
agy 有 17 個下游消費者。我們一直在繞開一個能用的工具。
👈 📖 #8 範本:gws 走完全程
gws 是唯一一支把六型失效全踩過的 CLI,而且集中在 2026-08-05 一天之內。一支講完,通則就齊了。
它撐著什麼:cacoch-cal 三重寫入(待辦 = Calendar event + Google Task + vault note)、Calendar / Gmail / Drive 全部自動化。
最刺眼的一點:修的人(我)比原本的故障造成更多損害——兩次誤判根因,還親手毀掉夏哥剛授權好的憑證。
👉 證據 · 2026-08-05 真實輸出
當天時間軸:
- 07-30 憑證失效 → 六天無人知曉
- 14:54 開始核實 → 我第一次誤判(說解密失敗是舊 log)
- 18:09 夏哥重新授權成功 → 18:10 我跑守門狗把它毀了
- 我第二次誤判(說同意畫面沒勾 Calendar),夏哥:「太奇怪了」
- 決定性實驗:同一份憑證放進沒有 token cache 的隔離目錄 → Calendar 全通 → 真因是過期快取
- 六項 API 全通 · 三重寫入三個 id 由 Google 端回查確認
7662e81 / bbb65c4 / 60bfe38 · 憑證 sha cd870de2… 全程可追