Anthropic 在 Claude Code 的 settings.json 里放了 125+ 个 key。官方文档大概只覆盖了其中 40 个。

缺失的设置里,有 14 个藏在 Claude.ai UI 里,要点三次才看得到。还有 4 个根本不出现在任何文档中。你只能靠读 GitHub issue、看工程师在 Discord 里不小心透露的信息,或者凌晨 1 点去 grep Claude Code 的二进制文件才能找到。

大多数 Claude 用户还在用 Anthropic 半年前的默认配置。账单慢慢变高,输出慢慢跑偏,然后他们开始怪模型。

下面是 18 个真正影响 Claude 运行方式的设置。

8 个在 Claude.ai 里。

7 个在 Claude Code 里。

3 个在 API 和 Console 里。

每一项都会讲:它在哪里、它做什么,以及简单的解决办法。

第一节:Claude(8 个设置)

1. Memory:作用域、排除项,以及“忘记此项”命令

位置: Settings -> Capabilities -> Memory

作用: Memory 在 2026 年 3 月面向 Free 和 Pro 用户推出。默认情况下,Claude 会保存它认为值得保存的一切。大多数人会漏掉三个控制项:按项目划分作用域、排除列表,以及聊天中即时触发的遗忘命令。

为什么重要: 默认 memory 会逐渐漂移。4-6 周后,它会塞满一次性的纠正(比如你只在某个文件里说过一次“我写 Python 更喜欢 tab”)、泄漏到无关聊天里的项目事实,以及过期的角色上下文。输出质量会下降,因为 Claude 开始为错误的“你”做优化。

解决办法:

  1. 打开 project-scoped memory:Settings -> Capabilities -> Memory -> Scope per Project。Project 内产生的 memories 留在这个 Project 里。光这一项就能修掉大多数漂移。
  2. 把不希望在无关聊天中出现的话题加进 exclusion list。例如:离婚、医疗、薪资数字、客户名称。只要不排除,这些内容就可能跨上下文持续存在。
  3. 在任何聊天里直接使用 inline forget command:forget what you remembered about [topic]

Claude 会用这句话去匹配你的 memory store,并确认它删除了哪些内容。不需要菜单,也不需要进设置页。

2. Extended Thinking:每个聊天单独控制的开关

位置: chat input -> model selector dropdown -> Extended Thinking: Off / Light / Full

作用: Extended Thinking 会在回答前增加一轮 <thinking> 推理过程。Anthropic 对 Opus 默认开启。这个三档开关是 per-chat 的,会覆盖全局设置。

为什么重要: Extended Thinking 很适合数学、debug、多步规划。但对摘要、翻译、格式整理、改写和快速查询来说就是浪费。它会给这些任务增加 3-12 秒延迟,并多消耗 20-40% token,换来的却是同样的答案。

解决办法: 默认设为 Light(只在模型判断有用时使用 thinking),遇到真正困难的工作再显式切到 Full。我给别人演示这项设置后,大多数人在第一周就能把 Opus token 花费降 18-25%。

3. Custom Styles:它不是“语气”,而是输出契约

位置: chat input -> style selector -> Create New Style

作用: Styles 最开始只是语气切换(“Formal / Concise / Explanatory”)。但 Custom Styles 实际上是输出契约。你可以粘贴一份 200-1500 词的指令文件。该 style 下的每次回复都会在生成前应用它。

为什么重要: 大多数人只用 Styles 来“写短一点”。真正的用法,是不必反复粘贴提示词,也能把结构规则稳定应用到每次回复里。比如引用格式、禁用词、必需章节、代码块语言、长度上限,以及是否询问后续问题。

解决办法: 为每个 workflow 创建一个 Style。我的例子:

# Style: Draft for X

输出契约:
- 开头使用一个具体数字或命名实体。不要用 “I've been thinking...”
- 句子尽量控制在 18 个词以内。
- 除非节奏确实需要,否则不要用 em dash。
- 不要使用 “delve”、“leverage”、“robust”、“unlock”、“game-changing”。
- 如果列出 3 项以上内容,用短横线列表,不要用编号列表。
- 结尾用陈述句,不要用问题。

