ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Codewhale 终端 AI 编程助手在 Termux / Android arm64 上的安装指南与平台安全行为解析

Codewhale 终端 AI 编程助手在 Termux / Android arm64 上的安装指南与平台安全行为解析 Codewhale 终端 AI 编程助手在 Termux / Android arm64 上的安装指南与平台安全行为解析【免费下载链接】CodewhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/CodewhaleCodewhale 是为终端场景设计的开源编码智能体Rust 实现。本文围绕仓库内 docs/TERMUX.md 官方文档系统讲解 Codewhale 在 TermuxAndroid arm64上的专用安装路径、由Bionic libc 与 app sandbox带来的平台差异以及沙箱、审批、密钥存储、自更新四个维度的具体行为。读完你将掌握在真实 Android 设备上正确安装/升级 Codewhale、理解codewhale doctor --json中沙箱字段含义、并规避把 Linux arm64 资产装进 Termux这类常见误操作。状态声明Preview。按官方文档Termux 支持目前属于preview预览阶段需要等待 #4236 与 #4242 中跟踪的真实设备运行时 QA 完成之后才算正式就绪。下表所有结论均以此为适用前提。Termux 支持的价值与资产形态Codewhale 为 Android 提供专门的 arm64 构建与归档路径。与桌面平台的裸二进制资产不同Termux 走的是独立压缩包维度说明平台Android / Termux架构arm64aarch64发布资产codewhale-android-arm64.tar.gzv0.9.11 起随 Release 发布设备支持仍为 preview发布矩阵位置详见 docs/INSTALL.md 中的平台支持矩阵表Linux/macOS/Windows/Android 共 7 个目标之一已知跟踪#4236官方 Termux / Android arm64 支持史诗、#4240构建并打包 Android arm64 资产、#4241让更新器在 Termux 上选择 Android 资产有两个必须牢记的边界条件资产存在 ≠ 平台就绪docs/INSTALL.md明确指出 Artifact presence is distinct from platform qualification发布矩阵中 Android/Termux 行的 npm 与cargo install均为 preview真实设备的编译、启动、审批、文件工具与更新检查#4236 / #4242完成前都不得视为正式支持。Linux arm64 资产绝不适用于 TermuxTermux 运行在 Android 的Bionic libc之上并使用$PREFIX作为 Unix 前缀Android 在 Rust 工具链中是独立于linux的目标Linux 资产面向 glibc/musl 标准 Linux因此codewhale-linux-arm64不是 Android 二进制不得在 Termux 中安装。安装三种正确路径与一种错误姿势方式一使用 Release 归档 自带安装器推荐常规安装前先补齐最小运行时工具Termux 内执行pkg update pkg install -y ca-certificates curl tar gzip coreutils确认 Release 中包含codewhale-android-arm64.tar.gz后下载并校验归档再用归档内置安装器完成安装cd $HOME curl -L -O https://github.com/Hmbown/CodeWhale/releases/latest/download/codewhale-android-arm64.tar.gz curl -L -O https://github.com/Hmbown/CodeWhale/releases/latest/download/codewhale-bundles-sha256.txt sha256sum -c codewhale-bundles-sha256.txt --ignore-missing tar xzf codewhale-android-arm64.tar.gz cd codewhale-android-arm64 PREFIX$PREFIX ./install.sh hash -r两处关键点请按 docs/INSTALL.md 的 Android / Termux arm64 一节落实校验归档必须与同一 Release 的codewhale-bundles-sha256.txt比对校验--ignore-missing用于忽略本机未下载的其它平台条目遵循文档第二部分下载安全与校验和的通用要求。PREFIX$PREFIX不可省略安装器默认前缀是~/.local而 Termux 用户通常期望命令进入$PREFIX/bin。显式传入$PREFIX才能让codewhale/codew落到 Termux 的 bin 目录。方式二cargo install源码构建预览回退路径当某个 Release 没有配套 Android 归档或你正在验证源码构建时Cargo 是 Termux 内的预览回退方案pkg install -y rust clang pkg-config make git cargo install codewhale-cli --locked注意--locked保持与仓库Cargo.lock一致的依赖锁定避免锁文件漂移仓库 docs/INSTALL.md 的 FreeBSD/从源码构建章节对cargo install codewhale-cli --locked有同样约定。方式三既有直装实例升级对已通过归档直装的实例用内置更新命令codewhale update升级遵循平台边界在 Android 上codewhale update只请求codewhale-android-arm64资产、绝不拉取 Linux arm64 资产详见下文自更新一节。此外凡是包管理器如pkg托管的文件应保持在其包管理器管控之下避免与codewhale update相互覆盖。错误姿势通用网页安装器与 Linux 资产docs/TERMUX.md明确强调macOS/Linux 通用的网页安装器不是 Android 安装路径且不要在 Termux 安装codewhale-linux-arm64。Android 使用 Bionic libc 与独立构建目标Linux Release 资产不是 Android 二进制。维护者冒烟清单Release 候选验证对 Termux / Android arm64 发布候选可用docs/INSTALL.md提供的可复现冒烟清单逐项验证command -v codewhale codew test -x $PREFIX/bin/codewhale test -x $PREFIX/bin/codew codewhale --version codewhale doctor codewhale exec --auto run pwd其中codewhale exec是无头/非 TUI 执行入口当终端 App 无法渲染全屏 TUI 时见下节已知限制codewhale exec是兜底运行方式。Android 平台的三层安全模型Codewhale 的安全模型在 Android 上由三个互相独立、逐层叠加的层面构成。区分这三层是读懂沙箱不可用报表的前提Android 应用沙箱OS 层—— Android 为 Termux 分配独立 app UID并施加平台级 SELinux 与 seccomp 保护。Codewhale 启动的命令天然继承该应用边界以及用户授予 Termux 的存储等权限。Codewhale 逐命令沙箱后端可选附加层—— 桌面上由 SeatbeltmacOS或可选启用的 bubblewrap 包装器Linux进一步收窄子命令可访问范围。Codewhale 当前没有在 Android 上提供这一附加层。Codewhale 自身的门控应用层—— workspace 信任、审批提示、allow_shell/--disallowed-tools、文件工具权限系统。这部分与桌面共用跨平台应用代码路径但其 Android 交互行为仍待真实设备 QA#4242验证。逐层源码级剖析沙箱后端Android 上确实没有而非配置缺失codewhale doctor --json在 Android 上会报告{ available: false, kind: null }这一状态描述的是Codewhale 附加子进程沙箱的缺位并不代表 Android/Termux 没有 OS 级隔离——后者由第 1 层app UID SELinux seccomp承担。从源码结构看根因非常清晰crates/tui/src/sandbox/mod.rs 中get_platform_sandbox()返回OptionSandboxType对平台做条件编译分流#[cfg(target_os macos)]走seatbelt#[cfg(all(target_os linux, not(target_env ohos)))]走 bubblewrapWindows 另有独立模块没有任何分支覆盖target_os android因此get_platform_sandbox_with_bwrap_preference在 Android 上必然落入None。bubblewrap 模块本身是Linux-only的源码中以#[cfg(target_os linux)]编译门控而 Rust 将android视为与linux截然不同的目标故 Android 构建中根本不会编译 Linux 版 bubblewrap 包装器。doctor 的 JSON 输出同样在该条件判断上取值crates/tui/src/lib.rs 中对get_platform_sandbox_with_bwrap_preference(config.prefer_bwrap.unwrap_or(false))匹配Some(kind)时输出{available: true, kind: ...}否则输出{available: false, kind: null}—— Android 命中后者。安全推论务必正视Shell 命令保留 Termux 的 Android app 边界但不会获得任何 Codewhale 专属的文件系统收窄。Termux 能访问的每个位置——包括用户授予的共享存储——都可能被你批准的命令读到。因此批准每个命令前都要意识到这一层没有额外兜底。审批与门控仍然生效等待设备 QA审批系统危险操作的交互式提示、allow_shell、--disallowed-tools实现在应用层与 OS 沙箱彼此独立桌面有沙箱时它生效Android 没有沙箱时它同样生效。Android 代码路径虽然已就位但其交互行为仍需 #4242 的真实设备 QA 确认。初次运行first-run setup路径同理docs/INSTALL.md指出首跑设置路径已实现但 Android 交互仍是 preview QA 的一部分建议临时凭证优先走 provider 环境变量。密钥存储文件回退明文未加密Termux/原生构建没有可用的 OS keyring 后端桌面 Secret Service/dbus 集成不可用Codewhale 也尚未集成 Android Keystore。因此落到文件回退密钥存储存储位置~/.codewhale/secrets/下的plaintext JSONTermux home 目录内保护方式仅靠0600文件权限静态存储不加密。在单用户 Termux 上这与~/.ssh私钥使用相同的 Unix 权限模式但注意其本质是明文。实际落盘路径两条都要视为敏感明文文件通过 setup、/provider或codewhale auth set保存的密钥写入~/.codewhale/config.toml同时镜像到~/.codewhale/secrets/secrets.json。源码层佐证密钥管理 crate crates/secrets/src/lib.rs 中默认后端路径为home/.codewhale/secrets/secrets.json并规定 Unix 文件模式0600当平台后端不可用时出现 OS keyring unavailable … falling back to file-backed secret store 的回退分支与文档描述完全一致。诊断命令方面codewhale auth set --provider deepseek # 凭证写入上述两个明文文件 codewhale auth status # 查看激活的 secret 后端来源 codewhale auth status --provider id # 按 provider 报告当前生效的密钥后端 codewhale doctor # 综合体检当文件明文存储不可接受时docs/INSTALL.md的建议是优先使用 provider 环境变量承载临时凭证并用codewhale auth status确认实际生效的凭证来源。此外Android 原生命令行程序没有 JavaVM/Context 环境无法走 reqwest 的 Android 平台验证器crates/release/src/lib.rs 因此在 Android 目标上切换到 Mozilla WebPKI 根webpki_roots rustls 的 TLS 栈保证 CLI/TUI 的 HTTPS 正常工作——这是 Android 构建区别于桌面的底层差异之一。自更新资产选择走 Android 通道glibc 预检整体跳过两点平台化行为资产选择Android 上codewhale update请求codewhale-android-arm64Release 资产永不选择 Linux arm64 资产这是 #4241教更新器在 Termux 上选 Android 资产的落点。glibc 预检跳过GNU libcglibc兼容性预检是Linux-only的。源码 crates/cli/src/update.rs 的下载后预检函数开头即if !cfg!(target_os linux) || glibc_check_disabled() { return Ok(()); }注释明确写道 GNU libc preflight is Linux-only (#4241). Rust treatstarget_os androidas distinct fromlinux… Android uses Bionic libc, not glibc.——即 AndroidBionic libc上整段 glibc 版本比对被完全跳过。已知限制总览首个 Termux 发布功能状态备注Android 应用沙箱✅ 继承每应用 UID Android 平台保护SELinux/seccompCodewhale 命令沙箱❌ 不可用Android 上无 bubblewrap/Seatbelt 后端Codewhale keyring 后端❌ 不可用回退到文件式明文密钥存储审批 / 门控⚠️ 已实现等待设备 QA文件工具⚠️ 已实现等待设备 QA自更新⚠️ 资产选择已实现已发布资产与设备 QA 待办Shell 执行⚠️ 仅 app 边界无 Codewhale 专属收窄运行时 QA 待办补充两条实操层面的已知限制源自 docs/INSTALL.md命令继承 Android 每应用 UID/SELinux/seccomp 保护及授予 Termux 的权限Codewhale 的 bubblewrap 子进程沙箱为 Linux-only、不会构建进 Android因此已批准命令没有 Codewhale 专属文件系统收窄。终端渲染差异不同 Android 终端 App 渲染能力不同TUI 始终占用 alternate screen。若终端 App 无法渲染全屏 TUI请改用codewhale exec进行无头运行。相关跟踪 Issue官方文档列出的后续工作项用于跟踪 Preview → 正式状态迁移#4236 —— Epic官方 Termux / Android arm64 支持#4238 —— 使 Android 沙箱与密钥存储行为显式化#4240 —— 构建并打包 Android arm64 Release 资产#4241 —— 教更新器在 Termux 上选择 Android 资产#4242 —— 执行 Termux 运行时 QA实战要点速记安装只认 Android 专属归档codewhale-android-arm64.tar.gzcodewhale-bundles-sha256.txt校验PREFIX$PREFIX安装到$PREFIX/bin没有归档就用cargo install codewhale-cli --locked回退绝不用 Linux arm64 资产。读懂安全模型Android 无 Codewhale 附加沙箱是设计现状doctor --json的available:false描述的是附加层缺位OS 层仍靠 Android app 沙箱兜底——批准命令时要自行评估 Termux 可达的全部路径。密钥是明文~/.codewhale/config.toml与~/.codewhale/secrets/secrets.json仅 0600 权限、不加密敏感场景优先 provider 环境变量并常用codewhale auth status核查来源。升级与体检直装实例用codewhale update自动选 Android 资产、跳过 glibc 预检发布候选用冒烟清单 codewhale doctorcodewhale exec --auto验收TUI 渲染异常时以codewhale exec兜底。跟进状态在 #4236 / #4242 完成前把 Termux 一切行为视为 preview涉及真实设备安全边界与交互体验的结论以设备 QA 结果为准。更多上下文可继续阅读仓库内相关文档docs/INSTALL.md平台矩阵与 Android/Termux 安装章节、docs/HarmonyOS.md另一类 arm64 交叉构建场景以及上文引用的源码 crates/tui/src/sandbox/mod.rs、crates/cli/src/update.rs、crates/secrets/src/lib.rs。【免费下载链接】CodewhaleOpen-source coding agent for your terminal, built in Rust and on a journey of continuous community improvement. Issues and PRs welcome.项目地址: https://gitcode.com/GitHub_Trending/de/Codewhale创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表