
一開始,我做 OpenZeroCode 的原因其實很單純。
我只是想知道:
一個 coding agent 到底是怎麼運作的?
不是那種表面上的「呼叫 LLM API,然後把答案印出來」而已。
而是更完整的那一層:
- 它怎麼理解使用者的任務?
- 它怎麼決定要不要讀檔?
- 它怎麼修改檔案?
- 它怎麼執行 shell command?
- 它怎麼知道結果對不對?
- 它怎麼把錯誤重新丟回模型?
- 它怎麼管理上下文?
- 它什麼時候可以自己做?
- 它什麼時候應該停下來問人?
這些東西其實才是 coding agent 真正有趣的地方。
所以我做 OpenZeroCode,不是因為世界上缺少一個 coding agent,而是因為我想親手理解一個 coding agent 從輸入指令、理解任務、操作工具、修改檔案,到驗證結果的完整過程。
對我來說,OpenZeroCode 比較像是一個學習型專案。
它不是一開始就想取代 Cursor、Codex、Claude Code、OpenCode 或其他成熟工具。
我真正想做的是: 把 coding agent 的骨架拆開來看,然後重新用自己的方式組回去。
Coding Agent 不只是 LLM API
很多人剛開始接觸 AI agent,會以為核心就是模型。
這當然沒有錯。
沒有 LLM,就不會有現在這種 agent。
但實際上,當你真的開始做 coding agent,你很快會發現:
模型只是其中一部分。
真正讓 agent 可以做事的,是模型外面那整套執行框架。
這套框架通常包含:
- prompt orchestration
- tool calling
- file system 操作
- shell command 執行
- context management
- task planning
- feedback loop
- approval / safety mechanism
- session state
- error handling
- result observation
這些東西組合起來,才會形成一個「可以執行任務」的 agent。
不然模型本身只是會講話。
它可以告訴你「你應該怎麼改」,但它不能真的幫你改檔案。 它可以推測「這個 bug 可能在哪裡」,但它不能自己跑測試。 它可以寫出 command,但它不能知道 command 執行後發生了什麼。
所以 coding agent 真正重要的地方,不只是模型會不會寫程式,而是:
你有沒有給它一個可以看、可以做、可以驗證、可以回饋的環境。
Harness 是什麼?為什麼值得學?
我後來覺得,理解 coding agent 最重要的一個詞就是:
Harness。
這個詞很難直接翻譯。
你可以把它想成一個「控制框架」、「執行框架」,或更有畫面一點:
把 LLM 綁進真實世界的裝置。
如果 LLM 是大腦,那 harness 就像神經系統、手腳與安全帶。
它決定 AI:
- 能看到什麼
- 能操作什麼
- 能不能讀檔
- 能不能寫檔
- 能不能跑 command
- 能不能連網
- 要不要經過使用者確認
- 遇到錯誤時要怎麼修正
- 任務完成後要怎麼回報
換句話說,harness 不是讓 AI 變聰明的東西。
它是讓 AI 能夠被使用、被限制、被觀察、被控制 的東西。
這點非常重要。
因為如果你只是把 LLM 當聊天機器人,那你大概只會問它問題,然後複製貼上答案。
但如果你把 LLM 放進 harness 裡,它就可以開始執行任務。
它可以讀專案。 它可以理解檔案結構。 它可以搜尋程式碼。 它可以修改檔案。 它可以跑測試。 它可以看到錯誤。 它可以再修一次。 它可以一步一步靠近結果。
這就是 agent loop 的核心。
Agent Loop:AI 開始「做事」的地方
我自己理解 coding agent 時,最關鍵的一刻是發現:
Agent 不是問一次模型就結束。
它是一個 loop。
大概像這樣:
- 使用者提出任務
- 系統整理上下文
- 組合 prompt
- 呼叫模型
- 模型決定下一步
- 如果需要工具,就呼叫工具
- 工具回傳 observation
- observation 再丟回模型
- 模型根據新資訊繼續判斷
- 直到任務完成或需要人類確認
這個 loop 看起來很簡單,但它其實就是 agent 能力的核心。
因為模型不是一次就知道所有事情。
它需要看檔案。 它需要試錯。 它需要看到 command output。 它需要根據錯誤訊息重新推理。 它需要知道剛剛改了什麼。 它需要判斷下一步要繼續做,還是停下來回報。
這也是為什麼我想自己做 OpenZeroCode。
如果只是用別人的工具,我可以感覺它很強,但我不一定真的知道它強在哪裡。
可是當我自己實作一個簡化版,我就會開始理解:
原來 agent 的能力不是單點能力,而是一整個系統能力。
為什麼我把它想成「AI 馭馬韁繩」
我覺得「AI 馭馬韁繩」這個比喻很適合現在的 agent 時代。
AI 很像一匹速度極快的馬。
它跑得很快。 它很有力量。 它可以帶你去很遠的地方。
但問題是:
你會不會馭馬?
如果沒有韁繩,它可能亂跑。 如果韁繩太短,它又什麼都做不了。 如果你完全不懂怎麼駕馭它,你只能站在旁邊看別人騎馬。
這也是我對 OpenZeroCode 的想像。
OpenZeroCode 對我來說,不只是 coding agent。
它更像是我學習如何打造 AI 馭馬韁繩的開始。
我想知道:
- 我要怎麼讓 AI 接上我的工具?
- 我要怎麼讓 AI 理解我的專案?
- 我要怎麼讓 AI 可以做事,但不要亂做事?
- 我要怎麼定義權限?
- 我要怎麼保留記憶?
- 我要怎麼觀察它每一步在幹嘛?
- 我要怎麼讓它犯錯之後可以修正?
- 我要怎麼讓它成為我的工作夥伴,而不是一個黑盒子?
我相信接下來的 AI 時代,不會只有少數大公司提供萬能 agent。
相反地,會有越來越多人打造自己的 agent,讓它接上自己的工作流程、自己的工具、自己的資料、自己的規則。
每個人都會需要一條屬於自己的 AI 馭馬韁繩。
OpenZeroCode 的設計目標
OpenZeroCode 的目標不是一開始就做成最強大的 coding agent。
我比較想把它做成:
minimal but complete。
也就是:
功能可以簡單,但整個 agent 的基本流程要完整。
我希望它具備幾個特性:
- 可理解
- 可修改
- 可擴充
- 能接 LLM
- 能定義工具
- 能讀寫檔案
- 能執行命令
- 能體驗完整 agent loop
- 能逐步擴展成更強的 agent
我不希望它一開始就變成一個很複雜、很難讀、很難改的東西。
因為這個專案最重要的價值不是「功能很多」,而是「每個模組都看得懂」。
我希望 OpenZeroCode 是一個「從零開始理解 coding agent」的專案。
它不追求一開始就有最多功能,而是希望每個模組都足夠清楚,讓我能理解 agent 到底如何思考、如何行動、如何被限制,以及如何被擴充。
OpenZeroCode 的整體架構
OpenZeroCode 的架構可以先想成幾個主要部分:
- 使用者介面
- Session Manager
- Context Manager
- Prompt Builder
- Agent Loop
- LLM Provider
- Tool Router
- Tools
- Observation / Feedback
整體流程大概如下:

