Setup · 配置调优 · 持续更新

Claude Code 新手配置指南:让它少问、多做

Claude Code 装完就能用,但默认配置偏保守——每个动作都来问你一遍。模型已经足够聪明,值得把缰绳放松一点。这页按「你想要什么」组织:每一项给确切的字段名和写法,全部在本机实测核对过。

速查:你想要什么

你想要改哪里怎么改
信任的命令别再问permissions.allowsettings.json 加白名单
改文件不用逐个确认acceptEdits 模式会话内 Shift+Tab
完全不问(隔离环境)bypassPermissions风险边界见下文
它记住我的规矩CLAUDE.md全局 + 项目两层
固定用某个模型model 设置/model 或 settings
接着昨天的会话干会话恢复claude -c
脚本里调用它非交互模式claude -p

第一件事:让它少问

「别问东问西,直接做」是配置 Claude Code 的第一诉求。正规做法有三层,按放权程度递增——推荐从第一层开始,大多数人到第二层就够了。

第 1 层 · 白名单:信任的命令不再询问#

做法

在 settings.json 的 permissions.allow 里列出你信任的操作,命中的直接执行、不弹确认:

~/.claude/settings.json
{
  "permissions": {
    "allow": [
      "Bash(npm run *)",
      "Bash(git status)",
      "Bash(git diff *)",
      "Read(*)"
    ]
  }
}

Bash(npm run *)* 是前缀通配:npm run buildnpm run test -- --watch 都命中。只放你确认无害的前缀——比如放行 git diff * 而不是整个 git *(后者连 git push --force 一起放了)。

为什么先用它
精确、可审计、可回收。你放行的每一条都写在文件里,哪天不放心删掉那行就收回来了。

第 2 层 · acceptEdits:文件编辑自动接受#

做法

会话内按 Shift+Tab 循环切换权限模式,切到 acceptEdits——文件的新建和修改不再逐个确认,其余操作(如 Bash)仍走正常询问。想长期生效就写进 settings:

.claude/settings.json
{
  "permissions": { "defaultMode": "acceptEdits" }
}
适合谁
代码全在 git 里的人。改错了 git diff 一眼可见、随时可回滚——版本控制就是你的安全网。另有 plan 模式反向收紧:只读分析、先出计划不动手,适合让它先把方案想清楚。

第 3 层 · bypassPermissions:完全不问#

做法
启动时 claude --dangerously-skip-permissions,或 settings 里 "defaultMode": "bypassPermissions"。所有权限检查跳过,任何命令直接执行。
风险边界
这个模式的名字里带着 dangerously,是认真的。它对删文件、改系统、发网络请求一视同仁地放行。官方定位是给隔离环境用的:Docker 容器、专用虚拟机、CI 沙箱——坏了就重建的环境。在存着你真实数据的主力机器上裸跑,等于把 shell 的钥匙整串交出去。想在团队里禁用它,settings 里有 disableBypassPermissionsMode 开关。

让它记住你的规矩:CLAUDE.md

少问的另一半是少教——每次会话都重复交代口径,比确认弹窗更烦。CLAUDE.md 是每次会话自动读取的指示文件,两层:

位置生效范围放什么
~/.claude/CLAUDE.md你的所有项目语言偏好、协作风格(如「结论先行、别铺垫」)
项目根 CLAUDE.md当前仓库(可入 git,全队共享)构建/测试命令、代码规范、目录禁区

写法上最重要的一条:写成简短的规则列表,不要写成小说。它每次会话都占上下文,越长噪音越多。三类内容回报最高:固定口径(「注释用中文」)、常用命令(「测试跑 npm test,别用 yarn」)、禁区(「migrations/ 目录只读」)。

固定模型

方式写法适合
会话内切换/model 命令,从列表选临时换着用
固定默认settings.json 加 "model": "..."长期偏好
环境变量ANTHROPIC_MODEL(优先级高于 settings)脚本/CI 里临时覆盖
单次会话claude --model <名称>一次性指定

模型名手输容易错版本号——在 /model 列表里选,或从 模型列表页照抄准确 id。

会话:恢复、压缩、清空

命令作用
claude -c直接继续最近一次会话(最常用,别每次从零开始)
claude --resume / 会话内 /resume从历史会话列表挑一个恢复
/compact把长会话的历史压缩掉,腾出上下文继续干(接近上限时也会自动触发)
/clear彻底清空,开新会话——换任务时用它比继续旧会话更省更准
Esc打断当前生成——它跑偏了不用等它说完

脚本里调用:非交互模式

terminal
# 执行一条指令,输出结果后退出
claude -p "总结这个目录里的 TODO"

# 结构化输出,给下游程序消费
claude -p "..." --output-format json

--output-format 支持 text / json / stream-json(只在 -p 模式下生效)。CI、定时任务、批处理管道都走这个。

settings.json 有三个,改哪个?

三层从高到低覆盖,权限规则多层叠加合并,单值字段(如 model)以高层为准

优先级文件定位
.claude/settings.local.json本机个人特例(不入 git)
.claude/settings.json项目团队共享(入 git)
~/.claude/settings.json你的全局默认

经验法则:个人偏好放用户级,团队规范放项目级,「只有我这台机器需要」的放 local。

进阶三件套(一句话版)

  • MCP 服务器claude mcp add -s user|project|local ... 接外部工具(数据库、浏览器、内部系统),-s 决定配置存哪层。
  • Hooks:settings.json 的 "hooks" 块,在工具调用前后挂自动化(如 PostToolUse 里跑 lint)——「每次改完文件自动格式化」这类需求归它。
  • 状态栏:settings.json 的 statusLine 可自定义底部状态栏显示的内容。
本页核实口径:全部字段与 flag 于 2026-08-28 对照本机 claude --help 与官方文档核实;配置项随版本演进,发现与你的版本不符时以 claude --help 实际输出为准。本页持续更新。

相关