大家好,我是二哥呀。
MiMo Code 0.1 版本正式發布,並採用 MIT 授權協議正式開源。支援:
安裝方式非常簡單,一行指令搞定:curl -fsSL https://mimo.xiaomi.com/install | bash。

這個安裝介面的顏值做得還挺高,不得不說,兄弟姊妹們,小米在外觀設計這方面確實有一套。
內部整合了 https://ai-sdk.dev/ 的 SDK,支援多種模型和平台的無縫對接。還有 https://models.dev/ 的模型庫,提供豐富的預訓練模型選擇。
官方說啟動方式非常簡單,直接 mimo 就行,但實際體驗下來,這一塊做得還不夠好,我這邊直接報錯了。

好在 Warp 提供了預設的 Agent 服務,照著提示修好就好。

也給大家看一下解決方案。

就是重新執行一次 source,讓環境變數生效。或者新開一個終端機。

好傢伙,開屏還有流星劃過。
輸入 /connect 我們連一下服務商。

為了方便,我們就選擇 auto,這樣可以免登入。
順手再配一下 DeepSeek V4 吧,同樣執行 /connect,選擇 DeepSeek 供應商,然後輸入 API Key,再選擇要接入的模型即可。

整體的 Harness 做得還是很全面的,在計算、記憶、進化上下了很大功夫。

主要解決了兩個問題。
第一,由於上下文視窗終將會被耗盡,所以除了要做必要的摘要壓縮,還要能在檢索和儲存方面做得更好,讓 Agent 能夠更智慧地持久化寫入與召回關鍵資訊。
第二,由於模型的指令遵循會隨著輸入長度增加而變差,所以需要透過必要的機制來提升 Agent 的指令遵循能力,確保它在長對話中的表現。
我們的第一個任務是:
為我們的 PaiCLI 做一個宣傳頁,參考 mimo.xiaomi.com/mimocode

來看看 MiMo Code 的表現。

很可惜,先用了 Web fetch,沒拿到結果,然後又準備用 CDP,結果還是沒拿到。
那我們必須上點家法了。

讓 MiMo Code 先安裝一下 web-access 這個 Skill。
安裝一下 github.com/eze-is/web-… 這個 Skills,然後你就能取得網頁了。
從輸出上能看到,使用了 Claude Code 的預設目錄。

照理說,我之前在 Claude Code 裡安裝過了,但不知道為什麼還需要重新安裝。
不管了。

給權限。
可以看到這次 CDP 代理已經啟動了。

繼續給權限。

這次能取得頁面內容了。

搞清楚了網站的設計風格:淺色暖調背景、極簡排版、PingFang SC 字體、終端機安裝指令。
開始重新設計 PaiCLI 宣傳頁。
等一下,看看 MiMo Code 的表現。

搞定了,我們來打開看看效果,整體風格確實還不錯。


MiMo Code 還支援執行期間新增指令排隊。

完工後我們直接配置個子網域,大家可以直接造訪體驗一下。

前面提到了 MiMo Code 圍繞計算、記憶、進化三個主題設計 Harness,接下來逐個拆解。
先看計算。
一個程式設計 Agent 的基本結構,是把語言模型放進一個執行時中循環呼叫,模型負責推理和決策,執行時負責管理工具、持久化狀態、組裝每一輪的輸入。模型本身是無狀態的,每次呼叫都從空白開始,所有連續性都由執行時提供。

對於短任務(10 輪以內),這個結構沒問題,把完整對話歷史傳給模型就行。但當任務規模達到幾十步甚至上百步時,每一步的錯誤率會被累積放大,而 Agent 在長程執行中又缺乏外部糾正訊號。
MiMo Code 的思路,是在不同粒度上投入額外的計算來換取可靠性。
Max Mode 是 MiMo Code 最有意思的一個設計。
每一輪決策時,它會平行生成 N 個候選方案(預設 N=5),每個候選獨立完成推理和工具呼叫規劃,但不實際執行。然後由同一個模型作為 judge,比對所有候選的推理過程和行動計畫,選出最優的一個執行。
預設使用 temperature=1 進行 5 次獨立取樣,幾乎不會產出相同結果。如果多個候選方案恰好指向同一個方向,這本身就表示該方向的置信度高;而當候選之間差異較大時,由低溫度的 judge 從中選出最穩健的方案,比依賴單次取樣更可靠。