如果草稿超过 280 个字符,而用户没有要求写 thread,
先说明这一点,再给出答案。

轮流使用三套这样的 style(Draft for X、Code review、Summarize PDF),就能替代我 80% 的 saved prompts。

4. Projects:大多数人都会留空的 “instructions” 字段

位置: any Project -> top-right ⋯ -> Edit project instructions

作用: Projects 是持久化工作区。instructions 字段相当于 system prompt,会注入该 Project 的每次聊天。Anthropic 介绍 Projects 时重点说的是 knowledge upload,这也是多数人记住的功能。但 instructions 字段就在同一个页面,而我见过的真实 Projects 里,70% 都是空的。

为什么重要: 没有它时,Project 里的每个新聊天都会冷启动。有了它,你就不用反复重建上下文。(“这是一个 Polymarket 研究 workflow。默认保持怀疑。始终展示概率计算。绝不推荐交易,只展示 EV 框架。”)

解决办法: 把它当作 Claude 里的 CLAUDE.md。控制在 400 词以内。写清角色、默认怀疑程度、格式规则,以及永远不要做什么。每个月重读一次并修剪。

5. Search past chats(Pro+)以及真正有效的搜索方式

位置: Settings → Profile → Search past chats(需要启用)

作用: 允许 Claude 在相关时搜索你的对话历史。仅 Pro+ 可用。

为什么重要: 即使是 Pro,新账号默认也是关闭的。打开后还有个技巧:它做的是关键词匹配,不是语义搜索。你问 “What did we discuss about Chinese robots yesterday” 可能什么都找不到,除非过去的聊天里真的出现过 “Chinese robots”,或者同时出现过 “China” 和 “robots”。

解决办法: 打开它。然后学会正确的 query 形态:用内容名词,不要用元描述词。“Polymarket Iran” 有效。“That thing we talked about last week” 无效。

6. Web search:每个对话的开关,以及 citation 行为

位置: chat input -> + -> Web search: On / Off

作用: web search toggle 是 per-conversation 的,但它的行为还会受另一个不太知名的设置影响:Settings -> Capabilities -> Web search citations: Inline / Footnotes / Hidden。

为什么重要: 默认是 Inline。Inline citations 会破坏复制粘贴体验。你把 Claude 的答案复制到别处时,会把一堆没有上下文的引用标记也复制过去。Footnotes 模式会让正文保持干净,把来源放到末尾。

解决办法: 如果你会把 Claude 的 web-search 答案复制到其他文档、邮件或消息里,就切到 Footnotes。只有在完全在 Claude 里阅读时,才保留 Inline。

7. Connectors:Cowork 里的 “trust this folder” 陷阱

位置: Settings -> Connectors -> Cowork -> Trusted folders

作用: Cowork(2026 年 4 月 GA)让 Claude 可以访问你机器上的某个文件夹。默认情况下,Anthropic 会在每次 session 前询问是否信任该文件夹。trusted-folders list 是绕过这个询问的白名单。

为什么重要: 一个文件夹一旦进入 trusted,Claude 就会在每个 Cowork session 里不再提示地读取它。如果你 3 月测试时加过一个文件夹,后来忘了删,它可能从那时起就在每次 session 中被静默读取。

解决办法: 打开 trusted folders。移除所有不属于当前活跃项目的文件夹。这个列表增长得比你想象中快。

8. Incognito mode 实际跳过了什么

位置: sidebar -> New incognito chat(或 Cmd/Ctrl + Shift + N)

作用: Incognito chat 不会保存,不会写入 memory,不可搜索,也不会用于 model improvements。关闭后聊天会被删除。

为什么重要: 很多人以为 Incognito 只是把聊天从侧边栏隐藏起来。它实际跳过了四套系统:memory 写入、chat history、past-chats search index,以及训练数据 opt-in(如果你打开了)。

解决办法: 对任何敏感数据有意识地使用它:薪资、医疗、家庭、法律草稿、客户名称。三个按键,不需要纠结。

第二节:Claude Code(7 个设置)

