当前位置:首页>安卓APP>把 Codex 装进安卓手机:Termux 部署实战

把 Codex 装进安卓手机:Termux 部署实战

  • 2026-09-12 17:20:22
把 Codex 装进安卓手机:Termux 部署实战

这篇是一次真实折腾记录:在 Android 手机上,通过 Termux 部署 Codex CLI。(不是在手机端连接电脑端的Codex)

目标很简单:离开电脑以后,手机也能直接跑 Codex,能问答、改文件、执行命令、做小项目,尽量接近电脑端 CLI 的使用体验。

我把入口拆成了两套:

sh

codex / codex-cli          # 手机日常入口:非流式,避免 Reconnectingcodex-raw / codex-cli-raw  # 官方原版入口:流式,保留用于排查

为什么要这样拆?

因为手机网络和部分兼容网关对长连接不一定稳定。官方 CLI 默认走流式 Responses 请求,网络一抖就容易出现:

text

Reconnecting...

所以我的处理方式是:官方原版不删,保留成 codex-raw;日常使用则走自己封装的非流式入口 codex。

◆准备条件

你需要准备这些东西:

  • 一台 Android 手机
  • Termux
  • 可用网络
  • OpenAI API Key,或者自己的 OpenAI 兼容网关
  • 可选:ADB,用来从电脑往手机推文件和调试

这篇教程用到的版本是:

text

@openai/codex@0.130.0

后面命令里的版本号也都按这个版本写。如果你要换成别的版本,要同步修改 npm 包版本和 linux-arm64 二进制包地址。

◆1. 安装 Termux 基础环境

先在 Termux 里更新包索引,并安装基础工具:

sh

pkg updatepkg install -y nodejs python git ripgrep make clang curl unzip tar

装完以后,确认这些工具都能正常执行:

sh

node -vnpm -vpython --versiongit --versionrg --version

这里不只是走个形式。后面 Codex 会依赖 Node,非流式入口会用到 Python,日常让 Codex 改文件、搜代码、跑构建时也会用到 git、rg、make、clang 这些工具。

◆2. 安装 Codex npm 包

继续在 Termux 里执行:

sh

npm install -g @openai/codex@0.130.0

正常电脑环境里,这一步通常就够了。

但在 Android + Termux 里,有一个坑:Node 识别出来的平台是 Android/arm64,而 Codex 官方可选二进制包是 Linux/arm64。npm 有时不会自动装对应的 Linux ARM64 包,所以后面要手动补一次平台二进制。

◆3. 手动补 Linux ARM64 二进制

先下载 Codex 的 Linux ARM64 包:

sh

cd "$HOME"curl -L -o codex-linux-arm64.tgz \  https://registry.npmjs.org/@openai/codex/-/codex-0.130.0-linux-arm64.tgz

然后解包:

sh

rm -rf "$HOME/.codex-linux-arm64-unpack"mkdir -p "$HOME/.codex-linux-arm64-unpack"tar -xzf codex-linux-arm64.tgz -C "$HOME/.codex-linux-arm64-unpack"

把解出来的平台包复制到 Codex npm 包的 node_modules 目录里:

sh

mkdir -p "$PREFIX/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-arm64"cp -af "$HOME/.codex-linux-arm64-unpack/package/." \  "$PREFIX/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-arm64/"

最后给 Codex 二进制和自带的 rg 加执行权限:

sh

chmod +x "$PREFIX/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-arm64/vendor/aarch64-unknown-linux-musl/codex/codex"chmod +x "$PREFIX/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-arm64/vendor/aarch64-unknown-linux-musl/path/rg"

这一段是手机部署里最容易漏的步骤。只装 npm 包但不补 Linux ARM64 二进制,后面很可能会出现命令找不到、平台包缺失之类的问题。

◆4. 配置 Codex 鉴权

先创建 Codex 配置目录,并限制权限:

sh

