AIHero
    阅读约 4 分钟

    如何消除 Claude Code 系统提示词中的臃肿内容

    Matt Pocock
    Matt Pocock
    本页目录

    你发送给 Claude Code 的每条消息都会携带一份看不见的载荷。不是你的提示词,而是围绕提示词的 machinery:工具定义、技能目录,以及你可能永远不会用到的功能系统指令。它会随每次请求发送,并在每一轮计费。

    其中大部分都可以移除。下面六步会展示如何查看请求实际包含的内容,再使用 Claude Code 已有的两个设置进行精简。我每轮因此减少了数万个 token。

    1. 使用以下命令测量上下文: /context

    输入 /context 到任意 Claude Code 会话中。它会把 上下文窗口 按类别拆分—— 系统提示词、系统工具、MCP 工具、记忆文件和消息,并分别显示 token 数量及其占窗口的比例。

    先记下这些数字,再进行任何修改,最后一步会与它们进行对比。

    /context 会把工具作为一个整体显示,不会告诉你哪个单独工具最大——它只报告一个“tools”数字,而不是排名。下一步会解决这个问题。

    2. 使用日志代理找出最大的占用项

    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
    Workflow 21229 B ~5307 tok
    DesignSync 8978 B ~2245 tok
    Monitor 7767 B ~1942 tok

    打开并阅读 Markdown 文件:每个工具的完整 schema、系统提示词、消息历史——模型收到的完整请求都在其中。顶部排名表就是处理清单,你可以准确移除不用的工具,而不必猜测。

    现在你知道载荷包含什么、哪些部分占用最大。接下来两步会移除它们。两个设置都位于 settings 文件中—— ~/.claude/settings.json (适用于每个项目),或者 .claude/settings.json (仅适用于单个项目)。

    3. 使用以下设置关闭整个功能 disable* flags

    有些功能会带来整组工具和指令。一个标志就能连同其全部内容一起关闭功能:

    • disableBundledSkills ——一次移除 Anthropic 捆绑的全部技能( dataviz, review, init 目录),但仍可输入对应斜杠命令。
    • disableWorkflows ——移除多智能体 Workflow 工具,它是表中占用最大的一项。

    如果某个完整功能不值得占用空间,就关闭它。

    4. 使用以下设置移除单个工具 deny rules

    对于单个工具, permissions.deny 只包含工具名称的规则会从载荷中移除工具定义,Claude 根本看不到它:

    {
    "permissions": {
    "deny": ["NotebookEdit", "CronCreate"]
    }
    }

    有一点需要注意:单独的名称("NotebookEdit")会移除工具;带作用域的规则("Bash(rm *)", "Skill(dataviz)")只会阻止匹配的调用,定义仍留在载荷中。要缩小请求,应使用单独名称。

    上一步的标志用于大范围初筛,这些 deny 规则则逐个清理标志未覆盖的工具。

    想保留部分技能而不是全部? disableBundledSkills 是全有或全无的设置。要逐个移除,请使用 skillOverrides ,并把技能设置为 "off" (从载荷中移除),或 "user-invocable-only" (仍可输入,但 Claude 看不到)。

    5. 应用完整配置

    下面是前两步得到的结果:用于精简臃肿内容的标志和 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
    }

    把它当作菜单,而不是处方。先查看自己的载荷,是为了移除不用的内容。如果使用 计划模式,就保留它;如果编写 notebooks,就保留 NotebookEdit。上面的列表是我确认可以移除的内容。

    有一点例外:部分看似臃肿的内容,其实是后台任务和多智能体运行依赖的 machinery,例如任务工具、 Workflow、worktree 工具。如果你在使用它们,就保留。

    想获得我的完整 Claude Code 配置,包括臃肿内容清理?这个 /setup-matt-pocock-skills 技能可以一次运行完成配置。

    6. 使用以下命令重新测量 /context

    重启 Claude Code 让它重新加载设置,然后再次运行 /context 。工具数量和 token 总数应该会降低。

    减少的部分,就是以前每轮都会发送、现在不再发送的 token:请求成本更低,模型也不用先读过大量无关内容才能处理你的问题。