這張圖裡最重要的不是哪個框框最厲害。
而是它表達了一件事:
coding agent 是一個循環系統,不是一次性的問答系統。
使用者丟出任務之後,OpenZeroCode 會建立 session,整理 context,組合 prompt,呼叫模型。
模型可以選擇直接回答,也可以選擇使用工具。
如果模型使用工具,Tool Router 會把請求分派到對應工具,例如讀檔、寫檔、搜尋、執行 shell command 或其他自訂工具。
工具執行完之後,結果會變成 observation,重新回到 agent loop。
模型根據 observation 繼續判斷下一步。
這樣一來,AI 才不是只會「回答」,而是開始具備「行動能力」。
Coding Agent 不會只停在 Coding
我覺得 coding agent 很有趣的地方是:
它表面上是寫程式工具,但它其實是更大趨勢的早期形態。
為什麼 coding agent 會先成熟?
因為程式碼、終端機、檔案系統,本來就很適合被文字模型操作。
程式碼是文字。 錯誤訊息是文字。 terminal output 是文字。 檔案路徑是文字。 Git diff 是文字。 測試結果也是文字。
所以 coding 是 AI agent 最自然的實驗場。
一開始,coding agent 可能只是幫你:
- 讀程式碼
- 修改檔案
- 跑測試
- 修 bug
- 生成文件
- refactor
- 解釋架構
但下一步,它一定會往更廣的方向走。
它會變成 computer agent。
也就是不只是操作 code,而是操作整台電腦。
它可以:
- 操作作業系統
- 管理檔案
- 使用瀏覽器
- 控制應用程式
- 整理資料
- 分析表格
- 操作後台系統
- 自動回覆客戶
- 產生自媒體腳本
- 剪輯影片
- 製作配樂
- 發布內容
- 監控數據
- 做商業決策輔助
到了那個時候,coding agent 就不再只是 coding agent。
它會變成一種 AI 工作夥伴。
或者更精準一點說:
coding agent 只是 AI agent 最早成熟的形態之一。
因為程式碼、終端機、檔案系統本來就很適合被文字模型操作。
但當這套能力延伸出去,它就會變成一個能操作整台電腦、甚至操作一整套商業流程的 agent。
從 Coding Agent 到 Personal AI Operating System
我自己對未來的想像是這樣:

