Claude Code 两个你可能没用过的环境变量:EFFORT_LEVEL 和 ADDITIONAL_DIRECTORIES_CLAUDE_MD

用 Claude Code 一段时间后,你会发现它的行为有时"时好时坏":有时写出的代码令人惊叹,有时却犯一些低级错误。实际上这背后有一个很多人没注意到的控制机制------推理档位(effort level)

与此同时,如果你同时维护多个项目,可能也遇到过这个问题:每个项目都要写一份差不多的 CLAUDE.md,重复配置团队规范、编码风格......有没有办法共享这些规则?

这篇文章介绍两个被严重低估的 Claude Code 环境变量。

第一个:CLAUDE_CODE_EFFORT_LEVEL

推理档位是什么

Claude Code 在每次响应时,会分配一定的"推理预算"------思考多深、考虑多少方案、验证多少边界情况。这个预算就是 effort level。

支持的档位

档位 说明 适用场景
low 最小推理预算,响应最快 简单重命名、格式化、单行修改
medium 中等预算,均衡成本与质量 日常开发任务、写函数、改 bug
high 大预算,追踪复杂逻辑 复杂重构、多文件改动、难以定位的 bug
xhigh 超高预算(Opus 4.7 独有) 长时间 agent 任务、复杂架构设计
max 无上限,全力推理 最复杂的任务,慎用

注意:xhigh 是 2026 年随 Opus 4.7 引入的新档位。Opus 4.7 的默认 effort level 已经是 xhigh ,无需手动设置。如果你用的是 Opus 4.6 或 Sonnet 4.6,设置 xhigh 会自动降级到 high

为什么需要手动设置

2026 年 3 月,Anthropic 把 Pro/Max 订阅用户的默认档位从 high 降到了 medium(针对 Opus 4.6/Sonnet 4.6)。

如果你最近觉得 Claude Code 质量下滑,很可能不是模型变差了,而是推理预算被调低。这个变化没有明显的 changelog,很多用户完全不知道。

更复杂的是,在 medium 档位下,adaptive thinking 有时会在某些轮次分配零推理 token,导致模型开始"编造"------捏造不存在的 commit SHA、引用不存在的包。社区验证的临时修复方案:

bash 复制代码
export CLAUDE_CODE_EFFORT_LEVEL=high
# 如果问题严重,可以加上:
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1

四种设置方式

方式一:环境变量(推荐,跨会话持久化)

bash 复制代码
# 加到 ~/.zshrc 或 ~/.bashrc
export CLAUDE_CODE_EFFORT_LEVEL=high

# 单次覆盖
CLAUDE_CODE_EFFORT_LEVEL=low claude --model sonnet

方式二:settings.json(项目级配置)

json 复制代码
{
  "effortLevel": "high"
}

方式三:启动参数(单次会话)

bash 复制代码
claude --effort high

方式四:会话内动态切换

bash 复制代码
/effort high
/effort low
/effort auto   # 重置为默认值

优先级:环境变量 > 会话配置(/effort)> 模型默认值

一个重要细节:max 档位的特殊性

max 档位(全力推理,无 token 上限)只有通过环境变量 设置才能跨会话持久化。用 /effort max--effort max 只对当前会话有效,下次启动就恢复了。

但 Anthropic 官方建议:先用 eval 验证 max 是否比 xhigh 有明显效果提升,再决定是否采用。max 存在"过度思考"的风险------推理预算越大,模型越可能钻牛角尖,反而输出更差的结果。

与 think 触发词的区别

很多人以为在 prompt 里写关键词和设置 effort level 是一回事,其实完全不同:

  • /effort / CLAUDE_CODE_EFFORT_LEVEL :通过 API 参数控制推理档位,是系统级的持久设置
  • think / think hard / think harder :在 prompt 中插入的文字触发词,是上下文内的一次性指令,不改变发送给 API 的 effort level

触发词对应的大概 token 预算(供参考,以官方最新文档为准):

  • think:~4,000 tokens
  • think hard:~10,000 tokens
  • think harder:~31,999 tokens(从 Claude 4 起,思考模式已默认启用,触发词主要起调节预算的作用)

两者可以叠加使用,但不能互相替代。

实际推荐配置

bash 复制代码
# ~/.zshrc
# 日常编码任务,均衡成本和质量
export CLAUDE_CODE_EFFORT_LEVEL=high

# 如果用 Opus 4.7 做重型 agent 任务,改为:
# export CLAUDE_CODE_EFFORT_LEVEL=xhigh

# 子 agent 用更便宜的模型(节省成本)
export CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-6

第二个:CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD

问题场景

假设你在维护一个 monorepo,结构如下:

objectivec 复制代码
my-company/
├── CLAUDE.md          ← 团队规范(编码风格、安全要求、API 接口约定)
├── packages/
│   ├── frontend/
│   │   └── CLAUDE.md  ← 前端特定规则(React 组件规范、CSS 约定)
│   └── backend/
│       └── CLAUDE.md  ← 后端特定规则(数据库约定、接口设计)

当你在 packages/frontend 目录启动 Claude Code 时,它只会读取 packages/frontend/CLAUDE.md不会自动读取根目录的团队规范。

