跳转到主要内容
OpenCode 的会话出现在同一个列表里、同一个灵动岛上,走同一份配对。不过 OpenCode 的构造和另外两个智能体不一样——没有 hook,也没有自己的终端窗口——所以有几处到了手机上会不太一样。 Nomo 一以贯之的原则是:绝不提供一个 Mac 兑现不了的按钮。所以凡是手机上做不到的事,你拿到的不是一个会悄悄失效的控件,而是一句老实话——“这件事去电脑上做”。
OpenCode 没有单独的配对。同一台电脑上的三个智能体读的是同一份配置——你只需从其中任意一个配对这台机器一次。在传输层面上,唯一的差别是一个标明它属于哪个智能体的标签。

与其他智能体相同的部分

  • 会话、状态、文件夹,以及灵动岛。
  • 权限请求——shell 命令、文件编辑、读取、抓取和网页搜索——可以在灵动岛或 App 里允许、始终允许和拒绝。
  • 提问连同选项一起送达,点一个就能回答。
  • 会话的待办清单,在计划阅读界面里。

CLI 和桌面应用

两边都能用,Nomo 在两边的表现也一样。桌面应用把 OpenCode 自己的服务器跑在自己内部,而那个服务器读取 ~/.config/opencode/plugins/ 里的插件,和 CLI 完全一样——所以你在应用里开的会话同样会到达手机,带着标题、模型、正在忙还是空闲的状态,权限请求也照样能在灵动岛或 App 里答复。 桌面应用没有单独的安装,安装里写的那一套两边通用。重启也一样:插件只在服务器启动时导入一次,没有热重载,所以安装时已经开着的那个应用,也得退出再重新打开。 唯一不变的是“在 Mac 上打开”——它在 OpenCode 的会话上依然不出现,桌面应用也一样,原因就在下面。
OpenCode 桌面应用仍处于 beta 阶段。如果你在应用里开的会话没有到达手机,先检查上面那次重启。

命令没有前缀

Claude Code 把 Nomo 的命令放进 nomo-cc: 命名空间,Codex 则把它们当作 $ skill 运行。OpenCode 两样都不做:它的命令名是扁平且全局的,所以 Nomo 的这六条就是 /nomo-pair、/nomo-status、/nomo-approvals、/nomo-reset、/nomo-unpair 和 /nomo-update。没有前缀要加,也没有菜单要翻。 /nomo-pair 在 OpenCode 里可以独立使用——一台从未配对过的机器可以从这里完成配对。如果你已经在 Claude Code 或 Codex 里配对过它,那就什么都不用做:你的 OpenCode 会话会直接出现。 五条命令全都列在命令里。
/nomo-approvals 是这台机器的开关,和 Claude Code、Codex 共用。从 OpenCode 里把它关掉,三个智能体就一起关掉了。

配对之后要重启

插件只在 OpenCode 的服务器启动时读一次配对。给一台此前未配对的电脑做完配对,正在运行的那个 OpenCode 早已认定自己该保持沉默——退出再重开,会话就会开始镜像过来。这就是安装里要求的那次重启,也是一台刚配对好的机器什么都不显示时第一个该检查的地方。

拒绝针对的是整轮对话

OpenCode 把一次被驳回的权限当作对智能体正在做的这件事的答复,而不是对某一个工具的答复。所以你在手机上拒绝,也会一并驳回这个会话正在等待的其他每一个权限——它们的卡片会自行了结,并从你手机上消失。 回绝一个提问会结束这一轮,而不是再问你一遍。 允许和始终允许则只会了结你点的那一张卡片。

没有附注,也没有自填回答

**拒绝并附注…**不会出现在 OpenCode 的请求上。给拒绝附上一条消息,会改变 OpenCode 对它的处理方式,所以 Nomo 只发出你要的那个普通拒绝,而不是收集一段没人会读的话。 提问只给出它的选项,别无其他——没有其他…,也没有添加附注——Claude Code 的批准并使用自动模式这类选项在这里也不适用。