这些设置在 ~/.claude/settings.json(用户级)或 .claude/settings.json(项目级)里。后者优先级更高。

v2.1.105 的二进制文件里总共有 125+ 个 key。下面 7 个是真正能影响结果的。

9. enabledPlugins:禁用,不要卸载

位置: \~/.claude/settings.json -> enabledPlugins

作用: 设置 session 启动时加载哪些已安装插件。Plugin marketplace 让安装变得容易,但卸载更麻烦,而且多数时候没必要。只要把值设成 false 就行。

为什么重要: 每个 active plugin 都会把它的 hooks、SKILL.md 内容和 tool schemas 加载进你的 context budget。三个你已经忘掉的插件,可能在你输入任何内容之前就先吃掉 3-8K token。

我刚开始做这次审计时启用了 14 个插件。现在只保留 4 个 active。

解决办法:

{
  "enabledPlugins": {
    "formatter@acme-tools": true,
    "deployer@acme-tools": false,
    "analyzer@security-plugins": false,
    "old-experiment@personal": false
  }
}

false 会保留插件安装状态,但不加载。真正需要时,再用 /plugin enable name@marketplace 在当前 session 中重新启用。

10. permissions.deny:你需要知道的 bug

位置: \~/.claude/settings.json -> permissions.deny

作用: 阻止 Claude 运行特定工具或访问特定文件。设计意图是:防止 rm -rf,防止读取 .env,防止写到项目外。

