【教程】如何在手机上跑完整版的claudecode

2026-04-29 08:512阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐
问题描述:

这篇教程(第一次写这种教程 可能写得不好,请见谅)主要面对于没有电脑,想在手机上用claudecode,并且我附上了如何解决API冲突的问题

首先你需要一个终端我这里就使用termux了

然后去这里(在这里十分感谢tmoe大佬)获取一下脚本,然后将脚本输入到termux就可以了,在里面会有一个图形化的界面,在安装的过程中 默认的共享目录就是你手机的下载目录

IMG_20260314_2001131080×819 145 KB

,在这个图形化的界面里面可能会有很多的Linux发行版这个的话

IMG_20260314_2001251080×501 143 KB

我建议你使用Ubuntu,下完之后一般来说就是进入命令行了,按理来说应该为这样(如果你没有装任何美化的话)

IMG_20260314_200443836×186 6.76 KB

如果你的命令行

IMG_20260314_200512826×183 2.12 KB

为这样的话 说明你根本没有进入容器,请输入指令

tmoe

再次进入面板打开容器,安装npm(各个系统都有各个系统的指令,这里以Ubuntu为例)

apt install nodejs npm

等代码跑完之后,之后就是安装claudecode了,

npm install -g @anthropic-ai/claude-code

第一次进入的时候会让你选择使用你的帐号或API,选择第二个选项,以后他会给你个链接让你登录,在网站登录他会给你一个码,复制下来,输入claudecode,然后你就可以使用claudecode了

  • 但是官方的话默认是没有额度的,所以这个时候我们就需要切换API以及地址了

  • 进入到容器

    IMG_20260314_200443836×186 6.76 KB为这样即可,输入指令

    nano ~/.bashrc

如果失败的话请先安装nano

pkg install nano

进入界面之后直接在后面输入

export ANTHROPIC_BASE_URL=你的地址

export ANTHROPIC_AUTH_TOKEN=你的API

IMG_20260314_2028381080×240 46 KB

然后CTRL+x(这里指是你输入法上的)退出保存

使用以下指令进入claudecode

claude

进入之后它会有黄字提示你,直接就是

/logout

就可以了,之后他会退出,你只需要再次使用claude指令再次进入就行,基本上就是这个流程,感谢你的阅读

切换模型的话就使用/model

网友解答:
--【壹】--:

这是 android 才可以吧。
iPhone 被开除出手机了


--【贰】--:

刚好在研究这个,分享个好玩的用法,通过 termux:api + claufe code hook 可以实现调用手机的通知或者权限确认,挺鸡肋的功能

google 一下 termux:api ,两种方式 1.apk 安装 (需要跟 termux 版本对应) 2. 安装 termux api 的包 pkg install termux-api jq curl

安装完成后就可以让 cc 给你写脚本了同时在 .claude/settings.json 加上 hook 配置,也可以用我已经跑出来的

claude_permission_dialog.sh

