BOTBUS / 博客

同时用 Codex 和 Claude Code,怎么在一个 app 里管理两边的任务

同一台电脑上既跑 Codex 又跑 Claude Code,不想来回切两个 app?这篇讲 BotBus 怎么把两种 agent 的任务收进同一个列表,各自能做什么、差在哪,以及怎么开关和新建。

·

先说结论

很多人现在是两种 agent 混着用:Codex 跑一个重构,Claude Code 同时在另一个目录里补测试。麻烦在于两边各有各的界面、各有各的会话记录,想知道“哪个在等我”得分别去看。BotBus 的做法是在电脑上常驻一个应用(Mac 上在菜单栏,Linux 上是命令行后台程序),同时接入本机的 Codex 和 Claude Code,把两边的任务合进同一个列表,再同步到 iPhone 和 Apple Watch。你继续用原来的方式启动它们,不用为了统一管理改工作流。

下面讲它分别怎么接入两种 agent、合在一起之后界面是什么样、两边能做的事有哪些不同,以及需要注意的边界。

为什么混用两种 agent 会越来越常见

Codex 和 Claude Code 的长处不完全一样,模型、默认工具、审批习惯也各不相同。实际工作里常见的分法是:一个负责长时间的改动,另一个负责审查、写测试或者处理一个临时的小问题;或者同一个仓库里用两种 agent 各开一个会话,比较它们给出的方案。

问题在于注意力。两种 agent 同时跑时,你要记住三件事:哪个会话停在审批上、哪个跑完了、哪个跑偏了。如果这些信息分散在终端窗口、Codex 桌面 app 和 Claude 的会话里,人一离开电脑,基本就只能靠回来时挨个翻。把两边的状态放进同一个列表,是解决这个问题最直接的办法。

BotBus 怎么分别接入两种 agent

BotBus 把电脑上的每种 agent 当成一个“连接器”。菜单栏的「本机 Agent」分区和设置页各列一份,显示名称、是否可用和任务数。Codex 和 Claude Code 的接入方式不一样,这也决定了后面能做的事有所不同。

Codex:只读观察加 app-server 控制

Codex 会把会话线程记在本机 ~/.codex 下的 SQLite 数据库里。BotBus 大约每 2 秒只读一次这些数据库,整理出任务列表,不写入、不改结构。BotBus 同时找得到 codex 可执行文件和这些数据库时,Codex 这一行显示为正常;只找到其中之一时会标出缺什么。

从手机发起的操作(新建、续聊、审批、回答提问、中断)走 Codex 自己的 codex app-server 接口,不直接改数据库。如果你平时用 Codex 桌面 app,想让手机和桌面操作同一个会话,第一次接入时先完成桌面上的任务、退出 Codex,再从菜单栏 Codex 那一行点「启动 Codex」,这样桌面和 BotBus 共用同一条通道,审批以先回答的一端为准。详细说明见在 iPhone 上查看 Codex 任务。

Claude Code:hooks 观察加 claude -p 控制

Claude Code 没有可以直接读的状态数据库,所以 BotBus 的做法是:在设置页安装它的 hooks。安装器只合并 ~/.claude/settings.json 里带 BotBus 标记的条目,保留你原有的其他设置;卸载时也只移除自己的那几条。装好之后,你在终端或桌面 app 里开的 Claude Code 会话,从提交提示词、请求权限到结束,都会报给本机的 BotBus。启动时它还会只读扫一遍最近 7 天的会话记录,把 hooks 装之前或 BotBus 没开时的会话也补进列表。

从手机新建和续聊 Claude Code 会话时,BotBus 起的是 claude -p 子进程,这一轮里的审批经它的标准输入输出直接回到手机,不依赖 hooks。所以即使没装 hooks,手机开的任务照样能审批;装了 hooks,电脑上开的会话才看得见、才能在手机上审批。更细的流程见在手机上审批 Claude Code。

合在一起之后是什么样

一个列表,按电脑和项目分组

手机上先选电脑,电脑页顶部是这台电脑上装着或有任务的 agent 标签,另有一个「全部」。在「全部」里,同一个目录下的 Codex 会话和 Claude Code 会话归在同一个项目下,你看到的是“这个仓库现在有哪些会话”,而不是“Codex 有哪些、Claude 有哪些”。想只看一种,点对应的标签即可。

每台电脑的页面顶部会挂出最需要注意的几条会话:等你处理的排在最前,其次是正在运行的。不管它来自哪种 agent,排序规则都一样。

通知规则也一样

两种 agent 的通知都只有四类:等你审批、等你回复、任务完成、任务失败。点开通知直接跳到对应的会话。菜单栏图标也是合并后的状态:任一边有任务在跑,眼睛就左右扫视;任一边有任务等审批或等回复,两盏头灯就交替闪,右边显示待处理的总数。

新建时选用哪个 agent

在手机上新建对话时要选 agent。快速对话默认用上次用过的那个,没有的话用最近一条任务所在的 agent。在某台电脑、某个项目里新建时,默认用这个项目最近一条会话的 agent。当然都可以手动改。只有在线电脑上可用并且启用了的 agent 才会出现在可选列表里。

两边能做的事不完全一样

统一列表不等于两边能力完全相同。下面这些差异来自两种 agent 本身的接入方式:

怎么开关某一种 agent

设置页里每个连接器都有一个启用开关,手机上也能翻同一个开关。关掉之后,这种 agent 的任务不再出现在列表里,任务数归零;重新打开后第一次同步是静默的,不会把积压的状态一次性推成一堆“任务完成”通知。比如这周你只用 Claude Code,就可以先把 Codex 关掉,列表会清爽很多。

不止这两种

除了 Codex 和 Claude Code,BotBus 还内置接入 Hermes、Pi、OpenClaw 和 DeepSeek Harness,实现了 ACP(Agent Client Protocol)的其他 agent 也能接进来,接入方法见连接你的 agent。它们和 Codex、Claude Code 进同一个列表,只是能做的操作取决于各自的能力,比如 Pi 没有审批。

限制与边界

现在能不能用

电脑端有 Mac 版(菜单栏应用,需要 macOS 26 或更新)和 Linux 版(x86_64 / aarch64 的命令行程序,见安装说明),都可以在官网下载。下文的菜单栏图标与「本机 Agent」分区说的是 Mac 版。iPhone 和 Apple Watch 版已在 App Store 上架;Windows 与 Android 版在计划中。

常见问题

同一个项目里同时有 Codex 和 Claude Code 的会话,会不会互相覆盖?

不会。每条会话都带着自己的来源,任务身份是“哪台电脑 + 哪个任务”,两种 agent 的会话在同一个项目下并列显示,互不影响。

我只用其中一种,另一种没装,会有问题吗?

没有。BotBus 只接入本机探测到的 agent,没装的那种不会出现在列表里,也可以在设置页直接关掉。

装 Claude Code 的 hooks 会改掉我自己的配置吗?

不会。安装器只合并带 BotBus 标记的 hook 条目,保留 ~/.claude/settings.json 里的其他内容;卸载时也只移除这些条目。

能在 Apple Watch 上同时看两种 agent 的任务吗?

可以。手表从 iPhone 同步配对信息后自己联网,看到的是同一份合并后的任务列表,也能处理审批和回复。

两台 Mac 各跑一种 agent,也能放在一起看吗?

能。多台 Mac 可以配对到同一部手机,每台电脑的任务分开列出,同一个路径在不同电脑上算不同的项目,不会混在一起。

← 全部文章