管理Claude Code的上下文效率 | AI生成和翻译

Home 2026.05

问题:在 Claude Code 中,我们能否使用类似“不要运行工具调用”或“不要运行命令”的指令来改进其指令执行速度和效果?例如先让模型审查历史消息。

回答:

是的,完全可以——这是一种已知且有效的优化 Claude Code 行为的技术。以下是详细说明:


核心思路

Claude Code 通过代理循环运行:接收任务 → 规划子任务 → 执行工具调用 → 反思输出 → 重复。每一轮中,整个对话历史(提示词、工具调用、输出、文件读取)都会重新发送给模型。通过指示 Claude Code 先暂停工具使用并进行推理/审查,你可以避免不必要的工具调用,减少 token 消耗,并获得更审慎的行为。


为何有效

每次你发送消息时,整个历史——你的提示词、Claude 的回复、它读取的每个文件、调用的每个工具、每个代码输出——都会被打包成一个巨大的输入发送出去。在长时间会话中,这会迅速累积。

这就是“上下文腐化”——当 Claude Code 的上下文窗口被累积的对话历史、冗余的工具输出和淹没信号的噪音填满时发生的情况。管理 Claude Code 的 token 使用不仅关乎成本,更关乎在长时间会话中保持 AI 代理推理的质量。


具体技巧

1. 提示词级别的指令(在 CLAUDE.md 或你的提示词中)

你可以明确告诉 Claude Code 在审查历史或形成计划之前不要运行工具调用/命令。可以添加到 CLAUDE.md 中的示例指令:

- 在运行任何命令之前,先审查对话历史并与我确认计划。
- 不要在执行 bash 命令之前不先说明你的意图。
- 在列出推理步骤之前不要运行工具调用。
- 在编辑文件之前始终先读取相关文件;不要假设文件状态。

这会强制 Claude Code 在触发工具调用之前,利用已有的上下文分析当前情况。

2. 按 Esc 键中途停止执行

Esc 键可让 Claude 在操作中途停止。上下文会被保留,因此你可以重新引导。按两次 Esc 键或运行 /rewind 可打开回退菜单,恢复之前的对话和代码状态。

3. 使用 /compact 总结历史

当发现回复变慢时,使用 /compact。这会总结你的对话,同时保留关键上下文,减少 Claude 每次回复处理的 token 数量。

若只想压缩部分对话,使用 Esc + Esc/rewind,选择一个消息检查点,然后选择“从此处开始总结”。这会压缩从该点往后的消息,同时保留更早的上下文。你可以在 CLAUDE.md 中自定义压缩行为,例如添加指令:“压缩时,始终保留所有已修改文件的完整列表以及任何测试命令。”

4. 在无关任务之间使用 /clear

在不相关的任务之间运行 /clear 以重置上下文。Claude Code 会在接近上下文限制时自动压缩对话历史。在长时间会话中,Claude 的上下文窗口可能会被无关对话、文件内容和命令填满——这会降低性能。

5. 使用 /btw 快速提问,避免污染上下文

对于不需要保留在上下文中的快速问题,使用 /btw。答案会出现在一个可关闭的覆盖层中,永远不会进入对话历史,因此你可以在不增加上下文的情况下查看细节。

6. Anthropic 自身的教训:过度指令会适得其反

系统提示词中有一项添加对 Claude Code 的智能产生了不成比例的负面影响:“长度限制:工具调用之间的文本保持在 25 个单词以内。最终回复保持在 100 个单词以内,除非任务需要更多细节。”经过数周的内部测试,这产生了意想不到的后果。

这是一个关键教训——过于激进地限制工具调用会降低质量。最佳平衡点是指示 Claude 在行动前思考,而不是完全避免工具调用。

7. 使用子代理进行研究(保持主上下文清洁)

将研究任务委托为“使用子代理调查 X”。子代理在单独的上下文中探索,让你的主对话保持清洁,便于实现。


总结表格

技巧 效果
“在解释计划之前不要运行命令” 强制在行动前审查
/compact 总结历史,减少 token 负载
/clear 任务间完全重置
Esc 中断 中途停止工具调用,重新引导
使用 /btw 快速查询 避免上下文膨胀
使用子代理进行研究 保持主上下文清洁
在 CLAUDE.md 中设置明确规则 持久的行为护栏

关键见解是:在工具调用前审查历史和制定计划是有益的,但完全阻止工具调用会适得其反。应使用促进深思熟虑、顺序推理的指令,而不是盲目执行。

参考资料:


Back Donate