TL;DR: AI 代理失控通常不是模型的問題,而是缺少足夠的結構。這篇整理了我們在實踐中觀察到的幾個痛點,以及 Agentic OS 試著用哪些方向來應對——不保證這是最好的做法,AI 工具本身也還在快速演化。
如果你已經在用 Claude Code、Cursor 或 Copilot 一段時間,你大概知道那種感覺:有時候它快得讓你懷疑自己為什麼還要打字,但有時候你盯著它的輸出,心裡只有一個念頭——「等等,它在幹嘛?」
印象更深的往往是後者。我發現有幾類問題會反覆出現,跟你用哪個模型或哪個工具關係不大,比較像是讓 AI 代理參與真實開發這件事本身帶來的結構性挑戰。
如果你讀過從「下指令」到「蓋系統」,這篇可以看成那個思路的延伸——當你開始用 agent 做真實開發,「結構不夠」這件事的代價變得具體很多。
Agentic OS 是站在很多公開工作的肩膀上做出來的。AGENTS.md 這個慣例最初來自 OpenAI Codex 的設計,後來被 Cursor、GitHub Copilot 等主流 AI 工具廣泛採納;Anthropic 有自己的 CLAUDE.md;Cursor 有 .cursor/rules——各自代表不同工具對「怎麼讓 AI 記住專案規則」這個問題的嘗試。我們參考了這些設計,加上 Hacker News、Reddit 社群裡的實測討論,還有 Pete Hodgson、Addy Osmani、Thorsten Ball 等工程師整理的失效模式分析,試著把它們整合成一套對我們自己有用的東西。這個框架比較像是整合與實驗的產物,不是從零發明的。
幾個反覆出現的痛點
以下整理自我們自己踩過的坑,也有部分來自社群的集體觀察。不是嚴謹的研究,是實踐者的筆記。
輸出難以核查
AI 完成任務後,你拿到的往往是一段文字說「已完成」或「功能已實作」。問題是「完成」的依據是什麼?在單一短對話裡這不是大問題,但一旦任務橫跨多個 session,或者事後需要追溯某個決策的來源,你往往什麼都找不到——沒有 commit SHA、沒有測試輸出、沒有可以指著說「它在這裡」的東西。只有對話紀錄,而對話紀錄不算數。
這個問題後來直接影響了我們的框架設計。Agentic OS 裡有一條規則:就算是「重讀同一份文件」這個動作,也必須留下一筆收據。聽起來很囉嗦,但沒有這個,「我讀過了」和「我沒讀過」在紀錄裡是完全一樣的。
跳過中間步驟
給 AI 一個任務,它的自然傾向是直接往結果走。這在小任務上沒問題。但任務稍微複雜一點——比如需要同時異動前端、後端和資料庫——省掉的「先確認範圍」、「列出影響的模組」這些步驟,往往要在後面以更大的代價補回來。工程師 Pete Hodgson 在他的文章裡提到,當一個問題有很多不同的解法時,AI 選到你心目中那個的機率趨近於零——提前對齊方向,跟模型能力無關,是流程問題。
跨對話的連貫性
在那篇談 Prompt 局限的文章裡,我說過 AI「只活在那一次的對話框裡」。這個限制在用 agent 做持續開發的時候感受更強烈。每次開新對話,你得重新交代背景:這個專案的架構決策是什麼、上次決定用哪種設計模式、之前踩過什麼坑。這不只是麻煩,而是會讓同樣的問題被重新發現、同樣的決策被重新討論。IEEE Spectrum 的一篇報導裡提到,AI 在長 session 的後期,出現重複生成已存在函式、忽視早期建立的 coding convention 等情況的頻率明顯上升——本質上是 context 稀釋的問題。
資源使用的不確定性
AI 代理讀文件、呼叫工具、產生輸出,這些都有成本,而且差距可以很大。我們在 Agentic OS v1.1 的 benchmark 裡(2026 年 4 月量測)跑了幾個真實場景:quick-win 等級任務(例如修一個 CSV 格式問題)實際消耗約 17,041 token;涵蓋 API、認證、資料庫的複雜功能開發則約 51,000 token,相差接近三倍。這些數字來自特定的任務類型與工具組合——我們用的估算公式是 chars / 4,接近多數 OpenAI tokenizer,但不完全一致——不同模型、context 策略下的結果可能差距顯著。
更複雜的是,這個計算現在又多了一層變數。主流模型——包括 Claude 和 OpenAI 的系列——已經有 prompt cache 機制,在某些條件下可以大幅降低重讀相同 context 的成本。這讓我們原本關於「怎麼控制 context 讀取策略」的很多設計假設需要重新檢視。我們還在觀察這個演變,舊的建議不一定還適用。
範圍的模糊
這類問題比較難描述,因為它不一定會報錯——它只是靜靜地做了你沒有要求它做的事。安全研究員 Johann Rehberger(筆名 Embrace the Red)花 $500 測試了 Devin AI 的 prompt injection 抵抗力,並於 2025 年 4 月將結果通報給 Devin 的開發商 Cognition。測試結果顯示透過 GitHub issue 嵌入惡意指令,可以讓 Devin 執行預期範圍以外的操作,整體攻擊成功率達 84–85%。這是極端的例子,但「AI 自己決定任務邊界」這件事的普通版本,每天都在發生——它只是偷偷多改了一個 config 檔,或者順手重構了你沒說要動的模組。
我們試著做的事
Agentic OS 的出發點,是試著在這些問題上加一些結構。主要思路有幾個方向:
我們把核心原則叫做 “No Evidence = No Completion”——想法本身不新奇,軟體工程裡的 CI/CD gate 做的就是這件事,只是把它搬到了 AI 代理的工作流程裡。每個任務的交付都要附帶某種形式的 evidence,不一定很複雜,但要有東西可以查。同時,根據任務的規模,要走的流程也不一樣:單行改動走輕量路徑;功能開發走比較完整的流程,包含計劃、實作、審查幾個階段。這個分層設計部分參考了 Anthropic 和 Cursor 社群分享的做法,調整成對我們自己比較實用的版本。
用 Work Log 保持連貫性。 每個任務有一份對應的工作記錄,記關鍵決策和目前狀態,讓下一個 session 能接續而不是重來。這是個很笨的方法(基本上就是強迫 AI 寫日記),但在我們找到更好的方式之前,它目前還算有用。
至於資源分配,我們試著把不同分類的任務對應到不同的 skill 載入策略,不一次讀所有東西。不過如前面說的,model cache 機制的演進讓這部分的設計面臨一些調整,舊的策略不一定還有效。
一些誠實的話
這套框架有用,但不是沒有問題——有些設計現在回頭看也不一定是最好的決定,只是當時看起來合理。Addy Osmani 把這個現象稱為「70% 問題」:AI 能很快帶你到 70% 的完成度,但剩下的 30% 往往需要更多工程判斷力,不是更少。設計一套治理框架也一樣——結構能幫你避開很多坑,但它改變不了你還是需要做設計決策這件事。
AI 工具的演進速度,讓任何固化的解法都有保鮮期的問題。有些我們在設計時試圖解決的問題,現在模型本身可能已經部分處理了;反過來,也有我們沒預想到的新狀況冒出來。我們把 Agentic OS 定位為一個持續演進的實驗,不是一個收斂的答案。這個系列會把框架的各個機制拆開來談。如果你也在摸索怎麼讓 AI 代理在實際開發工作裡更可控、更可追溯,希望有些地方能對你有參考價值。
下一篇:只用 Prompt 和技能也能做好治理:實用技巧與範例
Agentic OS 是開源專案,歡迎看看我們怎麼實作,也歡迎指出你覺得不對的地方:github.com/KbWen/agentic-os