Skip to main content
OpenCode 的 sessions 出現在同一份列表、同一個動態島上,走的也是同一組配對。不過 OpenCode 的做法和另外兩個代理不同 — 沒有 hooks,也沒有屬於自己的終端機視窗 — 所以有幾件事到你手機上的樣子不太一樣。 Nomo 從頭到尾的原則是:絕不提供一個 Mac 無法兌現的按鈕。所以碰到手機做不到的事,你拿到的不會是一個默默失敗的控制項,而是一句誠實的「請在你的電腦上做這件事」。
OpenCode 沒有獨立的配對。三個代理讀的是那台電腦上的同一份設定 — 你把機器配對一次就好,從哪一個代理做都行。在傳輸上,唯一的差別是一個標示它來自哪個代理的標籤。

相同的部分

  • sessions、狀態、資料夾,以及動態島。
  • 權限請求 — shell 指令、檔案編輯、讀取、抓取與網路搜尋 — 可從動態島或 App「允許」、「一律允許」和「拒絕」。
  • 問題連同選項,點一下就能回答。
  • session 的待辦清單,在計畫閱讀器裡。

CLI 與桌面應用程式

兩邊都能用,Nomo 在兩邊的表現也一樣。桌面應用程式把 OpenCode 自己的伺服器跑在它內部,而那個伺服器會從 ~/.config/opencode/plugins/ 載入外掛程式,和 CLI 完全相同 — 所以你在 App 裡開的 session 一樣會送到手機上,帶著標題、模型、正在忙還是閒著的狀態,權限請求也照樣可以從動態島或 App 回答。 桌面應用程式沒有另外一套安裝,安裝裡寫的那一份兩邊都適用。重新啟動也是 — 外掛程式只在伺服器啟動時匯入一次,沒有熱重載,所以安裝時就已經開著的 App,也要結束再重新開啟。 唯一不變的是「在 Mac 上開啟」 — 它在 OpenCode 的 sessions 上依然不會出現,桌面應用程式也一樣,原因就在下面
OpenCode 桌面應用程式還在 beta 階段。如果你在 App 裡開的 session 沒有送到手機上,先檢查上面那次重新啟動。

指令沒有前綴

Claude Code 把 Nomo 的指令放進 nomo-cc: 命名空間,Codex 則以 $ skill 執行它們。OpenCode 兩者都不是:它的指令名稱是扁平而且全域的,所以 Nomo 的那五個就只是 /nomo-pair/nomo-status/nomo-approvals/nomo-reset/nomo-unpair。沒有前綴要加,也沒有選單要找。 /nomo-pair 在 OpenCode 裡可以獨立運作 — 從來沒配對過的機器也能從這裡完成配對。如果你已經在 Claude Code 或 Codex 裡配對過了,就沒事要做:你的 OpenCode sessions 會直接出現。 五個都在指令裡。
/nomo-approvals 是這台機器的開關,和 Claude Code 與 Codex 共用。在 OpenCode 裡把它關掉,三個代理就一起關掉。

配對後要重新啟動

外掛程式只在 OpenCode 的伺服器啟動時讀取一次配對。把一台原本沒配對的電腦配對起來時,正在執行的 OpenCode 早就決定保持安靜了 — 結束它再重新開啟,sessions 就會開始同步過來。這和安裝要求的是同一次重新啟動,也是剛配對好的機器什麼都沒顯示時,第一個該檢查的地方。

「拒絕」是對整輪的決定

OpenCode 把一次被拒絕的權限,當成對代理正在做的事的回答,而不是對某一個工具的回答。所以你從手機上拒絕,也會一併拒絕那個 session 正在等待的其他每一個權限 — 它們的卡片會自行結束,並從你的手機上消失。 婉拒一個問題會結束這一輪,而不是再問一次。 「允許」和「一律允許」則永遠只解決你點的那一張卡片。

沒有「在 Mac 上開啟」

這個按鈕不會出現在 OpenCode 的 sessions 上。一個 OpenCode session 屬於編輯器自己的伺服器行程,而不屬於某個終端機視窗,所以沒有視窗可以讓你的手機切到最前面 — 在 opencode serve 底下,甚至可能根本沒有視窗。 卡片上的其他東西都正常運作,只是少了一條回到電腦的捷徑。

OpenCode 本來就問得少

批准是通的。OpenCode 只是比 Claude Code 問得少 — 手機安靜,通常代表根本沒有人問過,而不是哪裡壞了。 在預設設定下,只有四件事會來問你:
  • 動到專案資料夾以外的檔案。
  • 讀取 .env 檔案。
  • OpenCode 自己的無限迴圈防護,當它認定代理在原地打轉時。
  • 代理向你提出的問題。
其他的一律不問就執行,shell 指令也一樣。 這是 OpenCode 的預設設定,不是一條改不動的規則,要不要改在你。在專案的 .opencode/opencode.json 裡,或是要對所有專案生效就在 ~/.config/opencode/opencode.json 裡,把某個工具設成 ask,它就會重新回到你面前,也就回到你的手機上:
至於你要不要這樣,那是你習慣怎麼工作的問題。Nomo 只是把你的代理問的東西原樣轉過來,不會自己多加什麼。 如果這些都解釋不了那份安靜,還有一個看起來一模一樣的原因:就在下面的自動核准

自動核准不會顯示

OpenCode 在自己的介面裡處理 --yolo,從不把這件事告訴外掛程式。所以 App 無法顯示某個 session 是不是在關掉批准的情況下執行 — 它看起來就和其他 session 一樣。 如果你預期會出現的請求一直沒有送到手機上,那就是該檢查的地方:一個以自動核准模式啟動的 session 不會問任何人,包括你。

計畫模式

切換到計畫代理 — 在 OpenCode 裡按 Tab — 只要它停在那裡,你的手機就會把這個 session 標成正在規劃。 計畫本身留在你的電腦上。只有設定了 OPENCODE_EXPERIMENTAL_PLAN_MODE,OpenCode 才會寫出計畫檔案,而它預設是關閉的,所以通常沒有文件可以讓 Nomo 傳給你。計畫閱讀器在 OpenCode 的 session 上顯示的是它的待辦清單,和一般的一輪完全一樣。 把那個變數打開,就會多一件事送到你的手機上:計畫完成時,OpenCode 自己那句*「要切換到 build 代理並開始實作嗎?」*的詢問,會以一個你可以點一下回答的批准送達。它同時也會開始把計畫檔案寫進你儲存庫裡的 .opencode/plans/,你大概會想把它加進 .gitignore

重設前要先關閉 OpenCode

/nomo-reset 清除的是行程已經消失的那些列。對 OpenCode 來說,那個行程是伺服器,而不是你打字的那個終端機 — 所以屬於執行中 OpenCode 的列不會被清掉,這是刻意的。如果有一列看起來過時卻怎麼都不肯消失,請先結束 OpenCode。

更新 App

每個 session 都帶著一個標示它由哪個代理產生的標籤。支援 OpenCode 之前的 Nomo App 版本不認得那個標籤,會退回顯示 Claude Code 的標記:sessions 全都在、一切也都正常運作,只是掛著錯的標誌。更新手機上的 App 就是全部的解法 — 電腦上什麼都不用動。