工具大全
亲手实测作者:Coocon2026年8月7日358 次阅读约 2 分钟阅读

claude install 断链、%h 未展开?Debian 容器实测装出来是好的(未复现)

本文性质:未复现实录。我们没有复现出报告中的问题——这不代表报告是错的,只代表在下述环境、用下述方法测不出来。全部命令与原始输出都在文中,欢迎交叉验证。

原始报告说了什么

GitHub issue #83484(Fedora 44 + bash,Claude Code 2.1.220):运行官方一键安装后,~/.local/bin/claude 是一条断掉的符号链接——

$ curl -fsSL https://claude.ai/install.sh | bash
$ file ~/.local/bin/claude
/home/user/.local/bin/claude: broken symbolic link to %h/.local/share/claude/versions/2.1.220

链接目标里的 %h 是个未展开的占位符(systemd 风格的家目录指示符),本应是 /home/user。报告者定位问题不在 shell 安装脚本,而在二进制内部的 install 子命令;并称此前版本正常,属回归。issue 关联了一个修复 PR(#83738,报告时未合并)。

我们的实测:装出来是好的

环境:干净的 Docker 容器 debian:bookworm-slim,root 用户,2026-08-06 执行与报告完全相同的安装命令:

$ curl -fsSL https://claude.ai/install.sh | bash
$ ls -la /root/.local/bin/claude
lrwxrwxrwx 1 root root 42 Aug  6 10:23 /root/.local/bin/claude -> /root/.local/share/claude/versions/2.1.223
$ file /root/.local/bin/claude
/root/.local/bin/claude: symbolic link to /root/.local/share/claude/versions/2.1.223

两个关键观察:

  1. 符号链接是正常的——目标路径里的家目录已正确展开为 /root,没有出现字面量 %h
  2. install.sh 当前分发的版本是 2.1.223,比报告中的 2.1.220 新了三个版本(2.1.221/222/223 分别发布于 8 月 3/4/5 日)

为什么没复现:三种可能解释

按证据强度排序:

解释一:已在 2.1.221–2.1.223 之间修复(最可能)。 报告发生在 2.1.220,关联修复 PR 存在,而现在 install.sh 直接分发 2.1.223——如果修复已合入其中任何一版,新装用户自然不会再遇到。但我们没有找到明确写着"修复 %h 展开"的发版说明,无法坐实。

解释二:发行版相关。 报告环境是 Fedora 44,我们测的是 Debian 12。%h 是 systemd 单元文件里的家目录指示符——如果二进制的 install 子命令在某些系统上从 systemd 相关配置读取路径模板,行为可能随发行版而异。这只是机制猜想,我们没有 Fedora 环境验证。

解释三:报告环境的残留状态。 报告者称"此前版本正常",旧安装的残留配置可能参与了路径生成。干净容器里没有任何残留,这或许正是测不出来的原因——但同样无法证实。

如果你正被断链卡住:一分钟修复

无论根因是什么,断链的修复是确定的(来自 issue 中报告者验证过的 workaround):

# 把断链指向真实存在的版本目录(版本号按你机器上实际的改)
ls ~/.local/share/claude/versions/        # 先看有哪些版本
ln -sf ~/.local/share/claude/versions/<版本号> ~/.local/bin/claude
claude --version                          # 验证可用

更省事的选择:直接重跑一次官方安装命令——当前分发的 2.1.223 在我们的实测里装出来就是好的。

适用边界

  • 本文只证明:Debian 12 干净环境 + 2026-08-06 的 install.sh(分发 2.1.223)不出现此问题
  • 不能证明:Fedora 上已修复、2.1.220 的问题不存在、或所有环境都正常
  • 如果你在其它发行版上仍能复现(尤其 Fedora + 2.1.221 及以后版本),请到 issue #83484 补充环境信息——那将直接推翻解释一、坐实解释二

这类实测,每周六汇总一封

订阅码农早餐:每天 8:00 一封 AI 编程早报,每周六另附本周 Claude Code / Codex / 本地模型的实测和踩坑汇总。

相关文章

Claude Code 上下文太长怎么办:Prompt is too long 会自动压缩,中转站 / DeepSeek 的 maximum context length 却不会(实测)

Claude Code 靠报错文案判断「上下文太长」:后端说 prompt is too long 或 input is too long for requested model,它会自动压缩对话后重发,用户无感;DeepSeek 和 OpenAI 风格中转返回的 This model's maximum context length is …,它不认识,直接报 API Error: 400,每轮都失败。手动 /compact 有效;更好的办法是用 CLAUDE_CODE_MAX_CONTEXT_TOKENS(非 claude- 模型 ID)或 CLAUDE_CODE_AUTO_COMPACT_WINDOW(claude- 模型 ID)告诉它真实上限,让它提前压缩。Claude Code 2.1.285 + 本地 stub 实测。

claude-codedeepseek+6
pitfalls2026年10月5日8 min
132

Claude Code 一直卡住、转圈没反应怎么办:后端不回时它要等 6 分钟,重试满 10 次可能卡一个多小时(实测)

Claude Code 转圈不动、或者停在 Retrying in 0s,多半是后端没有回数据。实测 2.1.285(API key + ANTHROPIC_BASE_URL):后端不回响应头时每次等 6 分钟(360 秒)才判超时,把 API_TIMEOUT_MS 调到 60 万、90 万也不变,只能调小;默认重试 10 次,总共可能卡一个多小时。中转站如果把回复缓冲到生成完才返回,超过 6 分钟的回复永远拿不到。按 Esc 可以随时中断。全部在本地 stub 上实测。

claude-code中转站+6
pitfalls2026年10月5日10 min
138

Claude Code 429 怎么办:Request rejected (429) 原文、会重试多久、retry-after 超过 60 秒直接放弃(实测)

Claude Code 遇到 429 会先自动重试,最多 10 次、约 3 分钟。retry-after 不超过 60 秒时会等满再试(实测 10 秒、60 秒都恢复成功),61 秒及以上一次都不重试,立刻报 API Error: Request rejected (429)。中转站(new-api)的中文限流提示会原样显示,空 body 显示 status code (no body)。交互模式下每句话会同时发 2 个请求,限流额度消耗也是 2 倍。全部在本地 stub 上实测,Claude Code 2.1.285。

claude-code中转站+5
pitfalls2026年10月4日9 min
122
Claude Code MCP 显示 Connected 却 0 个工具:Invalid result for tools/list(ttlMs / cacheScope)实测与修法

Claude Code MCP 显示 Connected 却 0 个工具:Invalid result for tools/list(ttlMs / cacheScope)实测与修法

MCP server 显示已连接、工具数却是 0,日志里是 Invalid result for tools/list,ttlMs 与 cacheScope 校验失败。用自写 stub 在 Claude Code 2.1.280 / 2.1.285 / 2.1.288 上复现:根因不是「多了未知字段被严格校验拒掉」,而是 server 协商到 MCP 2026-07-28 后漏了这一版的必填字段(resultType、ttlMs、cacheScope),多加未知字段反而能正常通过。stdio 是否走新协议由一个默认关闭的远程开关决定,所以同一个版本有人中招、有人没事;2.1.280 打开协商后同样失败。用户侧设 MCP_PROTOCOL_NEGOTIATION=legacy(settings.json 的 env 也行)立即恢复,server 侧补上三个字段即可。

mcpclaude-code+4
pitfalls2026年10月3日7 min
102