跳到主要内容

34 篇博文 含有标签「Claude Code」

查看所有标签

Claude Code v2.1.178 发布 —— 参数级权限锁,嵌套目录自治

· 阅读需 6 分钟

Claude Code v2.1.178 封面

最重磅更新:Tool(param:value) 参数级权限规则

这是本次最有实质意义的改动。在此之前,Claude Code 的权限规则只能按工具名匹配——你可以允许或禁止 ReadWriteAgent 等工具,但没法说「允许 Agent 但只允许用 Sonnet」。粒度停留在工具层面。

新语法 Tool(param:value) 把规则推进到参数级别:

Agent(model:opus) → 阻止 subagent 调用 Opus 模型
Agent(model:sonnet) → 只允许 Sonnet 子 agent
Read(path:src/**) → 只允许读取 src/ 下的文件

支持 * 通配符,所以 Agent(model:claude-3-5-*) 这类范围匹配也可以写。这对于团队协作和企业合规来说是一次颗粒度的提升——管理员可以把「允许做什么」和「允许用什么做」拆成两层控制,而不是一刀切地禁掉整把工具。

一个典型场景:CI/CD 流水线里用一个 agent 做代码检查,你想确保它永远不调用 Opus(贵),但允许它自主使用 Sonnet。以前的做法是在外部脚本里拦截模型选择的逻辑,现在一行权限声明就能搞定。

第二亮点:嵌套 .claude/ 目录——就近覆盖

如果你维护过一个多模块仓库(monorepo),你一定遇到过这个问题:根目录的 .claude/skills 定义了全仓库的通用 skill,但后端子目录需要一套完全不同的 agent 行为。

之前只能把全部 skill 放在根目录,靠 skill 名称的命名约定来区分。现在,嵌套目录可以有自己的 .claude/skills.claude/workflows/ 和输出样式配置,Claude Code 在工作时会选择「离当前文件最近」的那一份。

命名冲突时,嵌套 skill 以 <dir>:<name> 的形式出现——比如你在 frontend/.claude/skills/ 里定义了一个叫 react-lint 的 skill,又想在 backend/.claude/skills/ 里定义同名 skill,它们不会互相覆盖,而是分别注册为 frontend:react-lintbackend:react-lint

这个设计思路是从「一个仓库一套配置」转向「按目录层级自治」——像一个文件系统权限模型里的 umask 继承逻辑,越近的规则优先级越高,但上层规则仍然存在,不会丢失。

子 agent 不再「绕行」:auto mode 的防御闭环

另一个值得单独说的改动:auto mode 下,subagent 的 spawn 请求现在由分类器先评估,再决定是否放行。之前存在一个缺口——subagent 可以在父 agent 未经过 permission review 的情况下发起一个 blocked 操作(比如读一个不在白名单里的目录)。现在所有 subagent 的 spawn 都要经过分类器防火墙,把这条旁路堵死了。

如果你用过 auto mode 处理敏感目录结构,这个修复在安全意义上比看起来重得多——它补的不是一个 bug,而是一个攻击面。

其他改进

/doctor UI 改版:统一的扁平树布局,不再有缩进不一致的 section;状态图标更醒目;命令名用高亮标注。排错时的信息密度和可读性都有提升。

Workflow 触发词优化:之前任何提到「workflow」这个单词的上下文都可能触发 prompt keyword 高亮。现在只匹配「run a workflow」或「workflow:」这类显式短语,配色也换成了紫色 shimmer 效果——减少了误触,也降低了视觉噪声。

Remote Control 错误信息改进:连接失败现在会在终端底部显示持久的红色 /rc failed 指示器,而不是在日志里埋一条不显眼的错误。而「not yet enabled」的报错现在会区分到底是 gate 未开启、检查失败、entitlement 过期,还是组织策略限制——之前你只能看到一句话「未启用」,不知道问题出在哪一端。

/bug 改进:提交前必须填写描述,不再用模型拒答文本作为 GitHub issue 标题。如果 Claude 拒绝了一个请求,它不会再把这个拒绝内容直接贴到 issue title 里——这个小改动对反馈质量影响挺大。

🔧 修复与优化(合并概述)

  • OOM 崩溃:CLI 从父进程继承了过期的 websocket/OAuth(开放授权协议)文件描述符环境变量,触发内存溢出。已修复
  • Chrome OAuth 跨账号静默失败:Chrome 登录账号与 Claude Code 登录账号不一致时连接会无声失败,现在会明确报错
  • 嵌套 skill 权限阻断:非交互运行下,目录限定名的嵌套 skill 会被 permission prompt 阻断,无法正常加载
  • 子 agent 多个修复:transcript 现在能显示工具结果和实时进度;在子 agent 完成回合期间发送的消息不再丢失;用 ctrl+b 将子 agent 放入后台不再从零重启
  • daemon 401 认证失败:通过 ANTHROPIC_BASE_URLANTHROPIC_AUTH_TOKEN 环境变量配置自定义 API 网关时,claude agents workers 报 401 错误——网关认证缓存未正确传递
  • compaction fallback 模型:compaction 在模型过载或不可用时没有走 --fallback-model 配置的降级链,现在补上了
  • 认证刷新缓存:session 外的凭据刷新后,由于缓存的请求配置已过期,模型请求继续报 auth 错误
  • 背景 session 状态滞留:用 /bg←← 创建的背景 session 在任务完成后仍然显示 "Working"——误导用户以为还有任务在执行
  • MCP(Model Context Protocol,AI 工具通信协议)server 级 disallowedTools 被忽略:在 subagent 的 disallowedTools 中配置 mcp__servermcp__server__*mcp__* 规则,之前不会生效——subagent 依然能调用这些工具
  • vim 模式 undo 合并问题u 把快速连续的命令合并成一步撤销,无法逐命令回退——现在每个 NORMAL/VISUAL 模式命令独立为一个 undo 步
  • 自定义 URI scheme 链接:statusline 上点按 vscode:// 这类自定义协议链接,在 claude agents 中不会打开
  • CJK(中日韩文字)IME(输入法编辑器)冲突:[VSCode] 按 Esc 关闭中文输入法候选窗时,会同时取消正在运行的 Claude 任务——两个操作共享同一个 Esc 快捷键

📌 行为变更

  • Workflow prompt keyword 现在只匹配显式触发短语(「run a workflow」「workflow:」),不再对普通对话中出现的「workflow」一词高亮
  • Skill 列表截断警告现在会显示受影响的 skill 描述数量,而不是一句模糊的「部分 skill 描述被截断」

升级方式

已安装用户:

claude update

新安装(三种方式任选):

# macOS/Linux(推荐)
curl -fsSL https://claude.ai/install.sh | bash

# Homebrew(macOS/Linux)
brew install --cask claude-code

# Windows(推荐)
powershell -ExecutionPolicy ByPass -c "irm https://claude.ai/install.ps1 | iex"

# WinGet(Windows)
winget install Anthropic.ClaudeCode

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #Claude #AI编程 #权限管理 #安全

Claude Code v2.1.176 发布 —— 二十多个修复扎堆,Remote Control 和可用模型白名单是重灾区

· 阅读需 5 分钟

封面图

以前:Remote Control 的连环坑

Remote Control 是 Claude Code 最方便也最危险的功能之一——手机上点一下,终端里的 agent 就动起来了。但这个链接两端之间的状态管理,出了不少问题:

  • web/mobile 连接上来,静悄悄把 session 模型换了。你在终端里配好了 Sonnet,Remote 一接进来,agent 切到了 Opus,你甚至不知道。
  • 断连通知变成了数字代码。断开时显示 "Disconnected: code 7",你得去翻文档才知道是什么意思。
  • 连接失败给对话加了一行冗余日志。连接失败本应静默或只通知一次,但 transcript 里多了一条重复记录。
  • 签另一账号登录,之前的 Remote session 不断开。理论上登录会被 TOTP 刷新,但旧 session 还活着,存在越权隐患。

这些不是最近才冒出来的 bug——Remote Control 上线以来,断连体验一直很粗糙。这次一次性修了四条,基本把"连接生命周期"这个状态机擦了一遍。

现在:可用模型白名单的防线被加厚了

v2.1.175 加了 enforceAvailableModels,从管理员端锁死了 Default 模型不能绕过白名单。但攻击面比想象中更宽:

  • 环境变量 ANTHROPIC_DEFAULT_*_MODEL 还能覆盖白名单。就算管理员配了白名单,用户在 shell 里 export 一个 ANTHROPIC_DEFAULT_OPUS_MODEL=claude-3-opus-4-8,alias 解析完还是跳到白名单外的模型。这次堵上了——alias model picks 不能 redirect 到 blocked model。
  • /fast 模式切换也没有白名单检查/fast 默认切一个轻量模型,但如果管理员没放行那个模型,/fast 应该拒绝而不是强行切换。现在 /fast 在目标模型不在白名单内时会拒绝执行。
  • 子 agent 的 model override 此前也不受 availableModels 约束。agent 模板里写 model: claude-opus-4-8,即使管理员只允许 Sonnet,子 agent 照样用 Opus。上版本(v2.1.172)修了子 agent 白名单,这次算是把余下的缺口(/advisor 预选模型、agent dispatch 选择器)一起补了。

一个细节:管理员花一个下午配好的策略,用户一行 env var 就能绕过——这种事在 SaaS 产品里屡见不鲜。连着两个版本砍环境变量绕过路径,说明 Claude Code 的 enterprise 合规需求确实在上升。

剩下的修复,按主题排比比较清楚

终端兼容性

  • /copy 和鼠标选中的文本在 tmux + SSH 下拷贝不到系统剪贴板——常见场景:跳板机连服务器,代码复制不出来
  • 旧版 tmux(<3.2)的 paste buffer 加载失败
  • Windows 上 agent 视图输入框没有文本光标

背景 session & daemon

  • /bg 中途打断后 agent 一直显示 "Working",实际上没活干了——持续占用终端注意力
  • claude --bg -cn &lt;name> 设的 session name 没生效
  • 背景 session 的 Windows 网络路径在持久化状态里没做脱敏,respawn 时路径解析错误
  • 损坏的状态文件里 malformed resume ID 导致恢复拒绝,但不报清楚原因
  • Windows daemon 在 ~/.claude/daemon 目录设置了 ReadOnly 属性后启动失败
  • 自动更新后窗口跨版本发不了回复,现在会在 daemon status 里说明是 version skew

Sandbox 与 hooks

  • Linux sandbox 在 .claude/settings.json 是 symlink 且指向绝对路径时启动失败
  • Hook 的 if 条件(如 Edit(src/**), Read(~/.ssh/**), Read(.env))此前不匹配这些常见 pattern——写了 hook 规则的人会发现它根本没生效
  • Fable 5 的 auto mode 在没有启用 Opus 4.8 的组织里会直接报错,现在 fallback 到可用的最佳 Opus 模型

Session 状态

  • /cd 和工作目录移动后,session 仍然报告旧目录的 git branch——git branch 显示的是 main 但实际在 feature/xxx
  • Background agent 按 PR URL 搜索:PR 在 scheduled wakeup 或 job 阻塞期间打开的,之前搜不到
  • Cloud session 闲置太久后重连报 "Could not resolve authentication method"

并发与多窗口

  • claude agents 里按返回键,一个窗口返回会把其他附加到同一 session 的窗口也弹回;现在各窗口独立

升级

已安装用户:

claude update

新安装(三种方式任选):

# macOS/Linux 推荐
curl -fsSL https://claude.ai/install.sh | bash

# Homebrew
brew install --cask claude-code

# Windows
irm https://claude.ai/install.ps1 | iex

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #AI编程 #可用模型管理 #RemoteControl

Claude Code v2.1.174 发布 —— `/model` 选择器终于不藏 Opus 了,背景 session 不再串环境

· 阅读需 3 分钟

Claude Code v2.1.174 封面

/model 选择器:Opus 不再被藏起来

之前你开 /model 选择器,如果 Default 解析到了某个模型,同一模型家族的其他选项可能被隐藏。Opus 用户(Max/Team Premium/Enterprise 套餐)看不到 Opus 的行;Sonnet 用户(Pro/Team 套餐)看不到 Sonnet;pay-as-you-go API 账户也看不到 Opus。现在 /model 选择器会正确显示 Default 解析到的模型家族。

另外如果 ANTHROPIC_DEFAULT_SONNET_MODEL 环境变量固定了一个非默认版本,选择器之前显示的是硬编码的 Sonnet 版本标签——修了之后显示实际的版本。

背景 session 不再串环境

背景 session 之前有个隐蔽的 bug:daemon 启动时带着当时 shell 的 ANTHROPIC_* 环境变量(gateway URL、custom headers、/model 别名)。如果之后你在另一个 shell 里改了这些环境变量再启动新的背景 session,它继承的是 daemon 的环境而不是当前 shell 的——导致背景 session 用错的 provider 配置。修了之后背景 session 用自己的环境,不会串。

Bedrock GovCloud 区域修复

Bedrock GovCloud 区域(us-gov-*)之前 inference profile 前缀派生错了——用了 global 而不是 us-gov,导致派生的 model ID 全部 400。GovCloud 用户现在可以正常使用了。

VSCode:用量归属面板

VSCode 扩展的 Account & usage 对话框(/usage)现在显示缓存 miss、长上下文、subagent 以及按 skill/agent/plugin/MCP 分类的用量,覆盖最近 24 小时或 7 天。对于团队管理来说,能看清楚每个环节具体花了多少。

其他修复

  • 退出卡顿修复:退出 Claude Code 后如果刚中断了一个 shell 命令,之前会卡 1-2 秒。修了
  • Skill 热重载优化:之前改一个 skill 会重发全部 skill 列表,现在只发变更的
  • /advisor 预选模型过滤:如果预选的 advisor 模型被 availableModels allowlist 阻止了,不再错误选中
  • 全屏模式滚轮加速:新增 wheelScrollAccelerationEnabled 设置项,可以关闭全屏模式的鼠标滚轮加速

升级:

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

完整更新日志:GitHub Release

/model 和背景 session 这两个修复,日常用 claude-code 的人大概率都碰到过——一个想用 Opus 找不到,一个配好了新 provider 但背景任务还在用旧的。

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #AI编程 #模型选择 #修复 #版本更新

Claude Code v2.1.175 发布 —— 锁死白名单,企业管理员终于能管住 Default 模型了

· 阅读需 4 分钟

更糟的是,某个项目里的 .claude.jsonc 自己写了个 availableModels 列表,把白名单扩宽了,管理员配的约束直接被覆盖。

这不是假设——这就是 v2.1.175 之前 Claude Code 在企业环境下的真实状态。模型管控有开关,但没有锁。

Claude Code v2.1.175 封面

一个设置项填补的治理空白

v2.1.175 只改了一个东西,但它触及了 Claude Code 从「个人工具」走向「企业平台」过程中的关键缺口:enforceAvailableModels 托管设置。

当管理员将这个开关打开后,两件事同时生效:

第一,Default 模型不再能绕过白名单。 以前你设了 availableModels 只允许 Sonnet,但如果用户的 Default 解析到了 Opus 或 Haiku,这些模型依然会被使用——白名单过滤了「显式选择」但没有过滤「隐式默认」。现在 Default 模型在解析时会检查最终结果是否在白名单内,如果不在,就自动回退到白名单中的第一个可用模型。也就是说,就算某个团队的 Default 设成了 Opus,只要白名单里只有 Sonnet,实际跑起来的就是 Sonnet。

第二,用户级和项目级配置不能扩宽管理级白名单。 之前 availableModels 在 managed settings、user settings、project settings 三个层级都有,但 managed 的值只作为初始值存在——用户或项目可以自己再加模型进去。现在开启 enforceAvailableModels 后,层级间的行为变成了严格的交集逻辑:最终的可用模型集合,被锁死在管理员设定的范围内,下级配置只能缩小,不能扩大。

为什么单这一件事值得一版更新

有人可能会说:就一个设置项,值得单独发一个版本?

值得。因为它解决的不仅仅是「一个 bug」,而是企业采纳 AI 编程工具时一个真实存在的采纳门槛。

过去半年,Claude Code 的迭代明显分为两个方向:一个是功能密度,持续加 sub-agent、skills、插件、MCP;另一个是治理能力,从零开始搭 managed settings 体系、allowlist、audit log。v2.1.172 的 managed settings 引入了托管策略框架,v2.1.173 和 174 在修补边缘情况,v2.1.175 则是把框架中最薄弱的环节——「托管策略能不能真正管住用户」——给封死了。

模型白名单如果管不住 Default,就意味着管理员要么接受不可控,要么强制让团队所有设备统一配置 Default——这在几十上百人的团队里基本是空谈。enforceAvailableModels 补的是「制度层面的最后一公里」:不是告诉用户「你最好别用那个模型」,而是从系统层面保证「你就是用不了」。

这也给 Claude Code 后续的企业功能释放了一个信号:managed settings 不再只是摆设,团队的治理策略可以真正落地了。对于正在评估 Claude Code 部署到全公司的安全团队来说,这一点比任何新功能都更重要。

升级方式

如果你在用 Homebrew:

brew install --cask claude-code

如果已经安装过,直接:

claude update

或者用官方脚本:

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

完整更新日志:GitHub Release

v2.1.175 看起来小,但如果你在公司里推 Claude Code,这个版本可能是你真正敢把它交到团队手里的起点——管理员终于能睡个安稳觉了。

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #模型管理 #AI工具 #企业级 #工程化

Claude Code v2.1.173 发布 —— Fable 5 的 1M 上下文标签终于不裸奔了

· 阅读需 2 分钟

Claude Code v2.1.173 封面

Fable 5 的 [1m] 后缀归一化

Fable 5 默认包含 1M 上下文窗口,Anthropic 给它的 API 模型名加了个 [1m] 后缀以示区分。问题来了:如果你在本地配置、脚本或环境变量里直接写模型名,Anthropic 的服务端不认这个后缀——它只知道 claude-sonnet-4-20250514,不知道 claude-sonnet-4-20250514[1m]

之前遇到这个问题的用户会收到一个模棱两可的模型不存在错误,根本想不到是方括号后缀的问题。现在 Claude Code 在发送请求前自动剥掉 [1m],一步到位。

这不是什么大改动,但它的潜台词值得关注:Anthropic 在 API 层给 1M 上下文窗口打标签时留了个小的兼容性缺口,Claude Code 主动兜了这个底。侧面说明 1M 窗口已经从宣传语变成实际产品特征了——有足够多的用户配上了、用上了、被后缀卡住了,才值得专门修。

Windows 沙箱启动假告警

第二个修复更窄:在 Windows 上启用 sandbox 后,每次启动 Claude Code 都会蹦一行 "sandbox dependencies missing" 警告——实际上沙箱是正常的,依赖也没缺。纯粹是启动检查的逻辑在 Windows 上多走了一条分支,报了个假警。

对 Linux/macOS 用户完全无感,但对 Windows 用户来说,每次启动都看到一行红字,看久了会真的怀疑沙箱是不是有问题。

升级

macOS / Linux(推荐)

brew install --cask claude-code # 首次安装
claude update # 已有安装升级

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

Windows

irm https://claude.ai/install.ps1 | iex

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #AI编程 #Fable5 #1M上下文 #Anthropic

Claude Code v2.1.172 发布 —— 子智能体能生孙子了,Bedrock 终于认得 ~/.aws,1M 上下文卡死修复

· 阅读需 6 分钟

同期还修了 20+ 条问题,覆盖 Bedrock 区域配置读取、1M 上下文的会话胶着、智能体面板的假忙转圈、以及跨目录设置泄漏。

Claude Code v2.1.172 封面

子智能体递归:你的 agent 的 agent 的 agent

Sub-agents can now spawn their own sub-agents (up to 5 levels deep).

这一条是整个版本最引人注目的变化。之前子智能体只能由主 agent 创建,子智能体自己没有能力继续往下分。现在 agent 树可以长到 5 层,根 agent 指挥一级,一级再指挥二级,逐级嵌套。

5 层不是随便拍的数字。超过这个深度后,agent 间的通信开销超过并行度收益,调试链路的难度也成倍增长。这个上限经过了实际的工程权衡。

同批还修了一个配套 bug:当一个子智能体被 stopped 后,它所生成的嵌套 agent 如果没有被清理,子智能体在 agent 面板上会一直保持 "active" 状态。新版本在停止时递归清理所有后代,面板不再假死。

后台 agent 分配到预热 worker 时可能读取另一个目录的 .mcp.json 审批和信任设置——这也算跨 agent 场景下的安全边界修补。子智能体数量越多,这类边界问题的修复价值越大。

Bedrock 终于认得 ~/.aws

Amazon Bedrock now reads the AWS region from ~/.aws config files when AWS_REGION isn't set, matching AWS SDK precedence; /status shows where the region came from

以前用 Bedrock 部署 Claude Code 的用户有个顽固的痛点:必须在环境变量里显式设 AWS_REGION,否则启动失败。~/.aws/config 里配好了 region = us-east-1,Bedrock 不认。这不是用户配置姿势问题——是 Bedrock provider 根本没有遵循 AWS SDK 的优先顺序:AWS_REGION 环境变量 → ~/.aws/config → 默认值。

现在 /status 不仅显示当前 region,还会标注来源(env var / config file / default)。一个小提示省去大量 Bedrock 部署排查时间。

同批 Bedrock/模型侧修复还有不少值得单独记的:

  • /model 选择器不再展示 Bedrock 不提供服务的模型。之前列表里一堆点了没用的选项。
  • 模型 ID 不再出现 [1M][1m] 双后缀——显示层和解析层各加了标记字符串。
  • availableModels 限制现在正确作用于子智能体模型覆盖、agent dispatch 模型选择器和 advisor 模型。以前设了白名单,子智能体可以用 override 绕过。
  • availableModels 白名单中使用版本特定 ID(如 claude-opus-4-8)时,/model 选择器的 Opus 和 Sonnet 1M 行不再被隐藏。
  • opusplan 模型设置在 plan 模式下正确附带 1M 上下文。

1M 上下文卡死的自动修复

Fixed sessions using 1M context without usage credits getting permanently stuck — the session now automatically compacts back under the standard context limit

这一条单独拿出来说,不是因为代码改动大,而是因为场景很刁钻:用了 1M 上下文但没有使用积分的用户,会话会永久卡死——不能继续、不能恢复。1M 上下文是付费功能,账户没有积分时上下文限制应该回退到标准限宽,而不是让 session 彻底瘫痪。修复方案是自动压缩上下文到标准限制以下,而不是直接报错退出。这种"不崩溃、不报错、自动回退"的做法,比一个硬错误提示更符合期望。

同批较值得关注的其他修复:

  • 对话中含多张图片时反复报 "an image in the conversation could not be processed and was removed"——不再重复触发。
  • agent view 在 worker 已回复后仍展示 30 秒忙转圈——状态同步时机不对,现在即时刷新。
  • 后台 session attach 在 daemon 自动更新后出现 EAUTH 错误——版本不匹配场景的认证令牌失效。
  • WebFetch(domain:*.example.com) 通配符规则之前永远无法匹配子域名——正则生成逻辑 bug。
  • 上箭头提示历史在子智能体聊天标签页打开时显示了主 agent 的对话——历史上下文混淆。
  • 记忆召回在远程 session 中找不到挂载的团队记忆存储(CLAUDE_MEMORY_STORES)——存储路径解析漏了远程这一侧。
  • 工作流验证拒绝仅提及 Date.now()Math.random() 的脚本——关键词误检测,写脚本时不小心提了这两个词就会误杀。

性能与 UI 打磨

长对话场景有实质性减负:移除了冗余消息归一化,streaming 过程中 tool-use 状态未变化时跳过完整消息历史转换。

/goal 的 status chip 在空闲时不再以 5Hz 刷新终端——每帧都触发重绘的 CPU 占用归零。改动不大,但天天开 /goal 的人能感知到区别。

Claude in Chrome 浏览器工具加载从多次调用改为单次批量调用——初始化速度提升。

/plugin 市场列表在浏览长列表后退回时不再丢失光标位置,还加了搜索栏。

[VSCode] PowerShell 工具调用不再渲染为原始 JSON,shell 输出中的 ANSI 转义码也被剥离。

/code-review 在未登录状态下保持 ultra 选项可见。/loop 在远程 session 中不再被推广——远程模式不适合无限循环。

升级

# macOS/Linux(推荐)
curl -fsSL https://claude.ai/install.sh | bash

# Homebrew(macOS/Linux)
brew install --cask claude-code

# 已安装用户升级
claude update

# Windows(推荐)
irm https://claude.ai/install.ps1 | iex

# WinGet
winget install Anthropic.ClaudeCode

# NPM(已弃用)
npm install -g @anthropic-ai/claude-code

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #AI工具 #子智能体 #Bedrock #版本更新 #终端工具

Claude Code v2.1.170 发布 —— Fable 5,性能超越 Opus 4.8 的模型今天可用

· 阅读需 2 分钟

Claude Code v2.1.170

Fable 5:Mythos 首秀

这次的核心只有一条:Claude Fable 5 公开发布了。Anthropic 的原话是——"capabilities exceed those of any model we've ever made generally available",超越他们此前公开发行的全部模型。

这个表述有多重含义。Opus 4.8 是 Claude Code 当前主力模型,已经是代码任务的一线选择了。Fable 5 在此基础上再做提升,而且它不属于 Opus/Sonnet/Haiku 的分层体系——它来自 Mythos 级别,是独立的高能力产品线。

对开发者来说,最直接的影响是:不需要换工具链。Fable 5 走的是现有的 Claude Code 渠道,升级到 v2.1.170 版本就能用。没有新的 API key,没有新的终端命令,不需要申请内测。账号里能看到 Fable 5 作为可用模型出现,跟你切 Opus 4.8 一样自然。

这意味着什么?Anthropic 正在打破 Opus 作为"天花板"的定位。Mythos 作为一个独立的、更高性能的产品线存在,未来如果继续迭代,Fable 系列可能成为复杂代码推理场景的默认选项。

Session 保存修复:IDE 集成用户的隐藏雷

第二个改动看起来小但影响面不小:修复了从 VS Code 集成终端或继承了 Claude Code 环境变量的 shell 中启动时,session 无法保存 transcript 的问题。

feature 描述只有一句话,但背后的场景很常见:你在 VS Code 里开了一个终端,直接在终端里 claude,干了一下午的活,退出后发现 --resume 找不到这个 session。transcript 根本没有落盘。原因是集成终端继承的环境变量与 regular shell 不同,导致 session persistence 的初始化路径被绕过了。

这个修复对日常用 IDE 终端的用户来说是「终于不用记着自己另存 session 了」。

升级

# 推荐方式
claude update

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。

#ClaudeCode #Fable5 #AI模型发布 #开发者工具 #版本更新

Claude Code v2.1.169 发布 —— 那些悄悄消耗你的小问题终于修了

· 阅读需 6 分钟

上周就遇到了这么一件——写一个跨模块重构,输入了很长一行 find . -path './src/*' -name '*.ts' | xargs ...,想按上键回到开头加个参数。结果光标直接跳到上一条历史命令,整行输入消失。那一瞬间的感觉就是憋屈——不是 bug,但就是不对。

v2.1.169 的更新日志读下来,发现这个版本在系统地清理这类「不对但不算 bug」的问题。接近 30 项修复,零个能写进营销文案的「大功能」,但每一刀都砍在你天天碰到的地方。

第一刀:自定义配多了,崩了怎么查

Claude Code 的可扩展性走得比想象中快。几个月前你只需要一个 CLAUDE.md,现在你可能挂着 5 个 plugin、3 个 MCP 服务器、一堆自定义 skill 和工作流 hook。这些扩展让 Claude Code 从「通用工具」变成「你的工具」——但一旦它们出问题,排查起来就是灾难。

Plugin A 和 MCP Server B 产生了冲突,session 启动就报错。你分不清是哪个环节出了问题,唯一的办法是逐一禁用、重启、测试。如果有 8 个扩展,最坏情况要重启 8 次。

--safe-mode(以及等效的环境变量 CLAUDE_CODE_SAFE_MODE)解决了这个问题的本质:让你能回到一个「肯定能跑的基线」。启动时 CLAUDE.md 不读、plugins 不加载、skills 不挂载、hooks 不注册、MCP 服务器不启动——回到出厂状态的 Claude Code。如果问题消失,说明是扩展层的问题,然后二分法排查。

这个思路不是 Claude Code 原创的——Chrome 的无痕模式、Windows 的安全模式都是同一逻辑。但值得注意的是,Claude Code 走到这一步说明一个问题:它已经不再是「一个终端工具」了,它变成了一个平台。只有平台才需要安全模式。 终端工具崩了大不了重装,平台崩了意味着你积累的配置、工作流、插件生态整个不可用——这时候一个干净的诊断入口就是必需品。

第二刀:/cd —— 改个目录不需要重新社交

Claude Code 的 prompt cache 维持着对当前工作目录的理解——项目结构在哪、配置文件在哪、你的意图和当前目录的关系是什么。如果你在一个 session 里想从 frontend/ 切到 backend/,之前只能开一个新 session,然后重新介绍项目背景、等模型重新理解目录结构。

/cd 命令改变了这个:输入 /cd /path/to/new/dir,工作目录变了,prompt cache 保持。你不需要重新解释上下文,模型知道你刚才在聊什么,只是「现在我们在另一个目录工作」。

实际编程中,「换目录」的发生频率比你以为的高得多。 改 API 层 -> 看前端怎么调用 -> 查配置文件路径 -> 看测试在哪。这四个步骤可能涉及四个不同目录。在一个 session 内完成的流畅感,和重新开四个 session 的割裂感,差别不是几秒钟的时间,而是思路会不会断。

第三刀:Skill 太多太杂,/ 命令列表挤满了

有一个细节可能只有重度用户才在意:Claude Code 自带了几十个内置 skill 和 slash command。当你敲 / 的时候,菜单里既有你真正需要的 /commit,也有你永远不用的 /condense、你忘了怎么用的 /doctor。并不是说这些东西不好,而是每个人的工作流只需要其中 5 个。

disableBundledSkills 设置(和 CLAUDE_CODE_DISABLE_BUNDLED_SKILLS 环境变量)允许你隐藏所有内置的 skill、workflow 和 slash command。这不是一个「禁用功能」,而是「减少噪音」。你需要的 skill 可以自己写,不需要的就别让它出现在 / 菜单里。

这个改动的潜台词是:Claude Code 团队意识到内置 skill 对所有用户来说不是 uniform 的。「我们觉得有用」不等于「你用得上」. 给用户一个全局开关来隐藏所有内置项,比逐一允许禁用更干净。

然后是一些「你肯定遇到过但没单独报过」的修复

Up/Down 键的行为终于对了。 之前输入长命令后按上键,光标直接跳回上一条历史记录。你只是想在同一行的可视行之间移动——比如从行尾回到行中某个位置——整行被历史替换了。现在上/下键先在本行的 wrap 行之间移动,到边缘才触发历史浏览。

macOS 上每轮对话开头不卡了。 如果你用了 claude.ai 账号登录,之前每轮对话开始都有一个 30-50ms 的 UI 冻结——刚好够你注意到「卡了一下」但不够让你去报 bug。累积下来 100 轮对话浪费 3-5 秒。修复的源头是凭证检查的异步化。30-50ms 这个数字很微妙——它恰好处于「能感知但不致命」的阈值上,所以这个 bug 存在了多个版本没被单独报告。

/workflows 现在能边聊边开了。 之前想在当前 turn 中引用一个 workflow 来指导模型行为?不行,得等当前回复跑完。现在 /workflows 在 turn 执行期间就能打开,适合你看到模型给了一个方向不对的回复,立刻打开 workflow 纠正它。

claude agents --json 终于能看到全量的 agent 了。 之前 blocked 状态和被分发的后台 session 被静默省略了——你用脚本管理 agent 集群,发现总数比预期少,但你不知道少了哪些。--all 参数和新增的 id/state 字段补上了这个缺口。

MCP 企业策略的完整性修补。 allowedMcpServers / deniedMcpServers 在 reconnect、IDE 配置、首次 session、远程设置未加载等场景下未被强制执行。从企业安全的角度,这属于「策略写了但覆盖不全等于没写」——管理员配好了白名单,但攻击者可以通过 reconnect 窗口绕过去。 这次把所有时间窗口都补上了。同时修复了一个连带问题:没有远程设置的 org 冷启动时客户端会在等待响应中挂住。

还有两个值得提的:不信任的项目设置不能再设 OTEL 客户端证书路径了(权限提升漏洞);.in_use PID 锁文件不再无限累积——每天扫走超过 24 小时的僵尸文件。

升级

# macOS(推荐)
brew upgrade --cask claude-code

# 已安装用户
claude update

# 首次安装
curl -fsSL https://claude.ai/install.sh | bash

完整更新日志:Claude Code v2.1.169 GitHub Release

📢 关注我,获取最新 AI 编程工具更新和开发者动态。欢迎转发给身边用 Claude Code 的朋友。

#ClaudeCode #AI编程 #安全模式 #开发者工具 #版本更新 #Anthropic

Claude Code v2.1.166 发布 —— 你的模型宕机了?它自己会找替补

· 阅读需 6 分钟

第一件:某天下午模型 API 间歇性挂了,Claude Code 给出了一行 "rate limit exceeded" 然后停着不动。得手动切换模型、重发请求、找回上下文。整个过程大概花 5 分钟,但那天刚好赶发布前改 bug,5 分钟就足够打破那种专注状态。

第二件:把电脑合上带到会议室,回来发现后台进程占用了一个 CPU 核跑满——claude --bg-pty-host 的孤儿进程,daemon 断开后没清理掉。不是什么大问题,但如果发生在笔记本上,电池直接少两小时。

v2.1.166 的更新日志读下来,发现很多改动都瞄准了这些「说不清道不明、但多了就很烦」的问题。

Fallback 模型:不再把鸡蛋放一个篮子

fallbackModel 设置可以配置最多三个替补模型,按优先级顺序尝试。当主力模型过载或不可用时,Claude Code 自动换到下一个。--fallback-model 参数现在也对交互式 session 生效了。

这个功能看起来简单,但背后的逻辑对日常开发很实用:你跑着一个 GPT-5 的 session,突然 API 返回 429,不再弹错停着等你切换,而是自动走一遍替补列表。如果替补名单里的模型也能用,session 继续。——至少不用发那三行 "let me switch models" 信息了。

除了 fallback,非可重试的 API 错误现在也会在整个 session 级别自动用 fallback 模型重试一次。认证错误、限速错误、请求体过大和传输错误会立即报出来——这些重试也救不了——但其他类型的拒绝被转换成了「换一个模型试试」。配了三个 fallback 模型的话,相当于多级可靠性兜底。

终端里那些「修了不大,没修很烦」的问题

这次的修复列表里有一类很典型的改动:涉及面不大,但踩过的人都知道有多烦。

JetBrains IDE 终端闪烁。 IntelliJ/PyCharm/WebStorm 的 2026.1+ 用户打开 Claude Code 的时候,终端会持续闪烁。这次的修复是启用 synchronized output——确保完整帧渲染完成后再刷新到屏幕。如果你没用 JetBrains 你可能无感,但 JetBrains 用户应该能感受到屏幕不再抽风了。

Shift+ä 打不出来。 使用 Kitty 键盘协议的终端(WezTerm、Ghostty、kitty)上,输入 Shift+ä 想打 Ä,结果字符被吞了。不是日常操作,但对需要输入非 ASCII 大写字符的开发者(比如德语区的开发者),这就是一个「你以为键盘坏了」的 bug。修好了。

PowerShell 命令验证挂死。 Windows 上某个进程被强杀后,它的子进程可能还握着输出管道不放,导致 PowerShell 命令验证一直挂在 wait 上。这个修复给验证加了时间预算,超时就异常退出而不是无限等待。

孤儿进程 100% CPU。 开头提到的那件事——claude --bg-pty-host 的孤儿进程在 daemon 断开后不吃不喝但消耗整个 CPU 核。现在 daemon 下线时会连带清理后台进程。

远程 session 启动时卡死。 连接远程后端时,如果 worker 注册阶段遇到短暂网络抖动,session 会永久卡在启动状态。修了。

对话中的图片处理失败。 如果你在 session 里发了一张 agent 处理不了的图片(比如格式不兼容的截图),就会出现 "image could not be processed" 的循环错误,还额外浪费 token。现在处理不了的图片会直接跳过而不是反复报错。

JetBrains 和 Kitty 这两条修复放在一起看,传递了一个信号:Claude Code 团队已经开始系统性地处理终端兼容性问题了。 之前版本的核心投入在功能和 Provider 扩展上,终端兼容性属于「能用就行」。现在主力功能基本成型了,尾巴上的兼容性 bug 开始被逐一清理。这对用非主流终端的人是个好消息。

权限模型加固和配置体验

跨 session 消息传递的权限收紧。 之前别的 Claude session 通过 SendMessage 发来的消息拥有和当前 session 相同的用户权限。这意味着 session A 的 agent 可以说服 session B 的 agent 批准一个危险操作。现在 relay 消息不再继承用户权限——权限请求会被拒绝,auto 模式直接拦截。

MAX_THINKING_TOKENS 设为 --thinking disabled 现在能真正禁用 thinking——在那些默认开 thinking 的模型上(Claude API 系列)。第三方 Provider 不变。

Deny 规则支持通配符。 工具名位置可以写 "*",意味着一条 deny "*" 规则拒绝所有工具。同时也更严格了:allow 规则现在拒绝非 MCP 的 glob,deny 规则遇到不认识的工具名会启动时警告而不是悄悄忽略。

Managed settings 的环境变量引用修复。 allowedMcpServers/deniedMcpServers 如果用了 $&#123;VAR&#125; 引用环境变量的值,之前匹配时没展开变量所以全不生效。修了。

几点体验细节

claude update 开始下载前会报目标版本号了——而不是直接沉默去下。之前你敲了 claude update,如果网络慢,就盯着光标转几秒不知道它在干嘛。现在先看到 "Updating to v2.1.166..." 再等。

claude agents 里在列表输入 URL 可以直接筛选到包含该 URL 的对话——如果你在找一个部署脚本链接相关的 session,现在直接黏贴 URL 进去就行。

升级方式:

claude update

首次安装推荐 macOS:

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

或 Homebrew:

brew install --cask claude-code

完整更新日志:Claude Code v2.1.166 GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边的开发者朋友。

#ClaudeCode #AI编程 #Fallback #终端兼容 #开源 #Antropic

Claude Code v2.1.163 发布 —— 强制版本策略上线、终端粘滞彻底修了、20 项修复全数到位

· 阅读需 5 分钟

Claude Code v2.1.163 封面

安全管控:权限系统从「靠自觉」到「强制」的第一步

企业版用户最头疼的问题之一:管理员配了版本合规策略,但终端上没人真的遵守。

requiredMinimumVersionrequiredMaximumVersion 解决了这个问题——Claude Code 启动前先检查自己的版本,超出允许范围就直接报错退出,引导用户去安装批准版本。这不是限制开发者自由,是给大型团队一个「不需要写备忘邮件」的落地手段。和这次修的另一问题配套:org-managed 的 permission rules 在启动阶段获取策略后,现在能覆盖整个 session 而不是只覆盖前几条命令(之前的 bug 导致启动期间的前几条命令完全绕过了企业策略)。

另一个深层的安全修复:home 目录的 deny 规则(比如 Read(~/Desktop/**))之前可以用 $HOME 变量引用绕过。一个简单的 cat $HOME/Desktop/sensitive.txt 就能通过。修复方案不复杂——把变量展开后的路径也加入黑名单校验。

插件生态:终端的「/plugin list」终于来了

用 Claude Code 一段时间后,装了几个社区插件就记不住有哪些了。/plugin list--enabled/--disabled 过滤器可以查看已安装插件的状态——不是大改动,但填补了一个日常缺口。同批还有 /btw 的「c to copy」快捷键(直接把 raw markdown 复制到剪贴板,格式不乱)和内置命令描述的清晰度优化。这三项加在一起,说明团队在做「已经存在的功能更好用」。

Skill 语法也有一个细节:之前想在命令体里写 $数字 总是被展开,现在 \$ 转义可以写入字面量 $ 后跟数字。对写自定义 skill 的人来说少了一个 hack 的必要。

TUI 终端:三个最烦人的 bug 同一版修了

三个不易复现但碰上一次就想摔键盘的问题:

第一个,claude -p 管道模式——后台跑的一个命令永远不退出,claude -p 就卡在那里不出下一个结果。修复方案是在 stdin 关闭后约 5 秒自动杀掉后台 shell。不是完美方案(5 秒有一定随意性),但比「永远卡着」好得多。

第二个,粘贴操作后键盘永久不响应。终端 paste 操作结束标记被丢弃时,整个输入事件循环卡死。Vim 用户应该最懂这种沉默的恐惧——你刚粘贴完一段代码,去按 ESC,发现怎么按都没反应了。这是底层事件处理的边缘 case,不是简单的 UI 修复。

第三个,agent view 退出时终端对齐错位加多秒卡顿。主要影响在桌面端按 Esc 退出 agent 视图的用户。桌面端的 Stop 按钮也在修复范围内——底层进程已结束但没有清除 chip 的 bug。

Hook 与 Session:底层连接的几处补漏

Hook 系统改了最实用的两个问题。Stop/SubagentStop hook 现在可以返回 additionalContext(而不是抛错误标记失败),hook 运行时给 Claude 反馈的同时不会中断当前 turn。之前很多 hook 作者遇到「想告诉 Claude 发生了什么事,但只能通过抛异常来传达」的困境。

if: "Bash(...)" 条件的匹配更新了:之前只匹配顶级 bash 命令中的 $()$VAR,不检查 subshell 和反引号内的内容。现在会递归搜索。改代码量不大,但修复了一个 hook 配错了还不知道的隐蔽问题。

stdio MCP 服务器在 --resume 场景下不再丢失 CLAUDE_CODE_SESSION_ID——这个变量 hooks 和 Bash 已经拿到了,MCP 服务器是唯一缺口。小改,但保证了 session 级追踪的完整性。

跨平台:Windows 和 Bazel 下的修修补补

Windows 上 session-env 目录加了只读属性或放在 OneDrive 下时,会报「EEXIST: file already exists」错误直接崩溃。修复方式是为该场景添加属性检查和 fallback 路径。

Bazel 和 EDR 保护的 Go 工作流中,$TMPDIR 被统一覆盖为 /tmp/claude-&#123;uid&#125; 但这项修改本应只对 sandbox 生效。修复后只在 sandbox 模式下才做这个替换。

升级

# macOS/Linux(推荐)
brew install --cask claude-code

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

# 已安装用户升级
claude update

# Windows
irm https://claude.ai/install.ps1 | iex

完整更新日志:GitHub Release

📢 关注我,获取最新开源更新日志和开发者工具动态。如果觉得这篇文章有用,欢迎转发给身边用 Claude Code 的朋友。

#AI工具 #ClaudeCode #终端工具 #开发者工具 #版本更新