为什么重要: 这里有一个已知 bug。deny rules 有时不会拦截。已经有多个 GitHub issue。被引用最多的一个(anthropics/claude-code#11544)记录了 hooks 虽然配置合法却没有加载的问题;类似模式也影响 deny enforcement。规则明明在 config 里,但 debug log 显示 “0 matchers found”。Claude 还是读了文件。

解决办法:

{
  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(**/*secret*)",
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  }
}

在文件系统层面再加一层防护。chmod 600 .env,这样即使 Claude 尝试读取,OS 也会拒绝。不要只相信 deny list。进 Claude Code 后用 /permissions 验证。如果规则没出现,重启 session。

11. hooks.SessionStart:让我减少 30% context bloat 的 4 行配置

位置: \~/.claude/settings.json -> hooks.SessionStart

作用: SessionStart 会在你从某个目录打开 Claude Code 时触发。你可以运行任何东西:打印 env 信息、检查 git 状态、注入上下文文件、预热缓存。

为什么重要: 大多数人注入了太多东西。CLAUDE.md 会膨胀到 5K token,因为每条项目规则都被塞进去了。SessionStart 让你只加载当前分支或目录真正相关的规则。

解决办法:

{
  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "cat .claude/context-$(git branch --show-current).md 2>/dev/null || true"
          }
        ]
      }
    ]
  }
}

你的 main 分支加载 context-main.md。你的 feat/auth 分支加载 context-feat-auth.md。每个文件都保持很小,context budget 不再持续失血。

12. disableAllHooks:紧急开关

位置: \~/.claude/settings.json -> disableAllHooks: true

作用: 用一个 toggle 禁用所有 hook。2026 年 3 月更新中发货。多数人不知道它存在。

为什么重要: 当 Claude Code 开始表现奇怪时(phantom commands 在跑、session 启动时卡住、出现神秘文件写入),80% 情况是 hook 误触发。逐个禁用 hook 太慢。这个开关可以一次全部关掉,方便你隔离问题。

解决办法: 平时保持 false。出问题时改成 true,重启,看问题是否消失。如果消失,就逐个重新启用 hook。如果没有,bug 在别处。

13. model 的项目级 override

位置: .claude/settings.json(项目根目录)-> model

作用: 设置该项目的默认模型。会覆盖全局设置。

为什么重要: 很多人全局设置 Opus,因为他们想在困难工作上用它。然后打开一个主要是 markdown 编辑或 shell scripts 的项目,结果为 Haiku 用 1/20 成本就能完成的任务支付 Opus 价格。

解决办法:

广告媒流(小程序)-公众号
// In your /docs project:
{ "model": "claude-haiku-4-5-20251001" }

// In your /infra project:
{ "model": "claude-sonnet-4-6" }

// In your /core-engine project:
{ "model": "claude-opus-4-7" }

Project-level overrides 优先。打开项目时,自动得到合适的模型,然后继续工作。

14. mcpServers 的 enabled flag

位置: \~/.claude/settings.json -> mcpServers

作用: MCP servers 把 Claude 连接到外部工具。每个已连接的 server 都会把完整 tool schema 加载进 context。每个 server 大概 800 到 6,000 token。

为什么重要: 很多人连接 MCP servers 只是为了测试,后来从不主动断开。三个月后你会有 12 个 connected,其中真正常用的只有 3 个。那 9 个不用的 server 会在每次 session 启动时消耗大约 25-40K token 的 context schema。

解决办法: 用 enabled flag 保留连接配置,但不加载。

{
  "mcpServers": {
    "github":   { "command": "...", "enabled": true },
    "postgres": { "command": "...", "enabled": true },
    "slack":    { "command": "...", "enabled": false },
    "linear":   { "command": "...", "enabled": false }
  }
}

真正需要时,再按 session 切到 true。我大多数日子只保持 2-3 个 active。做规划的日子,可能开到 6 个。

15. cleanupPeriodDays:没人提起的缓存

位置: \~/.claude/settings.json -> cleanupPeriodDays

作用: 设置 Claude Code 保留 transcripts、debug logs 和中间 session 数据的天数。默认是 30。

为什么重要: Dreaming 和 past-chat search 都依赖这些 transcripts。默认 30 天窗口下,Dreaming 只能从一个月的工作里学习。六个月能给它 6 倍信号。磁盘成本大概 200MB。

解决办法:

{ "cleanupPeriodDays": 180 }

保留 180 天 session history,供 Dreaming、memory consolidation 使用,也方便你自己 grep:“我三月份到底跟 Claude 说过那个 auth bug 的什么来着?”

Claude Code artifact:一份应用了全部 7 个设置的 settings.json

把这段复制到 ~/.claude/settings.json。根据你的实际情况调整路径和 plugin 名称。重启 Claude Code。重新运行 /permissions 和 /hooks 验证配置已经加载。

{
  "model": "claude-sonnet-4-6",

  "enabledPlugins": {
    "formatter@acme-tools": true,
    "old-experiment@personal": false
  },

  "permissions": {
    "deny": [
      "Read(.env)",
      "Read(.env.*)",
      "Read(**/*secret*)",
      "Bash(rm -rf:*)",
      "Bash(sudo:*)"
    ]
  },

  "hooks": {
    "SessionStart": [
      {
        "matcher": "startup",
        "hooks": [
          {
            "type": "command",
            "command": "cat .claude/context-$(git branch --show-current).md 2>/dev/null || true"
          }
        ]
      }
    ]
  },

  "disableAllHooks": false,

  "mcpServers": {
    "github":    { "command": "npx", "args": ["@modelcontextprotocol/server-github"], "enabled": true },
    "postgres":  { "command": "npx", "args": ["@modelcontextprotocol/server-postgres"], "enabled": false },
    "slack":     { "command": "npx", "args": ["@modelcontextprotocol/server-slack"], "enabled": false }
  },

  "cleanupPeriodDays": 180
}

Project-level overrides 放在项目根目录的 .claude/settings.json。最值得在那里设置的是:

// .claude/settings.json (in a docs project)
{ "model": "claude-haiku-4-5-20251001" }

第三节:API 和 Console(3 个设置)

这些设置存在于代码或 Anthropic Console 中。它们是本文里对成本影响最大的设置。每一项都可能让你的账单变化 30-90%。

16. cache_control breakpoints:该放在哪里

位置: API request body,任何 content block 上的 cache_control 字段

作用: 标记 prompt 的某个前缀可缓存。后续请求如果有相同前缀,大约只按 input rate 的 10% 收费,而不是全价。

为什么重要: 这是 API 里最大的成本杠杆。很多人知道它存在,但多数人把 breakpoint 放错,结果只拿到部分节省,而不是完整节省。在我自己的设置里,修正 breakpoint 后,月账单从 340 美元降到了 87 美元。

