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

绯墨 2026-03-14 20:40 1

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


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


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



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



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



如果你的命令行



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


tmoe


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


apt install nodejs npm


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


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


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




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




  • 进入到容器


    为这样即可,输入指令


    nano ~/.bashrc




如果失败的话请先安装nano


pkg install nano


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


export ANTHROPIC_BASE_URL=你的地址


export ANTHROPIC_AUTH_TOKEN=你的API



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


使用以下指令进入claudecode


claude


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


/logout


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


切换模型的话就使用/model

最新回复 (19)
  • skyfox 03-14 20:47
    1

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

  • Hinus 03-14 20:47
    2

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

  • infinite 03-14 20:53
    3

    感谢分享!

  • 大帅哥 03-14 21:16
    4

    感谢大佬教程

  • 绯墨 楼主 03-14 21:33
    5

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

  • 绯墨 楼主 03-14 21:33
    6

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

  • fengchris 03-14 21:34
    7

    佬们太拼了

  • weisili2025 03-14 21:36
    8

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

  • 绯墨 楼主 03-14 21:37
    9


    或者




    有什么不懂可以问我

  • conger 03-15 09:15
    10

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

  • dreamya 03-15 09:17
    11

    感谢佬友分享教程

  • 绯墨 楼主 03-15 14:33
    12

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

  • Ranbo 03-15 14:48
    13

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

  • 绯墨 楼主 03-15 15:06
    14

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

  • MeverikC 04-27 01:45
    15

    刚好在研究这个,分享个好玩的用法,通过 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
    }
    ]
    }
    ]
    }
  • Alpha 04-27 01:48
    16

    好贴啊佬,赞

    termux原生环境有时候经常有些莫名其妙的bug

    不过proot性能会不会有损失?想了解一下

  • 绯墨 楼主 04-27 06:03
    17

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

  • cracker 04-27 07:48
    18

    这是 android 才可以吧。

    iPhone 被开除出手机了 ^-^

  • 绯墨 楼主 04-27 20:49
    19

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

* 帖子来源Linux.do
返回