图片

这两天 Claude Code 更新了 auto mode。Anthropic 官方把它定义成一种介于“每一步都手动确认”和“直接危险放权”之间的中间模式,目的是让 Claude 在长任务里少一点打断,多一点自主判断。这个功能是最近刚放出来的,目前还是 research preview。

我本来机器上装的还是之前那套 npm 方式。后来升级了原生安装,结果在 claude update 时候出现一些环境混乱问题。所以这次我没继续纠结“原地升级”,直接决定:彻底切到原生安装,重装一遍。

我本地相关内容还在 ~/.claude 里。不会因为重装丢失。

然后坑就开始了。

curl -fsSL https://claude.ai/install.sh | bash

这条命令看起来非常现代:一行结束 ,优雅,体面。实际上,在国内网络环境里,这一行也很适合把人装到原地升天

先去拉 install.sh,再执行脚本,脚本里再去拉真正的 Claude 安装包。中间只要任意一层出问题,你的终端就会进入一种非常高级的状态:什么都不说,但就是不动。

你坐在那儿盯着光标,先怀疑网络,再怀疑终端,最后开始怀疑自己。

坑一:

脚本直接被 cloudflare 拦住

图片

聪明的你 curl 了一下 install.sh, 开心的运行,结果发现脚本是

<html>
<head><title>302 Found</title></head>
<body>
<center><h1>302 Found</h1></center>
<hr><center>cloudflare</center>
</body>
</html>

……打开浏览器,粘贴脚本地址: https://claude.ai/install.sh

一看,妥了! 复制粘贴到 install.sh , 恭喜你踩上下一个坑, 复制的文本放到脚本带了换行等隐藏字符, 一运行就报错 /bin/bash^M 之类的。

聪明的你只能直接在网页右键,另存直接保存成 install.sh。

坑二:

到这里,你很可能掉到第二个坑: 还是不动?

这时候大聪明相当开心,这都一顿操作了,差不多给点面子了吧?

bash install.sh

如果你习惯用 ./install.sh 这种,你需要先 chmod +x 给脚本执行权限, 但是不影响结果:你的命令行焊死,依然没有一个字的输出……

聪明的你意识到,直接这样你看不到脚本执行的具体情况,更找不到问题根源,你换了命令:

bash -x install.sh

wow ~ 有点那个意思了,kuku 刷屏。 高兴没过2秒,你又摊上事了,应该说叕不动了,依然焊死。 你看了一下,最后一句:

+ curl -fsSL -o /Users/jovi/.claude/downloads/claude-2.1.87-darwin-x64 https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.87/darwin-x64/claude

???

curl -fsSL -o /Users/jovi/.claude/downloads/claude-2.1.87-darwin-x64 https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.87/darwin-x64/claude

这不就是下载一个包? 为啥会不动??

不太聪明的你只能试试  curl 这个包:

➜  ~ curl -I https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/2.1.87/darwin-x64/claude
HTTP/2 200
content-type: application/octet-stream
x-guploader-uploadid: AMNfjG0sDuR-Z5j0jjVn_L0CDnUx7FWVLMGb4YZ26GGUMOs-PVA9ltI8FYJMZaAKOBiC9mpp_oMCDxI
expires: Sun, 29 Mar 2026 16:08:16 GMT
date: Sun, 29 Mar 2026 15:08:16 GMT
cache-control: public, max-age=3600
last-modified: Sun, 29 Mar 2026 02:09:41 GMT
etag: "4dda52f7a7189815d8d965d95c469f74"
x-goog-generation: 1774750181664287
x-goog-metageneration: 1
x-goog-stored-content-encoding: identity
x-goog-stored-content-length: 198132816
x-goog-hash: crc32c=aVr0sw==
x-goog-hash: md5=TdpS96cYmBXY2WXZXEafdA==
x-goog-storage-class: STANDARD
accept-ranges: bytes
content-length: 198132816
server: UploadServer
alt-svc: h3=":443"; ma=2592000,h3-29=":443"; ma=2592000

这时候懵b 的你突然发现官方脚本用的是 curl -fsSL -o 对,这没毛病,但是对大夏人来说显的不友好了,大家 paty 上网,多少有点不稳。

坑三:

图片

你不知道包多大,你的速度多慢。

这时候有点刺闹的你改了脚本的关键命令 curl -fsSL

if [ "$DOWNLOADER" = "curl" ]; then
        if [ -n "$output" ]; then
            curl -fsSL -o "$output" "$url"
        else
            curl -fsSL "$url"
        fi

变成curl -vL:

if [ "$DOWNLOADER" = "curl" ]; then
        if [ -n "$output" ]; then
            curl -vL -o "$output" "$url"
        else
            curl -fsSL "$url"
        fi

注:如果不同系统脚本触发不同的下载命令,你要改对应部分的参数。 或者 curl -L --progress-bar 甚至有进度条,哈哈。

这个时候,恭喜你,来到!

坑四

图片

科学上网平时用的不错,不代表命令行速度不错, googleapis 速度快

你发现了什么?

什么? 这个包 188M ? 你NB的科学上网速度是躲少?

{ [1337 bytes data]
  7  188M    7 13.5M    0     0   211k      0  0:20:27  0:02:47  0:18:13  107k

……

哈哈,终究是逃不过!  当时就跪倒的你,一阵无语…… 不过至少老老实实等下载,不猜了。

解决办法也很简单: 钞能力, 或者用别人下好的目标版本替换一下试试。

总结一下

  • • 尽量保证科学上网的速度,可以试试 googleapis 的下载速度

  • • 别忘了设置终端的科学命令

  • • 另存脚本到 install.sh

  • • 先把 curl ,wget 等命令的细节显示出来,不抓瞎

  • • 使用 bash -x install.sh 监控完整的安装过程

晚上 0:38 , 你终于用上了最新版本的 claude 。 刚好有 Team plan 的你,在 shift+tab 中切换到 auto mode 。 给 claude 扔下了你一个多星期没完成的任务……

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