概述
後續更新:v5.0.0 已於 2026-09-26 正式推出,本站正式版本已升為
v5.0.0。本篇保留為 beta 時期的前瞻紀錄;stable 內容見 v5.0.0:OmO Native 首個正式穩定版。
Oh My OpenAgent 的 v5.0.0 beta 列車持續推進:2026-09-22 查核時已到 beta.82(stable 仍是 v4.19.4,本站正式版本維持不變)。這段最重大的進展是 copy-on-write 任務隔離(beta.82)——被委任的任務可以在你 checkout 的 clone 裡執行,編輯不會與你手上的工作碰撞。
Copy-on-Write 任務隔離(beta.82,#8573/#8593)
問題
委任(delegate)一個任務給子 agent 時,子 agent 直接在你的 working tree 上編輯——它改的檔案可能正是你正在改的檔案。
解法
新套件 @oh-my-opencode/isolation-core——copy-on-write 任務隔離 PAL(平台抽象層)。啟用方式:
task tool 傳入 isolated: true
# 或全域開啟 task.isolation.enabled
子任務在你 checkout 的 clone 中工作,完成後把變更 merge 回來。
檔案系統後端階梯
| 平台 | 機制 |
|---|---|
| macOS | APFS clonefile |
| Linux(btrfs / ZFS) | reflink clones |
| Linux(其他) | fuse-overlayfs |
| Windows(ReFS) | block clone |
| Fallback | git-worktree rcopy |
後端只在 supplied context base directory 內寫入;不可用的後端以 typed IsolationUnavailableError 呈現並落到下一個候選。新的 Linux CI job 在真實 loopback btrfs 與 ZFS 上演練 publication、copy-on-write 與 teardown。
基準線與合併語意
- Baseline 捕捉 staged、unstaged 與 untracked 工作(per-repository budget 內)
- Merge-back 以 patch 或 task branch 重播,絕不提交使用者重疊的 WIP
- 其他結束方式(失敗、取消):不合併,保留 delta 為 patch 與可讀摘要
- 無法乾淨套用的 merge:你的檔案原封不動、回報衝突、clone 停放在原處旁並附精確的
git apply --3-way復原指令
任務子程序的韌性(beta.81,#8562/#8563)
兩個面向:
- Session 關閉時的回收:關閉 context 不再暴露 session ID 時,仍能從 engine 的 resident handles 回收 ownership——保留可恢復的 task records、不波及 sibling sessions
- Daemon 斷線後的存活:與 shared session daemon 的連線斷掉時,過去所有委任子任務一律以
crashed (transport_gone)結束——即使子任務的 session 還在 daemon 上跑著,或早已完成存在 transcript 裡。現在子任務會重新連線:- daemon 還在 → running turn 直接在新連線上繼續
- daemon 重開 → 從 transcript 結尾重新提示一次,中斷的 turn 接著做
- 重連期間送出的命令排隊等待,而不是失敗
- 只有永遠回不來的 daemon 才真正結束子任務
- 記憶體水位拒絕(
host_memory_pressure)改為有界等待重試提示
另外:「Memory updated」通知修正——組件日誌改走 stderr,reflection 報告不再被 skipped { reason } 行蓋掉(#8564)。
senpi 2026.9.20 引擎(beta.80)
- Provider 網路失敗收斂為單一 retry 狀態,不再每次嘗試都印整包錯誤;鏈耗盡留一則通知與下一步
- 滑鼠回答
ask_user_question不再鎖死鍵盤——點擊把焦點交給沒有 key handler 的 wrapper,之後每個按鍵都消失的 bug 修正 - 選了裝不下的模型不再丟失選擇:切換被保留、下一則訊息先 compaction(由還能讀整份 transcript 的模型摘要),新模型再接手;Fable 5 恢復 Anthropic 家族 fallback 鏈(Opus 5 → 4.8 → 4.6)
- 速度:TUI 啟動 6.3s → 1.2s;單一 session 開啟快約 40%、八個並行快約 30%;排隊中的開啟會回報佇列位置
Senpi 獨立版提示(beta.82,#8593)
OpenCode 版安裝完成後會提示:omo 也以獨立 Senpi 版存在——bun add -g omo-ai@beta,單一 omo 指令、無 OpenCode host。
對使用者的意義
- Stable 使用者:當時以 v4.19.4 為基準(v5.0.0 已於 2026-09-26 轉為 stable)
- Beta 測試者:若你在意「平行任務與主工作互相踩腳」,beta.82 的 isolation 是這條線最重要的能力;依賴長生命週期 daemon 的部署應關注 beta.81 的重連語意
學習重點
- Copy-on-write 是平行開發的物理隔離層:APFS clonefile 與 btrfs/ZFS reflink 讓「clone 一份 working tree」幾乎免費——先把隔離做便宜,才敢把隔離做預設。fallback 階梯(含 git worktree rcopy)保證任何平台都有下台階。
- Transport 斷裂不等於任務死亡:
transport_gone的舊語意把「我看不到你」當成「你死了」。重連 + transcript 對齊的設計區分了通道(transport)與狀態(session)——通道可斷,狀態可恢復。