---
title: 换 AI 编程工具：先检查，能用才切
nav: 换 AI 工具
summary: 在手机菜单里发换 AI 工具的命令，主 Agent 先解释、扫描这台电脑上的 Claude Code、Codex、OpenCode，并用无头方式试一下各自的登录；能用的才切，切完新工具先自报家门，不通就自动切回。
order: 29
---
# 换 AI 编程工具：先检查，能用才切

AI 编程工具就是这台电脑上真正动脑子、动手干活的那个程序：Claude Code、Codex 或 OpenCode。Agent J 是你手机通往它的那条线。换工具，换的是谁来回答你；工作目录、手机、审批和安全规则都不变。

## 怎么发起

- 在输入框左边的 ≡「全部命令」里，「一键执行」一组（`/customize` 下面）有一条换 AI 工具的命令（`/switch-harness`），点一下就发给主 Agent。想直接说切到哪个，也可以在输入框里打这条命令，后面补一句「切换到 Codex」再发。
- 或者直接说「切换到 OpenCode」「切回 Claude Code」。

点了不会马上切换。这条命令交给现在的主 Agent，由它按一套固定流程来做。

## 主 Agent 会怎么做

1. **先说明。** 你什么都没补就发过来，它会先用两三句话解释它说的是哪种工具，再告诉你接下来怎么切。
2. **扫描。** 看这台电脑装了哪几个 AI 编程工具、各是什么版本。
3. **试登录。** 对每个装了的工具，用你自己的登录、用它切过去后会用的模型，做一次很小的无头调用（不带任何工具权限，每个最多 60 秒），看它现在能不能正常回答。这一步在电脑上的一个独立小任务里做，用的是 Agent J 后台服务的环境，也就是切过去以后那个工具真正会拿到的环境。只读：不改配置，不读出、不显示任何密钥。
4. **告诉你结果。** 比如「现在能切到：Codex、OpenCode」，或者「这台电脑只有现在这一个能用，没法切换，要切得先装一个别的」。装了却用不了的，会说明原因：没登录、token 失效，或者网络 / 代理不通。
5. **帮你装、教你登。** 没装的，你同意后它按 [安装 AI 命令行工具](/docs/setup-agents/) 帮你装。登录要你自己来，它会一步步告诉你在自己的终端里运行什么、会看到什么、该点哪里：Claude Code 是 `claude auth login`，Codex 是 `codex login`，OpenCode 是 `opencode auth login`。模型的 API key 不进聊天，走手机上的密钥卡。装好、登好，它会再试一次。
6. **切换。** 只有目标刚刚试通、你也明确要切，它才动手。

## 切换时会发生什么

主 Agent 先跟你说一句：Agent J 会重启，手机断开几秒后自动连上。然后它运行 `agentj agent switch <目标>`：

- 这条命令会再试一次目标的登录，这是最后一道闸。试不通就什么都不改，主 Agent 会告诉你原因。
- 试通了，切换交给电脑上一个独立的小任务：等这一轮说完，换成新的工具，重启 Agent J，然后检查新的工具起来没有、能不能回答。
- 换 Codex 时，这道闸还会按切换后的样子把它的长驻会话先打开一次：同一个工作目录，用你自己的 Codex 设置和里面的 MCP 服务器、插件（不会在你的 Codex 历史里留下会话，也不发任何消息）。打不开就什么都不改，并告诉你原因；打开得慢，切换后就相应多等它一会儿。
- 重启后，新的工具只要还在启动，就会继续等，最多 8 分钟。还是不说话的话，`agentj agent switch --result` 和切回后的说明会讲清它停在哪一步：还在启动、卡在终端里的确认提示、在等手机上的批准卡、启动失败，或者已经起来但一直不说话；有报错会说报错类型，并告诉你下一步怎么做。
- 一切正常，新的工具会先跟你打招呼，说它是谁、用的什么模型。
- 任何一步不通，Agent J 会自动切回原来的工具，原样恢复之前的设置，再由原来的那个告诉你没切成、为什么。

所以就算你不在电脑前、不会用终端，也不会因为切到一个不能用的工具而失联。

## 切换前先写交接

每个工具有自己的对话，新的那个看不到你们刚才聊了什么。所以切换前，Agent J 先让**现在这个**工具按和[压缩交接](/docs/compaction/)一样的格式写一份交接文件；切过去以后，新的工具**先读它，再接着干**。

- 交接在检查通过之后、真正切换之前写。只留要点：你的原话要点、进度、已经定下的决定、关键路径和命令、踩过的坑、下一步、等你回答的问题；不超过 150 行，不写任何密钥、token、密码。
- 文件位置固定：独立会话在 `<工作目录>/.agentj/handover/switch.md`，共享会话在 `~/.local/state/agentj/handoff/switch.md`。切回来也一样：离开的那个写，接上的那个读，同一份文件合并更新。
- 新的工具接上后先读交接，再跟你打招呼，说它接上了什么；然后 Agent J 让它按交接里的「下一步」接着干。交接里没有进行中的事，它就等你发话。
- 最多等 3 分钟。没写成也照样切换：手机上会说「这次没写成交接」，新的工具也会告诉你它不知道之前说过什么，要点可能得再说一遍。