解决办法: breakpoint 应该放在 静态内容和动态内容的边界。breakpoint 前的内容会被缓存,之后的内容会重新计算。

# WRONG — breakpoint after user message, nothing reusable cached
messages = [
    {"role": "system", "content": SYSTEM_PROMPT},
    {"role": "user", "content": user_question,
     "cache_control": {"type": "ephemeral"}}
]

# RIGHT — breakpoint after stable system prompt, full cache hit on next call
messages = [
    {"role": "system", "content": SYSTEM_PROMPT,
     "cache_control": {"type": "ephemeral"}},
    {"role": "user", "content": user_question}
]

可用 TTL 有两个:5-minute ephemeral(默认)和 1-hour。对于 session 间不会变化的 system prompts,用 1-hour:

{"cache_control": {"type": "ephemeral", "ttl": "1h"}}

Cache write 比基础 input 贵 25%。Cache read 是基础 input 的 10%。分界点是:同一个缓存前缀只要在 TTL 窗口内被读取 2 次以上,就能回本。

17. inference_geo 与 data residency tax

位置: API request -> inference_geo parameter

作用: 把 inference 路由到特定地理区域。比如 US-only residency、EU-only 等。

为什么重要:US-only data residency 会让 Opus 4.7 及以上模型多 10% premium。 这不在标准 pricing card 上。你会在 invoice 里看到它。

解决办法: 如果你的合规制度并不真的要求 regional residency,就不要设置 inference_geo。很多 app 会默认设置它“以防万一”,因为法务说过“确保数据留在美国”。确认这个要求到底是合同义务,还是只是愿望。如果只是愿望,省略这个参数,每次 Opus 调用省 10%。

如果确实需要它,要把这 10% 算进模型选择里。Sonnet 的 3 美元基础价格会变成等效 3.30 美元,这会改变 Opus-vs-Sonnet 的 break-even。

18. Workspace-level rate limit:防止凌晨 3 点故障的那个设置

位置: Console -> Settings -> Workspaces -> [your workspace] -> Per-feature rate limits

作用: 为每个 workspace、每个 feature 设置 rate limit,与账号级别 limits 分开。

为什么重要: account-level limit 保护你不至于花到破产。workspace-level limit 保护你的交互式产品,不会在某个 runaway batch job 吃光整个 ITPM allowance 时一起挂掉。你发布了新 feature,它有 bug,开始循环,吃掉所有额度,面向客户的 chat 开始返回 429。Workspace limits 可以避免一个 feature 饿死另一个。

解决办法: 每个 surface 建一个 workspace(interactive chat、batch processing、internal tools、experimental)。把每个 workspace 的 rate limit 设为账号 tier 的 60-70%。保留 30% 给需要 burst 的 workspace。

本文提到的第四个未记录设置是:每个 workspace 内部还有一个 feature-level cap,只有点进具体 feature card 才能看到,不在 workspace overview 上。默认值是 unlimited。

如果一个 workspace 里有三个 features,其中一个可以饿死另外两个,而 workspace-level limit 并不会拦住它。任何会做 batch work 的东西,都要设置 per-feature caps。

第四节:18 点检查清单

走一遍。20 分钟。12 个月里你都不碰的东西,大概率永远也不会碰。

## Claude.ai
- [ ] #1  Memory: project-scoped on, exclusion list populated
- [ ] #2  Extended Thinking: default = Light
- [ ] #3  Custom Styles: at least one workflow style created
- [ ] #4  Project Instructions: filled for every active Project
- [ ] #5  Past-chats search: on (Pro+)
- [ ] #6  Web search citations: Footnotes mode
- [ ] #7  Cowork trusted folders: reviewed, pruned
- [ ] #8  Incognito: keyboard shortcut memorized

## Claude Code
- [ ] #9  enabledPlugins: only active ones = true
- [ ] #10 permissions.deny: env files + sudo + rm -rf blocked, OS-level backup in place
- [ ] #11 hooks.SessionStart: branch-aware context loader
- [ ] #12 disableAllHooks: false (know where the switch is)
- [ ] #13 model: per-project override set for docs/infra/core projects
- [ ] #14 mcpServers: enabled flag used, not full deletion
- [ ] #15 cleanupPeriodDays: 180

