CLAUDE CODE 配置手册 · 第 2 版 · 2026-09-09
/config 里的 56 个开关,以及一个「前提不问清就全推反」的教训
对应 Claude Code v2.1.266。第 1 版把一个全程放手、只用终端的用户推成了一整套保守配置,还推荐了他根本用不到的手机推送与远程接管 —— 这一版修正了那些结论,并把「为什么会推反」写进了正文,因为那比配置表本身更有用。所有取值、默认值与官方说明均从本机安装的程序内实读。
版本 v2.1.266
面板项 56 个
面板外 6 个数据边界键
取证 程序内实读
一句话结论: 这些开关里只有 4 个真正需要判断 ,其余要么程序默认值就是对的,要么取决于两个前提 —— 你用哪些界面 、内容能不能离开本机 。这两个前提问清之前,任何推荐都是猜的:同一份配置,对「终端 + 内容不外传 + 全程放手」的人和对「手机 + 云端 + 逐步确认」的人,答案方向相反 。
怎么用这个菜单 四种形态 先问两个前提 自主度 ≠ 纪律 输出与人格 六档人格详解 自主度与权限 上下文与记忆 多智能体与工作流 远程与通知 数据边界键 界面与工具链 最终配置 复盘
前提
先说清这个菜单的机制,不然逐项讲了也用不上
菜单里的项分三种类型,交互方式和落盘位置都不一样。
TYPE / BOOLEAN
开关型
光标停上去按 空格 或 回车 直接翻转,立刻生效。约四十项属于这类。
TYPE / ENUM
多选一型
用 左右方向键 在候选值间切换。部分项标了 pickToCommit ,意思是要按回车才落盘,光标划过不算选中。
TYPE / MANAGED
受管型
值由外部决定、菜单里只读展示 。共三项:Auto-update channel、Agents view、External CLAUDE.md includes。看到它们改不动不是 bug。
落盘位置 绝大多数项写到 用户级 settings (跨项目生效),少数写到 项目级 (标了 this directory 的那两项 Synced project memory 就是,且要下个 session 才生效)。你这次改的两项分别落在 ~/.claude/settings.local.json 的 outputStyle 和 ~/.claude/settings.json 的 language —— 位置不同但都是用户级,都生效。
一个容易踩的点: 菜单里改的值和你手写进 settings 文件的值是同一份数据,但菜单不认识注释也不保留格式 。你那份 settings.local.json 里有大量 NOTE 字段和中文说明,那些是普通 JSON 字段所以安全;但如果哪天你想加真正的 JSON 注释,改完菜单会丢。
前提 · 形态
同一套配置,在四种形态下分别怎么读
上面那节讲的是「值写到哪个文件」,这节讲的是「哪个形态会去读那个文件」。两件事都对了,配置才真的生效 —— 尤其网页版的云端 session,它压根不在这台机器上。
SURFACE / LOCAL
本机三形态:同一套文件
终端、VS Code 与 JetBrains 扩展 、桌面 app,官方文档明说它们读同一套 settings 文件 。所以在这三者之间,「配置放哪」这个问题没有分叉。settings.md
SURFACE / MENU
/config 只是终端界面的东西
官方文档:/config 是终端界面的一部分 ,VS Code 聊天面板与桌面 app 打不开它 ;要在那边改,就直接编辑设置文件 ,或走那些 app 自己的设置界面。settings.md
SURFACE / CLOUD
网页版跑在另一台机器上
Claude Code on the web 的云端 session 在另一台机器上运行 ,本机这些文件里只有一部分 到得了它。这是本节所有差异的总根源。settings.md
This page covers Claude Code running on your machine: the terminal, the VS Code and JetBrains extensions, and the desktop app, which all read the same settings files. A cloud session on Claude Code on the web runs on a different machine and reads only some of them.
code.claude.com/docs/en/settings.md · 原文
/config is part of the terminal interface. The VS Code chat panel and the desktop app don't open it; change settings there by editing a settings file or through those apps' own settings.
code.claude.com/docs/en/settings.md · 原文
形态 × 配置源
配置源 / 能力 终端 桌面 app VS Code · JetBrains 扩展 网页 cloud session
~/.claude/settings.json 用户级
读(本机三形态同一套)
读(同一套)
读(同一套)
不读 留在你自己的机器上
.claude/settings.json 提交进仓库的项目共享设置
读(同一套)
读(同一套)
读(同一套)
读 因为它是 clone 的一部分 —— 把某项提交进去,云端 session 里就生效
.claude/settings.local.json 项目本地设置
读(同一套)
读(同一套)
读(同一套)
不读 留在本机,而且这个文件不在 clone 里
受管设置managed
文档未写明
文档未写明
文档未写明
只有服务端管理 的设置到得了;你设备上的 managed-settings.json 或 MDM 配置到不了
/config 菜单
有 —— 它就是终端界面的一部分
打不开
VS Code 聊天面板打不开 ;JetBrains 文档未写明
打开的是你 claude.ai 设置里的 Claude Code 那一节,不是改某个值
hooks
同样的 hook 事件照常触发
同样的 hook 事件照常触发
同样的 hook 事件照常触发
同样的 hook 事件照常触发;但那边的 hooks 来自仓库与组织的服务端设置
本机三形态的三个 settings 文件格子之所以写成一样,是因为官方文档只给到「它们读同一套 settings 文件」这一个粒度,没有逐文件逐形态列举;表里不替它补。受管设置那三格与 JetBrains 的 /config 格标成「文档未写明」,同理 —— 原文只写了「设备上的 managed-settings.json 或 MDM 到不了云端会话」,以及「VS Code 聊天面板与桌面 app 打不开 /config 」,没说这两件事在本机各形态上分别怎样。settings.md · hooks.md
云端 session 的四条原文
项目共享设置 .claude/settings.json 读
读得到,因为这个文件是 clone 的一部分。把一项设置提交进去,它就在云端 session 里生效。
Shared project settings (.claude/settings.json ): read, because the file is part of the clone. Commit a setting there to apply it in cloud sessions.settings.md · Settings in cloud sessions
用户级与项目本地设置 ~/.claude/settings.json · .claude/settings.local.json 不读
两者都读不到 :它们都留在你自己的机器上,而且 local 那个文件不在 clone 里。
User and project local settings (~/.claude/settings.json and .claude/settings.local.json ): not read. Both stay on your machine, and the local file isn't in the clone.settings.md · Settings in cloud sessions
受管设置 managed settings 只有服务端那份
只有服务端管理 的设置到得了云端 session;你设备上的 managed-settings.json 文件或 MDM 配置到不了 。
Managed settings : only server-managed settings reach a cloud session; a managed-settings.json file or MDM profile on your device doesn't.settings.md · Settings in cloud sessions
/config 在网页上打开设置界面,不改值 两条路
在网页上敲 /config ,打开的是你 claude.ai 设置里的 Claude Code 那一节,而不是改掉某个值 。要给云端 session 改一项设置,只有两条路:在那个 environment 上设环境变量 ,或者把这个键提交进仓库的 .claude/settings.json 。
/config : on the web, opens the Claude Code section of your claude.ai settings instead of changing a value. To change a setting for a cloud session, set an environment variable on the environment or commit the key to the repository's .claude/settings.json .settings.md · Settings in cloud sessions
hooks 在四种形态下
事件照常触发,但来源换了 hooks.md
Claude Code
在哪儿跑都触发同样的 hook 事件 :终端 session、IDE 扩展、桌面 app,以及 Claude Code on the web。
但云端 session 不读你本机的 ~/.claude/settings.json —— 那边的 hooks
来自仓库,以及你所在组织的服务端受管设置 。
hooks.md
Cloud sessions on Claude Code on the web don't read your local ~/.claude/settings.json ; hooks there come from the repo and from your organization's server-managed settings.hooks.md · 原文
Claude Code fires the same hook events wherever it runs: sessions in the terminal, IDE extensions, the Desktop app, and Claude Code on the web.hooks.md · 原文
这一节怎么用 本机三形态之间不用操心 —— 同一套文件。真正的分叉只在网页版云端 session 那一列:
它跑在另一台机器上,本机的用户级与项目本地设置一概到不了 。想让一项配置在云端也算数,只有
提交进仓库 或
设成那个 environment 的环境变量 这两条路。
settings.md
本节取证口径与全文其它章节不同: 上下各节是从本机安装的程序内实读,本节全部来自官方文档实读 ,两个出处见每条断言后的链接。文档没写的格子一律标「文档未写明」,不做推断填充。
第一组 · 输出与人格
GROUP A
决定「我说话什么样」的 4 项
这组是你这次动的地方,也是全菜单里对日常体感影响最大的一组。
Output style 已设 Concise default / Proactive / Concise / Explanatory / Learning / +自定义
切换我的回话人格 。选中的那一档会把一整段行为指令注进我的系统提示,并且原文写明「与别处的沟通或格式指导冲突时,本档规则优先」—— 所以它的效力高于 你 CLAUDE.md 里的沟通风格条款,是全菜单里唯一能压过你自己规则的开关。自定义档放在 ~/.claude/output-styles/*.md ,你的 prose 就在那儿,会自动出现在候选里。
建议:Concise 常驻。 它那六条几乎就是你 persona-core 里「禁止做」清单的逐条对应。写稿时临时 /output-style prose 切过去,写完切回来。
Language 已设 简体中文 任意语言名或 ISO 代码,如 ja;default = 英文
强制我用哪种语言回复。它不只是"倾向",是硬指令,且附带一条正字法要求(不许把带音标的字符降级成 ASCII)。注意它管的只有回复文本 :代码标识符、commit message、工具输出不受影响。
建议:保持简体中文。 你之前不设它也基本是中文回复,但那靠的是我读你 CLAUDE.md 的中文推断出来的倾向,不稳定 —— 尤其在跑 subagent、workflow 这些新开上下文的场景,子代理不一定继承那个倾向,而这个设置会。
Verbose output on / off
开了以后工具调用的完整输出直接铺在对话里,不折叠。
建议:关。 和 Concise 直接对冲,而且会大幅吃上下文。真要看某一条的全文按 Ctrl+O 单独展开就行,不必全程开着。
Default view transcript / chat / default
启动时默认停在哪个视图。chat 是精简对话流(隐掉工具细节),transcript 是完整流水,default 交给程序判断。
建议:default。 你的活儿是长任务产线,需要随时看到工具在干什么,chat 模式会把判断依据藏起来。
第零组 · 前提
PREREQUISITE
这两个问题决定一半开关的答案,而它们在磁盘上看不出来
观测能告诉你「他怎么干活」,但告诉不了你「他用哪块屏幕、愿不愿意让内容出去」。猜的代价不是推荐不够优,是推荐一堆他用不到的东西。
前提 A · 你实际用哪些界面
终端 CLI / IDE 扩展 / claude.ai 网页 / 手机 App / 桌面 App。不是「装了哪些」,是「真的在用哪些」。
不用这个 这些键直接归零,不必问
手机 App inputNeededNotifEnabled 、agentPushNotifEnabled
claude.ai 网页 / 云端 session remoteControlAtStartup 、remoteHomeSettings 、remoteTools.allowUnattendedServing 、attribution.sessionUrl
IDE / 桌面 App autoConnectIde 、autoInstallIdeExtension 、diffTool 的 IDE 档
前提 B · 内容能不能离开本机
这一条不是「你信不信任云」,是一个可执行的开关组 :有 6 个键控制内容外发,而它们全都不在 /config 面板上 ,只能写 settings 文件。
更麻烦的是:这 6 个键的程序默认值全部未确证 。也就是说「不动它」不等于「关着」—— 想要关,必须显式写。清单见数据边界键 那一节。
反向命名 disableClaudeAiConnectors 要写 true 才是关。照着别的键的模式写 false,等于允许。
为什么这一节排在最前面 第 1 版是先做用量观测、再按观测推荐,前提完全没问 —— 结果给一个只用终端的人推了「开手机推送」和「开机就开远程接管」。那两条不是「建议不够好」,是根本不存在的功能对他而言。 顺序错了,后面做得再细也是白做。
核心教训
「要求我严谨」和「他想亲自确认」是两件事,混了就全反
这是第 1 版推错的根因,也是这份手册最值钱的一段。它不只适用于配置,适用于任何「从用户写下的规则推测用户偏好」的场合。
推不出自主度
纪律文本
用户写在规则文件里的那些话:验证过再报告 、举证责任在写入那一刻 、不静默删除共享资源 、未经确认禁改防火墙 。
它们管的是我的严谨程度 。「你必须验证过才能说做完了」是对执行质量的要求 —— 它完全不意味着 这个人想坐在屏幕前逐个点确认框。
第 1 版恰恰把这些读成了「他想全程参与」,于是一路推保守值。
这才是自主度
行为证据
只看他实际怎么跑:启动实参 里有没有 --dangerously-skip-permissions 、bypassPermissions ;skipDangerousModePermissionPrompt 是不是 true;deny / ask 规则各有几条 ;以及最有力的一个 —— 监督密度 。
监督密度=每条用户发言换来多少次工具调用 。这个数字骗不了人:说一句话让它跑 40 步的人,和每两步就要过问一次的人,需要的是相反的配置。
本机实测的自主度画像
10 / 10
放手型(hands-off)
四项硬证据全部命中
1 条
每 session 用户发言中位数
说一句就走开
40 次
每 session 工具调用中位数
≈ 每条发言 14.8 次
0 / 0
deny / ask 规则条数
什么都不拦、什么都不问
true
skipDangerousModePermissionPrompt
主动关掉了危险模式提示
50%
≥15 步/发言 的 session 占比
一半以上是纯放手
最刺眼的一条翻转 askUserQuestionTimeout 第 1 版被我列成红线,说必须保持 never —— 方向是反的。 对一个放手型用户,never 意味着「我一提问就无限期等下去」,而他早就走开了 ⇒ 无人值守的长任务会静静停死在提问处 。正确答案是给个超时(5m ),配合「真需要裁决时才喊人」的机制。程序默认值恰好是 never ,所以这一项不显式改就一直踩着 。
但放手 ≠ 什么都放行 自主度管的是要不要打断他 ,数据边界管的是内容能不能出去 。一个极度放手的人完全可以在数据边界上极严 —— 本机就是这样:全程 bypass,同时要求任何内容不外传。把 hands-off 当成外发类键也放行,是第二种推错方式。
GROUP A · 展开
六档人格,各自到底注了什么进去
菜单里每档只有一行说明,但实际注入的是几百字的行为指令。下面是各档真正管的事,以及它跟你现有规则的相容性。
1 · Default 不注入
字面意义上的空档 —— 程序内部它的值就是 null ,不追加任何人格指令,只跑基础的软件工程行为。
对你:冗余。 你 CLAUDE.md 里写的沟通规范已经比它细得多,选它等于白占一档。
2 · Proactive 与你的规则冲突
六条指令:立刻动手、少打断、不要进 plan mode 除非用户明确要求 、把纠偏当正常输入、不做破坏性动作、不外泄数据。还附带一条特殊的「等待提示」:如果只剩等后台任务,立刻结束回合不要轮询。
对你:不建议。 第 3 条和你 change-workflow 里「不确定性高档必须先走澄清→调研→Plan Mode→审核」正面冲突;「少打断」也和你自己记下的那条节奏反馈(别抢节奏、别催 commit)反向。
3 · Concise 你的选择
六条:结论先行、砍叙述留实质、简单问题一到三句、去掉对冲话术、但被要求详说时必须给全 、且绝不为简洁牺牲正确性 (报错、失败测试输出、安全告警、破坏性操作确认一律保留全文)。
对你:最贴。 后两条是关键 —— 它不是"少说话"档,是"不说废话"档。你担心的"会不会漏掉我要的细节",它自己写明了不会。
4 · Explanatory 场景档
在完成任务之外附带讲解代码库与实现选择,用一个 ★ Insight 分隔块把 2-3 条要点框起来,写代码前后各来一次。明确允许为此超出正常长度限制 。
对你:接手陌生代码库时值得临时开。 常驻不合适 —— 它讲的是"这个代码库里的门道",你自己的项目不需要人给你讲。
5 · Learning 教学档
生成 20 行以上代码且涉及设计决策、有多种合理解法的业务逻辑、关键算法或接口定义时,停下来让你手写 2-10 行 ,并且会在 TodoList 里专门插一条「请人类输入某决策」。
对你:不建议。 你是在跑生产线不是在练手,这档会把日更节奏切碎。
6 · prose 你自建的
你写的写作人格:段落散文、正文禁 bullet 与编号、并列关系用自然语言消化、加粗一段最多一处、禁六个填充语、结尾不许附「我做了什么」的汇报段,且要求稿子落文件的同时把全文打在回复里。
对你:按任务临时挂。 别设常驻 —— 工程排障时禁 bullet,会把"三个候选原因 + 各自判据"强行摊成散文,反而更难读。
补一条你可能想知道的 自定义档的 frontmatter 支持 keep-coding-instructions 这个字段。五个内置档全都设了它(保留软件工程基础指令),而你的 prose.md 没设 —— 所以挂 prose 时我会丢掉一部分工程行为基座,这正是你要的(那档明确写了"你现在的职责是写文章不是完成软件工程任务")。但也意味着:挂着 prose 别让我改代码 。
第二组 · 自主度与权限
GROUP B
决定「我什么时候该停下来问你」的 7 项
这组是全菜单里风险最高的一组 —— 三条红线中有两条在这里。
Default permission mode default / plan / acceptEdits / dontAsk / auto
新 session 默认落在哪个权限档。程序里完整的权限模式共六个,但菜单刻意把 bypassPermissions 从候选里剔掉了 —— 它只能靠启动参数或运行中手动切,不允许设成默认。你现在这个 session 就跑在 bypass 下,所以你在菜单里看不到它、也别去找。
建议:不动它。 你实际靠启动实参跑 bypassPermissions (进程里能直接看到 --dangerously-skip-permissions ),而菜单把这个值排除在外 ⇒ 在菜单里设任何别的值,都只是给一个用不上的档位赋值,还可能和启动实参打架。真正该承载你那些服务器红线的不是这个档位,是 hook 与 permissions.deny —— 确定性拦截,不依赖你每次去点确认。你现在 deny/ask 各 0 条,那才是值得补的地方。 原第 1 版建议(保留以示对照):你的 security.md 有一条硬红线是「未经用户确认禁止修改防火墙规则」、「不静默删除共享资源」—— 那些拦截靠的就是权限询问这一层。把默认档提到 dontAsk 等于把闸拆了,而你自己在 change-workflow 里写过「闸被拦下时不许调阈值,调阈值等于拆闸」。
Question auto-continue timeout never(默认) / 60s / 5m / 10m 第1版判反了
官方说明:空闲多久后,用「目前已选中的答案」自动往下跑 。默认是 never —— 官方原文特别注明「只有显式设成 60s/5m/10m 才会自动续跑」。
建议:5m。这一项取决于你是不是在旁边,不取决于你的纪律有多严。 第 1 版我按「规则里写了必须先澄清」推出 never ,那是把两件事混了 —— 澄清纪律说的是「重要决策要你定」,而 never 的实际后果是你走开之后任务停死在提问处 ,连不重要的问题都在等。放手型画像下(每 session 发言 1 条、跑 40 步),给个 5 分钟窗口才是对的:你在旁边就照常答,不在就继续跑。代价说清:偶尔会自己选一个你本想亲自定的选项。
Thinking mode on / off
是否默认开启扩展思考。关掉后仍可用 think 类关键词临时触发。
建议:开(默认就是开)。 你的活儿里有大量选型、诊断、多约束权衡,这些场景关思考等于自降一档。
Fast mode on / off ·(菜单里带当前模型名)
Opus 的加速输出档。它不换小模型 —— 仍然是 Opus,只是吐字更快。菜单项的标签会动态带上当前模型名。也可以用 /fast 随时切。
建议:按场景手动切,不必常驻。 写代码、跑批量任务时开着舒服;做长链条推理(跨审、架构决策)时关掉更稳。
Use auto mode during plan on / off ·(默认 on)
程序内的字段说明是:当 auto mode 可用时,plan mode 是否采用 auto mode 的权限语义 (默认 true)。也就是说它不是"允许只读调研"那么无害,而是把 auto 这个权限档的放行规则搬进 plan 阶段。
建议:开,但知道自己在选什么。 程序自己的策略表里把这一项的保守值标成 false —— 换句话说开着是偏放行的一端。对你划算的理由是 plan 阶段本来就该大量读代码(你 change-workflow 的「调研」阶段),关掉会被确认淹没;但如果哪天你在陌生仓库里跑 plan,把它关掉更稳。
Claude-proposed goals auto / alwaysAsk / disabled
我是否可以自己给长任务提出并登记目标。
建议:alwaysAsk。 你有 Todolist.md 那套自己的待办纪律(todolist-sync 规则),两套目标系统各写一份会打架。让它每次问一声,你决定要不要让它插手。
Dialog expiry default / 60s / 5m / 10m / never
程序内的字段说明限定得很具体:转发到远程客户端的权限/用户弹窗的最长存活时间 。所以它管的不是你眼前终端里的确认框,而是 Remote Control / 云端 session 把弹窗推到别处时那一份。
建议:default(等价于不过期)。 程序策略表把这一项的保守值标成 never ,说明"永不过期"才是安全端 —— 设成 60s 意味着一个推到远端的授权请求可能在你还没看到时就已消失,你会以为没人问过你。
第三组 · 上下文与记忆
GROUP C
决定「我记得多少、能退回多远」的 7 项
这组对你的长任务产线影响最大 —— 尤其是 checkpoints 和 usage limit 那两项。
Auto-compact on / off
上下文接近上限时自动压缩历史。压缩后我拿到的是摘要 + 未压缩的尾部,可以继续干活不必换 session。
建议:开。 你 context-management 规则写的是「禁止主动 compact」「除非系统自动触发」—— 注意那条禁的是我手动去 /compact ,不是禁这个兜底开关。关掉它的后果是撞上限时直接硬停,长任务当场断在半路。
Continue automatically at usage limit on / off
撞到用量上限时,自动等到额度恢复再继续,不需要你回来手动敲一下。
建议:开 —— 而且程序默认就是开,你不用动。 你有一堆无人值守的长任务(渲染、批量转写、发布流水线)。程序策略表把保守值标成 off,那是给企业管成本用的;对你,off 的代价是任务在你睡觉时停住。
Rewind code (checkpoints) on / off
给文件改动打快照,可以整段回退到某个时间点 —— 不是 git,是在 git 之下更细一层的本地历史。
建议:开 —— 程序默认已是开,无需设置。 你 git-workflow 里「回滚必须先确认三件事再操作」那套纪律,前提是有东西可回滚。checkpoints 给的是 commit 之前那段真空期的保险。
Precompute compaction on / off ·(灰度项)
提前算好压缩结果,等真撞上限时直接换上,省掉当场压缩那段等待。这一项挂在灰度开关后面,不一定出现在你的菜单里。
建议:看到就开。 纯体验优化,没有语义副作用。
Session recap on / off
你离开一段时间回来时,给一段「这期间发生了什么」的小结。
建议:开。 配合你并发多条线的习惯有用;而且它只在你真的离开过之后才出现,不构成日常噪音。
Synced project memory(本目录,下个 session 生效) on / off
读取组织级同步的项目记忆。注意两点:它是按目录生效的,且改完当前 session 不变,要重开。
建议:默认(开)即可,但别指望它。 你的记忆体系是自建的文件树(主索引 + 专题文件 + 分桶),跟这个组织同步机制不是一回事,两者不会互相污染。
Synced project memory writes on / off ·(需先开读)
允许往组织同步记忆里写 。菜单标签会随状态变文字:没开读时显示「enable reads first」。这一项是 consent-gated,撤回权限有单独的确认流程。
建议:关。 你的写入纪律(举证责任在写入那一刻、单一权威源、原子性)全靠你自己那套文件规范维持。多一个自动写入的通道,等于多一个没有取证约束的写入源。
第四组 · 多智能体与工作流
GROUP D
决定「我能不能一次派出一群分身」的 7 项
这组是烧钱最快的一组。它们控制的不是我说话的方式,而是我一次能开多少个我。
Dynamic workflows on / off
允许我把一个任务编译成脚本、扇出几十个子代理并行跑,再把结果收回来。开着不等于会自动用 —— 触发要么你明说,要么命中关键词。
建议:开。 你已经在用(跨审、批量审计那类活儿),而且你自己的 change-workflow 里就有「并行」一节,规定可拆分任务按文件分工派子代理、一个文件只由一个 agent 改。这个开关就是那条规则的执行器。
Ultracode keyword trigger on / off ·(默认 on)
你在 prompt 里打 ultracode 这个词就自动开启工作流编排,不用另外说明。
建议:开,但记住这是个"暗门"。 好处是省一句话;风险是你哪天在讨论别的事时顺口打出这个词,就会触发一次几十个代理的扇出。你知道它存在就行 —— 我在这里写出来,主要就是为了让你知道有这么个词。
Dynamic workflow size unrestricted / small / medium / large 当前 medium
给单次工作流的代理数量定上限档。当前这个 session 的实际约束是 medium = 保持在 15 个代理以内,且它是指导性的不是硬限制 :我的 prompt 明确要求你如果要求更大规模,就按你说的来。
建议:medium 保持。 它的价值在于给了个默认刹车,你要更大规模只需一句话就能突破,不需要提前把闸放到最大。
Artifacts on / off 你有特殊情况
允许我把网页发布成 claude.ai 上托管的 Artifact 页面。
建议:开着不动,靠 hook 拦。 这是全菜单最微妙的一项。你的 deck 交付铁律是「不给 claude.ai 的 Artifact 地址」,所以直觉上该关。但你已经在 PreToolUse(Artifact) 上挂了守卫 hook —— 那是精确拦截(调用时注入判据),关掉开关是粗暴阉割,会连带失去读取别人分享的 artifact、给页面配数据库那些能力。按你自己的判据「advisory 规则约八成遵循、hook 百分之百」,hook 已经在管这件事了,开关不必再动。
Agents view on / off ·(只读)
子代理面板是否可用。这是三个受管只读项 之一,菜单里显示状态但改不动 —— 它的值由下面两项聚合出来。
建议:无需操作。 看到它灰着不是故障。
Open agents view by default on / off
启动时直接停在子代理面板而不是对话流。
建议:关。 你多数时间是单线对话,只在扇出时才需要看面板。
← opens agents on / off ·(默认 on)
左方向键直接唤出子代理面板。菜单里的标签会动态换成实际的箭头符号。
建议:开。 一个快捷键,代价为零。工作流跑起来后看进度就靠它。
第五组 · 远程与通知
GROUP E · 已按前提重写
这组 8 项里,有 6 项对纯终端用户根本不存在
第 1 版逐项给了「建议开 / 建议关」,那是在给用不到的功能调参。前提问清之后,正确动作是把它们判成「不适用」,而不是给个值。
Push when actions required 默认 false 不适用
官方说明:有权限提示或问题在等你时,推送到手机 。
不适用 —— 不用手机端,这个开关无处可去。 第 1 版建议「开」,理由是「放手型最需要它」;那个理由本身没错,但前提是有手机端接收。替代方案:靠上面那条 askUserQuestionTimeout=5m 让任务自己往下走 ,而不是靠喊人。默认已是 false,不必写。
Push when Claude decides 默认 false 不适用
官方说明:允许 Claude 主动推送手机通知。
不适用,同上。 这一项我在两版里给过相反建议(先「关」,后「开」),两次都没意义 —— 争论一个不存在的接收端要不要收,本身就是前提没问清的症状。
Enable Remote Control for all sessions remoteControlAtStartup · 默认未确证 已显式关
官方说明:每个 session 自动启动 Remote Control 桥,让你从别处接管。
已写 false。 不用网页/手机/桌面端 ⇒ 接管端不存在。这一项之所以要显式写而不是「不管它」,是因为它的程序默认值未确证 —— 「保持关」如果靠默认,可能保持成开的。你已经有 ssh + tmux 那条更可控的路。
Unattended commands from cloud sessions remoteTools.allowUnattendedServing · 默认 true 已显式关
官方说明:设为 false 时,auto 模式的云端 session 在这台机器上跑任何命令都必须有人逐条批准,不管这台机器之前给过什么授权 ;project / local / --settings 里的值会被忽略,只有 managed 或 user settings 说得上话。
已写 false。 这一项在两版之间来回过一次,值得说清为什么:第 1 版按「服务器红线」关掉 → 发现那是拿纪律推自主度,撤回 → 问清「完全不用云端 session」后再次关掉。三次的理由都不同,最后这次才成立:通道用不到,关掉零成本。 注意它默认是 true ,不写就是敞着的。
Use this machine's settings in cloud sessions remoteHomeSettings 不适用
云端 session 是否继承本机的 settings(规则、hooks、权限配置)。
不适用 —— 没有云端 session 需要继承。 顺带说明它的方向:它是让云端受本机约束 ,不是让云端获得本机权限。将来真要用云端时,这一项该开。
Messages from your other sessions crossSessionInbound · default / accept / hold / refuse 已设 accept
你在别的 session 里的分身给这个 session 发消息时怎么处理。这一项和上面几条不同 —— 它管的是本机多个 session 之间 ,不需要手机或网页端,所以对你是真实有效的。
已设 accept。 程序保守值列的是 refuse 或 hold ,accept 是放行端 —— 你在知情下选的,理由是分身之间自己对话正是你要的工作方式。附带好处:行为从「我说不清的 default」变成了明确的「直接收下」 (那四个值的完整枚举定义我始终没从程序里确证,这是本手册唯一的待验项)。
Notifications / Local notifications preferredNotifChannel · 默认 auto
用什么方式提醒你「该看一眼了」。注意这一项是本地终端通知,不是手机推送 —— 候选值里 terminal_bell / iterm2 / kitty / ghostty 全是终端能力,所以它对纯终端用户依然有效。
建议:保持 auto,或钉成 terminal_bell。 放手型 + 长任务的组合下,这是你唯一真正会收到的提醒渠道。auto 会按终端类型自己挑;发现它不响就直接钉 terminal_bell。
Claude-drafted feedback feedbackDrafts · notify(默认) / quiet / off
官方说明:控制 SendFeedback 工具 —— notify 在草稿入队时显示一行提示,quiet 只显示页脚计数,off 完全禁用工具、永不入队。草稿只存本地,没有你明确同意不会发送。
建议:quiet,或保持 notify。 它是纯本地队列所以不违反你的数据边界;但如果你不打算提交反馈,off 也合理。这一项属于「外发面」而非「打断面」,所以不随放手型画像自动放行 —— 该单独判。
这一组的通用判据 看到一个开关,先问「它的另一端是什么」。另一端不存在的开关,正确处理是判成不适用,而不是给它一个值。 给不存在的东西赋值不会出错,但会让配置表里塞满噪音,下次读的人(包括三个月后的你自己)分不清哪些是真在生效的决定。
面板之外 · 数据边界
NOT IN /config
这 6 个键控制内容会不会离开本机,而菜单里根本找不到它们
第 1 版整节漏掉了 —— 因为它是照着菜单逐项写的,而这些键不在菜单上。只翻菜单会漏掉整个数据边界维度。
两个共同陷阱 一、这 6 个键的程序默认值全部未确证 ⇒「不动它」不等于「关着」,想关必须显式写。二、其中一个是反向命名 :disableClaudeAiConnectors 要写 true 才是关,照着别的键写 false 等于允许。
JSON 键 关闭外发要写 官方说明
autoUploadSessions false 把本机 session 镜像到 claude.ai 供只读查看(无远程控制)。这是这组里最直接的一条 —— 它管的就是你的会话内容要不要上传。
syncClaudeAiSkills false 与 claude.ai 同步 skill。你有 55 个自建 skill,其中不少含内部流程与主机信息。
syncClaudeAiPlugins false 与 claude.ai 同步 plugin。
disableClaudeAiConnectors true 为 true 时,claude.ai 的 MCP 云连接器不会被自动获取或连接。注意反向 。
attribution.sessionUrl false 是否把 claude.ai session 链接追加到「由网页或 Remote Control session 创建的」commit 与 PR(默认 true );设 false 则省略 Claude-Session trailer 与 PR 正文链接。
channelsEnabled false 受管组织开关:允许带 claude/channel 能力的 MCP 服务推送入站消息。Teams/Enterprise 默认关,Console 默认开(无 managed settings 时)。
一个不该关的例外
Artifact 工具 enableArtifact · unset = 开 保持开
Artifact 是发布到 claude.ai 的,按「内容不外传」的字面意思该关。但这里的正确答案是不关。
保持开,靠 hook 精确拦截。 三个理由:一、真正要防的是「拿 claude.ai 链接当交付物」 这个行为,而不是工具本身,那已经有 PreToolUse(Artifact) 守卫 hook 在管;二、关掉开关会连带失去读取别人分享给你的 artifact 这个纯输入能力;三、按你自己的判据 ——「advisory 规则约八成遵循、hook 百分之百」—— 已经有 hook 管住的事,不必再动开关 。这是「精确拦截优于粗暴阉割」的典型。
怎么自己找齐这类键: 它们的共同特征是官方说明里出现 claude.ai 、upload 、sync 、mirror 、connector 。菜单只暴露「影响交互体验」的开关,「影响数据流向」的开关多半只在 settings schema 里 —— 这是翻菜单永远发现不了的一整类。
第六组 · 界面与工具链
GROUP F
剩下这三十项,先看值得动的 9 个
这一组绝大多数是偏好而非语义,默认值都是对的。但有 9 项要么会影响产出正确性,要么你可能不知道它存在。
Model 受管枚举 · 候选随账号能力变
默认用哪个模型。菜单里只给几个常用档,要钉死某个具体 model ID 得用 /model (菜单里那行提示就是这么写的)。另外有个细节:如果切到需要额度授权的模型,菜单会直接拒绝并让你去 /model 走一遍授权。
建议:Default(recommended)。 你现在跑的是 1M 上下文的 Opus 5,这正是 default 给你的。手动钉版本号的风险是模型迭代后你钉在旧的上 —— 你 context-management 规则里刚踩过一次「写死版本号的规则必然过期」。
Worktree base ref fresh / head
我开隔离 worktree 干活时,从哪儿起点:fresh 是从远端最新的干净基线,head 是从你当前 HEAD。
建议:fresh —— 程序默认已是 fresh,确认别被改掉即可。 你 git-workflow 里有一条实打实的伤疤:「曾误推预存 commit 导致线上版本混乱」,所以 push 前必须 git log origin/<branch>..HEAD 核对。选 head 会把你本地那些未推送的 commit 带进 worktree,正是那个故障的形状;fresh 从根上避掉。
Respect .gitignore in file picker on / off
文件选择器是否跳过 .gitignore 里的东西。
建议:开。 你的 .gitignore 里躺着本地 settings 与 .env 那类文件 —— 关掉它等于让含密钥的文件出现在补全候选里,增加误读误贴的面。你 security.md 有一条「含密钥的文件绝不入库」,这是同一件事的上游。
Time format auto / 12-hour / 24-hour / 24-hour-utc
时间戳的显示格式。24-hour-utc 会统一按 UTC 显示。
建议:24-hour。 你的机器散在多个时区(本机、遥控 Windows、洛杉矶、东京、上海、北京),日志和记忆里全是绝对日期。12 小时制在跨时区排障时会让你多算一步。至于 UTC 档 —— 除非你想让所有机器读数一致,否则本地 24 小时更直观。
Editor mode normal / vim
输入框的编辑键位。选了 vim 就有 normal / insert 两态。(程序内部还兼容 emacs 这个旧值,但会被折叠显示成 normal。)
建议:按你手感选,没有对错。 唯一提醒:写长 prompt 时 vim 模式的 dd / ciw 确实快,但误触 :q 类命令的代价你自己权衡。
Diff tool terminal / auto
展示改动时用终端内置 diff 还是让程序自己挑(有 IDE 连着就用 IDE 的)。
建议:auto。 你多数时候在纯终端里,auto 会落回 terminal;接上 IDE 时自动升级,不用手动切。
Claude in Chrome enabled by default on / off
浏览器扩展是否默认接入,让我能操作真实浏览器页面。
建议:关,按需开。 你的浏览器里长期登着若干管理后台。默认接入意味着我随时能读那些已登录的页面 —— 需要时手动开一次,比一直开着好。
Auto-update channel latest / slow ·(只读)
受管只读项。程序内部会把配置里的 rc 显示成 slow ;被策略禁用时直接显示 disabled。
建议:无需操作。 你本机 2.1.266 就是 npm 上的 latest,说明这条通道本来就通。
External CLAUDE.md includes true / false ·(只读)
第三个受管只读项:是否允许 CLAUDE.md 通过 @ 语法引入工作目录之外的文件。
建议:留意它是开的。 你的全局 CLAUDE.md 结尾就有一行 @MEMORY.local.md 的个人覆盖层引用,靠的正是这个机制。它要是关了,那层覆盖会静默失效 —— 而"静默"是这里的关键词,不会报错。
剩下 21 项 · 纯偏好,看一眼就够
配置项 取值 它改变什么 建议
Show tips on / off 启动与空闲时的使用小贴士 关(你早过了那个阶段)
Prompt suggestions on / off 输入框里的候选 prompt 提示 关(会干扰长 prompt 输入)
Reduce motion on / off 减少动画与加载动效 看眼睛舒适度,无副作用
Terminal progress bar on / off 终端标题栏的进度条 开(长任务能瞄一眼)
Show status in terminal tab on / off ·灰度 把状态写进终端标签页 开(多标签并发时有用)
Show turn duration on / off 每回合耗时 开(判断哪步慢的最便宜量具)
Show message timestamps on / off ·灰度 每条消息的时间戳 开(跨时区排障要)
Auto-scroll on / off 新内容自动滚到底 开
Copy on select on / off 选中即复制 看习惯(易误覆盖剪贴板)
Skip the /copy picker on / off 直接复制整段回复不弹选择器 开(少一步)
Show last response in external editor on / off 把上一条回复丢进外部编辑器看 关(Concise 档下用不上)
Show PR status footer on / off 底部常驻 PR 状态 开(你有 Actions 流水线)
Auto-connect to IDE on / off 外部终端里自动连 IDE 关(你在纯终端)
Auto-install IDE extension on / off 自动装 IDE 扩展 默认开即可
Theme dark / light / 各自的 daltonized 与 ansi 变体 配色。自定义主题走 /theme dark;ansi 变体适合终端配色已定死的场景
Default permission mode 见第二组 — default
Verbose output 见第一组 — 关
Default view 见第一组 — default
Agents view 见第四组 — 只读
Open agents view by default 见第四组 — 关
← opens agents 见第四组 — 开
还有一项你可能看不到: 程序里有个 Teammate mode (候选 auto / tmux / iterm2 / in-process ),控制多代理协作时子代理跑在哪 —— 独立 tmux 窗格、iTerm2 分屏,还是同进程内。它挂在灰度开关后面,你的菜单里不一定出现。如果出现了:你在 Linux 主控机上跑,选 tmux 最合适 ,因为你本来就用 tmux 管长任务。
收尾 · 最终状态
FINAL
实际写进 settings 的 11 项,以及故意没写的那些
「没写」和「写了」一样是决定。默认值就对的项不写,是为了让配置文件里剩下的每一行都是真实的判断。
已写入 · settings.json
键 值 为什么必须显式写
outputStyle Concise 它那六条=个人沟通规范的逐条对应
language 简体中文 子代理与新上下文不继承「倾向」,只继承设置
askUserQuestionTimeout 5m 默认 never 会让无人值守任务停死在提问处
timeFormat 24-hour 机器横跨多时区,12 小时制排障要多算一步
crossSessionInbound accept 把「说不清的 default」换成明确行为;知情选择放行端
modelProposedGoals auto 已有自建待办纪律;放手型下每次批准=纯打断
autoUploadSessions false 数据边界组 :这 6 个键程序默认值全部未确证 ,不显式写就不知道自己处在什么状态。disableClaudeAiConnectors 反向命名,写 true 才是关。allowUnattendedServing 默认是 true ,不写就是敞着。
syncClaudeAiSkills false
syncClaudeAiPlugins false
disableClaudeAiConnectors true
remoteTools.allowUnattendedServing false
attribution.sessionUrl false
remoteControlAtStartup false 接管端不存在;默认值未确证故不能靠默认
故意没写 · 默认值已经是对的
键 默认值 为什么不写
permissions.defaultMode default 靠启动实参跑 bypassPermissions,菜单排除该值,写别的只会打架
fileCheckpointingEnabled true 已经开着
autoContinueAtUsageLimit true 已经开着
autoCompactEnabled true 已经开着(⚠ 受 DISABLE_COMPACT / DISABLE_AUTO_COMPACT 环境变量压制,两者均未设)
worktree.baseRef fresh 已经是推荐值
orgMemoryWrites false 已经关着
workflowSizeGuideline medium 写了会让 /config 里那一行消失 —— 官方说明明确:settings 提供该键时菜单行隐藏
enableWorkflows 按套餐 近 30 天 Agent 386 + Workflow 347 次,说明现在就是开的
enableArtifact 开 靠 hook 精确拦截,不靠关开关
两个 Push 开关 false 不用手机端,接收端不存在
复盘
第 1 版错在哪,三条可复用的判据
错法 01
拿纪律文本推自主度
「要求我严谨」被读成「他想亲自确认」。判据:只有行为证据(启动实参、skip 标志、deny/ask 条数、监督密度)能推自主度,写下来的规则不能。
错法 02
前提没问就开始推荐
给只用终端的人推手机推送和远程接管。判据:看到一个开关先问「它的另一端是什么」;另一端不存在就判不适用,不要给值。
错法 03
把保守值表当推荐清单
那张 64 条表是给受管企业终端锁定用的。判据:算完推荐再拿它自检「我在偏离吗」,偏离就说清代价 —— 不要照着它开单子。
还有一条独立的 「未设」不等于「待改」。 键没写进 settings 时行为由程序默认值决定,而默认值经常已经是推荐值。第 1 版把 12 项都标成「建议改」,实际只有 4 项需要动 —— 其中 checkpoints、额度自动续跑、worktree base ref 三项默认就是推荐值 ,催人去改已经对的东西是纯噪音。反过来也成立:allowUnattendedServing 默认 true 、askUserQuestionTimeout 默认 never ,这两项不显式写就一直是不想要的状态 。⇒ 先查默认值表,再决定问不问。