1. 为什么要在鸿蒙 PC 上折腾 Claude Code
先说清楚一件事:鸿蒙 PC 版目前还处在逐步放量的阶段,能拿到设备或者能刷上开源鸿蒙 PC 版的开发者,基本都属于愿意吃第一口螃蟹的人。而 Claude Code 作为终端里的 AI 编程助手,本身对运行环境的要求并不算离谱——一个能跑 Node.js 或 Bun 的类 Unix 环境,加上网络能通到模型服务端,它就能干活。问题恰恰出在“类 Unix 环境”这几个字上:鸿蒙的底层虽然是 Linux 内核衍生,但用户态的工具链、包管理器、动态库路径跟主流发行版差异不小,直接照搬 Ubuntu 上的安装脚本,十有八九会卡在某个依赖上。
这篇内容就是把我自己在鸿蒙 PC 上把 Claude Code 跑起来的过程完整拆一遍,重点放在最新的 Bun 版本路线上。为什么强调 Bun?因为 Claude Code 早期主要靠 Node.js 驱动,但 Node 在鸿蒙这种非标准环境下,原生模块编译经常出问题,而 Bun 是单二进制分发、自带运行时和包管理,对系统依赖少得多,移植成本明显更低。如果你手上正好有鸿蒙 PC 设备,或者在做开源鸿蒙的桌面适配,又或者单纯想搞清楚“一个为 macOS/Linux 写的 CLI 工具怎么搬到鸿蒙上”,这篇应该能帮你省下不少试错时间。
需要提前说明的是,下面涉及的具体命令和路径,是基于我在手头设备上的实测记录整理的,不同鸿蒙 PC 版本(比如 5.x 和 6.x)在细节上可能有出入,但整体思路是通用的。另外,文中不会涉及任何网络访问工具的内容,所有操作都假设你处在正常的网络环境下。
2. 环境准备与前置条件确认
2.1 确认你的鸿蒙 PC 到底能跑什么
动手之前,先别急着敲命令。鸿蒙 PC 和手机端的鸿蒙不是一回事,PC 版保留了更完整的桌面环境和终端能力,但不同版本开放的程度不一样。你需要先确认三件事:终端能不能正常用、有没有包管理能力、CPU 架构是什么。
打开终端,先跑这几条:
uname -a cat /etc/os-release echo $SHELLuname -a看内核版本和架构,鸿蒙 PC 目前主流是 ARM64(aarch64),少数开发板可能是 x86_64。这个信息决定了你后面下载 Bun 时要选哪个架构的二进制包,选错了直接报“无法执行二进制文件”。/etc/os-release能看出系统标识,有些鸿蒙 PC 会显示类似 OpenHarmony 的字段。$SHELL确认当前用的是 bash 还是别的,后面写环境变量要用到。
注意:如果你的终端里
uname返回的架构是aarch64,那所有 x86_64 的预编译包都不能用,必须找 ARM64 版本。这是新手最容易踩的第一个坑。
2.2 检查基础依赖是否齐全
Claude Code 运行起来需要几个基础能力:解压工具、网络请求能力、以及一个可写的用户目录。逐条检查:
which curl wget tar unzip ls -ld ~ df -h ~curl或wget至少要有一个,用来下载 Bun 的安装包。tar和unzip用于解压。df -h ~看用户目录剩余空间,Claude Code 加上 Bun 运行时,预留 500MB 以上比较稳妥,因为后续还会缓存一些依赖和会话数据。
如果发现某个工具缺失,鸿蒙 PC 上通常可以用系统自带的包管理命令安装。具体命令因版本而异,常见的是ohpm(鸿蒙的包管理器)或者系统预置的apt兼容层。这里我不写死命令,因为不同发行版差异太大,你可以先用which确认,缺什么补什么。
2.3 目录规划:别把东西乱丢
我习惯把这类第三方工具统一放在用户目录下的一个固定位置,方便管理和清理。建议这样规划:
mkdir -p ~/tools/bun mkdir -p ~/.claude~/tools/bun放 Bun 运行时,~/.claude是 Claude Code 默认读取配置和缓存的地方。提前建好目录,后面配置环境变量时路径清晰,出问题也好排查。很多人装完发现命令找不到,就是因为二进制文件丢在临时目录里,PATH 没配。
3. Bun 版本路线的核心优势与选型逻辑
3.1 为什么不用 Node.js 而选 Bun
Claude Code 官方早期文档里,Node.js 是默认运行时。但在鸿蒙 PC 上,Node.js 有几个绕不开的麻烦。第一,Node 的官方预编译包对 glibc 版本有要求,鸿蒙用的 C 库版本可能对不上,跑起来会报GLIBC_2.xx not found。第二,Node 的原生模块(native addon)需要现场编译,而鸿蒙上不一定有完整的编译工具链,node-gyp一跑就卡住。第三,Node 的安装方式通常是包管理器或者 nvm 脚本,这些脚本在鸿蒙上未必能正常执行。
Bun 的设计思路完全不同。它是单个可执行文件,内置了 JavaScript 运行时、包管理器、打包器,不依赖系统的 Node 环境。官方发布的二进制包直接对应具体架构,下载解压就能用,没有编译环节。对于鸿蒙这种“非标准 Linux 桌面”来说,这种零依赖的分发方式简直是量身定做。
3.2 Bun 在鸿蒙上的兼容性实测
我在 ARM64 的鸿蒙 PC 上实测,Bun 的 Linux ARM64 版本可以直接运行,基础的 JS 执行、文件读写、网络请求都正常。唯一需要注意的是,Bun 某些依赖系统调用的高级特性(比如某些性能剖析功能)可能不可用,但 Claude Code 用不到这些,所以不影响。
选版本的时候,去 Bun 的官方发布页找bun-linux-aarch64.zip这个包。别选bun-linux-x64,那是给 x86 机器的。下载下来解压,里面就是一个bun可执行文件,没有其他乱七八糟的东西。
3.3 版本选择的取舍
Bun 更新很频繁,但我不建议无脑追最新版。Claude Code 对 Bun 的版本有一定要求,太老的 Bun 可能缺少某些 API,太新的又可能引入未测试的变更。我的做法是选一个近三个月内的稳定版本,比如 1.1.x 系列,既能满足 Claude Code 的需求,又经过了足够多的社区验证。
具体怎么判断?下载页面会有 release notes,看有没有标注 “stable” 或者被大量项目采用的版本号。如果你实在拿不准,就选 Claude Code 官方文档里提到的最低支持版本往上浮一两个小版本,这样最稳。
4. 完整实操流程:从零把 Claude Code 跑起来
4.1 下载并部署 Bun 运行时
假设你已经确认了架构是 aarch64,在终端里执行:
cd ~/tools/bun curl -L -o bun.zip https://github.com/oven-sh/bun/releases/download/bun-v1.1.38/bun-linux-aarch64.zip unzip bun.zip解压后会得到一个bun-linux-aarch64目录,里面的bun就是可执行文件。把它移到你规划好的位置:
mv bun-linux-aarch64/bun ~/tools/bun/bun chmod +x ~/tools/bun/bunchmod +x这步不能省,否则会提示权限不足。做完之后验证一下:
~/tools/bun/bun --version能打印出版本号,说明 Bun 本身没问题了。如果报错,大概率是架构选错了,回去检查uname -m的输出。
4.2 配置环境变量让全局可用
每次都敲完整路径太累,把 Bun 加到 PATH 里。编辑你的 shell 配置文件,bash 用户是~/.bashrc,zsh 用户是~/.zshrc:
echo 'export BUN_INSTALL="$HOME/tools/bun"' >> ~/.bashrc echo 'export PATH="$BUN_INSTALL:$PATH"' >> ~/.bashrc source ~/.bashrc配完之后,直接敲bun --version应该就能用了。这里设BUN_INSTALL是有讲究的,Bun 在安装全局包时会参考这个变量决定装到哪里,提前设好能避免它往系统目录里乱写。
4.3 安装 Claude Code
Claude Code 通过 npm 包的形式分发,但既然我们有了 Bun,就用 Bun 来装:
bun install -g @anthropic-ai/claude-code这条命令会从 npm 仓库拉取 Claude Code 的包,装到 Bun 的全局目录下。装完之后,claude命令应该就能在终端里直接调用了。如果提示找不到命令,检查一下 Bun 的全局 bin 目录有没有在 PATH 里,通常是~/.bun/bin或者$BUN_INSTALL/bin。
提示:安装过程中如果卡在某个包下载不动,多半是网络问题。可以多试几次,或者换个时间段。不要轻易改 npm 源,除非你清楚自己在做什么。
4.4 首次启动与配置
第一次运行claude,它会引导你做初始配置,主要是设置 API 相关的信息。这里我不展开具体怎么填,因为每个人的使用方式不同。重点说几个配置文件的细节:
Claude Code 的配置默认放在~/.claude目录下,核心文件是settings.json。你可以手动编辑这个文件来调整行为,比如指定默认模型、设置超时时间等。一个比较实用的配置是调整会话数据的存储位置,避免占满用户目录:
{ "dataDir": "/home/yourname/.claude/data", "maxTokens": 8192 }dataDir指向一个你确定有足够空间的位置。maxTokens根据你的实际需求调,设太大可能影响响应速度。
4.5 验证安装是否成功
跑一个最简单的测试,确认 Claude Code 能正常响应:
claude --version claude "print hello"第一条看版本,第二条看它能不能真的执行指令。如果第二条能返回结果,说明整条链路是通的。如果卡住或者报网络错误,往下看排查部分。
5. 常见问题与排查技巧实录
5.1 命令找不到或权限被拒
这是最高频的问题。表现是敲claude提示command not found,或者敲bun提示Permission denied。前者检查 PATH,后者检查文件权限。
排查顺序:
echo $PATH看 Bun 目录在不在里面ls -l ~/tools/bun/bun看有没有x权限which claude看系统能不能定位到命令
如果 PATH 配了但还是找不到,可能是 shell 配置文件没生效,重新开一个终端窗口试试。
5.2 运行时报动态库缺失
错误信息类似error while loading shared libraries: libxxx.so.x: cannot open shared object file。这说明 Bun 依赖的某个系统库在鸿蒙上不存在或者版本不对。
解决办法分两步:先用ldd ~/tools/bun/bun看它依赖哪些库,然后逐个确认这些库在系统里有没有。缺哪个就找对应的 ARM64 版本补上。鸿蒙 PC 上有些库可能藏在非标准路径,可以用find / -name "libxxx*" 2>/dev/null搜一下。
注意:不要随便从网上下载来路不明的 .so 文件往系统目录里塞,这可能导致系统不稳定。优先用系统自带的包管理器安装。
5.3 网络请求超时或失败
Claude Code 需要访问模型服务端,如果网络不通,会报超时或者连接被拒。先确认基础网络:
curl -I https://www.example.com如果这条都通不了,那是系统网络配置的问题,跟 Claude Code 无关。如果这条通,但 Claude Code 还是连不上,检查它的配置里 API 地址有没有写错,以及有没有设置代理相关的环境变量(如果你不需要代理,确保http_proxy这类变量是空的)。
5.4 会话数据把磁盘写满
长时间使用后,~/.claude目录可能积累大量会话记录和缓存。定期清理是个好习惯:
du -sh ~/.claude如果发现占用过大,可以删掉data目录下的旧会话文件,或者直接在settings.json里把dataDir指到一个大容量分区。
5.5 常见问题速查表
| 问题现象 | 可能原因 | 排查动作 |
|---|---|---|
| command not found | PATH 未配置 | 检查$PATH和 shell 配置文件 |
| Permission denied | 文件无执行权限 | chmod +x对应文件 |
| 动态库缺失 | 系统库版本不匹配 | ldd查看依赖,补齐缺失库 |
| 网络超时 | 网络不通或配置错误 | 先用curl测基础连通性 |
| 磁盘占满 | 会话数据堆积 | 清理~/.claude/data或迁移目录 |
| 启动即崩溃 | Bun 架构选错 | 确认uname -m与下载包一致 |
6. 实操心得与进阶建议
6.1 把 Bun 和 Claude Code 做成可迁移的目录
如果你有多台鸿蒙设备,或者经常重装系统,可以把~/tools/bun和~/.claude整体打包。换机器时解压到相同路径,配好 PATH,基本就能直接用。这比重新走一遍安装流程快得多。我自己的做法是定期把这两个目录同步到移动硬盘,省得每次环境重建都从头折腾。
6.2 关注 Bun 的更新节奏
Bun 的迭代速度很快,新版本可能修复了鸿蒙相关的兼容性问题。建议每隔一两个月去发布页看一眼,如果有明确提到 Linux ARM64 的改进,可以考虑升级。升级方式很简单:下载新的二进制文件,替换掉旧的bun,然后重新跑一遍bun install -g @anthropic-ai/claude-code确保依赖也是新的。
6.3 用脚本固化安装流程
手动敲命令容易漏步骤,我后来写了个简单的 shell 脚本,把下载、解压、配置 PATH、安装 Claude Code 串起来。这样在新设备上只需要跑一次脚本。脚本的核心逻辑就是本文第 4 节的步骤,你可以根据自己的路径习惯调整。关键是要加错误检查,比如下载失败就退出,避免后续步骤在错误的基础上继续跑。
6.4 关于模型接入的灵活配置
Claude Code 支持接入不同的模型服务端,包括本地运行的模型。如果你在鸿蒙 PC 上同时跑了本地推理服务,可以在settings.json里把 API 地址指向本地端口。这样做的好处是响应快、不依赖外网,缺点是本地模型的上下文长度和推理质量可能不如云端。具体怎么选,看你的实际场景。配置的时候注意端口别跟系统其他服务冲突,改完配置重启 Claude Code 生效。
6.5 终端体验的微调
鸿蒙 PC 自带的终端在字体渲染和快捷键上可能跟主流桌面环境有差异。如果觉得用着别扭,可以试试装一个第三方的终端模拟器,或者调整终端的配色和字体设置。Claude Code 的输出有大量代码块和颜色标记,终端支持真彩色的话阅读体验会好很多。这个属于锦上添花,不影响功能,但用起来舒服不少。
我在实际使用中最大的体会是:鸿蒙 PC 上跑这类工具,难点从来不在工具本身,而在环境适配。Bun 之所以能跑通,核心就是它把“环境依赖”这件事降到了最低。只要架构对、权限对、PATH 对,剩下的就是水到渠成。如果你卡在某一步,优先回头检查这三个“对”,八成问题都出在这里。