要让 Claude 同时了解根目录规范,需要用 --add-dir ../..

bash 复制代码
cd packages/frontend
claude --add-dir ../..

但这里有个问题:--add-dir 默认只给 Claude 访问目录的权限,不会加载目标目录的 CLAUDE.md。这是出于向后兼容的考虑,避免意外加载不相关的规则文件。

解决方案:CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD

设置这个环境变量后,--add-dir 指向的目录也会加载其中的 CLAUDE.md 系列文件:

bash 复制代码
export CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1

# 现在启动时,根目录的 CLAUDE.md 也会被加载
cd packages/frontend
claude --add-dir ../..

加载范围包括目标目录中的:

  • CLAUDE.md
  • .claude/CLAUDE.md
  • .claude/rules/*.md
  • CLAUDE.local.md

实际使用场景

场景一:Monorepo 多包开发

在子包目录启动 Claude,同时加载根目录团队规范:

json 复制代码
{
  "env": {
    "CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD": "1"
  },
  "additionalDirectories": ["../.."]
}

根目录 CLAUDE.md(团队规范)和子目录 CLAUDE.md(模块规则)会叠加生效,Claude 同时了解两套规则。

场景二:微服务跨仓库开发

前端需要了解后端 API 规范,后端 CLAUDE.md 里写了接口格式、错误码约定:

bash 复制代码
alias claude-fs="CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1 claude --add-dir ../backend"

场景三:公司级共享规范

维护一个独立的规范目录,所有项目都引用:

javascript 复制代码
~/company-rules/
└── CLAUDE.md   ← 安全规范、合规要求、技术栈约定
bash 复制代码
# ~/.zshrc
export CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD=1
# 在每个项目的 settings.json 中添加
# "additionalDirectories": ["~/company-rules"]

搭配 claudeMdExcludes 精细控制

有时 --add-dir 会引入你不想要的规则(比如某个团队的特定约定和你的项目冲突),可以用 claudeMdExcludes 过滤:

json 复制代码
{
  "claudeMdExcludes": [
    "**/other-team/.claude/rules/**",
    "**/irrelevant-package/CLAUDE.md"
  ]
}

附:其他值得了解的环境变量

研究这两个变量的过程中,发现了几个同样有用的配置:

bash 复制代码
# 关闭 adaptive thinking(中等档位下出现幻觉时的临时修复)
export CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1

# 触发自动压缩的上下文阈值(默认约 83%,只能降低不能升高)
export CLAUDE_AUTOCOMPACT_PCT_OVERRIDE=70

# 子 agent 使用更便宜的模型
export CLAUDE_CODE_SUBAGENT_MODEL=claude-sonnet-4-6

# 日志审计:所有 bash 命令都通过包装脚本执行
export CLAUDE_CODE_SHELL_PREFIX=/path/to/audit.sh

# 多账户场景:指定不同的配置目录
export CLAUDE_CONFIG_DIR=~/.claude-work

小结

这两个变量解决的问题不同,但都值得根据实际情况配置:

  • CLAUDE_CODE_EFFORT_LEVEL :如果你发现 Claude Code 质量不稳定,先检查这个。默认 medium 档位在某些情况下会导致幻觉,设置为 high 是大多数开发者的合理选择。
  • CLAUDE_CODE_ADDITIONAL_DIRECTORIES_CLAUDE_MD:如果你在做 monorepo 开发或需要跨项目共享规范,这个变量可以避免大量重复配置。

两个变量都写入 ~/.zshrc 就能永久生效,成本几乎为零。


相关阅读


原文发布于 陈广亮的技术博客,欢迎关注获取更多前端与 AI 开发内容。

相关推荐
GISer_Jing2 小时前
微软AI战略全景:从基础设施到智能体生态
前端·人工智能·microsoft
用户5191495848452 小时前
Automad 2.0.0-alpha.4 存储型跨站脚本(XSS)漏洞利用
人工智能·aigc
QYR-分析2 小时前
重型自动驾驶地面车辆行业洞察:分类、格局与市场机遇
人工智能·机器学习·自动驾驶
惊鸿一博2 小时前
自动驾驶与大模型相关VLA4AD
人工智能·机器学习·自动驾驶
xixixi777772 小时前
Gartner 2026核心趋势:前置式主动安全(PCS)成为安全战略新范式,量子安全+国密算法构筑政企纵深防御底座
网络·人工智能·安全·web安全·ai·量子计算
Rubin智造社2 小时前
04月20日AI每日参考:华为AI眼镜今日发布,Meta裁员8000人押注AI文件格式
人工智能·claude code·ai硬件·华为ai眼镜·meta裁员·cerebras ipo·字节跳动seedance
带娃的IT创业者2 小时前
深度解析 Qwen3.6-35B-A3B:重塑 AI 编程代理的开源新标杆
人工智能·python·ai·开源·大模型·qwen·编程代理
亦暖筑序2 小时前
让 AI 客服真能用的 3 个模块:情绪感知 + 意图识别 + Agent 工具链
java·人工智能·后端
实在智能RPA2 小时前
内容运营自动化AI工具选型指南:2026企业级智能内容工程实践全解析
人工智能·ai·自动化·媒体