mkdir -p "$HOME/.codex"chmod 700 "$HOME/.codex"

然后写入 API Key。

注意:下面的 替换成自己的_API_KEY 只是占位符,不要把真实 Key 写进公开文章、截图或群聊里。

sh

cat > "$HOME/.codex/auth.json" <<'EOF'{  "OPENAI_API_KEY": "替换成自己的_API_KEY"}EOFchmod 600 "$HOME/.codex/auth.json"

接着写 Codex 配置:

sh

cat > "$HOME/.codex/config.toml" <<'EOF'model_provider = "OpenAI"model = "gpt-5.5"review_model = "gpt-5.5"model_reasoning_effort = "medium"disable_response_storage = truenetwork_access = "enabled"approval_policy = "never"sandbox_mode = "danger-full-access"[model_providers.OpenAI]name = "OpenAI"base_url = "https://替换成自己的网关或官方地址"wire_api = "responses"requires_openai_auth = true[projects."/data/data/com.termux/files/home"]trust_level = "trusted"EOFchmod 600 "$HOME/.codex/config.toml"

这里有几个关键点:

  • base_url
     可以填官方地址,也可以填自己的 OpenAI 兼容网关。
  • wire_api = "responses"
     对应 Responses API。
  • disable_response_storage = true
     更适合手机端临时使用,减少服务端响应存储。
  • Termux 的 home 路径是 /data/data/com.termux/files/home,所以项目信任路径也写这里。
  • auth.json
     和 config.toml 都用 chmod 600,避免被其他应用或脚本随便读。

◆5. 保留官方原版 CLI

官方原版 CLI 我没有覆盖,而是保留为 codex-raw:

sh

{  printf '%s\n' '#!/data/data/com.termux/files/usr/bin/sh'  cat <<'EOF'export HOME="${HOME:-/data/data/com.termux/files/home}"export PREFIX="${PREFIX:-/data/data/com.termux/files/usr}"export PATH="$PREFIX/bin:/system/bin:${PATH:-}"exec "$PREFIX/bin/node" "$PREFIX/lib/node_modules/@openai/codex/bin/codex.js" "$@"EOF} > "$PREFIX/bin/codex-raw"cp "$PREFIX/bin/codex-raw" "$PREFIX/bin/codex-cli-raw"chmod 755 "$PREFIX/bin/codex-raw" "$PREFIX/bin/codex-cli-raw"

测试一下:

sh

codex-raw --version

如果你想确认官方原版是不是能跑,可以继续用 codex-raw 做排查。

但如果手机网络或网关对流式请求不稳定,官方原版可能会反复出现:

text

Reconnecting...

这也是我后面要单独做非流式入口的原因。

◆6. 创建手机直连非流式入口

日常入口我命名为:

sh

codexcodex-cli

这样平时使用时,还是输入熟悉的 codex,但底层走的是非流式请求,避免手机端一直重连。

先准备目录:

sh

mkdir -p "$HOME/bin"

然后把随教程准备的 codex_phone.py 放进去:

sh

cp codex_phone.py "$HOME/bin/codex-phone"chmod 700 "$HOME/bin/codex-phone"

这里要注意:codex_phone.py 是非流式入口的核心脚本。原始教程里没有展开这份脚本源码,所以实际部署时,你需要把这份脚本和教程一起准备好,再复制到手机的 Termux 环境里。

接着创建 codex 命令:

sh

{  printf '%s\n' '#!/data/data/com.termux/files/usr/bin/sh'  cat <<'EOF'export HOME="${HOME:-/data/data/com.termux/files/home}"export PREFIX="${PREFIX:-/data/data/com.termux/files/usr}"export PATH="$HOME/bin:$PREFIX/bin:/system/bin:${PATH:-}"exec "$PREFIX/bin/python" "$HOME/bin/codex-phone" "$@"EOF} > "$PREFIX/bin/codex"cp "$PREFIX/bin/codex" "$PREFIX/bin/codex-cli"chmod 755 "$PREFIX/bin/codex" "$PREFIX/bin/codex-cli"

