把 Claude Code 跑在你的 Android 手机上。基于 Termux 二次开发,用 proot-distro 在容器里跑 Ubuntu + Claude Code,再通过 MCP 把手机能力(截屏、点击、输入、相机、传感器)暴露给 Claude,让 Claude 真正能「操作手机」。
仓库默认面向 arm64 设备,自带离线 Ubuntu 快照。 实现细节记录在 → app架构.md
| 能力 | 说明 |
|---|---|
| 完整 Claude Code | 支持 skills、plan mode、自定义 slash commands、记忆系统、MCP 工具 |
| Claude 操作手机 | 截屏、点击、滑动、输入文字、读取 UI 树、查询权限/电池/WiFi/传感器 |
| 兼容第三方 API | 通过 ANTHROPIC_BASE_URL 接入 DeepSeek、各种 Anthropic 兼容代理 |
| ChatGPT 风格 UI | 流式气泡、思考过程折叠、附件上传、对话历史 |
| AgentServer 接入 | 把手机做成"远程沙盒",从 PC/Web 端的上游 Agent 派发任务 |
| 后台悬浮窗 | App 切到后台且 Claude 在执行任务时显示状态条,不挡视线 |
| 可离线安装(但依旧建议联网) | 内置已配置好的Ubuntu快照,可直接离线部署 |
- Android 7.0+ 的 arm64 设备
- 推荐预留 3GB+ 可用存储(Ubuntu rootfs ~ 1GB,Claude Code 安装 ~ 500MB)
首次打开 App,保持前台 + 联网,等 Termux 终端跑完自动安装脚本(约30秒到1分钟)
安装完成的标志是终端最后输出 [*] Setup complete,以及进入以cLaude为用户名的Ubuntu环境。
打开底部导航 API Key 页:
- 点击 添加新 Key
- 别名:随便取
- API Key:你的
sk-ant-xxx(Anthropic)或其他可以api key - Base URL:
- 留空 = 走CLaude官方 Anthropic API
- DeepSeek 填
https://api.deepseek.com/anthropic - 其他第三方填它们提供的 Anthropic 兼容地址
- 点击保存后设为当前使用
打开主页(Home 页),看底部两个状态按键:
| 徽章 | 含义 | 怎么开 |
|---|---|---|
| 截屏 | MediaProjection 权限 | 点徽章右边的「授权截图」按钮,每次 App 启动后需点一次 |
| 无障碍 | UI 控制权限 | 点徽章后跳系统设置 → 找到本 App 启用 |
不开权限不影响聊天,只影响 Claude 的"操作手机"能力。 其他权限需去系统设置 应用管理界面开启。
把手机当作"远程沙盒",让上游 AgentServer 把任务派发到这里执行:
底部导航 AgentServer 页:
- Server URL:上游服务器地址
- 沙盒 ID:留空 = 自动新建一个;填值 = 复用某个已有沙盒
- 设备名称:随便取,会显示在上游 Web UI 的沙盒列表
- 点击「连接」
- AgentServer派发的任务以dangerously-skip-permissions 运行,不需人工确认。
连接成功后日志区会出现 tunnel connected (sandbox: ...)。
主页是聊天区,底部输入框旁的几个按钮:
| 按钮 | 作用 |
|---|---|
| 📎 | 选文件作为附件,会自动复制进 Ubuntu 给 Claude 读取 |
| 发送 | 发出消息,开始流式输出 |
| 打断 | 停止当前生成(保留会话上下文) |
| 新建对话 | 完全开始新对话(清屏 + 新 session ID) |
5 个 Tab:
| Tab | 内容 |
|---|---|
| 历史 | 所有过往对话,点击恢复(自动加载完整对话)(删除会同步删掉当前对话上传的相关文件) |
| 记忆 | Claude 的记忆库(.md 文件),点开可看可编辑 |
| 技能 | 自定义 slash commands(.md 文件),点 + 新建 |
| 任务 | AgentServer 派发的任务列表,点击进入详情页看完整对话(删除会同步删掉当前任务执行时创建的临时文件) |
| 上传 | 你上传给 Claude 看的所有附件,长按可删(同步删 Ubuntu 内文件) |
长按列表项几乎都能弹出删除确认。删除会同步清理对应的 Ubuntu 文件 / Claude session jsonl,避免磁盘 leak。
点侧栏「任务」Tab 里的某条 → 全屏聊天页:
- 顶部:返回按钮 + 任务标题 + 运行/完成徽章
- 内容:完整对话流(用户 prompt + Claude 回复 + 工具调用 + 工具返回)
- 任务还在跑时每秒自动刷新,跑完停止刷新
- App 切到后台 + Claude 正在执行任务时,屏幕右上角出现一个紧凑状态条
- 显示当前状态(运行中/执行任务)+ prompt 预览
- 右侧
×可手动关闭,下次新任务开始时会再次出现 - Claude 空闲时不显示
主页输入框左边的 📎 → 系统文件选择器 → 选文件 → 输入框上方出现 📎 文件名 提示。
发送时 prompt 自动拼成 [附件: /home/claude/uploads/<name>]\n<你的文字>,Claude 用原生 Read 工具读取。
只要服务端兼容 Anthropic API 协议就行。
DeepSeek 官方提供 Anthropic 兼容端点:
- Base URL:
https://api.deepseek.com/anthropic - API Key: 你的 DeepSeek
sk-xxx - 模型映射由 DeepSeek 自动处理
- OpenRouter 的 anthropic models
- OneAPI / NewAPI / One-Hub 等聚合代理
- 自建 claude-code-router
填它们提供的 base URL + key 即可。纯 OpenAI 格式(如 api.openai.com)目前没有翻译代理。
去主页点顶部「授权截图」按钮。每次 App 重启都要重新点一次。
系统设置 → 无障碍 → 找到本 App → 启用。这是 Claude 调用 ui.tap 等所必需。
。
是 API 账户余额耗尽了。去对应平台充值。
每次对话和每个 AgentServer 任务都会保存历史(含截图 base64)。清理方式:
- 侧栏「历史」Tab 长按 → 删除 → 自动清 Claude session jsonl
- 侧栏「任务」Tab 长按 → 删除 → 自动清归档文件
- 侧栏「上传」Tab 长按 → 删除 → 自动清 Ubuntu 内文件
App 启动时还会自动扫描并清理"孤儿 jsonl"(删过会话但磁盘上还残留的文件)。
| 路径 | 内容 |
|---|---|
/data/data/com.termux/files/home/agentserver-agent.log |
AgentServer 运行日志 |
/data/data/com.termux/files/home/mcp-audit.log |
Claude 调用 MCP 工具的审计日志 |
/data/data/com.termux/files/usr/var/lib/proot-distro/installed-rootfs/ubuntu/home/claude/CLAUDE.md |
Claude 系统提示(每次启动重写) |
~/.claude/memory/*.md(Ubuntu 内) |
记忆库 |
~/.claude/projects/-home-claude/<id>.jsonl(Ubuntu 内) |
Claude 自身的 session 历史 |
~/.agentserver-pipe.jsonl(Ubuntu 内) |
agentserver wrapper 的运行时缓冲 |
App 私有 getFilesDir()/agent-tasks/<id>.jsonl |
每个 AgentServer 任务的归档 |
需要 JDK 17 + Android SDK 36。
# Debug 构建
./gradlew :app:assembleDebug
# 输出位置
app/build/outputs/apk/debug/claude-code-test-app_apt-android-7-debug_universal.apk
# 直接装到连接的设备
adb install -r app/build/outputs/apk/debug/claude-code-test-app_apt-android-7-debug_universal.apk构建说明:
app/src/main/assets/ubuntu-snapshot/下的 tar.xz 是 Ubuntu 快照,决定了 APK 大小(默认 ~230MB)gradle.properties已设置-Xmx12288M,旧版 8GB heap 会在打包时 OOM- 已配置
noCompress 'xz', 'tar', ...跳过对预压缩文件的二次压缩,省内存且加快安装
完整的架构图、数据流、组件职责拆解请看:
→ app架构.md
涵盖 Fragment 路由、MCP 工具实现、AgentServer 接入的 wrapper 拦截机制、悬浮窗显隐三条件、4 个 Store 的数据组织、自动安装链路等。
继承自 Termux 上游协议。