#!/data/data/com.termux/files/usr/bin/bash set -euo pipefail input="$(cat)" cache_dir="${TMPDIR:-/data/data/com.termux/files/usr/tmp}/claude-code-permissions" mkdir -p "$cache_dir" session_id="$(jq -r '.session_id // .sessionId // "unknown-session"' <<<"$input")" tool_name="$(jq -r '.tool_name // .toolName // .permission.tool_name // .permission.toolName // "unknown-tool"' <<<"$input")" command_text="$(jq -r '.tool_input.command // .toolInput.command // .input.command // .permission.tool_input.command // .permission.toolInput.command // empty' <<<"$input")" file_path="$(jq -r '.tool_input.file_path // .toolInput.file_path // .input.file_path // .permission.tool_input.file_path // .permission.toolInput.file_path // empty' <<<"$input")" permission_text="$(jq -r '.permission.description // .permission.reason // .description // .reason // .message // empty' <<<"$input")" if [[ -n "$command_text" ]]; then detail="$command_text" elif [[ -n "$file_path" ]]; then detail="$file_path" elif [[ -n "$permission_text" ]]; then detail="$permission_text" else detail="需要执行 $tool_name" fi key_source="$session_id|$tool_name|$detail" key="$(printf '%s' "$key_source" | sha256sum | cut -d' ' -f1)" cache_file="$cache_dir/$key.allow" if [[ -f "$cache_file" ]]; then jq -nc '{hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"allow",message:"已按当前会话 允许规则放行"}}}' exit 0 fi short_detail="$detail" if [[ ${#short_detail} -gt 160 ]]; then short_detail="${short_detail:0:157}..." fi title="Claude Code 权限确认 · $tool_name · $short_detail" values="确认一次,当前会话允许,拒绝" widget="${CLAUDE_PERMISSION_DIALOG_WIDGET:-sheet}" choice_json="$(termux-dialog "$widget" -t "$title" -v "$values")" choice="$(jq -r '.text // empty' <<<"$choice_json")" index="$(jq -r '.index // -1' <<<"$choice_json")" case "$choice:$index" in 确认一次:0|确认一次:*) jq -nc --arg msg "已允许本次 $tool_name" '{hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"allow",message:$msg}}}' ;; 当前会话允许:1|当前会话允许:*) printf '%s\n' "$key_source" > "$cache_file" jq -nc --arg msg "当前会话将自动允许相同的 $tool_name 请求" '{hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"allow",message:$msg}}}' ;; 拒绝:2|拒绝:*) jq -nc --arg msg "用户通过 Android 对话框拒绝了 $tool_name" '{hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"deny",message:$msg}}}' ;; *) jq -nc '{hookSpecificOutput:{hookEventName:"PermissionRequest",decision:{behavior:"deny",message:"权限对话框未选择,已拒绝"}}}' ;; esac

.claude/settings.json

"hooks": { "Stop": [ { "hooks": [ { "type": "command", "command": "termux-toast -g bottom 'Claude Code 执 行完成' >/dev/null 2>&1 || true", "timeout": 5 } ] } ], "PermissionRequest": [ { "matcher": "Bash|Edit|Write|Read|Grep|Glob", "hooks": [ { "type": "command", "command": "/data/data/com.termux/files/home/project/script/test/claude_permission_dialog.sh", "timeout": 120 } ] } ] }


--【叁】--:

佬是真牛逼,,这样怎么用网络


--【肆】--:

这样在 termux 跑 cc 的话,功能完整吗


--【伍】--:
f-droid.org

Termux | F-Droid - 自由来源的 Android 应用存储库

带有软件包的终端模拟器

或者

github.com

GitHub - termux/termux-app: Termux - a terminal emulator application for...

Termux - a terminal emulator application for Android OS extendible by variety of packages.

有什么不懂可以问我


--【陆】--:

如果直接跑的话是不完整的,经常会出现指令的缺失,所以说我套了个容器,这样就可以了


--【柒】--:

感谢大佬教程


--【捌】--:

请问佬,第一步说的终端在哪下?


--【玖】--:

手机端termux如果你直接跑的话/tmp这个指令总是用不了,导致我头疼了半天 于是这个教程就出来了


--【拾】--:

佬们太拼了


--【拾壹】--:

感谢,不懂的可以问我,我会尽量帮佬友的


--【拾贰】--:

会有一点,但是不影响使用,所以放心蹬吧


--【拾叁】--:

感谢佬这就试一下,之前一直在想能不能,您已经研究出来了,旧手机该充电了


--【拾肆】--:

没有没有,只是我没那个实力买iPhone 研究不出来呀


--【拾伍】--:

好贴啊佬,赞
termux原生环境有时候经常有些莫名其妙的bug
不过proot性能会不会有损失?想了解一下


--【拾陆】--:

容器里面可以使用的,应该是和手机共用一个


--【拾柒】--:

感谢分享!


--【拾捌】--:

感谢分享~,不过貌似也不用proot容器,原生环境里应该也行的


--【拾玖】--:

感谢佬友分享教程