## 切过去，也要切得回来

- 切换前，除了试目标，还会用同样的办法试一下**现在这个**工具。现在这个在后台服务里试不通（比如它的登录只放在你终端的环境变量里），切过去以后就切不回来了，所以默认不切，并告诉你怎么先把它修好。你确定要切，可以加 `--force`。
- 已经切过去、想回去却过不了检查时，在电脑上运行 `agentj agent switch --undo`（或者让主 Agent 运行）：不再预检，直接原样换回上一次切走前的那个；换回去起不来，会自动回到现在这个。
- 后台服务找不到 Claude Code 的登录时，会直接告诉你怎么办：在终端运行 `claude`，输入 `/login` 登录一次（Mac 上登录存进钥匙串，后台也能用）；或者在能用 claude 的终端里运行 `agentj service import-key CLAUDE_CODE_OAUTH_TOKEN`，再运行 `agentj service restart`。
- 工具自己升级过（比如 Codex 从 0.156 升到 0.162），后台服务以前记下的旧版本路径会自动作废，改用你终端里找到的那个，扫描结果里会写明。

## 切换不用管理员密码

不管现在是哪个工具在干活，包括在隔离里运行的 OpenCode、Kimi Code、Qwen Code，切换、扫描和 `--undo` 都交给 Agent J 自己的后台服务去做：不用管理员密码，也不用你回电脑前开终端。

- Agent 要是说「后台服务没加载」，要你输管理员密码，或者让你去终端运行 `agentj service start`，不用照做。它在隔离里看不到系统的服务管理器，才会以为服务停了。
- 想确认服务在不在运行，就运行 `agentj service status`。它直接问正在运行的服务本身，有应答就显示「后台服务在运行（serve 在应答）」。
- Agent J 也不会为管理它自己的后台服务弹管理员密码卡，这种请求会被直接拒绝。

## OpenCode 没有 key 也能用

- OpenCode 自带几个免费模型（`opencode/…`，名字多半以 `-free` 结尾），不用注册、不用 key、不用付钱。用的是这种模型时，没有 key 也算能用；切过去写成 `agentj agent switch opencode --model opencode/<免费模型>`，`opencode models opencode` 列出现在有哪些（几乎每天在变）。
- 免费模型的检查走和正常聊天同一条路（OpenCode 会拒绝不像它自己客户端的请求）；刚装好的头一两分钟偶尔被拒，检查会自己等一会儿再试，最多多花一分钟多。
- 有几个免费模型的服务商会记录对话或拿去训练模型，选中它们时切换结果和手机「模型和 API Key」卡上会多一句提示。别在里面发个人或机密信息；长期用建议换成你自己的模型。
- 切换写进设置后，切换任务会把设置读回来核对一遍，对不上就不切。
## 等的时候手机上看到什么

扫描最多要三分钟左右，切换还得重启一次。这段时间回复卡不会空着：正文开头是个跳舞的小机器人，后面跟着 Agent J 自己写的进度——正在探测哪一个（第几个、共几个）、正在切换到哪一个，或者已经切回原来那个、它马上说明原因。机器人还在跳，就说明消息没丢、进程没断。

## 几件要知道的事

- 每个工具有自己的对话记录。切过去是那边的对话，切回来接着原来的。
- 隔离、共享会话还是独立会话、工作目录、审批规则，切换都不改。
- 共享模式下，新的工具要有可以接上的会话：Claude Code 要在电脑上开着；Codex 和 OpenCode 没有开着的会话时，会在同一个目录里新开一个。
- 电脑上的 Codex 对话如果是只读权限，它运行不了切换命令，会把 Codex 的拒绝原话告诉你；那条对话要改成「完全访问」才行。
- 想看上一次切换的结果，在电脑上运行 `agentj agent switch --result`，或者问主 Agent。

```bash
agentj agent switch --scan
```

```bash
agentj agent switch codex --dry-run
```

第一条看现在能切到哪些（用后台服务的环境逐个试）；第二条只检查能不能切到 Codex，不切。

## 换成 Kimi Code {#kimi}

Kimi Code CLI（`kimi`，月之暗面出品，MIT 开源，2.2.0 或更新）是 Agent J 能切换的第四个 AI 编程工具。在用不了 Claude Code 和 Codex 的地方（中国大陆、香港、澳门），它是常见的选择。Agent J 通过 Agent Client Protocol（`kimi acp`）跟它对话：每个 Agent 一段长驻对话，回复整段发到手机，每次审批都在你手机上。

