Forge 評測:把 AI 編碼代理塞進終端機與 ZSH 提示字元的 Rust 工具
AI enabled pair programmer for Claude, GPT, O Series, Grok, Deepseek, Gemini and 300+ models
秒懂
- 它是什麼?
- Forge 是一個以 Rust 撰寫的終端機 AI 編碼代理,支援三種使用模式與多達 300 種以上的模型供應商。它的賣點是把代理直接嵌進 shell,代價是你得接受它對供應商設定的那套抽象。
- 適合誰用?
- 如果你長時間待在終端機、需要一個能在 TUI、腳本與 ZSH 提示字元之間切換的代理,而且願意自己管 API 金鑰,Forge 值得裝起來試;若你只想在 IDE 裡補完程式碼,或需要精細的成本與上下文控制,這個工具並不對應你的工作方式。動手前先確認三件事:forge provider login 對你的供應商是否走得通、forge.yaml 的 provider 區塊寫法、以及受限 shell 模式實際開放哪些命令。
- 可以商用嗎?
- 可以。Apache-2.0 是寬鬆授權:你可以使用、修改並販售以它為基礎的軟體,只需保留著作權與授權聲明。
- 還在維護嗎?
- 有在維護。儲存庫最近一次提交在 2 天前。
- 用什麼語言寫的?
- 主要是 Rust(依據 GitHub 的語言統計)。
以上回答依據專案的 GitHub 資料(最近同步於 2026年9月15日)與我們的分析,不構成法律意見。
開源專案深度解析
Forge 想解決的是 shell 與編輯器之間的斷層
多數 AI 編碼工具的落點在編輯器裡:你開一個側邊面板,貼上程式碼,等回覆。Forge 的假設不同。它認為開發者真正的工作現場是終端機,而終端機最缺的就是把「我剛剛跑的那個指令」和「我現在要問的問題」接起來的能力。README 把這點寫得很直白,標題是 AI-Enhanced Terminal Development Environment,不是 code completion,也不是 IDE plugin。
因此它鎖定的使用者輪廓相當明確:習慣用 shell 操作檔案、跑測試、看 git log 的人。README 的 Usage Examples 段落列出的情境包括解釋驗證系統、除錯 TypeError、審查 src/components/UserProfile.js、設計資料庫 schema、把 class component 重構成 React Hooks,以及處理分支合併衝突。這些任務的共同點是都需要讀取專案結構,而不是單一檔案。
反過來說,如果你的日常工作是在 IDE 裡逐行編輯,Forge 的價值會大幅下降。它不會幫你補完括號,也不會在你打字時跳出提示。它是一個對話式的代理,你丟一個問題,它去翻你的專案,然後給答案或動手改。這個定位差異決定了後面所有的設計取捨。
三種模式共用同一套代理,但操作節奏完全不同
Forge 的架構在 README 裡被拆成三種模式,這個切分不是行銷話術,而是實際的操作介面差異。
第一種是互動模式(TUI)。執行不帶參數的 forge 會進入一個持續的終端機介面,你在裡面打字、AI 回應,形成對話迴圈。README 說這是做多步驟工作的主要方式。工作階段的延續靠對話 ID,例如 forge conversation resume <id> 可以接回先前的 session。
第二種是 one-shot CLI 模式。這種用法適合放進腳本或 CI 流程,跑一次、拿結果、結束,不進入互動介面。README 沒有給出完整的旗標清單,只提到有 Command-Line Options 這個章節,所以實際可用的參數需要去翻文件,我無法從現有材料確認細節。
第三種是 ZSH 外掛模式,用冒號前綴觸發。這是 Forge 最有辨識度的設計。你在 ZSH 提示字元打 :,後面接代理名稱或指令,就能在不離開當前 shell 狀態的情況下呼叫代理。README 的目錄把這套系統拆成 Agents、Sending Prompts、Attaching Files、Conversation Management、Git Integration、Shell Command Tools、Session & Configuration、Skills、Customizing Agent Behavior、Semantic Search (Workspace) 等子項。
三種模式共用同一批代理與同一份設定,差別在於你怎麼進入。這種設計的好處是學習曲線集中在設定檔,壞處是新手第一次看到目錄裡那串冒號指令會不知道從哪裡開始。
冒號前綴與語意搜尋:ZSH 外掛的實際機制
冒號系統的核心概念是「代理」(agent)。你不是直接對模型說話,而是對一個被設定過的代理說話,代理決定用哪個模型、帶哪些上下文、能不能動檔案。README 的 Customizing Agent Behavior 章節說明這些行為可以調整,但沒有在提供的材料裡給出具體的設定範例。
Attaching Files 這個子項值得注意。它意味著你可以把特定檔案掛進對話,而不是讓代理自己去猜哪些檔案相關。對大型專案來說這比全自動檢索可靠,因為你知道哪些檔案是關鍵,代理不知道。
Semantic Search (Workspace) 是另一個子系統。README 只在目錄層級提到它,沒有說明索引如何建立、用什麼嵌入模型、索引存在哪裡。這是文件明顯偏薄的一塊。如果語意搜尋是你採用這個工具的主要理由,你需要先去官網文件確認索引的維護成本,因為一個需要重建的索引在大型 monorepo 裡可能是每天的固定開銷。
Git Integration 與 Shell Command Tools 兩個子項的存在,說明 Forge 允許代理執行 shell 命令與 git 操作。這是它與純聊天工具最大的差別,也是風險所在。README 用 Secure by design 描述這點,並提到 Restricted shell mode limits file system access and prevents unintended changes,也就是有一個受限 shell 模式會限制檔案系統存取。問題是預設值是什麼、受限模式開放哪些命令,提供的材料沒有交代。
安裝與供應商設定的實際指令
安裝是一行 shell 指令:
curl -fsSL https://forgecode.dev/cli | sh
這種安裝方式把腳本直接管線進 sh,你無法先讀內容再執行。對一個會取得你 API 金鑰的工具來說,這是需要自己衡量的事。README 沒有提供替代的安裝路徑,例如從原始碼建置或下載預編譯二進位,所以想避開 curl | sh 的人得自己去翻 release 頁面。
首次執行時,Forge 會引導你設定 AI 供應商憑證。也可以先設定再啟動:
forge provider login forge
forge provider login 是互動式的憑證設定流程。README 另有一個 Deprecated: Environment Variables 小節,說明過去用環境變數設定供應商的方式已經被標記為棄用,改走 provider login 這條路徑。這個轉變對自動化部署有影響:互動式登入難以在 CI 裡重現,如果你要把 Forge 放進無人值守的流程,得先確認非互動的憑證設定方式是否存在。
設定檔是 forge.yaml。README 的 Advanced Configuration 章節列出 Provider Configuration、forge.yaml Configuration Options、Environment Variables、MCP Configuration 等子項,並有 Managing Provider Credentials 與 Example Use Cases。MCP Configuration 的存在意味著 Forge 支援 Model Context Protocol,可以接外部工具伺服器,但具體的鍵名與結構在提供的材料裡沒有展開。
支援的模型範圍涵蓋 Claude、GPT、O 系列、Grok、Deepseek、Gemini,README 標題寫的是 300+ models,並提到 OpenRouter 這個主題標籤,合理的推測是長尾模型透過 OpenRouter 之類的聚合服務接入。這是推測,不是文件明述。
受限 shell 模式是安全邊界,但邊界畫在哪裡並不清楚
一個能執行 shell 命令的 AI 代理,風險模型和聊天機器人完全不同。聊天機器人給錯答案,你損失的是時間;代理執行錯命令,你損失的是資料。
Forge 對此的回應是受限 shell 模式,README 的措辭是 limits file system access and prevents unintended changes。這句話承諾的是「限制」與「防止」,但沒有說限制的粒度。是限制在當前工作目錄?限制寫入但不限制讀取?還是靠一組命令白名單?這三種設計的安全性差距很大。
更關鍵的是預設狀態。如果受限模式需要手動開啟,那預設就是全權限,多數使用者不會去改。如果預設開啟,那功能會受到多少限制?README 沒有回答。
這不是吹毛求疵。Shell Command Tools 和 Git Integration 這兩個功能的存在,代表代理有能力執行 git 操作和任意命令。在一個沒有沙箱的終端機環境裡,這個能力的上限就是你的使用者權限。真正的防線不在 Forge,而在你有沒有在版本控制裡、有沒有備份、以及你有沒有在用一個權限受限的帳號跑它。
什麼情況下 Forge 是錯的工具
第一種情況是你需要可預測的成本。Forge 讓你在 TUI、one-shot 與 ZSH 之間切換,每種模式呼叫模型的次數不同。README 沒有提到 token 預算控制、上下文視窗管理或成本上限設定。對於按量計費的 API,這意味著一個失控的對話迴圈可能燒掉比預期多的額度。
第二種情況是你的程式碼庫不能離開本機或企業網路。Forge 是雲端模型的前端,你的程式碼片段會被送到供應商的 API。README 沒有提到本地模型支援或任何自架推論的選項。如果合規要求禁止程式碼外流,這個工具直接出局,不管你多喜歡它的介面。
第三種情況是你需要穩定的自動化介面。Forge 的版本節奏相當快,提供的 release 記錄顯示 v2.13.19 到 v2.13.21 之間大約一週就推了三個版本。這種節奏對終端機使用者是好事,但對把它寫進 CI 腳本的人意味著旗標與行為可能變動。加上供應商憑證設定已經從環境變數轉向互動式 provider login,並把舊方式標為 deprecated,這種遷移在自動化情境裡是實質的維護成本。
第四種情況是你只需要單檔層級的補完。Forge 的設計重心在專案層級的理解與多步驟任務,用一個對話代理來做 IDE 就能完成的事,是拿大砲打蚊子。
與其他終端機代理的取捨:Aider 與 Claude Code
在終端機 AI 代理這個類別裡,Aider 是最常被拿來對比的專案。兩者的差異在於對 git 的態度。Aider 把每次修改自動提交成 git commit,讓你可以用 git diff 和 git revert 檢查與回退代理的動作,它的整個工作流程是圍繞版本控制建立的。Forge 的 README 有 Git Integration 這個子項,說明它能處理 git 操作,但材料裡沒有說它會自動提交每次變更。這是兩種不同的責任歸屬:Aider 把可回溯性做成預設行為,Forge 把它做成一個你可以呼叫的能力。
另一個對照是 Claude Code。Forge 的 GitHub 主題標籤裡有 open-source-claude-code 這一項,README 也強調多供應商支援,涵蓋 OpenAI、Anthropic 與其他 LLM 供應商。差別在於綁定程度:Claude Code 綁定單一供應商,換來的是與該供應商模型行為的緊密調校;Forge 換來的是模型選擇的自由,代價是它得對所有供應商做一層抽象,而抽象層通常意味著某些供應商特有的能力無法直接使用。
Forge 真正的差異化在 ZSH 冒號前綴。Aider 和 Claude Code 都是獨立程序,你要嘛進它們的介面,要嘛用指令呼叫。Forge 試圖讓代理成為 shell 的一部分,你當下的工作目錄、環境變數、git 狀態都還在。這個設計是否值得,取決於你有多常在 shell 裡問問題。
授權與維護成本:Apache-2.0 與快速迭代的兩面
Forge 採用 Apache-2.0 授權,這是寬鬆授權,允許商業使用、修改與再散布,並包含專利授權條款。對企業採用來說這是相對低摩擦的選擇。需要自己確認的是專案要求貢獻者簽署 CLA(README 有 CLA assistant 徽章),這代表著作權集中管理,未來若有人想 fork 出獨立版本,授權本身允許,但社群與維護的延續性不在授權保障範圍內。以上是一般性的授權觀察,不構成法律意見,實際採用前請洽你的法務。
維護成本方面,release 記錄顯示的節奏是每週數個版本。這對追蹤上游是負擔,但對安全性是好事,修正能較快落地。真正的成本在設定漂移:當環境變數設定被標為 deprecated、改走互動式 provider login,任何依賴舊方式的腳本都會在某個版本後失效。
專案以 Rust 撰寫,這對終端機工具是合理的選擇:單一二進位、啟動快、不需要執行環境。代價是你很難用腳本語言去擴充它,要改行為得改 Rust 程式碼或依賴它提供的設定檔與代理客製機制。README 的 Skills 與 Customizing Agent Behavior 兩個子項是這個擴充路徑的入口,但具體怎麼寫在提供的材料裡看不到。
如果 Forge 要進入你的日常工具鏈,先把它釘在一個特定版本,確認 forge.yaml 的 provider 區塊與你實際使用的供應商對得上,再決定要不要跟著每週的 release 更新。
編輯結論
如果你長時間待在終端機、需要一個能在 TUI、腳本與 ZSH 提示字元之間切換的代理,而且願意自己管 API 金鑰,Forge 值得裝起來試;若你只想在 IDE 裡補完程式碼,或需要精細的成本與上下文控制,這個工具並不對應你的工作方式。動手前先確認三件事:forge provider login 對你的供應商是否走得通、forge.yaml 的 provider 區塊寫法、以及受限 shell 模式實際開放哪些命令。這三項確認完再決定要不要把金鑰交給它。
社群筆記