Theme / v5.1.7

Oh My OpenAgent

AI 代理編排系統

基礎觀念

v5.0.0-beta.82:Copy-on-Write 任務隔離

掌握 beta.77~beta.82 的重點進展:@oh-my-opencode/isolation-core 的 copy-on-write 任務隔離(APFS/btrfs/ZFS reflink)、daemon 斷線後任務子程序重連、senpi 2026.9.20 引擎與 TUI 修正。

概述

後續更新: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)

兩個面向:

  1. Session 關閉時的回收:關閉 context 不再暴露 session ID 時,仍能從 engine 的 resident handles 回收 ownership——保留可恢復的 task records、不波及 sibling sessions
  2. 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 的重連語意

學習重點

  1. Copy-on-write 是平行開發的物理隔離層:APFS clonefile 與 btrfs/ZFS reflink 讓「clone 一份 working tree」幾乎免費——先把隔離做便宜,才敢把隔離做預設。fallback 階梯(含 git worktree rcopy)保證任何平台都有下台階。
  2. Transport 斷裂不等於任務死亡:transport_gone 的舊語意把「我看不到你」當成「你死了」。重連 + transcript 對齊的設計區分了通道(transport)與狀態(session)——通道可斷,狀態可恢復。

來源:v5.0.0-beta.82