到这里,手机端就会有四个入口:

text

codex              日常非流式入口codex-cli          日常非流式入口别名codex-raw          官方原版流式入口codex-cli-raw      官方原版流式入口别名

◆7. 验证安装是否成功

先看版本:

sh

codex --versioncodex-cli --versioncodex-raw --version

然后跑一次最小任务:

sh

codex exec "只回复 MOBILE_OK"

期望输出:

text

MOBILE_OK

如果这一步成功,说明至少三件事通了:

  • Termux 里的 codex 命令能执行。
  • auth.json
     和 config.toml 能被正确读取。
  • 手机到模型服务或兼容网关的网络请求是通的。

还可以再跑一个更贴近实际使用的任务:

sh

codex exec "创建一个 hello.py,输出 MOBILE_AGENT_OK,然后运行它"

这一步用来验证 Codex 是否能在 Termux 里创建文件、执行 Python,并返回运行结果。

◆8. 日常怎么用

进入交互界面:

sh

codex

或者:

sh

codex-cli

执行一次性任务:

sh

codex exec "你的任务"

比如:

sh

codex exec "帮我检查当前目录下这个 Python 脚本的问题,并直接修复"

交互界面里常用这些命令:

text

/pwd       查看当前目录/cd DIR    切换目录/clear     清空上下文/exit      退出!ls -la    手动执行 shell 命令

我建议手机端优先处理边界清晰的小任务,比如:

  • 看代码、解释报错
  • 修改一个脚本
  • 运行测试
  • 整理 Markdown
  • 写一个小工具
  • 查找项目里的某段逻辑

这种任务在手机上很顺手。

◆9. 手机端能做什么,不能做什么

部署完成后,手机端可以做这些事:

  • 问答和代码解释
  • 在 Termux 里创建、修改文件
  • 运行 Python、Node、npm、git、rg、make、clang
  • 执行测试
  • 做小型项目开发
  • 离开电脑后独立使用 Codex

但它不是“手机系统控制器”,不要期待它直接做到这些事:

  • 绕过锁屏
  • 跳过支付确认
  • 自动确认系统权限弹窗
  • 无 root 修改系统分区
  • 完全复刻官方二进制内部的原版全屏 TUI,同时又保证不重连

它更像是把一个轻量开发环境装进手机里:只要任务发生在 Termux 和文件系统里,它就很有用。

◆常见问题

1. 原版 Codex 为什么会 Reconnecting?

官方 CLI 走流式 Responses 请求。

手机网络不稳定,或者某些网关对长连接支持不好时,流式请求会断,CLI 就会自动重连,于是你会看到:

text

Reconnecting...

我的解决方式是:保留官方原版为 codex-raw,用于排查;日常用 codex / codex-cli 走非流式直连。

2. 为什么要手动补 linux-arm64 包?

因为 Termux 里的 Node 看到的是 Android/arm64,而 Codex 的可选平台包是 Linux/arm64。

npm 有时会跳过这个平台包,导致只装了 JS 入口,没有装真正可执行的 Linux ARM64 二进制。所以要手动下载:

text

codex-0.130.0-linux-arm64.tgz

然后放到:

text

$PREFIX/lib/node_modules/@openai/codex/node_modules/@openai/codex-linux-arm64/

3. 如果 codex 不生效,先查哪里?

按这个顺序排查:

sh

which codexls -l "$PREFIX/bin/codex"ls -l "$HOME/bin/codex-phone"python --versioncodex --version

如果 codex-raw --version 能跑,但 codex --version 不能跑,问题大概率在 codex_phone.py 或 $PREFIX/bin/codex 这个 wrapper。

如果两个都不能跑,优先回到 npm 包和 linux-arm64 二进制安装步骤。

最新文章

随机文章