<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"><channel><title>想法與洞見 – Autotomy</title><description>探索 AI 優先開發、編碼護欄和可處置架構。</description><link>https://autotomy.dev/</link><language>zh-hant</language><item><title>你的 main 分支壞掉了。你有 200 個 commit 要查。</title><link>https://autotomy.dev/zh-hant/blog/git-bisect-binary-search-commit/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/git-bisect-binary-search-commit/</guid><description>Git bisect 把手動搜尋 commit 變成自動化的二元搜尋。以下說明如何找出引入 bug 的確切 commit，而不必一個個 checkout。</description><pubDate>Tue, 25 Aug 2026 00:00:00 GMT</pubDate></item><item><title>你的錯誤追蹤器知道它死在哪裡。這幫不了你重現它。</title><link>https://autotomy.dev/zh-hant/blog/production-crash-capture-replay/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/production-crash-capture-replay/</guid><description>Stack traces 告訴你 crash 發生在哪裡，而不是什麼導致的。以下是一個擷取與重播模式，能把生產環境的 crash 變成你真正可以除錯的本機測試案例。</description><pubDate>Mon, 24 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Symbolic Execution 找到了我 94% 測試覆蓋率都漏掉的整數溢位</title><link>https://autotomy.dev/zh-hant/blog/symbolic-execution-integer-overflow-coverage/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/symbolic-execution-integer-overflow-coverage/</guid><description>你的單元測試只檢查特定輸入。Symbolic execution 檢查所有可能的輸入。以下是它的運作原理、成本，以及從哪裡開始。</description><pubDate>Sun, 23 Aug 2026 00:00:00 GMT</pubDate></item><item><title>你的日誌正在外洩 PII，grep 救不了你</title><link>https://autotomy.dev/zh-hant/blog/pii-tracking-code-pipeline/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/pii-tracking-code-pipeline/</guid><description>大多數團隊都是在客戶抱怨後才發現 PII 外洩。以下說明如何從資料進入到輸出的整個過程追蹤敏感資料，並附上今天就能使用的程式碼範例。</description><pubDate>Sat, 22 Aug 2026 00:00:00 GMT</pubDate></item><item><title>你的 API 在生產環境掛掉，是因為 CI 測的是程式碼，不是 contracts</title><link>https://autotomy.dev/zh-hant/blog/api-contract-testing-ci/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/api-contract-testing-ci/</guid><description>大多數 CI pipeline 抓得到語法錯誤和邏輯 bug，卻漏掉了真正搞垮生產環境的 API contract 破壞。以下是修復方法。</description><pubDate>Fri, 21 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Crash Correlation 會說謊。以下是讓它指向真正 Bug 的方法。</title><link>https://autotomy.dev/zh-hant/blog/crash-correlation-triangulation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/crash-correlation-triangulation/</guid><description>統計除錯找到與當機相關的 predicates，但相關性不是檔案名稱與行號。以下是如何透過排序、過濾與三角測量，從相關分數走到真正的 bug 位置。</description><pubDate>Thu, 20 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Sentry 的 Seer 能讀懂你的 Traces。但這不代表它總是能找到根本原因。</title><link>https://autotomy.dev/zh-hant/blog/sentry-seer-trace-root-cause/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/sentry-seer-trace-root-cause/</guid><description>Seer 攝取 trace tree、關聯錯誤與效能分析資料來診斷分散式問題。以下是它的實際運作方式、擅長的領域，以及仍然需要人類協助的地方。</description><pubDate>Wed, 19 Aug 2026 00:00:00 GMT</pubDate></item><item><title>統計除錯本該終結 printf 除錯時代。大多數團隊卻從沒讓它跑起來。</title><link>https://autotomy.dev/zh-hant/blog/statistical-debugging-adoption-challenges/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/statistical-debugging-adoption-challenges/</guid><description>統計除錯承諾透過將程式行為與失敗關聯來精確定位 bug。以下是這個想法為何從未從研究論文跨進生產系統的原因。</description><pubDate>Tue, 18 Aug 2026 00:00:00 GMT</pubDate></item><item><title>你的測試通過了。你的資料仍然是錯的。</title><link>https://autotomy.dev/zh-hant/blog/statistical-debugging-production-data-anomalies/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/statistical-debugging-production-data-anomalies/</guid><description>統計除錯將你的生產資料視為訊號，將 bug 視為異常。以下是如何在不新增任何單元測試的情況下，發現資料損毀、差一錯誤與無聲失敗的方法。</description><pubDate>Mon, 17 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Metamorphic testing 發現了 147 個編譯器 bug 與一個自駕車缺陷。以下是它的運作原理。</title><link>https://autotomy.dev/zh-hant/blog/metamorphic-testing-production-bugs-compiler/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/metamorphic-testing-production-bugs-compiler/</guid><description>Metamorphic testing 在 GCC、LLVM、Vulkan shader compiler 與 ADAS 模擬器中發現了真實的 bug。這篇文章用可執行的程式碼解釋這項技術，並說明它適合放在測試套件的哪個位置。</description><pubDate>Sun, 16 Aug 2026 00:00:00 GMT</pubDate></item><item><title>LLM 能建議 Metamorphic Relations，但它保證不了正確性</title><link>https://autotomy.dev/zh-hant/blog/llm-metamorphic-relations-brainstorming/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-metamorphic-relations-brainstorming/</guid><description>大型語言模型是發掘 test oracles 時還算稱職的腦力激盪夥伴，但它會幻覺化性質、遺漏領域限制。以下是如何安全使用它們，而不會上線錯誤的測試。</description><pubDate>Sat, 15 Aug 2026 00:00:00 GMT</pubDate></item><item><title>大多數 Metamorphic Relations 都沒用，這裡教你怎麼挑出好的</title><link>https://autotomy.dev/zh-hant/blog/metamorphic-relation-quality/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/metamorphic-relation-quality/</guid><description>並非所有 metamorphic relations 都能抓到缺陷。弱的關係給你虛假的信心，強的關係才能找出真正的錯誤。以下是如何區分兩者，並建構一套真正有效的關係集合。</description><pubDate>Fri, 14 Aug 2026 00:00:00 GMT</pubDate></item><item><title>不知道正確答案是什麼，要怎麼測試程式碼？</title><link>https://autotomy.dev/zh-hant/blog/metamorphic-testing-oracle-problem/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/metamorphic-testing-oracle-problem/</guid><description>Metamorphic testing 讓你在不知道預期輸出的情況下驗證程式碼正確性。以下是它的運作方式、限制，以及如何開始使用。</description><pubDate>Thu, 13 Aug 2026 00:00:00 GMT</pubDate></item><item><title>TypeScript 會擋下非法呼叫：在型別系統中編碼protocol狀態</title><link>https://autotomy.dev/zh-hant/blog/typescript-phantom-types-protocol-state/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-phantom-types-protocol-state/</guid><description>如何運用 phantom types 與 `this` 參數，將非法的protocol轉換變成編譯期錯誤，而非執行期缺陷。</description><pubDate>Wed, 12 Aug 2026 00:00:00 GMT</pubDate></item><item><title>OpenAPI 給你字母表，Session Types 要的是文法</title><link>https://autotomy.dev/zh-hant/blog/openapi-session-types-protocol-gap/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/openapi-session-types-protocol-gap/</guid><description>OpenAPI 規格描述了請求與回應的 schema，但沒有規定合法的訊息順序。以下是能從中萃取什麼，以及哪些地方仍然需要手動補齊。</description><pubDate>Tue, 11 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Session types 確實有效。只是多數語言拒絕實作它們。</title><link>https://autotomy.dev/zh-hant/blog/session-types-research-to-production/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/session-types-research-to-production/</guid><description>Session types 將通訊protocol編碼進型別系統，把執行期protocol錯誤變成編譯期失敗。以下是它們為何在研究論文裡待了三十年，才終於能進入正式產品程式碼。</description><pubDate>Mon, 10 Aug 2026 00:00:00 GMT</pubDate></item><item><title>會話型別如何將deadlock轉化為編譯器錯誤</title><link>https://autotomy.dev/zh-hant/blog/session-types-deadlock-compiler-errors/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/session-types-deadlock-compiler-errors/</guid><description>會話型別將通訊protocol編碼到你的型別系統中，在程式碼執行之前將訊息傳遞不匹配轉化為編譯器錯誤。</description><pubDate>Sun, 09 Aug 2026 00:00:00 GMT</pubDate></item><item><title>抽象詮釋聽起來像博士學位的要求。現在已經不是了</title><link>https://autotomy.dev/zh-hant/blog/infer-abstract-interpretation-ci/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/infer-abstract-interpretation-ci/</guid><description>如何使用Infer在CI管道中執行形式化靜態分析，包含可運作的組態設定和現實權衡。</description><pubDate>Sat, 08 Aug 2026 00:00:00 GMT</pubDate></item><item><title>LLM可以為你的靜態分析警告排序。只是無法解釋原因。</title><link>https://autotomy.dev/zh-hant/blog/llm-static-analysis-triage/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-static-analysis-triage/</guid><description>大語言模型可以幫助分流靜態分析中的誤報，但它們無法像抽象詮釋那樣理解程式語義。以下是如何將兩者結合。</description><pubDate>Fri, 07 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Facebook用抽象詮釋實現了Android並行化。以下是它的運作原理。</title><link>https://autotomy.dev/zh-hant/blog/facebook-android-abstract-interpretation-races/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/facebook-android-abstract-interpretation-races/</guid><description>Facebook如何利用抽象詮釋和有意的不完整性，在數百萬行Android程式碼中大規模發現競態條件。</description><pubDate>Thu, 06 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Meta用從不執行程式的靜態分析器在投產程式碼中發現了10萬個缺陷</title><link>https://autotomy.dev/zh-hant/blog/meta-infer-100000-bugs-static-analysis/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/meta-infer-100000-bugs-static-analysis/</guid><description>Meta的Infer利用抽象詮釋和雙向推理，透過推理程式碼結構而非執行來發現空指標解引用、記憶體洩漏和競態條件。以下是它的運作原理以及如何在您自己的程式碼庫中使用它。</description><pubDate>Wed, 05 Aug 2026 00:00:00 GMT</pubDate></item><item><title>靜態分析無法證明你的飛機不會墜毀，但它能證明更有價值的事</title><link>https://autotomy.dev/zh-hant/blog/static-analysis-aviation-abstract-interpretation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/static-analysis-aviation-abstract-interpretation/</guid><description>抽象解釋會對每一個可能的程式狀態進行過度近似。如果除零錯誤在抽象層中無法觸及，那麼在真實程式碼中也同樣無法觸及。以下是它的運作原理與局限性。</description><pubDate>Tue, 04 Aug 2026 00:00:00 GMT</pubDate></item><item><title>如何證明你的程式沒有執行時錯誤（以及為什麼你很可能會放棄嘗試）</title><link>https://autotomy.dev/zh-hant/blog/abstract-interpretation-runtime-error-proof/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/abstract-interpretation-runtime-error-proof/</guid><description>抽象解釋讓你在執行前就能證明執行時錯誤不可能發生。以下說明它實際上如何運作、為什麼很困難，以及它在你的工具鏈中扮演什麼角色。</description><pubDate>Mon, 03 Aug 2026 00:00:00 GMT</pubDate></item><item><title>你的 C 程式碼可以在 capability 硬體上執行，而且不需要全面 rewrite</title><link>https://autotomy.dev/zh-hant/blog/cheri-c-porting-hybrid-abi/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/cheri-c-porting-hybrid-abi/</guid><description>CHERI 的 hybrid ABI 讓你逐步將 C 程式碼移植到 capability 硬體上。以下介紹如何編譯、會遇到什麼問題，以及如何在不 rewrite 整個 codebase 的情況下修復它們。</description><pubDate>Sun, 02 Aug 2026 00:00:00 GMT</pubDate></item><item><title>Capability 硬體沒有失敗，它只是早了四十年</title><link>https://autotomy.dev/zh-hant/blog/capability-hardware-cheri-history/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/capability-hardware-cheri-history/</guid><description>硬體層級的記憶體安全性自 1970 年代就已可行。以下是 capability 架構為何一再敗給扁平記憶體模型，以及 CHERI 為何終於改變了這道算式。</description><pubDate>Sat, 01 Aug 2026 00:00:00 GMT</pubDate></item><item><title>你的 C 相依程式庫可能讓整個行程當掉。WebAssembly 可以阻止它。</title><link>https://autotomy.dev/zh-hant/blog/c-library-wasm-sandbox/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/c-library-wasm-sandbox/</guid><description>用 container 來隔離單一 C 程式庫未免小題大做。將其編譯為 WebAssembly，在 WASI sandbox中執行，即可實現記憶體安全、基於權能的檔案系統存取和當機隔離，無需 Docker。</description><pubDate>Fri, 31 Jul 2026 00:00:00 GMT</pubDate></item><item><title>你的手機已經擁有能偵測記憶體損壞的硬體</title><link>https://autotomy.dev/zh-hant/blog/mobile-memory-tagging-extension/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/mobile-memory-tagging-extension/</guid><description>ARM Memory Tagging Extension 和 GWP-ASan 讓現代行動裝置在生產環境中偵測記憶體安全成為可能。本文介紹它們的工作原理和權衡取捨。</description><pubDate>Thu, 30 Jul 2026 00:00:00 GMT</pubDate></item><item><title>buffer overflow之所以反覆發生，是因為我們在軟體層面修復它</title><link>https://autotomy.dev/zh-hant/blog/cheri-hardware-buffer-overflow-prevention/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/cheri-hardware-buffer-overflow-prevention/</guid><description>CHERI是一種硬體擴展，它將每個指標轉變為帶有邊界的權能。本文介紹它如何在CPU層面阻止buffer overflow、代價幾何，以及如何在真實硬體上試用。</description><pubDate>Wed, 29 Jul 2026 00:00:00 GMT</pubDate></item><item><title>LLM 無法證明你的程式碼正確，但它能撰寫那些繁瑣的輔助程式</title><link>https://autotomy.dev/zh-hant/blog/llm-cleanroom-proof-obligation-automation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-cleanroom-proof-obligation-automation/</guid><description>Cleanroom 驗證需要生成並消除證明義務（proof obligations）。以下說明 LLM 如何自動化註解與驗證條件（VC）的生成，讓你能專注於真正困難的證明工作。</description><pubDate>Tue, 28 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Cleanroom 達到每千行 0.1 個缺陷。你不需要全盤照搬也能達到這個目標。</title><link>https://autotomy.dev/zh-hant/blog/cleanroom-pragmatic-subset/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/cleanroom-pragmatic-subset/</guid><description>Cleanroom software engineering 將 defect rate 降低 100 倍，但全面採用需要獨立的 test team 和 formal proof。這裡介紹一種 pragmatic subset，無需 overhead 即可捕獲大部分收益。</description><pubDate>Mon, 27 Jul 2026 00:00:00 GMT</pubDate></item><item><title>IBM 的 Zero-Defect Process 實現了每 KLOC 0.1 個 Bug。業界還是拋棄了它。</title><link>https://autotomy.dev/zh-hant/blog/ibm-cleanroom-zero-defects-disappearance/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ibm-cleanroom-zero-defects-disappearance/</guid><description>IBM 的 Cleanroom engineering 達到了比業界平均水準好 100 倍的 defect rate，然後消失在歷史中。它的消失與是否有效毫無關係。</description><pubDate>Sun, 26 Jul 2026 00:00:00 GMT</pubDate></item><item><title>真的有人驗證了 1 萬行程式碼零缺陷嗎？IBM 做到了，而且方法比結果更離奇。</title><link>https://autotomy.dev/zh-hant/blog/ibm-cleanroom-10000-lines-zero-defects/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ibm-cleanroom-10000-lines-zero-defects/</guid><description>Cleanroom software engineering 承諾透過 mathematical verification 而非 debugging 實現零缺陷增量。我們查看 IBM 的實際專案資料，看看這一說法是否成立。</description><pubDate>Sat, 25 Jul 2026 00:00:00 GMT</pubDate></item><item><title>你的模組有三層。你可能只寫了一層。</title><link>https://autotomy.dev/zh-hant/blog/cleanroom-box-structure-three-layers/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/cleanroom-box-structure-three-layers/</guid><description>Box Structure 強制你將模組的行為、記憶的狀態和實作方式定義為三個獨立且可驗證的層。以下是 Cleanroom 如何利用它們消除除錯。</description><pubDate>Fri, 24 Jul 2026 00:00:00 GMT</pubDate></item><item><title>IBM 禁止開發者執行自己的程式碼，從而交付了每千行程式碼 0.1 個缺陷的軟體</title><link>https://autotomy.dev/zh-hant/blog/ibm-cleanroom-01-defects-per-kloc/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ibm-cleanroom-01-defects-per-kloc/</guid><description>IBM 的 Cleanroom 工程流程透過預防而非發現缺陷，達成了比業界平均好 100 倍的缺陷率。以下是它的運作方式、為何幾乎無人使用，以及你今天可以借鏡什麼。</description><pubDate>Thu, 23 Jul 2026 00:00:00 GMT</pubDate></item><item><title>你的文學化程式在 CI 能無需你參與就完成 tangle 之前都是壞的</title><link>https://autotomy.dev/zh-hant/blog/ci-literate-programming-tangle/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ci-literate-programming-tangle/</guid><description>Literate programming 承諾單一事實來源，但手動的 weave 和 tangle 步驟會破壞 CI/CD 流水線。以下是如何自動化提取和文件生成，使 Markdown 檔案保持規範。</description><pubDate>Wed, 22 Jul 2026 00:00:00 GMT</pubDate></item><item><title>先向LLM解釋程式碼，讓我的缺陷率降低了85%</title><link>https://autotomy.dev/zh-hant/blog/llm-rubber-ducking-bug-rate/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-rubber-ducking-bug-rate/</guid><description>我花了30天時間，在向LLM索取程式碼之前先撰寫設計說明。結果改變了我對rubber-ducking的看法。</description><pubDate>Tue, 21 Jul 2026 00:00:00 GMT</pubDate></item><item><title>我把測試、程式碼和散文都放在一個 Markdown 檔案裡，再也不用往文件裡複製程式碼了</title><link>https://autotomy.dev/zh-hant/blog/literate-programming-markdown-python/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/literate-programming-markdown-python/</guid><description>Literate programming 將 Markdown 檔案作為單一事實來源，使文件、測試和實作保持同步。以下是如何用三十行 Python 實現它。</description><pubDate>Mon, 20 Jul 2026 00:00:00 GMT</pubDate></item><item><title>你的 Claude 對話已經是文件了。只是它會在 12 小時後消失。</title><link>https://autotomy.dev/zh-hant/blog/claude-thread-to-documentation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/claude-thread-to-documentation/</guid><description>LLM 對話包含意圖、被拒絕的替代方案以及可執行的程式碼。這正是文件應該包含的內容。以下是將 ephemeral chat 轉換為持久、可搜尋的文件，同時不遺失敘事的方法。</description><pubDate>Sun, 19 Jul 2026 00:00:00 GMT</pubDate></item><item><title>文字編輯器讓你寫無效程式碼。樹編輯器不會</title><link>https://autotomy.dev/zh-hant/blog/structured-editing-ast-text-editors/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/structured-editing-ast-text-editors/</guid><description>每個編譯器都將你的程式碼視為樹，但你的編輯器讓你編輯原始文字。以下是結構化編輯的實際樣子、為什麼它沒有佔領市場，以及如何在不更換工具的情況下借用其優勢。</description><pubDate>Sat, 18 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Donald Knuth希望程式讀起來像文學作品。編譯器另有打算。</title><link>https://autotomy.dev/zh-hant/blog/knuth-literate-programming-history/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/knuth-literate-programming-history/</guid><description>Literate programming承諾程式碼應該首先為人類編寫，其次才是為機器。四十年後，幾乎沒有人這樣寫。以下是軟體文件化中最優雅的理念為何未能改變我們工作方式的原因。</description><pubDate>Fri, 17 Jul 2026 00:00:00 GMT</pubDate></item><item><title>修復缺陷是容易的部分。弄清楚它為什麼存在才是重要的</title><link>https://autotomy.dev/zh-hant/blog/fagan-causal-analysis-defects/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fagan-causal-analysis-defects/</guid><description>大多數團隊修復缺陷後就繼續前進。同樣的缺陷反覆出現。以下是如何在費根審查內部執行因果分析，從而停止兩次編寫同樣的缺陷。</description><pubDate>Thu, 16 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Pull Request 審查能發現 15-30% 的缺陷。資料 50 年前就已給出答案。</title><link>https://autotomy.dev/zh-hant/blog/pr-reviews-catch-15-to-30-percent-defects/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/pr-reviews-catch-15-to-30-percent-defects/</guid><description>IBM、AT&amp;T、HP 與 Microsoft 的多項研究均證實，非正式程式碼審查大約能發現四分之一的缺陷。以下是資料實際說明的內容、該比例偏低的原因以及解決方法。</description><pubDate>Wed, 15 Jul 2026 00:00:00 GMT</pubDate></item><item><title>通用檢查清單什麼都抓不到。結構化檢查清單能發現60%的缺陷。</title><link>https://autotomy.dev/zh-hant/blog/fagan-structured-checklist-defect-detection/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fagan-structured-checklist-defect-detection/</guid><description>大多數審查檢查清單都是複製貼上的良好願望列表。Fagan inspection風格的結構化檢查清單基於實際缺陷數據構建，針對特定工件類型，並在個人準備階段使用。以下是如何構建一個有效的檢查清單。</description><pubDate>Tue, 14 Jul 2026 00:00:00 GMT</pubDate></item><item><title>大型語言模型可以預先審查你的程式碼，但它無法主持會議</title><link>https://autotomy.dev/zh-hant/blog/llm-fagan-inspection-preparation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-fagan-inspection-preparation/</guid><description>費根審查需要四到六個人、兩小時才能審完250行程式碼。大型語言模型可以透過承擔準備工作與檢查清單的執行來削減這部分成本，但它無法取代人類角色去發現最昂貴的缺陷。</description><pubDate>Mon, 13 Jul 2026 00:00:00 GMT</pubDate></item><item><title>Fagan Inspections 在測試前發現90%的缺陷。然後我們不再使用它。</title><link>https://autotomy.dev/zh-hant/blog/fagan-inspections-disappearance-ibm/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fagan-inspections-disappearance-ibm/</guid><description>Michael Fagan 在 IBM 設計的結構化審查流程，能在程式碼進入編譯器之前捕獲幾乎全部缺陷。但它也消耗了專案總工時的15%–20%。本文解釋軟體史上最有效的審查方法為何消失，以及團隊究竟失去了什麼。</description><pubDate>Sun, 12 Jul 2026 00:00:00 GMT</pubDate></item><item><title>你最優秀的審查員也會遺漏大多數缺陷。Fagan 於1976年在IBM測量了這一點。</title><link>https://autotomy.dev/zh-hant/blog/fagan-reviewer-defect-detection-variance/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fagan-reviewer-defect-detection-variance/</guid><description>即使是高級工程師，在非結構化審查中也只能發現一小部分缺陷。Michael Fagan 在IBM的研究揭示了原因，並建構了結構化審查流程來解決這一問題。</description><pubDate>Sat, 11 Jul 2026 00:00:00 GMT</pubDate></item><item><title>大多數程式碼審查只能發現20%的缺陷。Fagan Inspection能發現90%。</title><link>https://autotomy.dev/zh-hant/blog/fagan-inspections-90-percent-defects/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fagan-inspections-90-percent-defects/</guid><description>非正式的程式碼審查只能發現15%到30%的缺陷。Fagan Inspection是一種有50年歷史的結構化流程，持續報告60%到90%的缺陷移除率。以下是它的運作原理、團隊迴避它的原因，以及如何執行輕量級版本。</description><pubDate>Fri, 10 Jul 2026 00:00:00 GMT</pubDate></item><item><title>AutoVerus將40小時的證明編寫變成3次LLM呼叫。訣竅在於知道何時放棄。</title><link>https://autotomy.dev/zh-hant/blog/autoverus-llm-rust-verification/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/autoverus-llm-rust-verification/</guid><description>AutoVerus利用LLM智慧體網路為Rust程式碼產生Verus正確性證明，透過由SMT求解器回饋驅動的生成-修復-消除迴圈，自動化超過90%的證明義務。</description><pubDate>Thu, 09 Jul 2026 00:00:00 GMT</pubDate></item><item><title>LLM可以生成Rust程式碼，但形式化證明完全是另一回事。</title><link>https://autotomy.dev/zh-hant/blog/llm-rust-formal-proofs-hallucination/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-rust-formal-proofs-hallucination/</guid><description>大型語言模型能寫出品質驚人的Rust程式碼，但當你要求形式化證明時，它們會幻覺出不變量，並編造出沒有任何驗證器接受的語法。本文介紹它們真正做對了什麼、在哪裡崩潰，以及如何善用牠們。</description><pubDate>Wed, 08 Jul 2026 00:00:00 GMT</pubDate></item><item><title>乾等 race condition 是最爛的測試策略</title><link>https://autotomy.dev/zh-hant/blog/model-checking-race-conditions/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/model-checking-race-conditions/</guid><description>model checking 如何在數秒內碾壓你在生產環境跑幾天才能發現 concurrency bug 的做法，以及如何把它用在自己的程式碼上。</description><pubDate>Tue, 07 Jul 2026 00:00:00 GMT</pubDate></item><item><title>無需學習時序邏輯即可對程式碼進行模型檢驗</title><link>https://autotomy.dev/zh-hant/blog/is-there-a-model-checker-that-doesnt-require-learning-temporal-logic/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/is-there-a-model-checker-that-doesnt-require-learning-temporal-logic/</guid><description>像Kani這樣的有界模型檢驗器和像Alloy這樣的關係模型搜尋器，讓你能以普通的斷言和限制條件來驗證性質。你放棄了活性證明，換來的是以小時而非週為單位的學習曲線。</description><pubDate>Mon, 06 Jul 2026 00:00:00 GMT</pubDate></item><item><title>不寫一行證明也能證明 Rust 程式碼正確，但狀態空間就是代價</title><link>https://autotomy.dev/zh-hant/blog/rust-model-checking-kani-state-space/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/rust-model-checking-kani-state-space/</guid><description>像 Kani 這樣的模型檢驗工具讓你可以用斷言代替形式化證明來驗證 Rust 性質。棘手之處在於，當你的迴圈沒有小的邊界時會發生什麼。</description><pubDate>Sun, 05 Jul 2026 00:00:00 GMT</pubDate></item><item><title>無法對分散式protocol做單元測試，但可以做模型檢驗</title><link>https://autotomy.dev/zh-hant/blog/distributed-protocol-model-checking-tla/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/distributed-protocol-model-checking-tla/</guid><description>分散式缺陷在部署後修復成本高昂。模型檢驗能讓你在寫下第一行實作程式碼之前就發現它們。以下是如何使用 TLA+ 做到這一點。</description><pubDate>Sat, 04 Jul 2026 00:00:00 GMT</pubDate></item><item><title>跨環境複製 `.env` 檔案不是配置策略</title><link>https://autotomy.dev/zh-hant/blog/infrastructure-config-dsl-per-context/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/infrastructure-config-dsl-per-context/</guid><description>基礎設施團隊如何使用按上下文劃分的 DSL 來管理 dev、staging 和 production 之間的配置，使環境差異顯式且類型安全。</description><pubDate>Fri, 03 Jul 2026 00:00:00 GMT</pubDate></item><item><title>語法約束解碼: 讓每個 token 都強制 LLM 輸出有效語法</title><link>https://autotomy.dev/zh-hant/blog/grammar-constrained-decoding-llm/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/grammar-constrained-decoding-llm/</guid><description>LLM 會對語法產生幻覺，因為它們以機率方式採樣 token。語法約束解碼在每一步過濾詞表，只輸出保持語法有效性的 token。</description><pubDate>Thu, 02 Jul 2026 00:00:00 GMT</pubDate></item><item><title>從英語翻譯到主題很容易。使其具備確定性才是真正的問題。</title><link>https://autotomy.dev/zh-hant/blog/english-to-theme-deterministic-design-tokens/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/english-to-theme-deterministic-design-tokens/</guid><description>你可以從簡單的英語描述中生成設計令牌，但前提是將該描述視為帶有模式契約和snapshot test的限界上下文DSL。</description><pubDate>Wed, 01 Jul 2026 00:00:00 GMT</pubDate></item><item><title>丟掉語法檔案：用純 TypeScript 寫你的 DSL parser</title><link>https://autotomy.dev/zh-hant/blog/typescript-parser-combinators-dsl/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-parser-combinators-dsl/</guid><description>對於大多數 bounded-context 的 DSL 來說，parser generator是大材小用。parser combinator讓你可以用與應用程式相同的語言建構可用的parser，無需產生程式碼，也無需建置步驟。</description><pubDate>Tue, 30 Jun 2026 00:00:00 GMT</pubDate></item><item><title>執行時設定錯誤是你選擇允許的生產故障</title><link>https://autotomy.dev/zh-hant/blog/config-validation-build-time/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/config-validation-build-time/</guid><description>如何使用模式驗證和建置時檢查，在應用程式開始處理流量之前捕獲設定錯誤。</description><pubDate>Mon, 29 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的依賴能讀取環境變數。JavaScript允許它們這麼做</title><link>https://autotomy.dev/zh-hant/blog/javascript-capability-security-lockdown/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/javascript-capability-security-lockdown/</guid><description>Ambient Authority意味著Node.js程序中的任何程式碼都能觸碰檔案系統、網路和執行環境。本文將講解如何透過lockdown、compartment和顯式capability傳遞來剝除它。</description><pubDate>Sun, 28 Jun 2026 00:00:00 GMT</pubDate></item><item><title>網路鄰近性不等於身份：服務如何在不依賴環境權威的情況下完成認證</title><link>https://autotomy.dev/zh-hant/blog/service-authentication-without-ambient-authority/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/service-authentication-without-ambient-authority/</guid><description>大多數服務間信任來自網路位置，而非密碼學證明。本文介紹能力權杖、mTLS 和 SPIFFE 如何讓服務在不依賴環境權威的前提下完成認證，以及為何這做起來比想像中困難。</description><pubDate>Sat, 27 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的依賴項目可以讀取磁碟上的任何檔案。cap-std 讓它們必須先取得權限。</title><link>https://autotomy.dev/zh-hant/blog/rust-cap-std-capability-filesystem/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/rust-cap-std-capability-filesystem/</guid><description>Rust 的標準函式庫將環境檔案系統權限授予每一個依賴項目。cap-std 以權能式 API 取而代之，強制程式碼在開啟路徑之前先證明自己擁有存取權。</description><pubDate>Fri, 26 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的服務是無心的共犯：Confused Deputy 攻擊的原理</title><link>https://autotomy.dev/zh-hant/blog/whats-a-confused-deputy-attack-and-how-do-i-prevent-it/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/whats-a-confused-deputy-attack-and-how-do-i-prevent-it/</guid><description>Confused deputy 攻擊會誘騙具有高權限的服務，使其利用自身權限對自己造成傷害。以下是攻擊者如何利用隱性信任，以及為什麼 capability-based security 是解方。</description><pubDate>Thu, 25 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的權限檢查正在欺騙你</title><link>https://autotomy.dev/zh-hant/blog/typescript-capability-based-security/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-capability-based-security/</guid><description>Capability-based security 用不可偽造的權限 token 取代散落各處的 role 檢查。以下是如何在 TypeScript 中實作它，同時不讓你的程式碼變得難以閱讀。</description><pubDate>Wed, 24 Jun 2026 00:00:00 GMT</pubDate></item><item><title>如果每個函式都必須被賦予權限，而不是預設擁有呢？</title><link>https://autotomy.dev/zh-hant/blog/capability-based-security-permissions/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/capability-based-security-permissions/</guid><description>大多數程式碼在 ambient authority 下執行：每個函式都能碰觸一切。Capability-based security 顛覆了這個模式，強制函式必須接收明確且受範圍限制的權限。</description><pubDate>Tue, 23 Jun 2026 00:00:00 GMT</pubDate></item><item><title>讓 Type Checker 看得見的錯誤：停止拋出，開始回傳</title><link>https://autotomy.dev/zh-hant/blog/should-i-stop-throwing-errors-and-start-returning-them/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/should-i-stop-throwing-errors-and-start-returning-them/</guid><description>拋出的例外會讓型別系統看不到失敗路徑。以下是為什麼明確回傳錯誤能讓你的程式碼更誠實，以及如何在不折磨自己的前提下採用這種做法。</description><pubDate>Mon, 22 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Rust newtype 讓錯誤狀態在編譯期就無法被表示，而且完全免費</title><link>https://autotomy.dev/zh-hant/blog/rust-newtypes-zero-cost-safety/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/rust-newtypes-zero-cost-safety/</guid><description>一個單欄位的 wrapper struct 就能在不增加任何位元組開銷的情況下，抓出單位混淆與型別錯用的 bug。</description><pubDate>Sun, 21 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Switch statements 在編譯時期就讓 bug 漏了進去</title><link>https://autotomy.dev/zh-hant/blog/is-there-a-better-way-than-switch-statements-for-type-safe-matching/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/is-there-a-better-way-than-switch-statements-for-type-safe-matching/</guid><description>TypeScript 的 switch statements 會默默讓你忘記處理某些 case。以下說明如何將它們替換成經過 exhaustiveness-check 的 pattern，讓錯誤在 build 階段就失敗，而不是跑到 runtime 才出錯。</description><pubDate>Sat, 20 Jun 2026 00:00:00 GMT</pubDate></item><item><title>編譯器應該抓住遺漏的狀態案例，而不是你的 QA 團隊</title><link>https://autotomy.dev/zh-hant/blog/typescript-exhaustiveness-state-machines/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-exhaustiveness-state-machines/</guid><description>在state machine中新增狀態很簡單。記得更新每一個 switch 語句則不然。以下是讓 TypeScript 在你忘記處理某個案例時拒絕編譯的方法。</description><pubDate>Fri, 19 Jun 2026 00:00:00 GMT</pubDate></item><item><title>可以，但你的型別系統得先認得什麼是美元</title><link>https://autotomy.dev/zh-hant/blog/typescript-currency-types/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-currency-types/</guid><description>TypeScript 把所有數字視為同一種型別。本文示範如何讓編譯器區分 USD 與 EUR，在程式上線前就擋下貨幣轉換錯誤。</description><pubDate>Thu, 18 Jun 2026 00:00:00 GMT</pubDate></item><item><title>數字不只是數字：如何讓編譯器抓出單位錯誤</title><link>https://autotomy.dev/zh-hant/blog/typescript-unit-types-compile-time/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-unit-types-compile-time/</guid><description>該傳秒數的地方傳了毫秒，這種 bug 能通過所有測試。以下介紹如何將單位直接編碼進 TypeScript 的型別系統，讓混用在編譯階段就失敗，且執行期零成本。</description><pubDate>Wed, 17 Jun 2026 00:00:00 GMT</pubDate></item><item><title>TypeScript 竟然讓我把 user ID 傳進需要 order ID 的地方</title><link>https://autotomy.dev/zh-hant/blog/typescript-branded-types-newtypes/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-branded-types-newtypes/</guid><description>Type aliases 不會在 TypeScript 中建立不同的型別。Branded types 會，而且它們能在編譯時期就防止你搞混識別碼。</description><pubDate>Tue, 16 Jun 2026 00:00:00 GMT</pubDate></item><item><title>Differential Testing 不需要形式化證明也能運作，但 Common-Mode Failure 才是真正的陷阱</title><link>https://autotomy.dev/zh-hant/blog/differential-testing-common-mode-failures/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/differential-testing-common-mode-failures/</guid><description>Differential testing 讓你在不知道正確答案的情況下找到 bug。問題是，有相關性的錯誤看起來就像一致。以下是找出盲點的方法。</description><pubDate>Mon, 15 Jun 2026 00:00:00 GMT</pubDate></item><item><title>測試無法證明兩個函式等價。真正有用的是這個。</title><link>https://autotomy.dev/zh-hant/blog/function-equivalence-smt-solvers/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/function-equivalence-smt-solvers/</guid><description>N-version programming 假設你的實作結果一致。我們來看看為什麼測試不夠、SMT solver 如何真正證明等價，以及該在「夠好就好」和「形式化驗證」之間劃下哪條界線。</description><pubDate>Sun, 14 Jun 2026 00:00:00 GMT</pubDate></item><item><title>如果我的 LLM 變體意見分歧，哪一個才對？</title><link>https://autotomy.dev/zh-hant/blog/llm-variant-disagreement-resolution/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-variant-disagreement-resolution/</guid><description>並行運行多個 LLM 能抓出任何單一模型都會自信上線的錯誤。以下是如何建立一個真正有效的分歧解決系統。</description><pubDate>Sat, 13 Jun 2026 00:00:00 GMT</pubDate></item><item><title>五種實作卻沒有共識：到底該怎麼選出最好的那一個</title><link>https://autotomy.dev/zh-hant/blog/n-version-implementation-selection/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/n-version-implementation-selection/</guid><description>N-version programming 聽起來很簡單：跑多個實作，挑最好的答案。但在實務上，「最好」比「最常見」難定義得多。</description><pubDate>Fri, 12 Jun 2026 00:00:00 GMT</pubDate></item><item><title>同一個 LLM 就能寫出五種版本的函式。以下是讓它們真正不同的方法。</title><link>https://autotomy.dev/zh-hant/blog/llm-n-version-diverse-implementations/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/llm-n-version-diverse-implementations/</guid><description>用 LLM 進行 N-version programming 不需要多個模型。只要改變 prompt、角色設定和推理限制，就能從單一模型中產出多樣且正確的實作。</description><pubDate>Thu, 11 Jun 2026 00:00:00 GMT</pubDate></item><item><title>NASA 同時執行了 27 份相同的程式。漏洞們集體投票。</title><link>https://autotomy.dev/zh-hant/blog/nasa-n-version-programming-knight-leveson/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/nasa-n-version-programming-knight-leveson/</guid><description>N-version programming 曾宣稱獨立團隊會犯下獨立的錯誤。Knight 與 Leveson 在 1986 年的實驗證明了相反的事實，NASA 也默默退出了這條路。</description><pubDate>Wed, 10 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你有一半的 Cucumber Scenario 被跳過。這個狀態正在對你說謊。</title><link>https://autotomy.dev/zh-hant/blog/cucumber-skipped-scenarios-diagnosis/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/cucumber-skipped-scenarios-diagnosis/</guid><description>Cucumber 的 &apos;skipped&apos; 狀態隱藏了三種完全不同的問題。這裡教你如何診斷是哪一種正在蠶食你的測試套件，以及如何阻止它。</description><pubDate>Tue, 09 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的 Gherkin 規格正在對你說謊</title><link>https://autotomy.dev/zh-hant/blog/gherkin-specs-automated-sync/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/gherkin-specs-automated-sync/</guid><description>一旦你指望人類手動更新，Gherkin 規格就會立刻脫節。以下是如何將檢查流程自動化，讓 feature 檔案始終保持誠實。</description><pubDate>Mon, 08 Jun 2026 00:00:00 GMT</pubDate></item><item><title>編譯器檢查語法，測試應該檢查架構</title><link>https://autotomy.dev/zh-hant/blog/architecture-tests-ci-enforcement/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/architecture-tests-ci-enforcement/</guid><description>大多數團隊把架構規則寫在 wiki 裡。這裡教你怎麼把它們變成可執行的測試，當依賴圖偏離設計時就讓 CI 失敗。</description><pubDate>Sun, 07 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的 domain layer 引用了 Postgres。你的 CI 完全沒意見。</title><link>https://autotomy.dev/zh-hant/blog/clean-architecture-domain-infrastructure-ci/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/clean-architecture-domain-infrastructure-ci/</guid><description>Clean architecture 的圖在白板上畫起來很漂亮。這裡教你怎麼讓 build pipeline 自動執行 dependency direction，確保 domain code 絕對碰不到 infrastructure。</description><pubDate>Sat, 06 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的架構圖早已是謊言</title><link>https://autotomy.dev/zh-hant/blog/architecture-docs-code-generated-diagrams/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/architecture-docs-code-generated-diagrams/</guid><description>架構文件從你存檔的那一刻起就開始腐敗。以下說明如何透過程式碼產生的圖表、ADR 與自動化架構測試，讓文件保持誠實。</description><pubDate>Fri, 05 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的重試迴路假設第一次請求失敗了。它大概沒有。</title><link>https://autotomy.dev/zh-hant/blog/idempotency-keys-api-retries/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/idempotency-keys-api-retries/</guid><description>超時或當機不代表你的 API 請求遺失了。以下是 idempotency keys 如何讓重試變得安全，以及真正能防止重複的儲存模式。</description><pubDate>Thu, 04 Jun 2026 00:00:00 GMT</pubDate></item><item><title>比你的进程更長命的 lock：分散式租約的實際運作原理</title><link>https://autotomy.dev/zh-hant/blog/distributed-leases-fencing-tokens/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/distributed-leases-fencing-tokens/</guid><description>記憶體中的mutex會在伺服器重啟後消失。本文說明具有 fencing token 與 TTL 的分散式租約如何防止當機後的重複執行，以及它們仍然會失效的地方。</description><pubDate>Wed, 03 Jun 2026 00:00:00 GMT</pubDate></item><item><title>沒有 goroutine、沒有 timer、也沒有背景開銷的斷路器</title><link>https://autotomy.dev/zh-hant/blog/circuit-breaker-lazy-recovery-no-goroutines/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/circuit-breaker-lazy-recovery-no-goroutines/</guid><description>大多數斷路器函式庫會產生背景執行緒來探測恢復狀態。你並不需要它們。這裡介紹一種由請求驅動的設計，能在不犧牲正確性的前提下，消除所有背景開銷。</description><pubDate>Tue, 02 Jun 2026 00:00:00 GMT</pubDate></item><item><title>你的 Web Service 有一條 Graceful Shutdown 路徑。那就是 Bug。</title><link>https://autotomy.dev/zh-hant/blog/crash-only-software-web-services/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/crash-only-software-web-services/</guid><description>Crash-only software 把每一次失敗都當成 crash，把每一次啟動都當成 recovery。對 Web Service 來說，這意味著刪掉你的 shutdown 邏輯，並設計出能撐過 kill -9 的狀態。</description><pubDate>Mon, 01 Jun 2026 00:00:00 GMT</pubDate></item><item><title>當你不懂 mutant 改了什麼時，如何殺掉一個存活下來的 mutant</title><link>https://autotomy.dev/zh-hant/blog/killing-surviving-mutants/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/killing-surviving-mutants/</guid><description>Mutation testing 發現了一個 survivor，但你完全不知道這個 mutation 到底做了什麼。這裡有一個逐步方法，讓你在還沒理解 mutant 之前就能寫出正確的 test。</description><pubDate>Sun, 31 May 2026 00:00:00 GMT</pubDate></item><item><title>Auth 程式碼需要 90% mutation coverage。你的 string utils 不需要。</title><link>https://autotomy.dev/zh-hant/blog/mutation-score-per-module-risk/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/mutation-score-per-module-risk/</guid><description>為何在整個 codebase 強制套用單一 mutation score 是錯的，以及如何根據實際風險設定各模組的門檻。</description><pubDate>Sat, 30 May 2026 00:00:00 GMT</pubDate></item><item><title>你的測試全過了，Mutation Score 卻只有 40%——Surviving Mutant 到底在跟你說什麼</title><link>https://autotomy.dev/zh-hant/blog/my-tests-pass-but-my-mutation-score-is-40-whats-a-surviving-mutant/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/my-tests-pass-but-my-mutation-score-is-40-whats-a-surviving-mutant/</guid><description>Code coverage 告訴你很安全，Mutation testing 卻說你的測試大多是擺設。這篇文章告訴你 surviving mutants 如何戳破這個假象，以及你該怎麼補破洞。</description><pubDate>Fri, 29 May 2026 00:00:00 GMT</pubDate></item><item><title>Rust 的 Mutation Testing 確實有效，但編譯時間會讓你痛苦</title><link>https://autotomy.dev/zh-hant/blog/rust-mutation-testing-cargo-mutants/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/rust-mutation-testing-cargo-mutants/</guid><description>cargo-mutants 能找出那些只會假裝驗證程式碼的測試。以下是 mutation testing 在 Rust 中的運作原理、它能抓到什麼問題，以及編譯時間的成本是否值得。</description><pubDate>Thu, 28 May 2026 00:00:00 GMT</pubDate></item><item><title>驗證光譜：為什麼 AI 寫後端最強</title><link>https://autotomy.dev/zh-hant/blog/ai-coding-validation-spectrum-backend-web-mobile/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ai-coding-validation-spectrum-backend-web-mobile/</guid><description>AI 寫程式遵循一條驗證梯度。後端在毫秒內完成驗證。網頁端需要幾分鐘。行動端需要幾小時。回饋循環的速度與確定性直接決定了 AI 寫程式在各技術層的實際效果與可靠程度。驗證速度沿著光譜遞減，決定了 AI 編碼在哪裡能自主迭代、在哪裡必須仰賴人類的判斷。</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>猴子、機關槍、aimbot：編碼團隊的 AI 治理</title><link>https://autotomy.dev/zh-hant/blog/monkey-machine-gun-aimbot/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/monkey-machine-gun-aimbot/</guid><description>AI 程式碼治理不是要從初階開發者和 AI 代理人手中奪走工具，而是要安裝guardrails，讓每一發子彈都能命中目標而不造成附帶損害。</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>Mutation testing 跑四小時，團隊到底怎麼在 CI 裡用它？</title><link>https://autotomy.dev/zh-hant/blog/mutation-testing-takes-4-hours-how-do-teams-actually-use-it-in-ci/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/mutation-testing-takes-4-hours-how-do-teams-actually-use-it-in-ci/</guid><description>大多數團隊不會在每次 commit 都跑完整的 mutation testing。這裡告訴你工程團隊如何實際把 mutation testing 整合進 CI，又不會搞爛 build pipeline。</description><pubDate>Wed, 27 May 2026 00:00:00 GMT</pubDate></item><item><title>單元測試全綠，資料卻憑空消失</title><link>https://autotomy.dev/zh-hant/blog/database-persistence-testing-mocks/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/database-persistence-testing-mocks/</guid><description>模擬資料庫測試只能驗證 SQL 語法，無法確認資料列是否能撐過當機、並發寫入或 schema 不符。以下是真的測試資料持久化的方法。</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>恐懼 vs. 勢如破竹：AI 程式設計的兩種現實</title><link>https://autotomy.dev/zh-hant/blog/fear-vs-steamroll-ai-coding-divide/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fear-vs-steamroll-ai-coding-divide/</guid><description>AI 程式設計對能從任何混亂中恢復的精英團隊有效。其他人得到的只有恐懼、失敗的 CI，以及被放棄的實驗。差距不在於模型。</description><pubDate>Tue, 26 May 2026 00:00:00 GMT</pubDate></item><item><title>不用淹沒在 mock action 裡也能測試 Redux</title><link>https://autotomy.dev/zh-hant/blog/redux-testing-real-state-transitions/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/redux-testing-real-state-transitions/</guid><description>把每個 Redux action 都 mock 掉，只會讓你的測試變成變更日誌驗證器。以下介紹如何改用真實的狀態轉換來測試你的 store。</description><pubDate>Mon, 25 May 2026 00:00:00 GMT</pubDate></item><item><title>AI 輔助寫碼在生產環境中：為何大多數團隊半途而廢</title><link>https://autotomy.dev/zh-hant/blog/ai-coding-in-production-autotomy-framework/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ai-coding-in-production-autotomy-framework/</guid><description>大多數團隊嘗試 AI 輔助寫碼，交付的程式碼未能通過 QA，然後放棄。問題不在模型，而在於缺乏讓 AI 輸出值得信賴的防護機制。</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate></item><item><title>跑 100 次測試是騙人的：如何真正決定 Property-Based Test 的執行次數</title><link>https://autotomy.dev/zh-hant/blog/property-based-testing-run-count/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/property-based-testing-run-count/</guid><description>Property-based testing 預設跑 100 個範例是一種社交妥協，而非統計策略。以下是根據你的信心需求與 CI 預算來選擇執行次數的方法。</description><pubDate>Sun, 24 May 2026 00:00:00 GMT</pubDate></item><item><title>Fuck-u-code：你的 AI 流水線遺忘的確定性品質閘門</title><link>https://autotomy.dev/zh-hant/blog/fuck-u-code-deterministic-quality-gate-ai-pipeline/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/fuck-u-code-deterministic-quality-gate-ai-pipeline/</guid><description>你有型別檢查、語法檢查和架構規則。但你的確定性堆疊對複雜度、重複和命名災難視而不見。這裡有個零成本的解決方案。</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate></item><item><title>Rust 的 Property-Based 測試：找出單元測試漏掉的 Bug</title><link>https://autotomy.dev/zh-hant/blog/rust-property-based-testing-quickcheck/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/rust-property-based-testing-quickcheck/</guid><description>範例導向的測試只涵蓋你想得到的輸入。Property-based 測試會產生隨機資料、檢查不變條件，並將失敗縮減到最小的反例。</description><pubDate>Sat, 23 May 2026 00:00:00 GMT</pubDate></item><item><title>為什麼第一版從來都不是問題：AI 程式開發與長期維護</title><link>https://autotomy.dev/zh-hant/blog/ai-coding-why-version-one-is-never-the-problem/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ai-coding-why-version-one-is-never-the-problem/</guid><description>AI 程式開發工具擅長生成第一版。真正的工程挑戰從第四版開始——當團隊需要在不破壞其他一切的情況下修改某些東西。</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>AI 生成程式碼與可替換性原則</title><link>https://autotomy.dev/zh-hant/blog/ai-generated-code-replaceability-principle/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ai-generated-code-replaceability-principle/</guid><description>衡量 AI 生成程式碼品質的真正標準，不在於第一天是否能運作，而在於第三十天你能否替換它，而不需要 rewrite 其他所有東西。</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>AI Codebase 的確定性防護機制</title><link>https://autotomy.dev/zh-hant/blog/deterministic-guardrails-ai-codebases/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/deterministic-guardrails-ai-codebases/</guid><description>人工審查不一致。AI 審查更糟。AI 生成 codebase 唯一可擴展的防禦是確定性 enforcement：讓建置失敗的規則，而非被忽略的建議。</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>你的單元測試過了。你的正式環境程式碼還是壞的。</title><link>https://autotomy.dev/zh-hant/blog/i-write-unit-tests-why-do-bugs-still-slip-through/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/i-write-unit-tests-why-do-bugs-still-slip-through/</guid><description>程式碼覆蓋率指標製造了虛假的安全感。以下是單元測試為何總是漏掉那些讓你睡不著的 bug，以及你該改測什麼。</description><pubDate>Fri, 22 May 2026 00:00:00 GMT</pubDate></item><item><title>Rust Runtime Contracts 在 Release Build 中可以零成本，但編譯器不會幫你做到</title><link>https://autotomy.dev/zh-hant/blog/rust-zero-cost-runtime-contracts/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/rust-zero-cost-runtime-contracts/</guid><description>Rust 會自動剝除 debug assertions，但真正的 design-by-contract 需要的遠不止 debug_assert!。以下說明如何建立零成本的 runtime contracts，讓它們從你的 release binary 中完全消失。</description><pubDate>Thu, 21 May 2026 00:00:00 GMT</pubDate></item><item><title>零個、一個，還是十二個：一個 production function 到底需要多少 assertion</title><link>https://autotomy.dev/zh-hant/blog/production-assertion-decision-framework/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/production-assertion-decision-framework/</guid><description>開發者要不是把 assertion 灑滿整份程式碼，就是完全避開它們。這裡有一個決策框架，能幫你區分出有用的 invariant 與會導致 production crash 的觸發條件。</description><pubDate>Wed, 20 May 2026 00:00:00 GMT</pubDate></item><item><title>你的驗證層比業務邏輯還龐大</title><link>https://autotomy.dev/zh-hant/blog/declarative-runtime-contracts-validation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/declarative-runtime-contracts-validation/</guid><description>手動驗證讓 codebase 膨脹，卻還是漏掉邊界情況。以下說明如何透過宣告式 schema 來 enforce runtime contracts，讓它們不干擾你的開發流程。</description><pubDate>Tue, 19 May 2026 00:00:00 GMT</pubDate></item><item><title>TypeScript strictNullChecks 是編譯時守門員，不是執行時防護罩</title><link>https://autotomy.dev/zh-hant/blog/typescript-strictnullchecks-runtime-nulls/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/typescript-strictnullchecks-runtime-nulls/</guid><description>strict 模式抓得到你寫出來的 null，卻抓不到執行時從 API、DOM 查詢和 JSON.parse 傳進來的 null。型別系統到此為止，接下來就是你的防線。</description><pubDate>Mon, 18 May 2026 00:00:00 GMT</pubDate></item><item><title>在 AI 時代，程式碼審查會變成規格審查</title><link>https://autotomy.dev/zh-hant/blog/code-review-becomes-specification-review/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/code-review-becomes-specification-review/</guid><description>當 AI 能從規格產生實作、測試與 contracts，槓桿最高的人類工作就會往上游移動。最需要被仔細審視的東西，其實是規格本身。</description><pubDate>Sun, 17 May 2026 00:00:00 GMT</pubDate></item><item><title>AI 安全棧: types、contracts、property tests 與 mutation gates</title><link>https://autotomy.dev/zh-hant/blog/ai-safety-stack-types-contracts-property-tests-mutation/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ai-safety-stack-types-contracts-property-tests-mutation/</guid><description>如果你想讓 AI-generated code 能在正式環境站得住，光靠 code review 不夠。你需要一套從 type constraints 到 mutation testing 與 runtime containment 的分層安全棧。</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate></item><item><title>隕石開發真的存在。你的程式碼庫不必跟著一起垮掉</title><link>https://autotomy.dev/zh-hant/blog/meteor-development-is-real/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/meteor-development-is-real/</guid><description>這個梗之所以好笑，是因為很多團隊真的活在「隕石開發」裡：不斷變動的目標、固定期限和半成形範圍一起砸下來。Autotomy 不能修復幻想式規劃，但它可以讓開發繼續往前走。</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate></item><item><title>Stanford CS146S 對 AI coding 的判斷是對的。缺的科目是架構</title><link>https://autotomy.dev/zh-hant/blog/stanford-cs146s-ai-architecture-gap/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/stanford-cs146s-ai-architecture-gap/</guid><description>這篇對 Stanford CS146S 的評論認為，它準確看見了 AI coding 的轉向，但真正決定長期品質的仍是 AI architecture：系統是否可替換、可約束、可持續演進。</description><pubDate>Sat, 16 May 2026 00:00:00 GMT</pubDate></item><item><title>為什麼許多優秀的工程策略直到 AI 出現才真正變得划算</title><link>https://autotomy.dev/zh-hant/blog/engineering-ideas-ai-economics/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/engineering-ideas-ai-economics/</guid><description>Design by contract、property-based testing、mutation testing、model checking 從來不是壞想法。真正的問題是它們長期需要太多專業判斷才能維持，而 AI 正在改變這筆帳。</description><pubDate>Fri, 15 May 2026 00:00:00 GMT</pubDate></item><item><title>從 Vibe coding 到 production：為什麼你的 AI 生成 React Native app 需要護欄才能 scale</title><link>https://autotomy.dev/zh-hant/blog/ai-react-native-guardrails-scaling/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/ai-react-native-guardrails-scaling/</guid><description>AI 可以很快把你的 React Native MVP 推上線，但如果沒有 guardrails，每一個小改動都可能打壞無關的 flow。這裡會說明 declarative constraints 如何避免速度直接變成脆弱性。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>Vibe coder 的 React Native App Lifecycle 指南</title><link>https://autotomy.dev/zh-hant/blog/app-lifecycle-resume-status/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/app-lifecycle-resume-status/</guid><description>你的 app 在 dev 裡一切正常，但使用者午休後回來卻看到白畫面。這裡是能正確處理原生 lifecycle 的 resume status 模式。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>為什麼你的 Vibe-coded React Native app 會在啟動時 crash（以及如何阻止它）</title><link>https://autotomy.dev/zh-hant/blog/dependency-tiers-hard-soft-optional/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/dependency-tiers-hard-soft-optional/</guid><description>如果 optional SDK 用 core infrastructure 的方式初始化，它們完全可能在啟動時把 app 一起拖垮。這套 dependency tier system 能避免非關鍵工具把 production 也一起帶下水。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>為什麼在 Cursor 裡用 NativeWind 做 Vibe coding，會在規模上拖垮你的 React Native app</title><link>https://autotomy.dev/zh-hant/blog/nativewind-vs-stylesheet-contract/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/nativewind-vs-stylesheet-contract/</guid><description>你用 Cursor 一個週末就交付了 MVP，但現在只改一個 brand color 就會波及 47 個檔案。這套 styling contract 可以止血。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>為什麼不該讓 Claude Code 審你的程式碼（以及該改用什麼）</title><link>https://autotomy.dev/zh-hant/blog/o1-guards-vs-llm-reviews/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/o1-guards-vs-llm-reviews/</guid><description>LLM code review 既不確定、又慢，還會漏掉架構違規。這套 O(1) guard stack 才真的能讓你的程式碼保持乾淨。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>刪掉，不要遷移：Vibe-coded React Native app 的重構策略</title><link>https://autotomy.dev/zh-hant/blog/refactor-by-replacement/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/refactor-by-replacement/</guid><description>重構 AI 生成程式碼，等於去逆向推斷一個你從來沒有擁有過的意圖。這個以介面為中心的 replacement pattern，能讓刪除變得安全。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>Cursor 和 Claude Code 如何毀掉你的 React Native 架構（以及如何修好它）</title><link>https://autotomy.dev/zh-hant/blog/service-boundaries-composition-root/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/service-boundaries-composition-root/</guid><description>AI 生成的 auth 在新 feature 把手伸進錯誤 service 之前，看起來都沒問題。這套 interface-driven 架構能避免 vendor swap 和功能迭代一起打壞 login。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>為什麼 deep link 會讓 Vibe-coded React Native app 直接 crash（以及如何用 Zod 驗證它們）</title><link>https://autotomy.dev/zh-hant/blog/url-validation-expo-router/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/url-validation-expo-router/</guid><description>deep link、push payload、shared URL 全都是 untrusted input。這裡會說明如何在 Expo Router boundary 就先 validate 它們，別讓壞 params 進到 screen。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item><item><title>useSyncExternalStore：把你的 Vibe-coded app 從 state bug 裡救出來的 React Hook</title><link>https://autotomy.dev/zh-hant/blog/useSyncExternalStore-pattern/</link><guid isPermaLink="true">https://autotomy.dev/zh-hant/blog/useSyncExternalStore-pattern/</guid><description>別再寫那些會 memory leak、會漏掉 state update 的 useEffect subscription 了。這是 React 18 用來打造 bulletproof external state 的 pattern。</description><pubDate>Thu, 14 May 2026 00:00:00 GMT</pubDate></item></channel></rss>