概述
八個已發布版本(v5.1.22 ~ v5.1.30,2026-10-07~10-11;v5.1.25 從未發布——Linux x64 binary 超過 150 MiB 發布預算,變更全併入 v5.1.26)。四條主線:
| 主線 | 版本 | 一句話 |
|---|---|---|
| 記憶安全 | v5.1.22/v5.1.24 | 秘密文字不得進記憶;/doctor 稽核記憶檔案;維護執行留下收據 |
| 任務生命週期 | v5.1.22–v5.1.30 | 啟動失敗說原因、DAG 上限只算運行中、懸置 child 必有結局 |
| 引擎(senpi) | 各版 | MCP OAuth 綁定發證者、自動輪次 150 上限、帳號重試與快取 |
| 桌面與前台控制 | v5.1.30 | macOS 選單路徑操作;前台控制需明確 OK |
記憶系統:安全與可審核(v5.1.22、v5.1.24)
- 秘密不得進記憶:含 token、API key 或 PEM 區塊的 memory commit 被拒絕;注入對話的記憶文字先遮罩。v5.1.24 再補:認得更多偽裝形態(黏在字尾、被格式字元接合、含不可見字元的 token),
/doctor與維護收據會註明掃描何時退回保守模式。 - /doctor 檢查記憶檔案本身:壞連結、無效 frontmatter、重複筆記、記憶資料夾外的檔案、讀不到的檔案、超大的 system 區段;
--json輸出同樣結果(秘密遮罩)。背景清理會修掉它找到的問題。 - 維護執行的收據與隔離:reflection、dream、facts 每次執行留收據(/doctor 可見);執行到一半死掉的 run 連同檔案被隔離並記下原因,後續 run 不被卡住;死前已提交的成果保留。
- 記憶不再拖慢每個 prompt:「這個 session 存過記憶嗎」的檢查從讀整個身份歷史(可能數秒、記憶體壓力下裸錯)改為有界;每個 turn 的記憶檔名清單列入 byte 預算(實測曾在長壽 corpus 上到約 158 KB ≈ 39K token)。
任務生命週期:每個 child 都有結局
這批修復的主題句:懸置(suspended)不該是穩態。
| 問題 | 版本 | 修復 |
|---|---|---|
| child 啟動失敗只說「Child prompt failed to start.」 | v5.1.22 | 一行指名原因:host 超時/拒絕(含錯誤碼)、連線遺失、child 先退出(含 exit code);原始錯誤文字不外洩 |
task.dag.max_runs_per_session(預設 16)把已結束的 graph 也算到一週後 |
v5.1.24 | 只計仍在運行的 graphs;拒絕訊息說明目前 active 數 |
指定模型的 child(如 anthropic/claude-opus-5-5:medium)pin 被靜默丟掉 |
v5.1.26 | pin 對 live registry 解析一次,child 起跑後核對實際模型;解析不了或跑錯模型 → typed error,task_output 並列請求與實際模型 |
| 懸置 child 等 session 下次啟動才被重訪 | v5.1.26 | resume 時退避重試;仍救不回則標 lost 並附原因與次數,parent 被通知 |
| 一個拒絕 SIGTERM 的 child 卡死閒置清掃,完畢 child(每個約 2 GB)堆積 | v5.1.28 | 每個 teardown 步驟有界;閒置 resident 逐一回收;task_cancel 釋放已完畢 resident |
| parent 還活著時背景 child 懸置數小時,等它的 goal 永遠等 | v5.1.29 | 立即喚醒,或以一個結果結束 |
| parent teardown 期間被停掉的 child 短暫誤報自身失敗 | v5.1.30 | 2 秒確認窗:owner 先退 → 記 lost 不重播;owner 存活 → 真失敗照報 |
單次 task 呼叫最多 16 個 child |
v5.1.30 | 每次呼叫的批次上限移除;併發仍由 global/provider/model 上限決定,其餘排隊 |
senpi 引擎更新(跨版本)
- MCP 安全(v5.1.26 / senpi 2026.10.10-8):內建 MCP SDK 升 1.32.1(GHSA-6qxp-vccf-f47h);每個已存的 MCP 登入記住發證的 authorization server 並只在該處刷新——授權伺服器換人時要求重新登入;MCP HTTP endpoint 不再跟隨跨 origin 的 redirect,錯誤指名兩個 origin 與該填入設定的 URL。
- 自動輪次上限(v5.1.27 / senpi 2026.10.10-9):你的一則訊息之後,stream-rule nudge、goal 續跑等自動跟進在 150 個 turn 後暫停,或一分鐘內 12 個自動 turn 沒做任何事時暫停;每個 stream rule 對一則訊息最多修正一次。暫停時 session 會說,你的下一則訊息恢復。
ask_user_question的required: true(v5.1.27/28):作為動作閘門的問題(核准不可逆步驟等)若逾時、被關掉或無法顯示,模型被明確告知不要執行該動作;ulw-plan 的核准閘、授權區塊與 mass-ulw 的範圍/花費/不可逆決策都以required: true提出。- 多帳號與串流(v5.1.28/29 / senpi 2026.10.10-10/11):多個 Anthropic Subscription 帳號下暫態錯誤不再換帳號——重試同一帳號、留在持有 transcript 的帳號;長串流工具呼叫不再爆「session stream queue exceeded 256 messages」;
-fastpin 在成對基底模型上被接受(Kibitzer 喚醒與 fast-first 鏈不再model_unavailable)。 - Code mode cell 更省(v5.1.29/30):Julia/Ruby/Python cell 減少每格固定開銷;
tool_schema("eval:environments")記載packages.install讓 cell 知道怎麼裝套件;JavaScript eval cell 起的行程有自己的 process group,group kill 不會波及 agent。
桌面與電腦使用(v5.1.30)
- 前台控制需要你的明確 OK:模型要打字、點擊前景或 raise 視窗之前,其程式碼先呼叫
desktop.control.acquire({ reason }),OmO 帶著理由向你確認。只有明確的 yes 授權;拒絕、45 秒逾時、headless 或唯讀 run 都不授權。授權在模型釋放、run 結束/失敗、停止和弦或 session 關閉時終止,resume 不恢復,一個 session 的授權不被另一個接走。背景傳遞不變,仍是預設。 - macOS 選單路徑操作:
win.menu.items(path?)列出標題、路徑、enabled/checked、子選單與快捷鍵;win.menu.select(path)呼叫唯一、啟用中的葉節點指令——歧義標籤、停用項、僅子選單都拒絕;多視窗 app 直接拒絕而非冒險選錯。原生支援此版僅 macOS。 - popup 與日期控制:
el.setValue(text)對 macOS popup 改為真的選中選項(缺漏/歧義/停用則拒絕並列可用選項),不再回報被忽略的寫入為成功;日期/時間控制接受 ISO-8601 值並讀回驗證,日光節約跳過或重複的本地時間拒絕而非悄悄平移。 - 其他:電腦使用逾時訊息指名 handshake 停在哪個階段;Windows 上 hook 與 plugin 更新不再閃出 console 視窗(windowsHide)。
研究、引導與帳號地基(v5.1.30)
- ulw-research 用你的瀏覽器讀來源:Phase 0 brief 以單一規則決定
Collection: search-only | browser(只有當結果摘要能解決每個軸時才 search-only);web workers 透過browserskill 的附掛引擎讀每個候選——每 worker 一個具名 session、每來源一個分頁、比較時多分頁並排、top 來源附整頁截圖。webfetch留給原始檔;瀏覽器開不了的主機才交給ultimate-browsing並保留出處。 - 引導(onboarding)跟著第一個真實 prompt 走:首次執行 context 搭在你真正送出的第一則 prompt 上,不另起一個模型 turn——agent 先回答你的請求再提議導覽;背景/preview/headless session 不消耗 onboarding,失敗或中止的第一個 turn 釋放 onboarding 待下次。
- 帳號地基先行:
omo login、omo whoami、omo logout隨版出貨,但帳號服務尚未上線——login 會先探測服務、立即以一行錯誤指名服務位址收手(不開瀏覽器、不等待)。服務上線後:瀏覽器流程或 headless device-code 流程(--device/--no-browser)、憑證只存 OS keychain/Secret Service/Credential Manager、無明文 fallback。
其他要點
- ultrawork 防誤觸發(v5.1.26):以寄件人標頭(
[REPORT]、[a -> b])、Markdown 引用塊或雙引號文字開頭的訊息被視為別人的話——貼一份描述 ultrawork 的報告不再武裝它;識別字、路徑、URL 或禁止句(「no ultrawork」)中的 skill 名稱不觸發;被委派的 child 不再因 brief 提到 ultrawork 就自己開團隊。 - 模型路由(v5.1.28/29/30):
explore、librarian、quick預設鏈改用 Claude Haiku 5.5(medium)(排在 GPT-6 Luna Fast 之後);gpt-6.1-sol-ultrafast免本地擴充即可用(Ultrafast tier、預設 xhigh);unspecified-low在 OpenAI 線路改用 GPT-6.1 Sol(medium);自訂 category 模型的 reasoning 設定在背景工作啟動與恢復時不再被內建 category 的變體覆蓋。 - TUI side panel(opt-in):
side_panel.enabled: true(或單次--omo-side-panel)得到右欄一覽(session、goal、context、subagents、tools、變更檔案與記憶),點檔案列開 diff;訂閱用量是另一個 opt-in(side_panel.sections.usage,因為它讀憑證);窄於 120 欄自動隱藏。 - OpenCode:session 工具改用分頁式全域 session endpoint,可跨專案列與搜(v5.1.30)。
- WhatsApp:
thread_bind與 store 接受whatsapp平台(schema v7)——這是 connector 需要的核心綁定支援,本身不安裝 connector。 - Workflow node ID 驗證:空 ID、
.、..、路徑分隔符、冒號與 NUL 被拒(invalid_node_id);既有含這些字元的 run 升級後無法恢復已存結果——重新命名節點並重啟 run。 - mass-ulw 相鄰全對全波以單一 review 節點接合:不再畫出每條 producer→consumer 邊;finding 只重跑被點名的 producer。
- AUR:Arch Linux 社群套件
omo-bin(由 @sTiKyt 維護,非 OmO 團隊)經 SHA256SUMS 驗證安裝官方 binary;以 AUR helper 更新而非omo update。 - 測試瘦身(v5.1.22):跨七個 repo 的 47 個 PR 移除 61 個測試檔與 393 個抓不到真回歸的案例(約 8,100 行),修復 47 個「程式壞了卻不會失敗」的測試——每個都以故意弄壞被守的程式碼證明。
隨堂測驗
隨堂測驗
模型想在前景視窗打字。v5.1.30 之後,這需要什麼前提?
💡 想先看個提示?
前景輸入與背景工具呼叫的風險量級不同。
前台控制是以使用者身分行動:acquire 帶理由詢問、只有明確 yes 授權;拒絕、45 秒逾時、headless、唯讀 run 都不授權;授權隨 run 結束終止、resume 不恢復。背景傳遞不變、仍是預設。
隨堂測驗
你把一份描述 ultrawork 的內部報告貼進一般 session。v5.1.26 之後會發生什麼?
💡 想先看個提示?
「引用別人的話」與「自己要求」是兩回事。
v5.1.26 的防誤觸發:寄件人標頭、Markdown 引用塊或雙引號文字被讀為引述;識別字/路徑/URL/禁止句裡的 skill 名稱也不觸發。明確的打字請求(如 ulw )仍然有效。
動手升級檢查清單
升級 v5.1.30:動手檢查清單
逐項勾選,確認你已完成升級必要的步驟(進度會保存在此瀏覽器)
全部完成!你已就緒 v5.1.30 的所有新功能。可清除勾選重新練習。
延伸閱讀
- 官方 v5.1.30 release notes
- 官方 v5.1.26 release notes(v5.1.25 說明)
- 官方 v5.1.28 release notes(Haiku 5.5)
- 前一課:
v518-521-codemode-reliability——Code Mode 隔離與權限 fail-closed - 本主題 Changelog:完整的 v5.1.30 條目