Claude Code v2.1.90 深度解析:19 项变更逐一拆解
Claude Code v2.1.90 是一个以稳定性、安全性和性能优化为主的版本。本次更新包含 21 项变更,涵盖交互式教学课程、插件市场优化、安全加固、性能提升等多个方面。
苏米注:从更新频率来看,Claude Code 大约每 2 天发布一个版本,这种快速迭代节奏在终端 AI 工具中相当罕见。对于生产环境使用者,建议关注 LTS 版本或等待社区验证后再升级。
1. Added /powerup — 交互式教学课程
问题背景
Claude Code 功能日益庞杂(hooks、MCP、plugins、agents、skills、auto mode 等),新用户上手曲线陡峭,老用户也未必知道全部能力。缺乏产品内引导一直是社区高频反馈。
使用场景
- 新用户首次安装后运行 /powerup,通过动画 demo 学习 !bash 模式、@ 文件引用、/compact、auto mode 等核心功能
- 团队 onboarding 时作为标准培训步骤
- 老用户发现自己不了解的隐藏功能(如 hooks、worktree)
注意事项
目前为交互式教学,非文档替代品;深入配置仍需查阅 code.claude.com/docs。动画 demo 依赖终端渲染能力,极简终端(如远程 SSH 无色彩支持)体验可能打折。
同类产品对比
| 产品 | 产品内教学 | 外部教程 |
|---|---|---|
| Claude Code | ✅ 交互式动画课程 | docs + changelog |
| Codex CLI | ❌ 无 | developers.openai.com |
| Gemini CLI | ❌ 无 | codelabs.developers.google.com |
苏米注:Codex CLI 走极简路线,几乎没有产品内引导。Gemini CLI 通过 Google Codelabs 提供 hands-on 教程但非内嵌。Claude Code 的 /powerup 是三者中唯一的"产品内交互教学"。
2. Added CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE 环境变量
问题背景
Plugin marketplace 机制通过 git pull 拉取插件索引。在企业内网/离线/网络不稳定环境下 git pull 失败会导致 marketplace 缓存被清空,已安装的插件元数据丢失。
使用示例
# 企业防火墙内无法访问 GitHub
export CLAUDE_CODE_PLUGIN_KEEP_MARKETPLACE_ON_FAILURE=1
claude # git pull 失败时保留上次成功的缓存
注意事项
仅保留缓存,不代表插件会自动更新;需要在能联网时手动同步。与 CLAUDE_CODE_PLUGIN_SEED_DIR 配合使用效果更佳(离线预置插件)。
3. Added .husky to protected directories (acceptEdits mode)
问题背景
.husky/ 目录存放 Git hooks(pre-commit、pre-push 等),如果 AI 任意修改这些脚本,可能导致安全策略被绕过、CI/CD pipeline 行为异常或恶意代码注入到 commit 流程。
在 acceptEdits 模式下(自动接受文件编辑),Claude 尝试修改 .husky/pre-commit 时会被阻止并提示确认,防止意外破坏团队的 Git hooks 配置。
注意事项
仅在 acceptEdits 模式下生效;正常模式本身就有权限确认。保护列表还包括 .git、.claude 等目录。
4. Fixed rate-limit options dialog infinite loop
问题背景
用户达到 API 用量上限时,Claude Code 弹出选项对话框让用户选择(等待/切换模型/退出)。bug 导致对话框关闭后立即重新弹出,形成无限循环,最终消耗完内存导致会话崩溃。
使用场景
Pro 用户在高强度编码会话中触发 5 小时滚动窗口限额时,对话框不停弹出→关闭→弹出,终端完全卡死,只能 kill 进程。
注意事项
若仍遇到类似问题,可用 Ctrl+C 强制中断或 kill 进程。配合 v2.1.80 新增的 rate_limits statusline 字段,可提前感知用量接近上限。
5. Fixed --resume prompt-cache miss (regression since v2.1.69)
问题背景
--resume 恢复会话时,首次 API 请求完全错过 prompt cache,导致所有上下文重新计算 token(即全量缓存失效)。对于使用 deferred tools、MCP servers 或 custom agents 的用户,代价极高——多花 2-10 倍 token 费用。这是 v2.1.69 引入的回归 bug。
使用示例
# 恢复之前的工作会话
claude --resume
# 之前:首次请求 ~500K input tokens(全量重算)
# 修复后:首次请求 ~50K input tokens(命中 cache)
注意事项
prompt cache 节省的是真金白银(缓存命中价格仅为 1/10)。长会话恢复时尤为关键,建议确认升级到 2.1.90+。
苏米注:prompt caching 是 Anthropic 的核心差异化能力。Codex CLI 每次运行独立,无 session resume 概念,不存在 cache 复用。Gemini CLI 无显式 session resume。Claude Code 的 session resume + prompt caching 是其独特竞争优势之一。
6. Fixed Edit/Write "File content has changed" with format-on-save hooks
问题背景
用户配置了 PostToolUse hook 实现 format-on-save(如 prettier、black 等)。当 Claude 连续执行两次 Edit 时,第一次 Edit 触发 hook 格式化了文件内容,第二次 Edit 发现文件内容与预期不符(被 hook 改了),报错 "File content has changed"。
配置示例
// hooks 配置:每次写文件后自动运行 prettier
{
"hooks": {
"PostToolUse": [{
"command": "prettier --write $FILE_PATH",
"if": "Write(*) || Edit(*)"
}]
}
}
注意事项
修复后 Claude 会在 hook 执行后重新读取文件内容再进行下一次编辑。仍建议避免 hook 对文件做过于激进的重写(如改变行数结构)。
7. Fixed PreToolUse hooks exit code 2 not blocking tool call
问题背景
PreToolUse hook 设计为:exit code 2 = 阻止 tool 调用,hook 可通过 stdout 输出 JSON 提供拒绝原因。bug 导致当 hook 同时输出 JSON 到 stdout 并以 exit code 2 退出时,阻止逻辑失效,tool 仍被执行。
使用示例
#!/bin/bash
# pre-tool hook: 阻止删除 production 分支
if echo "$TOOL_INPUT" | jq -r '.command' | grep -q 'git branch -D main'; then
echo '{"reason": "Cannot delete main branch"}'
exit 2 # 应阻止,但 bug 导致未阻止
fi
注意事项
这是一个安全相关修复——依赖 hook 做访问控制的团队必须升级。v2.1.89 也修复了 PreToolUse hook 返回 "allow" 绕过 deny 规则的问题。
8. Fixed collapsed search/read summary badge appearing multiple times
问题背景
全屏滚动回看时,如果在 tool 调用期间 CLAUDE.md 文件自动加载,折叠的搜索/读取摘要 badge 会重复出现多次,干扰界面。
用户在大型项目中工作,Claude 执行 search/read 操作时自动加载了嵌套的 CLAUDE.md,终端滚回查看时看到同一个 badge 出现了 3-5 次。
注意事项
纯 UI 问题,不影响功能。v2.1.89 也修复了并行 tool 使用时 badge 重复的类似问题。
9. Fixed auto mode not respecting explicit user boundaries
问题背景
Auto mode 下 Claude 自动执行操作不需逐一确认。但用户明确说了"don't push"或"wait for X before Y"时,auto mode 的分类器忽略了这些自然语言约束,仍然执行了被禁止的操作。
使用示例
User: "Fix the tests but don't push to remote"
Claude (auto mode): *修复测试* → *git add* → *git commit* → *git push* ← 违反用户指令!
注意事项
这是一个信任与安全的关键修复——auto mode 的可靠性直接决定用户是否敢用。修复后 auto mode 分类器会解析用户消息中的否定/条件指令。
苏米注:Codex CLI 有三种模式(suggest/auto-edit/full-auto),full-auto 有沙箱保护但无自然语言边界解析。Gemini CLI 的 yolo 模式全部自动,无自然语言约束解析。Claude Code 在这方面领先——尝试理解并尊重用户的自然语言边界是更高级的 AI 安全策略。
10. Fixed click-to-expand hover text invisible on light themes
问题背景
终端浅色主题下,hover 文本的颜色与背景色接近,导致几乎不可见。
注意事项
使用浅色主题(如 Solarized Light)的用户受益。暗色主题不受影响。
11. Fixed UI crash on malformed tool input in permission dialog
问题背景
当 MCP server 或模型返回格式错误的 tool input 时,权限确认对话框尝试渲染导致整个 UI 崩溃。
注意事项
防御性修复,提高鲁棒性。使用第三方 MCP server 的用户更容易触发此问题。
12. Fixed headers disappearing when scrolling selection screens
问题背景
/model、/config 等选择屏幕在滚动时表头消失,用户失去导航参照。
注意事项
纯 UI polish。终端行数较少时更容易复现。
13. Hardened PowerShell tool permission checks
问题背景
Windows PowerShell 工具的权限检查存在多个安全漏洞:Trailing & bypass(命令末尾加 & 创建后台作业绕过权限检查)、-ErrorAction Break hang(触发调试器导致会话挂起)、Archive-extraction TOCTOU(解压文件时存在检查 - 使用竞态)、Parse-fail fallback degradation(命令解析失败时 deny 规则被降级)。
使用示例
# 之前可绕过权限的命令模式:
Remove-Item C:\important & # 后台作业绕过
Get-Content secret.txt -ErrorAction Break # 触发调试器挂起
注意事项
Windows 用户强烈建议升级。PowerShell tool 自 v2.1.84 作为 opt-in preview 引入,安全加固正在快速迭代。
14. Improved performance: eliminated per-turn JSON.stringify of MCP tool schemas
问题背景
每次 AI turn 都对 MCP tool schemas 做 JSON.stringify 来计算 cache key,在有大量 MCP 工具时(企业环境可能有 50+ 工具)造成不必要的 CPU 和内存开销。
使用场景
配置了多个 MCP server(Slack、Gmail、GitHub、DB 等),每个 server 暴露 5-20 个工具,每 turn 序列化所有 schema 导致明显延迟。
注意事项
对于工具数量少的用户感知不明显。重度 MCP 用户(企业场景)受益最大。
15. Improved performance: SSE transport linear time (was quadratic)
问题背景
Server-Sent Events 传输处理大型流式帧时,算法复杂度为 O(n²)(可能是字符串拼接或重复扫描),在大响应中导致严重延迟。
使用场景
- 生成长代码文件(数千行)时流式渲染越来越慢
- 使用 Opus 模型生成长推理输出时尤为明显
注意事项
典型的"渐进性能退化"——短响应看不出来,长响应呈指数恶化。
16. Improved performance: SDK sessions quadratic transcript writes → linear
问题背景
SDK 长会话中,每次写入 transcript 的时间随会话长度二次增长。50MB+ 的会话文件写入可能需要数秒。
使用场景
- 通过 SDK 集成 Claude Code 到 CI/CD pipeline,运行长时间任务
- 长时间 pair programming 会话(数小时,数百次 tool 调用)
17. Improved /resume parallel loading for all-projects view
问题背景
/resume 的"所有项目"视图串行加载每个项目的会话列表,项目多时等待时间长。
使用场景
同时参与 10+ 个项目的开发者,/resume 原本需要等待 5-10 秒加载所有项目会话,并行化后缩短到 1-2 秒。
18. Changed --resume picker to exclude claude -p / SDK sessions
问题背景
claude -p(print mode / 非交互模式)和 SDK 调用创建的会话不适合交互式 resume——它们通常是一次性脚本调用,混入 picker 列表会干扰用户找到真正想恢复的交互会话。
注意事项
这些会话仍存在于磁盘上,只是不在 picker 中显示。如需恢复特定 SDK 会话,可通过 --resume 直接指定。
19. Removed DNS cache commands from auto-allow
问题背景
Get-DnsClientCache (PowerShell) 和 ipconfig /displaydns (cmd) 可暴露用户完整的 DNS 查询历史——本质上是浏览历史的近似代理。自动允许这些命令存在隐私风险。
使用场景
在 auto mode 下,Claude 如果出于调试目的运行 Get-DnsClientCache,会获取用户访问过的所有域名列表,包含可能敏感的浏览行为信息。
注意事项
仅影响 Windows 用户。移除 auto-allow 后这些命令仍可执行,只是需要用户手动确认。
总结:版本定位与整体趋势
2.1.90 的版本定性
这是一个以稳定性、安全性和性能为主的版本,21 项变更中:新功能 3 项(/powerup、env var、protected dir),Bug 修复 10 项(其中 3 项安全相关),性能优化 3 项(全部涉及复杂度降级),改进/变更 5 项。
三产品演进方向对比
| 维度 | Claude Code | Codex CLI | Gemini CLI |
|---|---|---|---|
| 架构 | 无沙箱 + 权限系统 + hooks | 沙箱优先 | 模式切换 (shell/yolo) |
| 安全策略 | 深度防御(hooks + rules + auto mode 分类器) | 隔离防御(沙箱) | 轻量防御 |
| 会话管理 | resume + cache + 长会话优化 | 无状态 | 基础历史 |
| 扩展生态 | Plugins + MCP + hooks + skills | MCP (基础) | Extensions + MCP |
| 企业能力 | managed-settings + 权限策略 + OTel | 基础 | Code Assist 集成 |
| 发布节奏 | ~2 天一个版本 | ~月级 | ~周级 |
苏米注:Claude Code 正在成为最复杂的终端 AI 编码工具,其 hooks/plugin/MCP 三层扩展体系和企业安全能力远超竞品,但复杂度也带来了更高的 bug 密度和维护负担(仅 2.1.89 就有 40+ 修复项)。Codex CLI 走简洁路线以沙箱安全为核心。Gemini CLI 介于两者之间,侧重 Google Cloud 生态集成。
对于生产环境使用者,我的建议是:
- 追求稳定性:等待版本发布 1-2 周后,观察社区反馈再升级
- 企业环境:重点关注安全相关修复(如 PreToolUse hooks、PowerShell 加固)
- 重度用户:性能优化(prompt cache、SSE transport、SDK sessions)值得立即升级
- 新手用户:/powerup 交互教学是很好的入门工具,建议首次安装后运行