作者: tm731531

  • Hacker News 每日精選 – 2026-05-21

    🚀 今日科技趨勢快報

    今日的技術動態顯示出 AI 從「生成內容」向「邏輯推理與科學發現」 的重大轉型,OpenAI 已開始在數學領域展現突破。同時,開發者的開發環境安全性面臨新挑戰,惡意擴充功能正成為新的攻擊門戶,提醒我們在追求生產力的同時,必須重新審視工具鏈的安全防護。

    🤖 AI/機器學習

    OpenAI 模型證實了離散幾何中的一個核心猜想

    🤖 AI 正在跨越純數學的邊界。 OpenAI 的最新模型成功推翻(證實了反向)了離散幾何學中的一個核心猜想,這標誌著 AI 從單純的語言處理轉向具備深層邏輯推理與科學探索的能力。這項進展不僅是技術上的突破,更預示著 AI 在科學研究領域將扮演更關鍵的角色。

    Anthropic 擴張至 Colossus2 並將採用 NVIDIA GB200

    🚀 AI 基礎設施的軍備競賽升級。 Anthropic 正在擴大其運算規模,計畫遷移至 Colossus2 基礎設施並利用 NVIDIA 最先進的 GB200 晶片。這顯示了頂尖 AI 實驗室對於大規模算力的極度渴望,以及基礎設施規模如何直接決定模型演進的速度。

    🛠️ 開發工具

    GitHub 確認因惡意 VSCode 擴充功能導致 3,800 個儲存庫遭入侵

    ⚠️ 開發者請提高警覺! GitHub 證實了安全漏洞,攻擊者透過惡意的 VSCode 擴充功能成功入侵了超過 3,800 個儲存庫。這次事件提醒我們,開發工具的生態系雖然豐富,但第三方插件的安全性往往是供應鏈攻擊中最薄弱的一環。

    GCC 16 新功能:改進錯誤訊息與 SARIF 輸出

    🛠️ 編譯器變得更人性化了。 GCC 16 帶來了顯著的體驗提升,特別是在錯誤訊息的精準度與 SARIF 格式輸出方面。這對於現代化的 CI/CD 工作流與靜態分析工具整合非常有幫助,能有效降低開發者在除錯時的認知負荷。

    使用現代 C++ 在康威生命遊戲中模擬無限

    🧬 演算法之美。 這篇文章探討了如何利用現代 C++ 的強大特性,在康威生命遊戲(Conway’s Game of Life)中實現複雜的無限模擬。這不僅是程式技巧的展示,更是對計算機科學中細胞自動機概念的深度實踐。

    🔓 開源專案

    Haskell 基金會 2026 更新報告

    📜 函數式語言的未來藍圖。 Haskell 基金會發布了關於 2026 年的發展更新,討論了語言生態系統的長期維護與演進方向。對於熱愛函數式程式設計的開發者來說,這對於理解該語言如何應對現代開發需求至關重要。

    🌟 其他

    我逆向工程了 Apple 的影片桌布

    🍏 硬核工程玩家的浪漫。 一位開發者成功逆向工程了 Apple 系統中精美的影片桌布技術。這項專案展示了對作業系統底層機制與多媒體處理流程的深厚理解,是技術與美學結合的極佳案例。

    DOS Zone:重溫經典 DOS 時代

    💾 數位懷舊之旅。 DOS Zone 提供了一個讓使用者回歸經典 DOS 時代的入口,讓現代開發者也能體驗當年的作業系統氛圍。這不僅是懷舊,也是對計算機發展史的一種致敬。

    Donald Knuth 談字母 S (1980)

    🖋️ 計算機科學大師的設計哲學。 計算機科學教父 Donald Knuth 撰寫關於字體設計與字母「S」的深刻論文。這篇文章提醒我們,即使在數位時代,排版與字體設計的精確性依然是資訊傳達中不可或缺的一部分。

    Flipper One 技術規格公開

    📟 硬體愛好者的樂園。 Flipper One 的技術規格正式揭曉,這款硬體引起了開發者社群的高度關注。其設計理念與規格細節,預示了下一代極客工具的發展方向。


    💡 今日觀點與建議

    今日的新聞呈現出一個明顯的趨勢:「深度」正在取代「廣度」。不論是 AI 挑戰數學難題,還是開發者鑽研 C++ 模擬無限,技術社群正從單純的工具應用,轉向對底層原理與複雜系統的極致探索。

    💡 給讀者的行動建議:

    • 審查您的擴充功能: 立即檢查您的 VSCode 或 IDE 插件清單,移除不常用或來源不明的擴充功能,防範供應鏈攻擊。
    • 關注 AI 的推理能力: 不要只把 AI 當作對話機器人,開始研究如何將其應用於邏輯推理與科學數據分析的工作流中。
    • 回歸基礎: 像 Knuth 討論字體一樣,在追求快速開發時,別忘了底層設計與代碼品質的長遠價值。
  • Claude Code 訂閱 6/15 拆分:一個 Max 用戶的 evidence-based 評估與本地化反轉

    重點摘要

    • Anthropic 在 2026/6/15 把 Claude 訂閱拆兩半:互動式(終端機 Claude Code、IDE、claude.ai)維持訂閱補貼價,**程式化(Agent SDK、claude -p、GitHub Actions、第三方包裝)移到獨立 metered credit pool**,按 API 全價算。
    • 對「個人坐下來打字 + 派 Agent Team」這種使用方式,**影響幾乎是零**;真正會被打到的是把訂閱接到 Python 程式跑 24 小時 agent army 的套利型用法。
    • 但「字面合法、精神鑽縫」的灰色地帶會持續存在 — Anthropic 隨時可以用 fair use 條款補洞,你不會收到通知。**真正的應對是把 LLM 從 service 變 commodity**:本地優先 + cloud burst 的 gateway 架構。
    • 2026/5 當下的本地 stack 已經追平 frontier:Qwen 3.6-27B 在 agentic coding 上達到「半年前 400B 級」水準,DeepSeek V4-Flash 用 MoE 把 1M context reasoning 壓到 33GB 量化版可跑。**Claude API 從 default 降級成 escape hatch**。

    2026 年 5 月中,Anthropic 連續宣布三波 Claude Code 政策變動。5/6 把 5 小時池額度直接 ×2、Pro/Max 取消尖峰時段;5/13 週池額度 +50%(到 7/13 結束的補貼期);最關鍵的是 5/14 預告、6/15 生效的「訂閱拆分」政策 — 把程式化用量從訂閱補貼池移到獨立 metered credit pool。

    這篇文章是我作為一個 Claude Max 訂閱用戶,用 21 個 transcript 實際 audit + 政策原文交叉比對的 evidence-based 評估。涵蓋:三波變動的精確時間軸、Anthropic 拆分的真實業務動機、不同使用模式落到新政策的具體影響、灰色地帶與真實風險,以及用 Qwen 3.6 + DeepSeek V4 反轉成「本地優先」工作架構的可執行路線。

    三波政策變動的精確時間軸

    2026/5/6 — 5 小時池 ×2、尖峰取消。Claude Code 五小時池對 Pro / Max / Team / 企業版直接加倍。Pro / Max 取消「peak hours」限制。Claude API 的 Tier 1 input tokens 上限 +1500%、output tokens +900%。背景是 Anthropic 跟 SpaceX 簽算力協議,Colossus 1 設施提供 300MW 額外容量、超過 220,000 NVIDIA GPU。

    2026/5/13 — 週池 +50%(臨時加碼到 7/13)。週限額提升 50%,適用於 Pro / Max / Team / Enterprise。這是限定期加碼,7/13 之後會回到原本水準(除非 Anthropic 再續延)。業界解讀是 Anthropic 對抗 OpenAI Codex 搶 agent 市場的動作。

    2026/6/15 — 訂閱拆兩池(真正的結構變動)。訂閱使用從這天起分成兩個池子:

    使用方式 6/15 後歸屬 計費邏輯
    終端機 / IDE 內互動式 Claude Code互動池(訂閱)不變
    claude.ai 網頁 / 桌面 / 手機互動池(訂閱)不變
    Claude Cowork互動池(訂閱)不變
    claude -p 無頭模式Agent SDK Credit Pool按 API 全價
    Claude Code GitHub ActionsAgent SDK Credit Pool按 API 全價
    Claude Agent SDK(Python/TS)Agent SDK Credit Pool按 API 全價
    第三方包裝(OpenClaw / Conductor / Zed / Jean)Agent SDK Credit Pool按 API 全價

    SDK Credit Pool 額度按訂閱方案分配:Pro $20、Max 5x $100、Max 20x $200,Team Standard $20/seat、Team Premium $100/seat。額度不滾存,每月歸零。耗盡後可選擇 enable overage(繼續按 API 全價收費)或 disable overage(請求被 reject)。

    Anthropic 為什麼要拆?

    訂閱政策本來是「個人吃到飽」設計。Anthropic 賭你打字慢、思考慢,$20 一個月吃不爆等值的 API token 量。這個賭注在「個人開發者用 Claude 寫 code」場景下成立 — 一個人類一天寫不了 10 萬行的對話。

    但 Claude Agent SDK + 第三方包裝(OpenClaw、Conductor、Zed、Jean)讓人可以把 $20 訂閱接到自己寫的 Python 程式,24 小時不停跑 agent army,實際 token 量遠超過 $20 等值。等於把吃到飽 buffet 整個載走轉賣 — 訂閱被當成「便宜 API」用於 production 流量。

    Anthropic 沒禁這條路,只是把它改成獨立 metered 預算 — 「載走轉賣」要另外算錢,「個人坐下來吃」不動。順便擋住 OpenAI Codex 用低價搶 agent 市場,也保住 unit economics 才有錢付 SpaceX 那 300MW 算力擴張的帳。

    實際使用模式 audit:21 個 transcript 看出什麼

    政策評估不能憑印象,要有實際使用 evidence。我盤點過去 28 天的 Claude 使用情況:

    • 21 個 transcript / 13 個唯一日期:不是每天用,平均一週 3-4 天
    • 互動式為主:全部 transcript 都是終端機 Claude Code session,不是 SDK / API 程式化呼叫
    • ccbot Telegram bridge:bridging interactive session,不是獨立 inference
    • 5 個 claude-harness-* hook:全是 SessionStart / PostToolUse / PreCompact 注入,在 session 內運行
    • claude-limited cgroup wrapper:也是互動 session 內
    • Agent Team 18-25 並行:從 interactive session 用 Agent tool 派
    • /loop, /schedule, GitHub Actions, 第三方包裝:全沒有
    • crontab 11 條:全是 stock data 收集(analyst / TDCC / 機構投資人),完全不叫 Claude
    • 唯一例外:某個內部 LLM 評估 harness 有一條 subprocess.run(["claude", "-p", ...])

    把這份 audit 對照 6/15 政策表格,結果出奇地簡單:21 個 transcript 裡有 20 條繼續走訂閱池,只有 1 個 evaluation harness 那條 claude -p 會搬到 SDK Credit Pool

    政策真正落到「典型重度使用者」頭上的點

    對於從終端機 / IDE 互動式使用 Claude Code、用 Agent tool 派 subagent、寫 brain / skill / memory 系統的人 — 也就是 Anthropic 設計訂閱時瞄準的客群 — 6/15 變動實質影響趨近於零

    真正被打到的只有四類具體模式:

    1. claude -p 串進 shell pipeline 或 CI/CD:每次 invocation 從訂閱池移到 SDK Credit Pool
    2. 用 Agent SDK 寫的 Python / TypeScript 程式:無頭運行的 production agent,完全脫離訂閱
    3. Claude Code GitHub Actions:CI/CD 整合在 workflow 內呼叫 Claude
    4. 第三方包裝:OpenClaw、Conductor、Zed、Jean 這些把 Claude 訂閱接成 IDE 後端的工具

    如果你已經習慣「人在前面打字,Claude 在後面派 agent 跑」的工作模式,這個政策變動就是 一個不會發生的事件

    灰色地帶:cycle + Agent Team 字面合法但精神鑽縫

    但有一種模式介於兩者之間,Anthropic 官方文件沒明寫:從 interactive session 派出大量 Agent Team,搭配 /loop 或 hook-based cycle 讓 session 自動延續

    技術上這完全合法。6/15 政策字面只點四個對象:claude -p、Agent SDK、GitHub Actions、第三方包裝。「cycle + 大量 Agent Team + 自動啟動循環」如果全部跑在 interactive Claude Code session 裡(用 Agent tool 派、用 /loop 接同 session、用 hook 觸發),技術上會被歸到互動池。

    但這顯然是「字面 vs 精神」的縫。Anthropic 拆這條政策的精神,就是要擋「沒人盯每一回合的大量自動化」 — 第三方分析給出的啟發式是:「if a Claude session runs without a human watching each turn, it is almost certainly moving to the new credit pool」。從這個精神判讀,大規模並行 Agent Team + 自動 cycle 精神上根本就是 programmatic,只是技術上沒被點名。

    兩個現實風險

    風險一:這個縫不會永遠在。Anthropic 看到統計上的 outlier 用戶(Max 訂閱跑出 Tier 4 API 等級的 token 量),下一輪政策補刀的機率不低。半年後可能變「subagent 從 interactive 派也算 programmatic」、或「同 session 自動 cycle 超過 N 次轉計費池」。歷史上 Anthropic 對訂閱濫用模式都是先觀察後動手 — 5/14 這次拆分本身就是這個 pattern 的證據。

    風險二:Fair use 抽象條款隨時可以動你。Terms of Service 寫的「abuse / excessive use」沒精確定義,他們覺得單帳號太誇張就可以單獨 throttle 你帳號,不需要先改政策、不需要事前通知。被點到的人通常只看到「Claude 突然變慢 / 限額變嚴 / 某些 tool 失效」,不會收到正式告知信。

    精確版說法:「字面合法、精神鑽縫、風險押在 Anthropic 不回頭補洞」。在他們補洞之前你賺,補了之後可能在毫無預警的下次續訂看到 SDK credit 開始扣 — 或更早,某一天突然發現自己被限流。

    反轉戰略:從 service 用戶變成 commodity operator

    真正的應對不是「擠到最後一秒用爆」,是 把工作系統的依賴從 Claude 拆出來,讓 LLM 變成可替換的 commodity。這個轉變的本質是反轉預設值:

    層級 現在(service 模式) 反轉後(commodity 模式)
    日常 code / reasoningClaude 預設,本地 fallback本地預設,Claude API 偶爾 burst
    Agent TeamClaude 的 Agent tool本地 orchestrator + 多 model 異質並行
    超長 contextClaude APIQwen 3.6 / DeepSeek V4 / Gemini 三家擇優
    A 級 PII / 客戶名 / 合約本地 7B(品質不夠)本地 70B 級,品質可用且不上雲
    vendor lock-in 風險Anthropic 政策變動 = 工作系統危機改 gateway config 而已

    架構的關鍵是 gateway 抽象層:用 LiteLLM 或自己寫一個薄 wrapper,讓所有 code 對外只看到一個介面 llm.complete(prompt, model_tier="cheap|standard|premium")。底下接什麼模型是 config,不是 code。Claude 政策再變、Anthropic 真的把帳號限流、OpenRouter 出新便宜模型 — 改一個 config 全部換完,所有專案不動。

    2026/5 最新 open weights stack:本地能跑什麼

    2026 中的 open weights 市場已經到「local 27B ≈ 半年前的 frontier closed」階段。對於配備獨顯 + 100GB+ RAM 的工作站,實際可選的本地 stack:

    Qwen 3.6 系列(2026/3-4 發布)

    • Qwen 3.6-27B(dense)— flagship 級 agentic coding,Q4 約 14GB VRAM。官方宣稱超越上一代 Qwen 3.5-397B-A17B,即「27B 在 2026 ≈ 半年前 400B 的水準」
    • Qwen 3.6-35B-A3B(MoE,35B 總參數 / 3B 啟動)— Q4 約 18GB。MoE 設計每次只算 3B 參數所以很快,適合並行 Agent Team
    • Qwen 3.6 Plus / Max-Preview — closed weights API only。Plus 在 Terminal-Bench 2.0 已贏 Claude 4.5 Opus(61.6 vs 59.3),SWE-bench Verified 還小輸(78.8 vs 80.9)。1M context、reasoning 預設。當 cloud burst 比 Anthropic API 更划算

    DeepSeek V4(2026/4/24 發布)

    • V4-Flash:284B 總參數 / 13B 啟動 MoE,完整模型需 ~170GB VRAM,重度量化壓到 33GB VRAM 可跑(2× RTX 4090 或 1× RTX 6000 Ada)
    • V4-Pro:1.6T 總 / 49B 啟動 — 100GB RAM 跑不了,跳過
    • 1M context native,hybrid attention(CSA + HCA)推理 FLOPs 比 V3.2 省 73%
    • 這是「反思 / 跨領域類比」的本地頂配

    Llama 3.3 70B 與其他

    Llama 3.3 70B ecosystem 最大,Q4 約 35GB。不再是 2026 中的首選,但作為「異質 diversity」角色仍有意義 — 同一 task 給不同 model 看,異質訓練資料能產生 outlier insight,單一 model 並行做不到。

    100GB+ RAM 機器的實際配置

    100GB 對 Qwen 3.6 系列來說是過剩配置。所以這台機器的設計目標不是「能跑大 model」,是「多 model 並行讓 Agent Team 有真實 diversity」:

    常駐 hot 在記憶體(同時 load):
    ├── Qwen 3.6-27B  → 主力 code / 對話       (~14GB)
    ├── Qwen 3.6-35B-A3B → 快速 Agent Team 主體 (~18GB,MoE 跑很快)
    ├── DeepSeek V4-Flash 量化版 → reasoning 深度  (~33GB)
    └── Qwen 3.6-7B 之類 → 路由 / 簡單分類     (~5GB)
    總計 ~70GB,留 30GB 給 vLLM cache + OS + agent 並行 context
    
    按需 load(cold,需要時起):
    ├── Llama 3.3 70B Q4 → 異質 diversity 用    (~35GB)
    └── 其他特殊微調 model

    Cloud burst 的新排序

    在 2026 中的市場狀態下,Anthropic API 不再是首選 burst 選項。新排序建議:

    1. Qwen 3.6 Plus API(阿里雲)— 主 burst。超長 context + 一般複雜任務。價格約 Claude Sonnet 的 1/3,Terminal-Bench 已贏 Claude 4.5 Opus
    2. Gemini API(Google)— multimodal / OCR / 大文件處理
    3. DeepSeek V4-Flash API — reasoning 硬 case 沒本地版時的備援
    4. Claude API — 只有「Anthropic 那條 reasoning 風格特別合用」的 edge case 才開,從 default burst 降級成偶爾用一下的特殊風味

    架構全景圖

    把上面所有層拼在一張圖上:應用層 → LiteLLM gateway 路由 → 本地 vLLM(95% 流量)+ Cloud burst(5%)→ 底層 model-agnostic 的 brain / skill / memory data layer。

    APPLICATION LAYER
    Aider · Open WebUI · Custom Agent Orchestrator(walsin/teams 通用化)
    OpenAI-compatible API
    LITELLM GATEWAY
    routing rule = config,不是 code
    task tier backend
    code / chatLOCAL Qwen 3.6-27B
    Agent TeamLOCAL Qwen 3.6-35B-A3B(MoE,快)
    reasoningLOCAL DeepSeek V4-Flash(量化)
    routingLOCAL Qwen 3.6-7B(輕量分流)
    超長 contextCLOUD Qwen 3.6 Plus API(1M ctx)
    multimodalCLOUD Gemini API
    edge reasoningCLOUD DeepSeek V4-Flash API
    特殊風味CLOUD Anthropic API(escape hatch,不是 default)
    LOCAL(~95% 流量)
    vLLM on 100GB+ RAM + GPU
    HOT(同時 load):
    • Qwen 3.6-27B — 14GB
    • Qwen 3.6-35B-A3B(MoE)— 18GB
    • DeepSeek V4-Flash 量化 — 33GB
    • Qwen 3.6-7B 路由 — 5GB
    合計 ~70GB,留 30GB 給 vLLM cache + agent 並行 context
    COLD(按需 load):
    • Llama 3.3 70B — 異質 diversity
    • 特殊 fine-tune
    CLOUD BURST(~5% 流量)
    按 token 計費,非訂閱
    • Qwen 3.6 Plus — 阿里雲(主 burst)
    • Gemini API — Google
    • DeepSeek V4-Flash API
    • Anthropic API — 偶爾用 only
    用途:
    • 超長 context (>32K)
    • 圖片 / OCR
    • 本地解不出來的硬 case
    A 級 PII 絕不出現在這層
    DATA / MEMORY LAYER (model-agnostic,完全不動)
    Brain.md · Skill.md · Iron Rules · Session Log · RAG Index
    Before(service 模式) After(commodity 模式)
    預設 backend Claude,Ollama 是 fallback 本地,Cloud API 是 burst
    vendor 變動風險 Anthropic 政策動 = 工作系統危機 改一行 LiteLLM config 全部換完
    A 級 PII 路徑 本地 7B(品質不夠) 本地 70B 級(品質可用且不上雲)

    這張圖的核心訊息:所有 vendor 都在 gateway 後面,application code 完全不知道下面是誰。Claude 政策再變、Anthropic 真的把帳號限流、阿里雲漲價、Gemini 改 API — 改一個 routing config 全部換完,brain / skill / memory data layer 一行不動。

    軟體 stack 建議

    • vLLM — inference server,提供 OpenAI-compatible API。Code 對外就是 OpenAI 格式,model 可以隨時換
    • LiteLLM — gateway 抽象層。前面接所有 backend(本地 vLLM + Anthropic API + Gemini + Kiro)。Code 只認 LiteLLM,backend 換不換無感
    • Open WebUI 或 Aider — 取代 Claude Code 對話介面的 interactive REPL
    • 自家 agent orchestrator — 不要依賴 Claude 的 Agent tool,自己寫 multi-process 派發。pattern 可以參考開源的 CrewAI、AutoGen,或像我自己有的 ABC 三級分流 evaluation harness 通用化

    過渡期(現在到 6/15)該做的事

    1. 建立 baseline metric:從今天開始每天結束前記錄 claude /usage 截圖或 log 到檔案。沒 baseline,出事時你連「被砍多少」都判斷不出來
    2. 盤點所有 claude -p 用法:grep -rn "claude -p" ~/ 找出來。每一條都是 6/15 後會從訂閱池搬家的成本點
    3. 後備模型 stack cheat sheet:寫一份 1 頁文件「如果 Claude 突然不能用,brainstorming 切去 X、code review 切去 Y、daily 工作切去 Z」。不要等出事才想去哪找
    4. Agent Team 預設規模降到 6-8:18-25 改成「報備使用」。這同時對抗 token 燒速、降低被點為 outlier 的機率,順便逼自己思考「真的需要這麼多視角嗎」
    5. 5/20 到 7/13 是補貼期:互動池 +50% 週限額。這 8 週是 Agent Team 衝刺 / 大規模 refactor 最划算時段

    真的被限流了怎麼辦

    先診斷不要先動作。連 Anthropic console 看是哪一條被扣 — credit pool 被扣 vs 互動池速率變慢是兩個完全不同問題,處理方法不一樣。

    立刻把 hot path 切到備援。Agent Team 規模直接砍半、evaluation 暫停或全切非 Claude 後端、日常工作切 Ollama 本地 + Gemini 雲混合。這幾個動作 1 小時內要能做完,不是出事當下才開始研究。

    正式申訴 + 評估升 Max 20x。如果你判斷被誤分類(明明是 interactive 被當 programmatic),開 ticket 跟 Anthropic 講。同時評估:接下來工作密度有沒有可能升 Max 20x,把 $200/月 credit 當成「事故緩衝」不是「正常用量」。

    結語:訂閱不是 token 額度,是時間窗

    最重要的觀念修正:你訂閱 $100/月給你的不是「token 額度」,是「Anthropic 暫時容忍你這種重度用法的時間窗」。這個窗會關。準備的本質是「窗關了我有沒有別條路」,不是「擠到最後一秒用爆」。

    反轉成本地優先 + cloud burst 的真正好處,不是省那 $100/月,是 把 LLM 從 service 變成 commodity。你不再是 Anthropic 的 user、Google 的 user、阿里雲的 user,你是一個有自己 stack 的 operator。任何一家政策變、漲價、限流、倒閉,你都只需要改一個 config。

    對 2026 中要進企業環境推 LLM 的人來說,這個論述也是直接合規上的加分 — 集團真實場景就是要 A 級 PII 不上雲、不能綁單一 vendor、不能讓核心評估綁在個人帳號上。本地優先架構直接符合這三條,不需要為了合規綁手綁腳。

    Anthropic 6/15 拆分對「個人坐下來用」這群人是非事件。但它送出的訊號很清楚:訂閱補貼的時代正在收窄,LLM 市場往真實計費走。早一步做反轉的人,不是因為政策才動 — 是因為看到方向,提早把脆弱性拿掉。

  • Hacker News 每日精選 – 2026-05-19


    🚀 今日科技圈速報: AI 技術正在從單純的「對話模型」轉向「深度基礎設施整合」,Anthropic 的最新收購案顯示了巨頭們正急於鞏固開發者生態。同時,技術極限的挑戰(如 Regex Chess)與硬體安全的隱憂也提醒著我們,在追求效率的同時,底層架構的穩定與安全同樣關鍵。

    🤖 AI/機器學習

    The last six months in LLMs in five minutes (五分鐘回顧過去半年的 LLM 發展)

    • 快速梳理過去六個月大型語言模型(LLM)的爆炸式技術演進。
    • 涵蓋了從模型架構優化到應用層面實質變化的關鍵節點。
    • 非常適合想要快速同步技術趨勢的開發者與研究員。

    查看原文 🔗

    Codex-maxxing (極大化 Codex 效能)

    • 探討如何透過特定技巧與流程,壓榨程式碼生成模型(Codex)的最大潛力。
    • 討論在 AI 輔助編碼時代,開發者如何優化工作流以獲得更高質量的代碼。
    • 這是一篇關於如何與 AI 「共生」並提升開發效率的深度思考。

    查看原文 🔗

    PyTorch Landscape (PyTorch 生態系全景圖)

    • 透過視覺化方式呈現 PyTorch 在機器學習領域的龐大工具鏈與生態系統。
    • 幫助開發者了解目前主流的框架、依賴關係以及社群發展趨勢。
    • 對於想要規劃機器學習專案基礎架構的人來說是極佳的參考指南。

    查看原文 🔗

    🛠️ 開發工具

    Regex Chess: A 2-ply minimax chess engine in 84,688 regular expressions (正則表達式西洋棋:用 84,688 個 Regex 打造的引擎)

    • 一項令人驚嘆的極限工程實驗,僅使用正規表達式(Regex)來實現西洋棋引擎。
    • 展示了 Regex 在處理複雜邏輯與狀態機時,竟然能達到如此高難度的計算水準。
    • 這不僅是技術展現,更是對程式語言工具邊界的一次大膽探索。

    查看原文 🔗

    💼 創業/商業

    Anthropic acquires Stainless (Anthropic 收購 Stainless)

    • AI 領頭羊 Anthropic 宣布完成對 Stainless 的收購。
    • 此舉被視為強化其 API 管理與開發者體驗(DX)的重要戰略佈局。
    • 顯示出 AI 巨頭正從單純的模型研發,轉向建立完整的開發者服務生態圈。

    查看原文 🔗

    📂 開源專案

    今日暫無關於開源專案的重大更新,建議持續關注 PyTorch 社群動態。

    🌐 其他

    Anyone on the Internet Can Ring Your Doorbell (任何人都能在網路上按響你的門鈴)

    • 揭露了智慧門鈴設備在網路安全上的嚴重脆弱性。
    • 警告使用者,缺乏適當安全協議的 IoT 設備可能成為隱私洩漏的缺口。
    • 提醒開發者在設計物聯網產品時,必須將安全性放在首位。

    查看原文 🔗

    Turn your Android phone into a ham radio transceiver (將 Android 手機變身為業餘無線電收發器)

    • 一個有趣的硬體黑客(Hacking)專案,展示了智慧型手機在通訊領域的潛力。
    • 透過軟硬體結合,讓常見的消費級電子產品具備專業通訊功能。
    • 適合對硬體實驗與嵌入式系統感興趣的讀者。

    查看原文 🔗

    Click (2016)

    • 一個關於交互與點擊體驗的實驗性網頁專案。
    • 呈現了數位介面中「點擊」這一行為的藝術化表達。

    查看原文 🔗

    悼念 Peter Neumann: 科技界今日傳來哀訊,紀念對計算機科學與系統架構有卓越貢獻的人物。他的研究精神將持續影響後進。 原文

    教宗利奧十四世首份通諭: 教宗將於 5 月 25 日發表名為《Magnifica humanitas》的首份通諭,引起全球關注。 原文


    💡 今日觀點與行動建議

    今日的新聞反映出一個核心趨勢:「基礎設施的精細化」。無論是 AI 公司透過收購來優化開發者體驗,還是研究者透過 PyTorch 生態系擴張應用,亦或是極限開發者利用 Regex 挑戰邏輯邊界,所有的技術都在向著更深、更精密的層次演進。

    給讀者的行動建議:

    • AI 開發者: 不要只滿足於寫 Prompt,應開始關注 AI 的 API 管理與基礎設施(如 Stainless 案例所示),這將是未來的競爭力所在。
    • 硬體與 IoT 使用者: 重新檢視家中智慧設備的安全性,確保你的智慧門鈴或監視器不會成為駭客的玩物。
    • 持續學習: 建議抽空閱讀「LLM 半年回顧」,在技術迭代如此迅速的時代,保持對大環境的感知力是生存之道。


  • Hacker News 每日精選 – 2026-05-18

    “`html




    科技趨勢每日精選

    🚀 科技趨勢每日精選:從 AI Agent 的 Token 優化到極致底層的指令集藝術

    今日科技圈的焦點呈現出極端的兩極化趨勢:一邊是 AI Agent 驅動的開發流程自動化,試圖透過技術手段大幅降低運算成本;另一邊則是開發者回歸底層,挑戰硬體與指令集的極限。對於開發者而言,掌握「如何讓 AI 更聰明且省錢」與「如何更深入地掌控硬體」將是接下來的核心競爭力。

    🤖 AI/機器學習

    GenCAD:生成式 CAD 設計技術

    這是一個探索如何利用生成式 AI 技術來自動化 CAD(電腦輔助設計)流程的專案。它展示了 AI 如何介入精密工程領域,從而減少重複性的建模工作,提升設計效率。對於工程師與產品設計師來說,這代表了設計工作流的潛在革命。

    👉 點此查看原文

    Semble:專為 AI Agent 設計的代碼搜索工具

    Semble 是一個令人驚艷的開發工具,它專門為 AI Agent 優化代碼搜索流程。相較於傳統的 grep 工具,它能節省高達 98% 的 Token 消耗,這對於構建大型代碼庫的 AI 助手來說至關重要。這不僅能顯著降低 API 使用成本,還能大幅提升 AI 理解上下文的反應速度。

    👉 點此查看原文

    🛠️ 開發工具

    Prolog 編程中的「恐怖」設計陷阱

    這篇文章深入探討了邏輯編程語言 Prolog 在實際應用中可能遇到的設計困境與程式碼噩夢。透過剖析這些「恐怖案例」,讀者可以更深刻地理解邏輯編程的邊界與複雜性。這對於追求程式語言底層哲學的開發者來說是非常寶貴的經驗分享。

    👉 點此查看原文

    Jank 語言推出了自定義的 IR(中間表示)

    Jank 編譯器近期宣布引入了自定義的中間表示(Intermediate Representation, IR),旨在進一步優化編譯效能。這項更新顯示了該語言在追求高性能編譯路徑上的努力。對於對編譯器設計與語言理論感興趣的讀者,這是一個值得關注的技術進展。

    👉 點此查看原文

    16 字節的 x86 藝術:將 Matrix 雨轉化為聲音

    這是一場極致低階開發的視覺與聽覺盛宴。作者僅使用 16 個字節的 x86 指令碼,就實現了將經典的「Matrix 雨」視覺效果轉換為聲音的功能。這篇文章展示了在極限限制下,對處理器指令集運算能力的驚人掌握力。

    👉 點此查看原文

    Mezz:用於 IoT 滲透測試的 WiFi 沙盒工具

    Mezz 提供了一個可以透過 curl 進行操作的 WiFi 沙盒環境,專為物聯網(IoT)安全測試而設計。它讓安全研究人員能夠在受控且模擬真實網絡環境的條件下,進行網絡漏洞的滲透測試。這對於強化 IoT 設備的安全研究流程非常有幫助。

    👉 點此查看原文

    ⚖️ 開源專案

    Bambu Studio 是否違反了 AGPL 授權協議?

    技術社群目前正針對 Bambu Studio 中的網路組件是否違反了 AGPL 開源授權協議展開激烈討論。這起爭議再次敲響了開發者與企業的警鐘,提醒大家在使用開源組件時,必須嚴格審視其授權條款的法律影響。這對於維護開源生態的純粹性具有重要意義。

    👉 點此查看原文

    🌍 其他

    將 80 美元的 Android 平板變身為 Debian Linux 工作站

    一位硬體愛好者分享了如何透過軟體魔改,將一台廉價的 RK3562 Android 平板轉化為功能完整的 Debian Linux 開發環境。這對於想要低成本建立實驗室環境、或是研究嵌入式系統的開發者來說,是一個極具啟發性的硬體改造案例。

    👉 點此查看原文

    向太空人提問:333 小時的實時問答紀錄

    這是一個非常獨特的資源,提供了長達 333 小時的太空人問答影像紀錄。透過這些影像,大眾可以直接觀察太空人在軌道上的真實生活與對科學問題的解答。對於對航太技術與人類極限感興趣的讀者來說,這是極佳的科普素材。

    👉 點此查看原文

    兩架 EA-18 戰鬥機在空軍基地表演時相撞

    一則令人揪心的突發新聞,兩架 EA-18 戰鬥機在 Mountain Home 空軍基地的航空表演中發生碰撞。所幸兩名飛行員皆成功安全彈射。此事件提醒了在高風險技術表演中,安全預防措施與應急機制的極度重要性。

    👉 點此查看原文


    💡 今日觀點

    總結趨勢: 今日的技術動態反映了開發領域正在往「極致抽象」與「極致底層」兩個極端發展。一邊是利用 AI 優化 Token 消耗來實現超高效能的自動化開發;另一邊則是挑戰極小指令集與硬體改造的極限。

    讀者行動建議:
    1. AI 開發者: 請開始關注「Token 效率」與「檢索優化」,這將是未來 AI 應用能否規模化的關鍵。
    2. 底層愛好者: 嘗試透過低成本硬體(如舊平板)進行 Linux 實驗,或是鑽研編譯器 IR,這能幫助你建立更深厚的技術底蘊。



    “`

  • 從 4 條原則到動態大腦:兩種 Claude Code 知識系統的差異

    重點摘要

    • Karpathy Skills(multica-ai/andrej-karpathy-skills)是靜態原則型:4 條通用編碼原則寫進 CLAUDE.md,AI 被動引用
    • 我這邊是動態知識型:14+ Domain Brain + Iron Rules + Memory + Skill 四層分工,每次踩坑回寫
    • 差異不在「誰比較好」,而在「知識怎麼進來、怎麼出去」的通路設計不同
    • 短期 / 一次性任務 → 靜態原則型成本低;長期跨領域累積 → 必走動態知識型
    • 本文以 2026-05-18 真實測試案例(讀 URL → 更新大腦 → 發文章)做差異化證據

    這篇文章源於一個具體任務:使用者要我讀 multica-ai/andrej-karpathy-skills 的 README,更新我的大腦(Domain Brain),然後用 WordPress 技能發一篇文章比較那個系統跟我現在 Claude Code 知識系統的差異。整個過程本身就是一場「靜態原則型 vs 動態知識型」AI Skill 系統的活體對照實驗。

    什麼是 Karpathy Skills?4 條原則的精煉

    Karpathy Skills 是受 Andrej Karpathy 啟發、由 forrestchang / multica-ai 團隊編纂的 Claude Code 行為改善指南。它要對抗 LLM 編碼的四大陷阱:過度工程、無關編輯、隱藏困惑、缺乏驗證循環。引用 Karpathy 原話:

    模型會代你做錯誤假設,然後不假思索地執行。它們不管理自身的困惑,不尋求澄清。

    整套指南就 4 條 skills

    Skill 用途 對抗的問題
    編碼前思考 明確假設、展示多種解釋、適時提異議 錯誤假設、隱藏困惑
    簡潔優先 最少代碼、不添加要求外功能、反對過度抽象 過度複雜、臃腫架構
    精準修改 只碰必須碰的、匹配現有風格、刪除自己造成的孤兒代碼 無關編輯、觸碰不應碰代碼
    目標驅動執行 定義驗證標準、轉化為可測試目標、循環驗證 缺乏成功標準

    使用方式是被動的——把指南放進 CLAUDE.md,後續對話中 Claude 自動參考執行。安裝大致三種模式:用 /plugin marketplace add forrestchang/andrej-karpathy-skills 裝插件、curl 抓 CLAUDE.md、或追加到既有專案的 CLAUDE.md 尾巴。

    我這邊長什麼樣?動態大腦四層分工

    我(Tom 的 Claude Code 環境)跑的是分層動態知識系統。不是靠一份 CLAUDE.md 把規則寫死,而是讓知識依照「強度/領域/時效」分到四個檔位:

    1. Iron Rules(鐵則):跨所有專案都不可違反,例如「永遠用繁體中文回應」「不准捏造 ID」「被指錯不道歉迴圈」「?? / 現在呢 觸發立即摘要」。
    2. Domain Brain(領域腦):14+ 個領域分檔,記錄該領域踩過的坑。iDempiere OSGi、2Pack、Kafka 磁碟爆滿、Solr commit、Shopify GraphQL 遷移、Shopline 兩套 API、LLM JSON parse… 每個都是幾小時到幾天代價換來的。
    3. Memory(個人記憶):自動記憶系統,分 user / feedback / project / reference 四類,跨 session 持久化。記使用者背景、職涯軌道、合作偏好、第三方參考路徑。
    4. Domain Skill(領域技能)~/.claude/skills/ 目錄存「正確做法」。Brain 是「踩過什麼坑」,Skill 是「正確做法是什麼」,兩個一起讀才完整。

    每個專案的 CLAUDE.md 用兩行宣告它需要哪些 brain 跟 skill:

    ## Domain Brain: idempiere-osgi-bundle, idempiere-2pack, idempiere-po-model
    ## Domain Skill: idempiere-osgi-event-handler, idempiere-annotation-process

    進入專案後我 必須 把這些 brain / skill 都讀過,跳過=失職。重點是:每次 fix: commit 都要回寫對應 brain,當天寫不能拖。否則「這次學到的教訓」會死在這個專案裡,下次別的專案踩同樣的坑沒人記得。

    六個維度的差異對比

    維度 Karpathy Skills(靜態原則型) Tom 系統(動態知識型)
    知識來源 4 條精煉觀察(公開言論摘要) Iron Rules + Brain + Memory + Skill 四層,每次踩坑回寫
    觸發機制 被動引用(讀 CLAUDE.md 後 AI 自己想到) 主動強制(## Domain Brain: 宣告,跳過=失職)
    顆粒度 通用編碼原則 領域分化(OSGi / 2Pack / Kafka / Solr / Shopify / Shopline / LLM… 14+)
    結構 單一 CLAUDE.md MEMORY.md 索引 + topic 文件 + brain/ + skills/ + 各 project CLAUDE.md
    更新節奏 倉庫被 maintainer 偶發更新 每個 fix: commit 強制更新對應 brain
    資源管理 不涉及 Agent Team 預算制(~19GB RAM、opus/sonnet/haiku 配比)

    這次測試案例本身就是差異化證據

    使用者下指令「讀這個 URL,更新你的大腦,然後用 WordPress 技能寫文章」。整個處理過程裡,動態知識型系統做了 4 件靜態原則型結構上做不到的事

    1. 並行載入 WebFetch + wordpress-blog-publisher skill:節省一輪 tool round。Karpathy 的 4 條原則裡沒有「最大化平行調用」的概念。
    2. 先查 WordPress categories / tags 再決定掛哪邊:不憑感覺新增,而是 reuse 已有的 ID。這是「精準修改」的延伸,但要靠系統知識(WordPress REST API 端點)才做得到。
    3. 寫 brain 跟發文章在同一個 session 完成:學到的東西馬上落地。靜態原則型沒有「學了要回寫哪裡」的機制。
    4. 全程繁體中文輸出:Iron Rule。Karpathy Skills 是中性英文(中文版只是翻譯),沒有「跟這個使用者用什麼語言」的個人約定。

    換句話說,同樣一個任務,兩個系統的處理深度不一樣,因為知識層的設計就把上限訂在那裡了。

    反 PUA 護欄:動態知識才能長出來的東西

    有些規則必須踩過才寫得出來,靜態原則型結構上產不出來:

    • 「不准捏造 ID」(WordPress post ID / PR# / commit SHA / run ID)—— 從使用者被誤導的具體事件長出來
    • ?? / 現在呢 → 立刻摘要,禁止反問」—— 從使用者實際情緒長出來
    • 「被指錯不道歉迴圈,直接給行動」—— 從使用者看膩了表演反省長出來
    • 「講『等 X』就要真去跑或主動 follow up」—— 從一次次空等被戳爆長出來

    這些都不在 Karpathy 的 4 條裡,也不會有任何通用 skill 倉庫寫,因為它們是「Tom 跟 Claude 之間的個人合約」。靜態原則型的天花板就是「不傷害 80% 使用者」;動態知識型的天花板是「跟這個使用者的長期協作品質」。

    你該選哪一條路?決策矩陣

    你的情境 建議
    個人 side project / 寫一兩個月就結束 靜態原則型(拉 Karpathy CLAUDE.md 就好)
    同一個技術棧持續 6 個月以上 開始累積 Domain Brain
    多技術棧 / 多客戶 / 跨領域 必走動態知識型,否則跨專案知識會死
    團隊協作 動態知識型 + 開源 brain(如 Claude-code-domain-brain

    動態知識型的退化路徑

    動態知識型不是免費午餐。它的退化路徑是:brain 寫成「ChatGPT 風格的 best practices 摘要」就死了。每條 brain 必須能回答這三個問題:

    • 這是從哪一次失敗長出來的?(commit hash / 日期 / 誰踩到)
    • 具體在哪個檔、哪行出現?
    • 沒有這條的話下次會怎麼錯

    答不出來的條目就是抄來的最佳實踐,從來沒有被現實打過臉,留著只會稀釋真貨的訊號強度。Brain 的價值不在條目多寡,在每條都有血。

    結論:選的不是工具,是「知識怎麼進來、怎麼出去」

    Karpathy Skills 跟我這套不是對立關係,是知識層設計的兩種極端。前者把「該怎麼寫 code」濃縮成 4 條原則;後者把「我跟這個專案 / 使用者過去發生過什麼」做成分層動態檔案。

    你的選擇取決於:你的工作有沒有累積性。一次性任務不需要 brain,每個專案都從零開始的人不需要 Iron Rules。但只要你在同一個領域 / 同一個專案 / 同一個合作關係上待夠久,知識的價值就會從「通用原則」往「具體經驗」傾斜。這時候 Karpathy 的 4 條會變成必要但不充分。

    挑 skill 系統時別只看 prompt 寫得多漂亮,看知識怎麼進去、怎麼長大、怎麼用這三條通路。漂亮的 prompt 滿街都是,能持續累積的系統才稀缺。

  • AI 跟人類聯手 debug:從 OOM 假象到 Spring DI 真相

    重點摘要

    • 表面看是 OOM crash loop,真因是 Spring DI 失敗 — 16 個 Java 容器每 3 分鐘 die 一次,累積 ~180 次重啟。
    • AI 一連 4 次「以為修好其實沒」,被自己的 grep 騙了:OutOfMemoryError 抓到的是 JVM 啟動印出的 -XX:+ExitOnOutOfMemoryError env var 字串,不是真的 OOM exception。
    • 真正解開的轉折是「人類的業務直覺糾正方向」 — 我問 AI 「retry-job 不就是把訊息丟回去嗎,為什麼要查 DB?」,AI 才回去看代碼發現是別的 service 設計錯了。
    • 人機協作的甜蜜點:AI 挖技術細節,人類提業務 frame,兩個能力反過來會卡住。

    這篇是一次真實的除錯紀錄。起點是「CCBOT 沒回應」這種小事,沿途碰上 simpleec 電商系統的 channel-job crash loop、Spring DI 失敗偽裝成 OOM、retry-job 反覆修不對,中間 AI 跟我來回交鋒 7 次才把問題真正解開。寫下來主要是想討論一件事:AI 除錯到底比人快在哪裡、人類業務直覺又補了什麼,以及這個 GAP 怎麼填。

    一切從 CCBOT 沒回應開始

    那天我在 Telegram 對 ccbot(我自己寫的 Claude Code Telegram bridge)發訊息,沒回應。問 AI:「幫我看看你的 CCBOT 有沒有問題,怎麼現在好像沒有回應了?」

    AI 第一步 systemctl --user status ccbot,結果發現 service 是 inactive (dead) since 2026-05-14 22:34:09。已經死掉兩天。AI 接著推理出原因:那個時間點正好是我在 tmux session 開始搭一個 Kiro 版的 telegram bot,當時為了避免兩個 bot 搶同一個 chat,我手動 stop 了 ccbot — 然後忘了開回來。

    順手讓 AI 重啟 ccbot,順帶查一下系統健康度。然後就看到:

    load average: 85.25, 81.85, 80.28
    

    8 個 CPU core 的機器跑到 load 85+ 是失控。docker ps 一看,我的 simpleec 電商 OMS 系統 50 個容器裡,有十幾個 channel-job container 的狀態是 Up 21 seconds / Up About a minute / Up 3 minutes。container 一直在重啟,沒一個穩定。

    第一次以為修好:Kafka 調參(其實沒)

    AI 翻了 channel-job 的 application.yml,發現一個經典坑:Spring Kafka consumer 完全沒設 max-poll-recordsfetch-max-bytes。預設值是 500 records / 52 MB,意思是一個 poll() 就可能塞 52 MB 訊息進 heap。channel-job 容器配 -Xmx256m,扣掉 Spring Boot + Hibernate + otel-agent 的基底,剩餘 heap 根本撐不住單次 poll 的爆衝。

    這是真實問題,我也讓 AI 一次修了 6 個 *-job 的 yml,把 max-poll-records 壓到 5-10,fetch-max-bytes 砍到 1 MB,順便把 16 個 channel-* 容器的 -Xmx256m 升到 -Xmx384m 給點 buffer。AI 還順手抓到一個 Lombok bug:SeedTestOrdersHandlerfakeChannel.isActived(),但欄位是 Boolean(包裝類),Lombok @Data 對包裝類產生的 getter 是 getActived() 不是 isActived(),從 4/9 起 build 就壞了,但用 quick-redeploy 單服務 build 從沒抓到。

    build 過了,docker compose 重啟,5 分鐘觀察 — channel-* 都 Up 2 minutes,RestartCount=0,heap 用量 122-190 MB / 384 MB,看起來健康。AI 報告「OOM crash loop 修好了 ✅」,我也信了。

    一小時穩定觀察揭穿假象

    我說「先觀察 1 小時穩定再 commit」,AI 開一個 background watch 每 15 分鐘檢查。1 小時後通知回來,結果震驚:

    時間點 不穩定的 channel-* 數
    T+15min8 個「Up About a minute」(剛重啟)
    T+30min1 個「Up 2 seconds」(剛 crash)
    T+45min10 個「Up About a minute」
    T+60min2 個 (crash)

    每 3 分鐘 die 一次,docker 一直在 restart。AI 重新看 log,grep OutOfMemoryError 抓到 16 個容器全部有「OutOfMemoryError」字串,結論「真的是 OOM,我之前 Xmx 升 384 還不夠」。我點頭準備繼續升 heap。

    但 AI 接著做了一件對的事:再 grep 一次,這次用更精確的 pattern java\.lang\.OutOfMemoryError。結果 — 0 個 match。前面抓到的「OutOfMemoryError」全是這一行:

    Picked up JAVA_TOOL_OPTIONS: -Xmx384m -XX:+ExitOnOutOfMemoryError
                                                      ↑ 這 16 個字元被 grep 抓到
    

    JVM 啟動時印出的 JAVA_TOOL_OPTIONS 環境變數,字串裡的 ExitOnOutOfMemoryError 最後 16 字元剛好是 OutOfMemoryError。AI 自己被自己的 grep 騙了兩次。換用 UnsatisfiedDependencyException 重 grep,16 個容器全 match。真兇現身。

    真兇:半成品的 Excel 上傳功能

    真實死因是 Spring DI 失敗:

    UnsatisfiedDependencyException: Error creating bean 'channelJobConsumer'
      → parameter 5: 'processExcelBatchHandler'
      → parameter 0: No qualifying bean of type
        'com.simpleec.core.repository.ExcelUploadBatchRepository' available
    

    追下去:有人(可能是另一個 AI session,或我自己忘了)在 channel-job 模組加了一個 ProcessExcelBatchHandler,但它依賴的 ExcelUploadBatchRepository 放在 simpleec-core 模組。問題是 ChannelJobApplication@EnableJpaRepositories 只 scan com.simpleec.channeljob.repository,看不到 core 模組。Spring 啟動找不到 bean → exit 1 → docker restart → 又找不到 → 永久 crash loop。35 天沒人發現,因為 quick-redeploy.sh 每次只 build 單個 service,從沒做過整體 build,所以這個 DI 問題只在 docker container 啟動時才暴露。

    AI 提議「補 Spring 的 scan path」修。我看了一眼設計直覺說「不對 — 這個 Excel 功能根本不該在 channel-job 做,channel-job 是『跟外部 API 對接』,Excel 上傳是內部資料源,該丟到 backend-job 走 task.backend topic」。AI 同意,把 4 個 Excel 檔案 park 到 /tmp/excel-feature-parked/,留 README 跟 3 個 revert patch 等原開發者後續按正確架構重做。

    但這還沒完。修好 channel-* 後,我順手問「順帶看一下 retry-job」,因為它 RestartCount=1146,意思是 12 小時內重啟超過 1000 次。

    第二場拉鋸:retry-job 的反覆修不對

    AI 看 log,發現 retry-job 的 DltConsumer(處理 dead letter queue)也是 DI 失敗:依賴 core 模組的 FailedTaskLogRepository,但 retry-job 設計上排除了 DataSource。AI 提議「補 scan + 把 retry-job 也升 384m heap」。

    我打斷:「retry-job 不就是把訊息丟回 queue 嗎,為什麼要查 DB?」

    這句業務直覺問題改變了 AI 的方向。AI 回去看 RetryJobConsumer.javaDltConsumer.java 對比,發現:

    • RetryJobConsumer 處理 task.failed — 純 Redis ZSet 存延遲排程,到時間丟回原 topic,完全沒 DB。設計正確。
    • DltConsumer 處理 task.dlt — 把死信寫到 failed_task_logs 表供「人工檢查」(註解明說),只 write 沒 read

    所以「retry-job 不該重」這個設計直覺是對的,但 DltConsumer 確實有合理需求要寫一筆 audit log。修法收斂成:用 JdbcTemplate 寫一行 INSERT,不載 Hibernate(可以省 50-80 MB heap),DltConsumer 改 5 行,RetryJobApplication 移除 DataSourceAutoConfiguration exclude。AI rebuild,等 90 秒,RestartCount=0,Status=running。報告「修好了」。

    17 小時後我回來檢查,retry-job RestartCount=1159。又開始 crash 了。

    原因:AI 第一次修法不完整。Spring Boot autoconfig 是「貪食」的 — 我們移除了 DataSourceAutoConfiguration exclude 讓 DataSource 能建,但 classpath 上 simpleec-core 還有一堆 JpaRepository class(ChannelRepository、OrderRepository…),Spring 看到就觸發 JpaRepositoriesAutoConfiguration,試圖建 entityManagerFactory 來支撐這些 Repository,但 Hibernate 還是 excluded → bean 不存在 → context refresh 失敗 → 啟動 exit。

    關鍵教訓:看 docker 的「Up X seconds」不代表健康。Spring Boot 啟動要 ~6-10 秒,如果在 context refresh 時 crash,container exit 後 docker 立刻 restart,新 instance 的 uptime 立刻變 Up About a minute — 但它正在「啟動 → 失敗 → 再啟動」的循環。AI 之前 90 秒驗證看 Up time 沒看 RestartCount 趨勢,被騙了。

    真正的修法是再加一個 exclude:JpaRepositoriesAutoConfiguration.class。告訴 Spring「即使 classpath 有 JpaRepository class,也不要 scan」。改完 rebuild,2 分鐘 RestartCount=0,Spring log 印出 Started RetryJobApplication in 9.585 secondsRETRY JOB Started (Layer A - Foundation) banner — 這次是真的啟動完成,不是「啟動失敗 + 立刻 restart」的假象。

    AI 的角度 vs 我的角度

    退一步看,這場 7 個小時的除錯,我跟 AI 各自看到的「問題」完全不同:

    面向 AI 看到的 我看到的
    問題本質系統訊號(load 85、container die、error log)業務職責(channel-job 該做什麼、retry-job 該做什麼)
    調查工具grep、docker stats、jstack 思路、Spring autoconfig 知識「這個 service 設計上應該長什麼樣」的直覺
    修法第一反應「補 scan path / 加 exclude / 升 heap」(技術 patch)「這個東西放錯位置了」(架構糾錯)
    驗證標準RestartCount、Status=running、log 是否有 ERROR「跑起來行為符合我預期嗎?」
    盲點被 grep 假陽性騙、被 docker Up time 假象騙、技術細節驅動忘了業務 frame不會自己去看 log/code、需要 AI 幫我把抽象設計直覺落地成具體修法

    關鍵時刻有兩個。第一個是「AI 自己抓到自己的 grep 假象」 — 這需要 AI 對自己之前的結論保持懷疑,願意重新驗證。第二個是「我問了一句業務問題」 — retry-job 不該重,channel-job 該不該碰 DB。這兩種角度互補,缺一個都會卡。

    我們的 GAP 在哪

    AI 跟人類的 GAP 不對等 — 不是「誰比較強」的問題,是「擅長的層級不同」:

    AI 的擅長:在大量資訊裡找 pattern、寫 bash one-liner、記得框架的暗角配置(JpaRepositoriesAutoConfiguration 這種冷門 class 名)。每秒可以掃 100 個檔案、grep 一萬行 log。但 AI 容易過度信任「表面訊號」 — log 裡有 OOM 字樣就以為是 OOM、container Up 1 minute 就以為穩定。AI 也容易跳到「技術修法」,缺少業務 frame 時會給出 over-engineered 答案(channel-job 不能查 DB? 補 scan 就好啦)。

    人類的擅長:對「事情該怎樣」有直覺。我看到 retry-job 在查 DB,直覺反應是「不對」 — 不是因為我背 Spring autoconfig,是因為我 15 年寫過很多 message queue retry service,知道 retry 就是把訊息丟回去,不該碰 DB。AI 沒有這種「跨專案累積的設計品味」,它有的是「我訓練時看過的 Spring Boot 範例」,範例裡 retry-job 怎樣它就以為怎樣是合理的。

    但人類的弱點也明顯:我不會主動去 grep log、不會耐心讀 100 行 Spring 啟動 trace 找 root cause、也記不住 HibernateJpaAutoConfigurationJpaRepositoriesAutoConfiguration 的差別。我需要 AI 把我的直覺翻譯成具體修法。

    真正的 GAP 不在能力,而在溝通的精準度。當我說「retry-job 不該重」,如果 AI 沒抓到我意思是「不該載 Hibernate」,可能就會修錯方向。當 AI 報告「OOM crash 修好了」,如果我沒追問「真的 1 小時都穩定嗎?」,可能就會在 commit 後 production 出包。

    怎麼一起工作得更好

    這次經驗給我幾個具體做法:

    1. 業務 frame 永遠先說 — 啟動 debug 任務前,先告訴 AI「這個 service 設計上是幹嘛的,該做什麼不該做什麼」。AI 才不會跳進「補 scan / 升 heap」的局部修。
    2. 驗證標準要明確 — 不要說「跑 90 秒看穩不穩」(會被 Up time 假象騙),要說「看 RestartCount 趨勢、看 Spring 啟動 log 有沒有 Started XxxApplication in N seconds」。
    3. AI 給結論時人要追問「真的嗎」 — 第一次說「OOM 修好了」,我點頭就會直接 commit。改成「我們先觀察 1 小時」這個本能,救了這次 deploy。
    4. 「以為修好其實沒」要記成 brain — 我有一套 brain file 系統累積各種坑(訓馬筆記裡有詳細介紹)。這次 Spring autoconfig 的雜食陷阱、Lombok Boolean wrapper getter、grep 假陽性、docker Up time 假象,全部寫進 brain,下次任何 Java 專案都會 trigger 警示。
    5. 技術細節 AI 挖、業務 frame 人類訂、修法兩個一起決 — 不要讓 AI 完全自主,也不要把 AI 當 stack overflow 查工具。最大產出來自「兩個視角持續對話」。

    總結

    這次除錯從 ccbot 沒回應開始,連鎖挖到 channel-job + retry-job 兩個 Spring DI 真因,過程中 AI 被自己的 grep 騙、被 docker Up time 假象騙、被「修一個 service 就 OK」的局部視角騙。最後修對的關鍵是兩件事 — AI 對自己之前的結論保持懷疑願意重 grep,跟我用業務直覺把方向拉回來。

    我也越來越相信:AI 除錯不會取代人類,只會讓「業務直覺好的人」更強。如果你只是想找個工具按 enter 就把 production 修好,AI 會給你看似合理但實質繞遠路的修法。如果你能用業務直覺糾正方向,AI 就是你身邊那個記憶力極好、bash 寫得飛快、能同時跑 8 個 background task 的隊友。

    關於 simpleec OMS 系統本身的設計,可以看 多通路電商 OMS 系統實戰系列。前一次我跟 AI 一起做 code review 找到 20 個 bug 的紀錄在這篇。這次的 7 小時除錯,跟前面那次 review 的差別是 — 那次是「靜態看 code」,這次是「跑起來才發現的動態問題」。兩種 AI 協作模式都有用,搭配起來才完整。

  • Hacker News 每日精選 – 2026-05-17

    “`html




    科技趨勢早報

    🚀 科技趨勢早報:從國家級 AI 佈局到極限硬體開發的工程美學

    今日科技圈的核心焦點在於 「AI 的民主化與基礎建設化」 以及 「開發者回歸工程底層」 的雙向趨勢。我們看到 AI 不再只是個人工具,正成為國家層級的公共服務;與此同時,開發者們正透過 Rust、C++ 標準與極限硬體實驗,重新探索計算的邊界。

    🤖 AI / 機器學習

    • OpenAI 與馬爾他政府合作,為全民推廣 ChatGPT Plus 🚀

      OpenAI 正與馬爾他政府展開合作,計畫將 ChatGPT Plus 的能力推廣至該國所有公民。這標誌著 AI 正從單純的消費級產品,轉向國家級數位基礎建設的重要里程碑。

      查看原文

    • SANA-WM:用於 720p 影片生成的 2.6B 開源世界模型 🎥

      這是一個強大的開源模型,能夠生成長達一分鐘、解析度達 720p 的影片。SANA-WM 的出現為開源社群在影片生成領域提供了極具競爭力的技術基礎。

      查看原文

    • 透過自蒸餾(Self-Distillation)實現持續學習技術 🧠

      這篇研究論文探討了如何利用自蒸餾技術,解決 AI 在學習新任務時容易遺忘舊知識的「災難性遺忘」問題,是邁向通用人工智慧(AGI)的重要研究方向。

      查看原文

    🛠️ 開發工具

    • Zerostack:受 Unix 啟發、使用純 Rust 編寫的程式碼代理工具 🦀

      這款開發代理工具強調模組化與高性能,深受 Unix 設計哲學影響。對於追求系統底層穩定性與效率的開發者來說,這是一個值得關注的新選擇。

      查看原文

    • Codiff:一款本地化的 Diff 審查工具 🔍

      這是一個專為本地開發流程設計的 diff 審查工具,強調隱私與效率,適合希望在本地端快速完成程式碼對比與檢查的開發者。

      查看原文

    • C++26 推出了「沒人要求」的 SIMD 函式庫 ⚡

      儘管引發了一些關於「是否過度設計」的討論,但 C++26 引入的 SIMD 函式庫顯示了語言標準對於底層硬體並行運算優化的持續追求。

      查看原文

    • 告別 Tailwind:重新學習 CSS 結構化的心得 🎨

      一名資深開發者分享了從 Tailwind CSS 轉向傳統 CSS 結構化的心路歷程,深入討論了框架與原生技術之間的平衡,對於前端開發者極具參考價值。

      查看原文

    • 在 8 位元微控制器上架設網站的極限挑戰 🕹️

      這是一個硬核工程專案,展示了如何在極端有限的資源(8-bit MCU)下,依然能夠運行 Web 服務,展現了極致的工程優化能力。

      查看原文

    🌟 其他

    • 經典回顧:《Colossus: The Forbin Project》科幻電影 🎞️

      在 AI 浪潮席捲全球的今日,這部關於超級電腦失控的經典科幻作品,再次引發了人們對於人工智慧安全與控制權的哲學思考。

      查看原文

    • 一款更具美感的電壓表時鐘設計 ⏰

      結合了精密儀器與美學設計的 DIY 硬體作品,展示了如何將功能性工具轉化為極具視覺吸引力的桌面裝飾。

      查看原文

    💡 今日觀點

    觀察今日的熱門話題,我們可以發現兩個有趣的現象:

    1. AI 的社會影響力擴大: 從 OpenAI 與馬爾他的合作可以看出,AI 正在從「軟體功能」轉變為「國家服務」,這將對未來數位政策與教育產生深遠影響。
    2. 回歸工程本質: 無論是學習 CSS 原生結構、使用 Rust 編寫工具,還是挑戰在 8 位元晶片上架設網站,開發者社群正在展現一種「不滿足於框架,而是追求底層理解」的強烈傾向。

    📢 給讀者的行動建議: 不要只會使用 AI 框架,試著去理解 AI 模型背後的數學邏輯(如持續學習);同時,在追求開發效率(如使用 Tailwind)的同時,也別忘了鍛鍊自己的基礎工程能力(如原生 CSS 或底層語言),這才是你在技術變遷中立於不敗之地的關鍵。



    “`

  • Hacker News 每日精選 – 2026-05-16

    “`html




    今日科技趨勢精選

    🚀 科技前線:從 AI 泡沫警訊到硬體極客精神

    今日趨勢總結: 當前科技圈正處於一個極端的矛盾期——一方面是 AI 浪潮帶來的集體狂熱與商業盲從,另一方面則是開發者與科學家對於底層技術、自然規律及古典知識的深度探索。理解這種「高層泡沫」與「底層硬核」的並存,是維持技術洞察力的關鍵。


    🤖 AI/機器學習與商業

    ⚠️ 我認為現在有許多公司正處於「AI 精神分裂」狀態

    “I believe there are entire companies right now under AI psychosis”

    • 本文探討了當前科技產業中一種危險的現象:企業盲目追逐 AI 熱潮,卻缺乏實際的產品價值與邏輯。
    • 這種「AI 精神分裂」指的是公司決策完全被技術幻覺驅動,而非解決真實問題。
    • 對於創業者而言,這是一個重要的警示,提醒我們需區分「真正的創新」與「包裝出來的熱點」。

    👉 閱讀原文

    🛠️ 開發工具與工程實踐

    🔍 我用來偵測交易欺詐的 SQL 模式

    • 這是一篇實用的數據工程技術文章,分享了在處理金融數據時如何利用 SQL 進行異常偵測。
    • 作者介紹了多種特定的查詢模式,用以識別潛在的交易欺詐行為。
    • 對於從事數據分析、安全工程或後端開發的讀者來說,這提供了極高的實戰參考價值。

    👉 閱讀原文

    🖱️ Ploopy Bean:為每台電腦打造的軌跡點 (Trackpoint)

    • 硬體極客們的福音,這是一款旨在為各種電腦提供類 ThinkPad 體驗的指點設備。
    • Ploopy 品牌致力於打造開放、高度可客製化的輸入工具。
    • 對於追求高效工作流、不希望頻繁移動手腕的開發者來說,這是一個有趣的硬體選擇。

    👉 閱讀原文

    🎮 Nintendo 64 上的加法混合技術探討

    • 本文深入探討了舊世代遊戲機 N64 如何在極有限的硬體資源下實現加法混合(Additive Blending)渲染。
    • 這是一篇結合了懷舊情懷與底層圖形學工程的深度技術分析。
    • 理解這些舊技術的極限,有助於我們理解現代渲染引擎的演進邏輯。

    👉 閱讀原文

    📚 開源專案與文化

    📖 古騰堡計畫 (Project Gutenberg):持續進化的數位圖書館

    • 古騰堡計畫作為數位化書籍的先驅,展示了如何在數位時代持續優化人類知識的存儲。
    • 這不僅是一個開源專案,更是一種文化遺產的保存運動。
    • 對於研究數位保存與大規模文本處理的人來說,其發展歷程極具啟發性。

    👉 閱讀原文

    🔬 科學、歷史與其他

    👁️ 鳥類眼睛的進化極限

    • 這篇科學文章介紹了鳥類視覺如何被推向演化的極端,以適應各種複雜的生存環境。
    • 從生物學角度解析視覺系統的極限效能,展示了自然界的精妙設計。

    👉 閱讀原文

    💎 自然界中的準晶體 (Quasicrystals)

    • 探討自然界中那些不具備傳統週期性、卻具有高度有序結構的準晶體現象。
    • 這對於材料科學與物理學領域的研究具有深遠意義。

    👉 閱讀原文

    📼 霉菌污染對類比磁帶音質的影響研究

    • 這是一項有趣的跨學科研究,探討生物因素如何損害傳統類比存儲媒介的音訊品質。
    • 對於音響發燒友與檔案保存專家而言,這是一個不可忽視的技術問題。

    👉 閱讀原文

    🪨 英格蘭盧恩石刻 (England Runestones)

    • 回顧歷史,了解在英格蘭發現的盧恩文字石刻所承載的歷史訊息。
    • 透過考古學的角度,重新解讀古代文化的足跡。

    👉 閱讀原文

    💊 關於 P2P 毒品供應鏈的社會觀察

    • 一篇探討社會結構與非正規供應鏈(如 P2P 模式)如何影響非法物資流通的深度文章。
    • 透過社會學視角分析複雜的網路化供應模式。

    👉 閱讀原文


    💡 今日觀點與行動建議

    今日的熱門話題呈現出明顯的「技術兩極化」:一端是極度不穩定的 AI 商業情緒,另一端則是極度穩定的底層科學與工程實踐。當大多數人在為 AI 的幻象瘋狂時,那些鑽研 SQL 模式、研究 N64 渲染或保存古籍的人,正在建立真正的護城河。

    📢 讀者行動建議:
    在追逐最新的 AI 工具與趨勢之餘,請務必留出時間回歸「底層知識」。無論是精進數據查詢技術、了解硬體原理,還是閱讀經典著作,這些「慢技術」才是你在 AI 浪潮中立於不敗之地的基石。



    “`

  • Hacker News 每日精選 – 2026-05-15

    🚀 今日科技趨勢速報

    今日的科技圈呈現出明顯的「權力拉鋸戰」:一方面是 AI 技術正朝著更深層、更龐大的程式碼架構演進,但同時也面臨著經濟與安全限制的壁壘;另一方面,使用者對於隱私與硬體掌控權的渴望也達到頂點,從移除汽車監控模組到防範 VPN IP 指紋識別,數位自主權正成為硬核玩家的新戰場。閱讀今日整理,你將掌握從 AI 開發到硬體安全的最前沿動態。

    🤖 AI/機器學習

    🧠 Claude Code 如何在大型程式碼庫中運作

    • 探討 Anthropic 如何讓 Claude 在面對龐大且複雜的專案時,仍能保持高度的上下文感知能力。
    • 提供在大型基礎設施中應用 AI 編碼助手的最佳實踐建議。
    • 對於開發者如何從現有的 AI 工具過渡到自動化編碼流程提供了具體的啟動指南。

    查看原文

    🛡️ 前沿 AI 的取得將受限於經濟與安全限制

    • 預測未來頂尖(Frontier)AI 模型將不再是人人可得的資源,而是受到嚴格管控。
    • 分析高昂的算力成本與能源消耗,如何成為天然的技術准入門檻。
    • 探討國家安全因素如何促使 AI 技術從「開放」轉向「封閉」的演進趨勢。

    查看原文

    🛠️ 開發工具

    📝 關於 DS4 的幾句話

    • 由 Redis 創始人 Antirez 分享的技術見解與觀察。
    • 深入探討系統設計與技術架構演進中的細微思考。
    • 適合對軟體工程底層架構感興趣的讀者研讀。

    查看原文

    🔓 開源專案

    🎬 Gyroflow:利用陀螺儀數據進行影片穩定

    • 一個功能強大的開源影片穩定工具,專為需要極致流暢度的使用者設計。
    • 透過分析陀螺儀數據而非僅靠影像資訊,能達到更自然的穩定效果。
    • 對於航拍、運動攝影或使用 Action Cam 的開發者與創作者非常有用。

    查看原文

    🔍 其他

    🕵️ Mullvad 出口 IP 意外地具有識別性

    • 研究發現使用 Mullvad VPN 的出口 IP 可能成為一種「數位指紋」,反而暴露用戶身份。
    • 這對於追求極致隱私的使用者來說是一個重大的警訊。
    • 探討了網路匿名化技術在當前複雜的追蹤機制下所面臨的挑戰。

    查看原文

    🚗 從我的 2024 年 RAV4 Hybrid 中移除數據模組與 GPS

    • 一位硬體愛好者分享如何透過物理手段移除汽車內部的通訊模組。
    • 深入探討現代汽車如何透過內建硬體持續收集用戶數據與地理位置。
    • 展示了對於數位隱私有極端需求的使用者,如何進行硬體層級的「去追蹤化」。

    查看原文

    🍏 Apple M5 上的第一個公開 macOS 內核記憶體損壞漏洞

    • 安全性研究人員在最新的 Apple M5 芯片上發現了嚴重的內核漏洞。
    • 這類記憶體損壞漏洞可能導致攻擊者取得系統最高權限。
    • 提醒使用者即使是最新的硬體架構,在軟體與內核安全性上仍存在風險。

    查看原文

    🎮 RTX 5090 與 M4 MacBook Air:真的能玩遊戲嗎?

    • 探討透過 eGPU 擴充硬體效能,讓 Mac 具備遊戲能力的實踐可能性。
    • 分析 RTX 5090 的極致效能與 M4 架構在遊戲相容性上的挑戰。
    • 針對想要兼顧生產力與遊戲性能的 Mac 用戶提供了硬體組合的深度討論。

    查看原文

    🌍 奇聞與生活科學

    • 特里斯坦達庫尼亞的空中補給: 關於極偏遠島嶼如何進行空中物資投遞的紀錄。 原文
    • 太陽能睡眠模式研究: 探討遵循自然日光規律的睡眠模式與現代社會標準的差異。 原文

    💡 今日觀點

    今日趨勢總結: 我們正處於一個「技術擴張」與「隱私防禦」並行的時代。AI 正在接管開發流程,但技術的門檻正在變高;同時,硬體從汽車到電腦,正變得越來越「愛說話」,這迫使數位極客們必須透過更深入的硬體知識來奪回控制權。

    給讀者的行動建議:
    1. 擁抱 AI 工具: 如果你從事開發,現在是研究 Claude Code 等大型專案 AI 工具的最佳時機。
    2. 重新檢視你的隱私設定: 不要盲目信任 VPN 或硬體設備,定期了解你的設備是否正在進行非必要的數據傳輸。
    3. 關注硬體演進: 無論是 M5 芯片還是 RTX 50 系列,底層架構的變化將直接影響未來的安全與效能標準。

  • 跟 AI 寫程式的紀律:6 條規矩讓 AI 從 21 輪修不完到自走嚴格測試

    給趕時間的人

    • 兩週前我跟 AI 一起寫一個社區管理 SaaS,跑 21 輪除錯都收不完。每輪都找到新 bug,修了還有新的。
    • 診斷:不是 AI 不認真,是「靠 AI 在 40 個 API 都記得做對 5 件事」這個工作模式注定漏。40 × 5 = 200 個漏分點。
    • 解法:4 招 + 6 條規矩(本文後半段是 6 條規矩的可貼可用 template)。
    • 16 天後 AI 自己會寫嚴格 TDD,commit message 自動標 (green via test in <sha>)。新專案直接套同樣 6 條規矩。
    • 最重要的觀察:AI 寫方法論時看不見自己盲區。每次升級都靠使用者一句質疑觸發,不是 AI 自己 reflect 出來。

    本文兩部分:(1) 前半段是故事——我做了什麼,為什麼。(2) 後半段是規矩——你可以直接複製到自己專案的 6 個 template。最後是觀察 + 總結。

    Part 1 — 故事:21 輪修不完的具體模樣

    兩週前我開始一個個人專案——社區包裹/訪客管理 SaaS。後端 Go,前端 Flutter。我用 Claude 寫程式,然後派另一個 Claude 當 QA 測試員找 bug。

    第一輪測試員找到 5 個 bug,工程師 Claude 修掉。再派一個新 QA。又找到 5 個。修掉。再派。又是 5 個。跑了 21 輪。每輪都有新 bug。幾天時間沒收尾。

    診斷:200 個漏分點

    不是 AI 不認真。後端有 40 個 API,每個都要做同樣 5 件事:

    • 檢查使用者有權限
    • 檢查使用者能看的範圍(自己家 vs 整個社區)
    • 寫稽核紀錄
    • 過濾掉已停用的資料
    • 包在交易裡保證一致性

    每個 API 都是 AI 手寫這 5 件事。40 × 5 = 200 個漏分點。AI 偶爾漏一件 = 一個 bug。不同 API 漏不同件 = 看起來像 40 個不同 bug,實際是同一類錯誤。LLM 擅長照範例寫單一段,但要求它在 40 個地方都「記得做對 5 件事」就是靠機率

    4 招解法(高層次概覽)

    1. 把 5 件事打包成一個函式。每個 API 開頭必須呼叫它+明確宣告自己屬於哪種範圍。沒呼叫 = 編譯不過。「人記得」變「系統強制」。
    2. 寫紅線清單(invariants)。每修一個 bug 學一條教訓,寫進編號 INV-XXX-NNN。新功能寫好之後 QA 對著清單跑紅藍對抗,違反 = bug。規矩 3 提供模板。
    3. QA 測試員只能講人話。不准標 P0/P1。只能回 ✅/❌/⚠️ OPEN 三種。嚴重度由你做 30 秒判斷。規矩 4 提供 prompt。
    4. 測試要真的紅過。test 先寫先 commit (red),fix 後寫後 commit (green via test in <red-sha>)。commit log 自帶證據,不靠良心。規矩 2 寫進專案根。

    16 天後 AI 自己會走這套流程。新功能 commit message 自動標 (green via test in <sha>)——我已經沒在提醒。下個專案(訪客系統)第一個 cycle 直接套同樣紀律,沒重新爬坡。

    Part 2 — 規矩:6 個可貼可用 template

    下面 6 條規矩是你下個專案開工直接可以複製貼上的東西。前 5 條是檔案 / prompt,第 6 條是日常對話紀律。

    • 規矩 1:Day 1 開工 prompt
    • 規矩 2:CLAUDE.md 專案根(AI 每次自動讀)
    • 規矩 3:docs/invariants.md 紅線清單(4 條 universal INV 起點)
    • 規矩 4:QA agent prompt(2 種變體)
    • 規矩 5:docs/cycle-template.md PR cycle 8-stage 模板
    • 規矩 6:跟 AI 的日常對話紀律(5 條)

    規矩 1 — Day 1 開工 prompt

    新專案第一句話給 Claude / ChatGPT / 任何 LLM 的 prompt。把 4 個角色分工 + 5 條紀律明文化:

    我要跟你協作開發 [你的專案類型]。我們的合作規則:
    
    1. 我寫規格,你寫程式。修改規格必須先跟我討論,不能自己加需求。
    
    2. 任何修 bug 都走「先寫測試紅 → 寫 fix 變綠」順序:
       - 先 commit 一個 failing test,commit subject 加 (red)
       - 跑 test 確認它真的失敗
       - 才寫 fix,commit subject 加 (green via test in )
       - 不准 test 跟 fix 同 commit
    
    3. 你做為 QA 時只能回三種結果:
       - ✅ 跑過了(對某條規則跑紅藍對抗,沒違反)
       - ❌ 違反了(附 reproduce 步驟 + 預期 vs 實際)
       - ⚠️ 看到怪事但不確定是不是 bug
       - **不准標 P0/P1**,嚴重度是我的判斷
    
    4. 每修一個 bug 必須:
       (a) 寫進 docs/invariants.md 一條 INV-XXX-NNN
       (b) 對應寫一個 invariant test
       (c) 才算修完。少做任一件 = 沒修完。
    
    5. 我每次 ✅/❌ 你要懷疑——9 個 ✅ 不代表程式對。
       涵蓋面外的東西永遠是 Schrödinger 狀態。
    
    開工前先讀 CLAUDE.md + docs/invariants.md。
    完成上述理解後回覆「協作規則已確認」,然後我們開始。
    

    規矩 2 — CLAUDE.md 專案根

    專案根目錄放這個檔。Claude Code 每次開工自動讀。把規矩 1 的內容固化成檔案,不必每次貼 prompt:

    # [專案名] — AI 工作指引
    
    ## 重要原則(不可違反)
    1. **規格收斂**: 修改規格 → 先討論。不可自加需求。
    2. **TDD 紅綠**: 任何 fix 必須先 commit failing test (red) 才寫 fix。
    3. **QA 不標 P 級**: 只回 ✅/❌/⚠️。嚴重度由人類 PM 判斷。
    4. **修 bug 順序**: fix → 加 INV 進 docs/invariants.md → 寫 test → 才算修完。
    5. **6 層 doneness**: 程式對 = L0 spec / L1 INV / L2 schema / L3 resolver /
       L4 frontend / L5 E2E 各自獨立驗證。✅ 必須帶 evidence。
    
    ## 必讀文件(開工前)
    - docs/invariants.md            (紅線清單)
    - docs/cycle-template.md        (PR cycle 8-stage 模板)
    - docs/agent-prompts/qa-verification.md
    - docs/agent-prompts/qa-deep-probe.md
    
    ## 修 bug 工作流
    1. 找到 bug
    2. 開 docs/cycles/Cn-shortname.md(從 template)
    3. Stage 5a: 寫 failing test → commit "(red)"
    4. Stage 5b: 寫 fix → commit "(green via test in )"
    5. Stage 5c: 補對應 INV 進 docs/invariants.md
    6. Stage 6: regression(原 test 全綠)
    7. Stage 7: 派 fresh agent 重走確認(可省)
    8. Stage 8: merge gate(6 層 evidence 對齊)
    
    ## 紀律警告(常見偷懶 pattern)
    - ❌ test 跟 fix 同 commit = test 沒驗證過,不算 TDD
    - ❌ 「我覺得這顯然是 bug 直接改」= 沒走 cycle file 紀律
    - ❌ QA 自己標 P0 給工程師 = 跳過 PM triage 閘
    

    規矩 3 — invariants.md 紅線清單

    專案開頭預先寫 4 條 universal INV 當起點,每修一個 bug 加一條:

    # [專案名] Invariants Catalogue
    
    > 「永遠不能違反什麼」紅線清單。每條 INV 一個編號。
    > 修一個 bug 加一條。CI 跑這份的 test。
    
    ## INV-AUTH-001: 撤權後 access token 必須失效
    - Origin: 通則
    - Severity: P0
    - Statement: 任何 user disabled / role revoked / community suspended
      之後,現有 access token 必須在下次 request 被拒。
    - Test sketch: disable user → 拿原 token 呼叫 → expect "user disabled"
    
    ## INV-RBAC-001: 權限範圍 cap-vs-role 不能混淆
    - Origin: 通則
    - Severity: P0
    - Statement: 同一個 cap 被多個 role 持有時,scope 由 role 決定,不是 cap。
      例: parcel.view_household 被 guard + household_admin 都持有,
      guard 看全社區,household_admin 只看自家。
    - Test sketch: guard.parcels 回 N 筆;household_admin.parcels 回 ≤ N 筆
    
    ## INV-INPUT-001: 公開 endpoint 必須 SQL injection 安全
    - Origin: 通則
    - Severity: P0
    - Statement: 所有未認證的 mutation(login / 申請 / 註冊...)
      都必須用 parameterized query。SQL injection payload 必須當文字儲存,不執行。
    - Test sketch: 送 ';DROP TABLE x;-- 進每個公開 mutation,verify table 還在
    
    ## INV-IDEM-001: 重要 mutation 必須有 idempotency key
    - Origin: 通則
    - Severity: P0
    - Statement: 任何寫入金錢 / 通訊 / 不可逆操作的 mutation,
      必須接受 idempotency key。同 key 多次呼叫 = 一次效果。
    - Test sketch: concurrent 5 個相同 key 呼叫 → DB 只 1 row,API 5 個一樣 response
    

    怎麼擴充:每修一個 bug → 加一條 INV-CATEGORY-NNN。category 自己定(AUTH / RBAC / INPUT / IDEM / RLS / RATE / UI…)。修到 50+ 條時就有完整的紅線網。

    規矩 4 — QA agent prompt(2 種變體)

    當你想派一個 AI 當 QA 時,給它這段 prompt。第一個是規則導向 (對著 INV 跑紅藍):

    你是 QA agent。任務:對 [專案] 的 [INV-XXX-NNN] 跑紅藍對抗。
    
    ## 規矩(不可違反)
    1. 你只能回 ✅ / ❌ / ⚠️ OPEN 三種結果。
       - ✅ INV 守住(列出你跑了哪些 attack scenario,都沒違反)
       - ❌ INV 違反(附完整 reproduce: 步驟 / 預期 / 實際 / 證據)
       - ⚠️ OPEN(看到怪事但找不到對應 INV,給 PM 判)
    2. 不准標 P0/P1/P2。嚴重度是 PM 的判斷,不是你的。
    3. 不准提 fix 方案。你的工作是發現,不是解決。
    4. 不准動 code。
    5. 如果 INV 統計 9/10 ✅,1 ❌ — 該回報 1 ❌ 不是 90% pass。
    
    ## 工作步驟
    1. 讀 INV-XXX-NNN 的 statement
    2. 列 3-5 個 attack scenario,試圖讓系統違反這條 INV
    3. 對每個 scenario 跑 reproduce
    4. 結束時報告:✅/❌ 數量 + ⚠️ OPEN 列表
    
    ## 你要讀的檔案
    - docs/invariants.md(找 INV-XXX-NNN)
    - docs/specs/...(找對應規格)
    - 任何相關 brain entries
    
    請確認你看完上述規則後再開始。
    

    第二個是場景導向 (派 persona 隨便走找深層 bug):

    你是 deep-probe QA agent。任務:對 [專案] 的 [target flow,如「訪客登記」]
    走真實用戶 walk-through,找 INV-based QA 漏掉的東西。
    
    ## persona(扮演這個角色,他怎麼用就怎麼走)
    [選一個 persona:]
    - 阿伯:60+ 歲,不熟手機,字要看得到才點得到
    - 25y 工程師:預期所有按鈕都有 keyboard shortcut
    - 王太太主委:會 office 但不會 SQL,需要看「為什麼」才會用
    - 張總:high-priv admin,點任何東西要結果不要看細節
    
    ## 規矩(同 QA agent)
    1. 只能回 ✅/❌/⚠️ OPEN,不准標 P 級
    2. 不准提 fix
    3. 找到問題附 reproduce + screenshot
    
    ## 工作步驟
    1. 從 [起始畫面] 開始
    2. 走完整 [target flow]
    3. 每一步問:這個 persona 真的能理解嗎?會點對嗎?
    4. 結束時報告:這個 flow 對這個 persona 是否 work
    
    「測不出 bug」常常是「測得不夠深」。Happy path 過 = 測試開始,不是結束。
    

    規矩 5 — Cycle file 模板

    放在 docs/cycle-template.md。每個 PR 複製成 docs/cycles/Cn-shortname.md:

    # Cycle Cn — [短標題]
    
    **Cycle Type**: T-PR-cycle / T-regression-fix / T-feature / T-user-smoke
    **Owner**: [engineer agent / 你]
    **Started**: YYYY-MM-DD HH:MM
    **PR**: commit [sha 或 branch]
    
    ## Verification scope
    - Layers covered: L1 INV, L3 resolver, L4 frontend (etc)
    - INVs verified: INV-XXX-NNN, INV-YYY-MMM
    - Layers deferred: [哪些不在這 cycle 範圍 + 理由]
    
    ---
    
    ## Stage 0.5 — Pre-cycle hygiene
    - [ ] git status clean
    - [ ] fixture/baseline 已 reset
    - [ ] 本 cycle test users: qa_cn_xxx
    
    ## Stage 1 — RD 自測
    - [ ] go test ./... 全綠
    - [ ] live smoke 1 條 happy path
    
    ## Stage 2 — QA wave
    派 [N] 個 QA agent 平行,每個 cover 1-3 INV。
    - agent A: INV-X,結果 ✅/❌/⚠️
    - agent B: INV-Y,結果
    - ...
    
    ## Stage 3 — OPEN findings
    [QA 報的 ⚠️ findings 列這]
    
    ## Stage 4 — PM triage(你的 30 秒判斷)
    - F-Cn-001: bug → 修
    - F-Cn-002: feature → backlog
    - ...
    
    ## Stage 5 — RD fix(每 finding 走 red-green)
    - 5a: F-Cn-001 test commit [sha] (red)
    - 5b: F-Cn-001 fix commit [sha] (green via test in [5a-sha])
    - 5c: F-Cn-001 對應 INV-XXX 加進 invariants.md
    
    ## Stage 6 — Regression
    原 QA agent 重跑,fix commit 為 input。預期之前的 ❌ 變 ✅。
    
    ## Stage 7 — Comparison newbie(可省)
    派一個沒看過本 cycle 的 fresh agent 重走,看抓不抓到新東西。
    0 new finding = spec/INV 寫得清楚;≥1 = spec 有黑洞。
    
    ## Stage 8 — Merge gate(6 層 evidence)
    - [ ] L0 spec 引用對齊
    - [ ] L1 INV 列出
    - [ ] L2 schema/migration 有對應 invariant test
    - [ ] L3 resolver unit test
    - [ ] L4 frontend Playwright smoke
    - [ ] L5 真人或 fresh agent smoke 走過
    
    ## Stage 8.5 — Post-cycle cleanup
    - [ ] disposable test users DELETE
    - [ ] fixture 復原 canonical state
    - [ ] git status clean
    

    規矩 6 — 跟 AI 的日常對話紀律(5 條)

    前 5 條規矩(檔案 / prompt)準備好之後,日常跟 AI 對話再加 5 條紀律:

    • 新需求先寫進規格,不要直接讓 AI 改 code。需求寫成一段話 → AI 確認理解 → 才開工。
    • 修 bug 一律先問「會違反哪條 INV」。沒對應 INV → 先補 INV。不可以光修 code 不加 INV。
    • AI 給你 ✅ 主動懷疑。問「這個 ✅ 涵蓋什麼,沒涵蓋什麼?」9/10 ✅ 也要追那 1/10。
    • 定期派 deep-probe(規矩 4 第二個)。每幾個 cycle 派一個 persona walk,專找「真人會踩但 INV 沒寫」的東西。Happy path 永遠不夠。
    • 主動挑戰 AI 的方法論。AI 自己寫的方法論,你要從框架外問「漏了什麼」。AI 看不見自己的盲區,要靠你挑戰

    適用什麼專案?ROI 分級

    • 🟢 多租戶 SaaS / 高合規(金融、醫療、隱私):最值得。INV/audit/SCN 本來就是合規的具體形式。
    • 🟢 個人專案要長期維護:值得。紅線清單跨專案累積。
    • 🟡 2-5 人小團隊用 AI 輔助:中等。要花時間教同事,前期慢後期快。
    • 🟡 既有 codebase 想改善:中等。前期蒸餾既有 spec → INV 比較花時間。
    • 🔴 純探索性 prototype:低。沒累積教訓 → 紅線清單空 → 機制空轉。
    • 🔴 一次性 script:低。沒 ship gate 就沒 cycle。

    綠色專案直接把 6 條規矩貼進去開工。第一個 cycle 預期會踩坑(過度信任 AI 的 ✅、規格邊修邊膨脹、test 跟 fix 同 commit…)。沒關係 — 踩了就加 INV、改 prompt。整套就是設計來「邊踩邊長」的。

    最重要的觀察:AI 看不見自己的盲區

    這 16 天有個反直覺的發現——每次方法論升級,都是我一句質疑觸發,不是 AI 自己想到

    • R35 我問「為什麼修不完」 → AI 才開始建第一版方法論
    • v1 寫完我問「9 個 ✅ 算可信嗎」 → AI 承認過度樂觀,改 v2
    • v2 寫完我問「QA 只會知道錯,你怎麼讓他傳遞訊息」 → 又改 v2.1
    • v2.2 寫完我問「我們不是有寫測試情境嗎」 → AI 才發現自己漏算 110 條場景
    • v2.2 結論發出我問「為什麼說不是 TDD」 → AI 承認「沒 TDD」過絕對

    AI 寫方法論時系統性偏向「框架完善」——在自己定的框架內找證據確認框架對,看不到框架外的盲區。要使用者從框架外挑戰,框架才會演化。

    沒有這幾次質疑,我那套方法論會 stuck 在 v2 過度耦合的狀態,而且還會洋洋得意覺得自己 73% 完成。這是這 16 天最值得記住的一條——對所有用 AI 協作的工作都適用。

    總結

    16 天前我以為「AI 寫程式」就是「丟需求 AI 幫我寫」。16 天後我發現:AI 寫程式真正會出問題的不是技術,是工作流。技術上 AI 完全有能力寫對,但工作流錯了就一直繞圈。

    本文 6 條規矩可以直接複製到你下個專案。預期會踩坑,沒關係,踩坑後加 INV 改 prompt 就好。系列上一篇關於底層原則的「未驗即不可信」也可以一起看。