這張圖想表達的是:
coding agent 只是入口。
真正的趨勢是每個人都會有自己的 AI operating layer。
這個 layer 不一定是作業系統本身。
它更像是你和電腦、工具、資料、工作流程之間的一層 AI 控制介面。
它知道你的規則。 它知道你的偏好。 它知道你的工具怎麼用。 它知道哪些事情可以自動做。 它知道哪些事情一定要問你。 它知道哪些資料可以讀。 它知道哪些操作有風險。 它知道任務做到哪裡。 它也會慢慢累積你的工作脈絡。
而這件事,我覺得不會只屬於大公司。
未來每個人、每個團隊、每個小公司,都可能需要自己的 AI agent 控制系統。
不是因為大家都想重新發明輪子。
而是因為每個人的工作流程真的不一樣。
你的工具不一樣。 你的資料不一樣。 你的風險承受度不一樣。 你的工作習慣不一樣。 你的商業流程不一樣。 你的自動化邊界也不一樣。
所以 agent 不是越萬能越好。
真正重要的是:
它能不能被你駕馭。
為什麼我要自己做,而不是只用現成工具?
這也是我自己反覆思考的問題。
既然外面已經有很多 coding agent,為什麼還要自己做 OpenZeroCode?
我的答案是:
因為使用工具跟理解工具,是兩件不同的事。
用 Cursor,我可以更快寫程式。 用 Claude Code,我可以更快改專案。 用 Codex,我可以讓 AI 幫我完成任務。
但如果我想知道這些工具背後到底怎麼組成,我就需要自己拆一次。
我想知道一個 agent 的最小核心到底是什麼。
是 prompt 嗎? 是 tool calling 嗎? 是 context management 嗎? 是 approval flow 嗎? 是 shell execution 嗎? 是 memory 嗎? 是 task loop 嗎?
最後我發現,答案不是單一模組。
而是這些東西如何被串在一起。
這也是 OpenZeroCode 對我最有價值的地方。
它是一個我可以慢慢加東西、慢慢實驗、慢慢理解 agent 架構的地方。
我可以先做最小的 agent loop。 再加入 file tools。 再加入 shell tools。 再加入 permission。 再加入 memory。 再加入 task planning。 再加入 web fetch。 再加入 UI。 再加入更完整的 workflow。
這個過程本身,就是學習。
OpenZeroCode 對我的意義
OpenZeroCode 不是一個「我做了一個更強 coding agent」的故事。
至少現在不是。
它更像是:
我想理解 AI agent 時代,所以我先做了一條自己的韁繩。
我覺得接下來幾年,AI agent 會變得越來越強。
模型會更便宜。 context 會更長。 tool calling 會更穩。 computer use 會更成熟。 local model 也會越來越能用。 每個人能接上的工具會越來越多。

但越是這樣,我越覺得「控制」會變得重要。
因為 AI 能力越強,就越不能只靠感覺使用。
你需要知道它看到什麼。 你需要知道它做了什麼。 你需要知道它為什麼這樣做。 你需要知道它什麼時候該停。 你需要知道它能不能回滾。 你需要知道它是否真的完成任務。
這些問題,都不是單純換一個更強模型就會解決的。
它們需要 harness。
需要 control layer。
需要 workflow。
需要 permission。
需要 memory。
需要 observation。
需要 human approval。
也就是說,我們需要的不是只有一匹快馬。
我們還需要一條能夠真正駕馭它的韁繩。
結語:OpenZeroCode 是我進入 Agent 時代的練習場
我做 OpenZeroCode,不是因為我覺得自己一開始就能做出最完整、最強、最成熟的 coding agent。
剛好相反。
我做它,是因為我知道自己還需要學。
我想學 coding agent 的完整架構。 我想學 harness 怎麼設計。 我想學 agent loop 怎麼跑。 我想學工具怎麼接。 我想學權限怎麼控。 我想學上下文怎麼塞。 我想學錯誤怎麼回饋。 我想學一個 AI 系統怎麼從「會回答」變成「會做事」。
OpenZeroCode 對我來說,就是這個學習過程的起點。
它是一個小小的 coding agent。 也是一個 AI agent 控制系統的雛形。 更是我練習打造個人 AI 馭馬韁繩的地方。
我相信未來很多人都會有自己的 agent。
不一定每個人都會自己寫程式。 但每個人都會需要一套適合自己的 AI 工作流。 一套知道自己規則的系統。 一套能幫自己操作工具的介面。 一套可以被信任、被限制、被擴充的 AI 控制層。
而 OpenZeroCode,就是我從 coding agent 開始,往這個方向走的第一步。