## API / Console
- [ ] #16 cache_control: breakpoint after stable system prompt, 1h TTL for daily-stable prefixes
- [ ] #17 inference_geo: only set if compliance actually requires it
- [ ] #18 Workspace rate limits: per-workspace AND per-feature caps set

第五节:审计脚本(每周运行一次)

把它放到 ~/bin/claude-audit.sh。每周运行。它会标记 Claude Code 这半张清单,以及 API 侧的 cache_control 检查。

#!/usr/bin/env bash
# claude-audit.sh — flags settings drift across the 7 Claude Code + 1 API checks

CLAUDE_DIR="$HOME/.claude"
SETTINGS="$CLAUDE_DIR/settings.json"

echo "=== Plugins enabled ==="
jq '.enabledPlugins // {} | to_entries | map(select(.value==true)) | length' "$SETTINGS" 2>/dev/null
echo "Target: 3-5 active. Re-enable per session for the rest."

echo
echo "=== MCP servers enabled ==="
jq '.mcpServers // {} | to_entries | map(select(.value.enabled==true)) | length' "$SETTINGS" 2>/dev/null
echo "Target: 3 always-on. Per-session enable rest."

echo
echo "=== permissions.deny rules present ==="
jq '.permissions.deny // [] | length' "$SETTINGS" 2>/dev/null
echo "Target: >=5 rules. .env / sudo / rm -rf at minimum."

echo
echo "=== SessionStart hook configured ==="
jq '.hooks.SessionStart // [] | length' "$SETTINGS" 2>/dev/null
echo "Target: >=1 entry."

echo
echo "=== cleanupPeriodDays ==="
jq '.cleanupPeriodDays // 30' "$SETTINGS" 2>/dev/null
echo "Target: 180."

echo
echo "=== Per-project model overrides ==="
find . -maxdepth 3 -name "settings.json" -path "*/.claude/*" 2>/dev/null | while read f; do
  model=$(jq -r '.model // "—"' "$f")
  echo "  $f → $model"
done
echo "Target: docs → haiku, infra → sonnet, core → opus."

echo
echo "=== API cache_control check (set API_KEY to run) ==="
if [ -n "$ANTHROPIC_API_KEY" ]; then
  echo "Manual check: every system_prompt over 1K tokens should have cache_control with 1h TTL."
else
  echo "Skipped — set ANTHROPIC_API_KEY to enable."
fi

保存,chmod +x ~/bin/claude-audit.sh,每周运行,直到每一行都进入目标区间。

第六节:未纳入清单的内容

发布前我删掉了 4 个候选项。值得点名,这样你就不用浪费时间去追它们。

Adaptive Reasoning toggle。 Anthropic 已经默认开启它。覆盖设置在 Settings → Capabilities → Reasoning mode。30 天对比下来,我没找到哪个 workflow 在手动覆盖它后结果有明显变化。相信默认值,继续往前。

Skill auto-activation。 你可以切换 Claude 是否根据相关性检测自动加载 skills,或要求显式调用。我原本以为这会很重要,结果并没有。Auto-activation 配合 progressive disclosure(只在需要前加载 SKILL.md metadata)已经调得不错。保持开启。

Dispatch mobile-to-desktop control。 这是有用功能,但不是设置审计项。你的 workflow 要么适合它,要么不适合。没有什么隐藏 toggle 会改变结果。

Per-workspace max_tokens ceiling。 你可以强制每次回答在 800、2000 或 4000 token 截断。它确实能给话多的 workflow 省钱,但会破坏需要长输出的代码生成。值得按 workspace 测试,不值得作为默认推荐。

结束

今晚走一遍检查清单。大多数人会修掉 6-8 项。少数人会修掉 14 项以上。你的 billing dashboard 和 usage graph 会告诉你,这 20 分钟到底值不值。

今晚收藏并走一遍检查清单。如果它帮你省掉一个月“Claude 变笨了”的挫败感,转发出去。