如何精简Claude Code的系统提示中的冗余内容
本文介绍了如何通过六个步骤识别并移除Claude Code每次请求中不必要的工具定义、指令等冗余内容,从而减少令牌消耗、降低成本。通过使用/context命令测量、日志代理分析,并配置disable*标志和deny规则,可以大幅精简有效载荷。
每次向Claude Code发送消息时,都会携带一个你从未看到的负载。这并非你的提示词,而是围绕它的机制:工具定义、技能目录、你可能从未接触过的功能的系统指令。它随着每次请求被发送,而你每次交互都要为此付费。
你可以移除其中的大部分内容。以下六个步骤展示了如何查看你的请求实际包含的内容,然后利用Claude Code已有的两个设置进行精简。作者的令牌消耗每次交互减少了数万个。
- 使用/context测量上下文
在任何Claude Code会话中键入/context。它会按类别细分你的上下文窗口——系统提示、系统工具、MCP工具、记忆文件、消息——每个都带有令牌计数及其在窗口中的占比。在修改任何内容之前记下当前数值,最后一步将与之对比。注意/context将工具作为一个整体显示,不会告诉你哪个工具最大,下一步将解决这个问题。
- 通过日志代理找出最大消耗者
Claude Code通过HTTP与Anthropic API通信,因此你可以设置一个代理,转发每个请求、流式返回回复并记录传输内容。CLI不会察觉。获取proxy.mjs(仅一个文件,无依赖,仅使用Node内置模块),运行node proxy.mjs,然后在另一个终端中将Claude Code指向该代理:ANTHROPIC_BASE_URL=http://localhost:8787 claude。每个请求被写入./logs/目录下可读的Markdown文件,并在终端打印出排名表,如“[agent-proxy] 69 tools · 154,946 tool bytes · 65,538 real input tokens”以及按大小排序的工具列表。打开Markdown文件可以查看完整请求,包括每个工具的完整schema、系统提示和消息历史。排名表就是你的工作清单,可以精确移除你不需要的工具。
现在你知道负载中包含什么以及哪些部分最大。接下来的两个步骤移除它们。两个设置都位于设置文件中:~/.claude/settings.json(全局)或.claude/settings.json(项目级)。
- 使用disable*标志关闭整个功能
某些功能会带来一整套工具和指令。一个标志即可关闭该功能及其附带的所有内容:
- disableBundledSkills:一次性移除所有Anthropic捆绑技能(如dataviz、review、init目录),但保留其斜杠命令可输入。
- disableWorkflows:移除多代理的Workflow工具,通常是排名表中最大的单项。
当某个功能不值得保留时,就使用对应的标志。
- 使用deny规则移除单个工具
对于单个工具,使用permissions.deny规则并指定裸工具名称即可将该工具的定义从负载中移除——Claude永远看不到它: { "permissions": { "deny": ["NotebookEdit", "CronCreate"] } } 一个值得注意的细节:裸名称(如"NotebookEdit")会移除工具;而作用域规则(如"Bash(rm *)"、"Skill(dataviz)")会阻止匹配的调用,但将定义留在负载中。要精简请求,请使用裸名称。上一步的标志是宏观的初步筛选,而deny规则则逐个清除标志未覆盖的单个工具。 如果想保留部分技能但并非全部?disableBundledSkills是一刀切的。要逐个移除,使用skillOverrides将技能设为"off"(从负载中移除)或"user-invocable-only"(仍可输入,但Claude看不见)。
- 应用完整配置
以下是前两步产生的配置——标志和deny规则,可直接放入~/.claude/settings.json中: { "permissions": { "deny": [ "EnterPlanMode", "ExitPlanMode", "DesignSync", "NotebookEdit", "SendMessage", "PushNotification", "RemoteTrigger", "ReportFindings", "ScheduleWakeup", "AskUserQuestion", "CronCreate", "CronDelete", "CronList" ] }, "disableBundledSkills": true, "disableWorkflows": true, "disableRemoteControl": true, "disableClaudeAiConnectors": true, "disableArtifact": true } 请将其视为菜单而非处方。先查看自己的负载再决定删除哪些,这很重要。如果你使用计划模式,请保留它;如果你编写笔记本,请保留NotebookEdit。上述列表只是作者移除的内容。 一个注意事项:有些看似冗余的内容实际上是后台任务和多代理运行所依赖的机制——如任务工具、Workflow、工作树工具。如果你使用它们,请保留。
- 使用/context重新测量
重新启动Claude Code以使设置生效,然后再次运行/context。工具数量和令牌总数应该会降低。 这个差值就是之前每次交互发送而现在不再发送的令牌——不仅请求更便宜,而且模型需要阅读的无关内容也更少,能更快地关注你的实际问题。