没有“在 Mac 上打开”

这个按钮不会出现在 OpenCode 的会话上。OpenCode 的会话属于编辑器自己的服务器进程,而不是某个终端窗口,所以没有窗口可以让你的手机调到最前——在 opencode serve 下甚至可能根本没有窗口。 停止同样不会出现在 OpenCode 的会话上。 卡片上的其他一切照常工作,只是少了这两个按钮。

OpenCode 本来就问得少

审批是通的。OpenCode 只是比 Claude Code 问得少,所以手机安静,通常意味着根本没人问过,而不是哪里坏了。 默认设置下,会来问你的只有四件事:
  • 碰项目文件夹之外的文件。
  • 读 .env 文件。
  • OpenCode 自己的死循环防护,当它认定智能体在原地打转时。
  • 智能体向你提的问题。
其余的一律不问就跑,shell 命令也在其中。 这是 OpenCode 的默认配置,不是一条改不动的规矩,要不要改在你。在项目的 .opencode/opencode.json 里、或者要对所有项目生效就在 ~/.config/opencode/opencode.json 里,把某个工具设成 ask,它就重新回到你面前,也就回到你手机上:
至于你要不要这样,那是你习惯怎么干活的问题。Nomo 只是把你的智能体问的东西原样转过来,自己不多加什么。 如果这些都解释不了这份安静,还有一个看起来一模一样的原因:就在下面的自动批准。

自动批准不会显示

OpenCode 在自己的界面里处理 --yolo,从不把这件事告诉插件。所以 App 没法显示某个会话是不是在关闭审批的情况下跑的——它看起来和别的会话没有区别。 如果你预期会来的请求始终没到手机上,那就该查这一点:一个以自动批准模式启动的会话谁也不问,包括你。

计划模式

切换到 plan 智能体——在 OpenCode 里按 Tab——你的手机就会把这个会话标记为正在规划,只要它还停在那个模式里。 计划本身留在你的电脑上。只有设置了 OPENCODE_EXPERIMENTAL_PLAN_MODE,OpenCode 才会写出计划文件,而它默认是关的,所以通常没有文档可以发给你。对 OpenCode 会话来说,计划阅读界面显示的就是它的待办清单,和普通的一轮完全一样。 把这个变量打开,还会多一样东西到达你的手机:计划写完时,OpenCode 自己那句*“切换到 build 智能体并开始实现?”*的提问会作为一条审批送来,你点一下就能回答。它同时也会开始把计划文件写进你存储库里的 .opencode/plans/,那个目录你多半会想加进 .gitignore。

重置前需要关闭 OpenCode

/nomo-reset 清理的是进程已经不在的会话行。对 OpenCode 来说,那个进程是服务器,不是你敲命令的那个终端——所以属于一个正在运行的 OpenCode 的会话行不会被清掉,这是有意为之。如果某一行看着陈旧却怎么都不肯走,先退出 OpenCode。

更新插件

/nomo-update 只属于 OpenCode。Claude Code 和 Codex 由各自的宿主负责更新;OpenCode 没有宿主可问,所以这条命令随插件一起发。 它先报告再动手——Already on 2.1.22 — nothing to do.,或者它即将取回的版本号——然后拉取更新,并要求做这一页上其他地方同样要求的那次重启。它只会动 Nomo 自己的克隆目录,而 bunx nomo-ai 只更新全局安装——--project 安装要在那个项目里用 /nomo-update 更新。它做什么、什么时候会拒绝,都在命令里。

更新 App

每个会话都带着一个标明它由哪个智能体产生的标签。早于 OpenCode 支持的那些 Nomo App 版本认不出这个标签,会退回到 Claude Code 的标记:会话一个不少,一切照常工作,只是徽标戴错了。把手机上的 App 更新一下就是全部的修复——电脑上什么都不用改。