- 切换：`agentj agent switch kimi`；在海外站 kimi.ai 买的会员加 `--region global`。先检查、写交接、不通自动切回，这些和别的工具一样。Kimi Code 只支持独立会话（暂时不能接电脑上开着的终端会话）。
- 手机上登录：设置 → 紧急修复 → ③ AI 账号登录失效 → AI 登录救援 → Kimi Code →「重新登录（设备码）」。电脑运行官方的 `kimi login`，手机上显示一个链接和一次性设备码，你在任何登录了 Kimi 的设备上确认就行。在电脑上登录是 `kimi login --region mainland-cn`（国内站 kimi.com，默认）或 `kimi login --region global`（海外站 kimi.ai）。kimi.com 会员的 key 在 api.kimi.com 和 api.kimi.ai 两个地址都能用。
- 也可以用 Kimi Code 控制台的 API key：让 Agent 发手机密钥卡存 `KIMI_API_KEY`，不要把 key 发在聊天里。只有 Kimi 自己没登录时，Agent J 才把这把 key 在内存里交给它。
- 审批权在你手里。Kimi 自己的 hook 出错或超时会默认放行，所以 Agent J 不依赖它：每段 Kimi 对话都固定在 Kimi 的手动审批模式，每个权限请求都变成手机卡片，你点同意只算这一次，绝不是以后都同意。Kimi 要是自己切到 Auto 或 YOLO 模式，Agent J 会马上切回来。Kimi 没有自带沙箱：它在 Agent J 的隔离里运行，危险命令拦截强制打开。你自己在 `~/.kimi-code/config.toml` 里写的放行规则还是你的，`agentj doctor` 会告诉你有几条。
- 技能：Kimi 读 `~/.agents/skills`，Agent J 的随包技能本来就链接在那里，直接能用。广场里的包给 Kimi 装的是 Codex 版。
- 想用 OpenCode 接 Kimi 模型？那条路线还在，`agentj agent route` 两种都会给。

## 换成 Qwen Code {#qwen}

Qwen Code（`qwen`，阿里出品，Apache-2.0 开源，0.25 或更新）是 Agent J 能切换的第五个 AI 编程工具，在中国大陆和阿里百炼 Token Plan 正好配成一对（[怎么配](/docs/setup-agents/#bailian)）。Agent J 和它对话用的也是 Agent Client Protocol（`qwen --acp`），和 Kimi Code 一样。

- 切换：`agentj agent switch qwen`。先检查、写交接、不通自动切回，这些和别的工具一样。只支持独立会话。
- 它的免费登录 2026-04-15 已经停了，key 就是它的登录：让 Agent 发手机密钥卡存 `BAILIAN_TOKEN_PLAN_API_KEY`。Agent J 只在内存里把 key 交给 Qwen Code；你自己配过 `~/.qwen/settings.json` 的，以你的为准。
- 审批权在你手里。Qwen Code 默认的模式会让一个分类器自己批准一部分操作；Agent J 把每段对话都切回「每次都问」，每个请求都变成手机卡片，只批这一次。
- 手机上的 /model 列出套餐里的模型，名字后面带“看图”两个字的能读截图。换模型会重启 Qwen Code，接着原来的对话。
- 你自己的定时任务也可以用 Token Plan 的 key（长时间连续跑的后台任务服务商可能限流，可改用按量付费的 key）；客服 bot 是在服务别人，Agent J 不会把这把 key 交给 bot。

## 换成 DeepSeek dsh {#dsh}

dsh（`DeepSeek Harness`，DeepSeek 出品，MIT 开源，0.2.0-rc.2 或更新，还是开发者预览版）是 Agent J 能切换的第六个 AI 编程工具。Olares 自带的 Agent「Lares」用的就是它；它也能接任何 OpenAI 兼容的模型服务（[怎么配](/docs/setup-agents/#dsh)）。Agent J 和它对话用的也是 Agent Client Protocol（`dsh --profile acp`），和 Kimi Code 一样。

- 切换：`agentj agent switch dsh`。先检查、写交接、不通自动切回，这些和别的工具一样。只支持独立会话。
- 还没配模型？检查结果会告诉你。运行 `agentj agent dsh --base-url https://<服务>/v1 --model <模型 id>` 配一条，key 只走手机密钥卡（`DSH_ROUTER_API_KEY`；DeepSeek 官方 API 用 `DEEPSEEK_API_KEY`）。你自己配过 dsh 的，按你的来。
- 审批权在你手里。Agent J 让 dsh 以只读方式启动，每次都问：改文件、跑不是只读的命令，每一个都变成手机卡片，只批这一次，没有「总是允许」。
- 手机上的 /model 列出路线里的模型和 DeepSeek 的模型，/context 也能用。对话快满时 dsh 会自己压缩（它没有 /compact）。用你自己的模型服务，就没有套餐额度一说。
- 暂时只能读文字。定时任务也能用它，但拿不到密钥卡里的 key。