在 SWE-Bench Pro 上,Max Mode 相較於單次取樣提升了 10–20%,代價是約 4 到 5 倍的 token 消耗。這個代價不小,但對於那些一步走錯全盤皆輸的長任務來說,值得。
目前 Max Mode 只是實驗性功能,需要手動設定開啟。MiMo Code 的設定檔路徑是專案級 .mimocode/mimocode.json 或全域 ~/.config/mimocode/mimocode.json,在其中把 experimental.maxMode 設為 true 即可。
Max Mode 解決的是「做對」,Goal 解決的是「做完」。
長任務中有一種非常常見的失敗模式,Agent 在後續輪次看到之前已有的進展,就傾向於提前宣稱「完成了」,或者反過來向使用者提問。
Goal 的機制是。

使用者先設定一個自然語言描述的停止條件,例如「所有測試通過且程式碼已提交」。Agent 每次嘗試終止時,系統會自動發起一次獨立的模型呼叫來審查完整對話歷史,判斷條件是否真的滿足。如果未滿足,就把具體差距回饋給 Agent,讓它繼續做;如果確認無法完成,則判定為不可能並退出。
這個驗證者不參與實際工作,因此不會對 Agent 已完成的部分產生認同偏差。它每次拿到的上下文都和 Agent 完全相同,包括工具的實際輸出。實際執行中,誤攔比漏放更常見,整體死循環機率小於 0.5%,到達上限後會自動退出。
Max Mode 是平行維度,在同一步花 N 倍算力選最優;Goal 是串行維度,在同一個任務上做更長的自我檢查和執行。
兩者可以同時啟用。
當任務規模夠大時,比如將整個專案從一種語言遷移到另一種語言,需要同時協調幾十甚至上百個平行工作單元,逐輪的工具呼叫就不夠用了。
傳統的做法是把流程寫進 Skill 檔,用自然語言告訴模型「先做 A,再做 B,如果 C 就做 D」。
這在簡單場景下能用,但在複雜流程中會系統性失效,上下文壓縮可能吞掉步驟、模型可能跳過某些環節、分支和重試邏輯靠模型判斷而非程式碼保證、同一流程兩次執行路徑不同。
問題的本質在於,編排邏輯是以自然語言存在,而自然語言是模糊的、可遺忘的、不可驗證的。
Dynamic Workflow 把編排邏輯變成了程式碼。

主 Agent 會產生一段 JavaScript 腳本,在隔離沙箱中確定性執行。
腳本透過 agent() 派出 Sub-agent,透過 parallel() 和 pipeline() 控制並行。
MiMo Code 的實作相容了 Anthropic Dynamic Workflow 的核心語義,並在此基礎上做了幾項擴充。
workflow() 允許腳本呼叫其他腳本,使編排邏輯可以重用與組合;agent() 呼叫的結果會同步落盤,程序中斷後可從日誌恢復而不是從頭重跑;沙箱內可直接讀寫檔案。換個角度來看,Skill 是用自然語言寫的 SOP,Workflow 是用程式碼寫的 SOP。
把會話想像成一串從左到右排列的對話輪次。
視窗是有上限的,輪次會不斷累積,視窗最終會被填滿。如果不介入,會話到達上限時要麼結束,要麼悄悄退化。
MiMo Code 的做法,是在視窗到達上限之前的幾個固定位置介入,這些位置被稱為 checkpoint。

每個 checkpoint 會派出一個獨立的 writer Sub-agent,讀取所有對話,將結構化狀態寫入磁碟。主 Agent 繼續工作,writer 並行執行,互不干擾。
當視窗接近上限時,執行一次 rebuild,切斷目前視窗,開啟新視窗,並用已持久化的檔案作為種子重建上下文。
主 Agent 在新視窗中醒來後可以繼續工作。
一段被 checkpoint 打過點、最後以 rebuild 收尾的對話輪次序列,就是一個 cycle。Cycle 沒有數量上限,每一個 cycle 都受限於物理視窗大小,但邏輯會話是 cycle 的鏈,而那條鏈沒有最大長度。
Writer 不只寫一個檔案,它維護一個分層的記憶體系,每一層有不同的生命週期。

主 Agent 可以隨時往裡面追加零散發現,writer 則在每次 checkpoint 時讀取它,將內容路由到對應的結構化欄位,然後清空。
相當於給主 Agent 一個「便條本」,主 Agent 不需要操心資訊該放在哪個結構化欄位裡,只管隨手記下來,交給 writer 去分揀。
這裡一定要誇一下 OpenCode。
MiMo Code 正是基於 OpenCode 建構的,保留了幾乎全部核心能力(多 Provider、TUI、LSP、MCP、外掛)。
並在此基礎上建構了持久化記憶、智慧上下文管理、子智能體編排、目標驅動的自主迴圈、Compose 工作流,以及透過 dream/distill 實現的自我進化。

這或許就是開源的意義,站在巨人的肩膀上,做出更有價值的東西來。
我們下期見。