/ 命令,在 Codex 里是 $ skill。
它们都不会大声报错。即使无事可做也会干净地退出——
Not paired 是成功,不是错误。
最后一行的空格不是漏写:Claude Code 和 Codex 由各自的宿主负责更新,所以 Nomo 没有在那边加命令。它们各自需要什么——Codex 通常什么都不需要——都写在安装里。
pair
code 参数完全跳过浏览器,直接打印一段可以手输的一次性配对码,供无头机器或 SSH 会话使用。它是刻意排在第二位的:那段配对码会落进你的终端,也就落进了智能体的转录记录。
配对若 10 分钟内未使用就会过期。一次配对覆盖的是这台机器,而不是某个智能体——同一台 Mac 上的 Claude Code、Codex 和 OpenCode 共用它。完整流程见配对。
status
— you are here 标出来。
上一次真正有事件离开这台电脑是什么时候,以及看门狗在不在。看门狗没跑本身没关系——下一个会话开始时它会自己起来。但确实有会话在跑却显示
never,那就不对了。经由本地网络的直连:这台电脑正在监听的端口和 id、你的手机上一次真正连上它是什么时候,以及这台 Mac 上一次广播自己地址是什么时候。中间那行才是关键——它是直连确实通过的唯一证据。地址早就广播出去却从未被连上,说明你的手机路由不到这里;刚广播完还没被连上,那只是还太早,判断不了。请求被拒绝时会写出原因,而不是留下一片沉默。从未监听过的电脑上根本不会出现这一行——开关在你的手机上,而且默认是关的。
on 表示权限请求会被拦在这里并发到你手机。PAUSED 表示不会——它们直接进终端,而且会一直这样,直到有人恢复它,哪怕是几个月以后。如果你的手机不再问你任何事,这一行就是全部答案:见暂停远程审批。你的智能体有没有在给 Nomo 喂数据,以及上一次是多久以前。OpenCode 没有 hook,所以那里这一行叫
Plugin。什么都没触发?重启 Claude Code 让它的 hook 加载;Codex 那边运行 /hooks;OpenCode 那边重启它,好让插件加载。! 是问题本身,→ 是该怎么办,并且按你所在智能体的命令写法给出。这台电脑上其他每个智能体各占一行浓缩信息,放在 Also on this computer 下面——而当出问题的是那些智能体之一时,它也会在这里直接说出来,不必等你自己过去看:
approvals
reset
unpair
update
OpenCode
/nomo-* 命令,就是靠这一步收进来的——然后让你重启 OpenCode。插件只在服务器启动时导入一次,所以在你重启之前,跑着的仍然是旧的那一份。
拿不准的时候,它宁可拒绝也不动手,而且每一次拒绝都会说清楚该怎么办:被之前的 --ref 安装钉住的克隆目录、还有未提交改动的工作区、被搬走或删掉的克隆目录,以及这里根本什么都没装。
它更新的是桩文件指向的那份克隆目录——也就是 OpenCode 真正导入的那一份——未必是你输入的命令文件所属的那一份。如果你留着不止一份克隆,这个区别就要紧了。
状态文件的位置
插件保存的一切都在~/.config/cc-status/ 里——配对信息、加密密钥(权限 0600)、每个被追踪会话一个文件,以及一份本地跟踪日志。这个文件夹里的东西不会发往任何地方。
源代码
这些命令就是插件,而插件是开源的。如果你想确切知道你机器上跑的是什么、有什么东西离开了它,答案就在一个仓库里——从市场安装的版本只是它的一份普通克隆。KarrixLee/nomo
完整的插件源代码,采用 MIT 许可证。问题和 bug 反馈也在这里。

