/clear 命令终极指南

0 阅读13分钟

前言

Claude Code CLI 的 /clear 命令,表面上只是清空一下聊天记录,但实际上它是整个 Claude Code 会话管理中最重要、最核心的一个命令。有资深用户甚至直言:/clear——最重要的习惯,没有之一

为什么这么说?因为 Claude Code 每次对话都依赖一个上下文窗口,这个窗口只有 200K(目前有1M,anyway反正上下文很宝贵很有限) token(约 15 万单词)。系统提示词、工具定义、MCP 架构、CLAUDE.md 等内容在你输入任何东西之前已经占用了 3 万到 4 万个 token。每条新消息、每次读文件、每条命令的输出都会往这个窗口里塞东西,越堆越满。当使用率飙升到 90% 的时候,Claude 就会从“智能助手”降级为“健忘实习生”,开始犯一些在干净窗口里绝不会犯的错误

/clear 就是解决这个问题的终极武器——它不是简单地“清屏”,而是在 AI 的“大脑”里按下重启键,把累积的“认知垃圾”一次性清空,让 Claude 恢复清晰锐利的思考状态。

接下来,我将用一个有趣的故事讲清楚 /clear 的实现原理,再用时序图详细拆解整个调用过程,最后给出你真正需要掌握的最佳用法。

一、故事篇:一次穿越“AI大脑”的冒险之旅

1. 小李的烦恼

小李是一名前端开发,最近在用 Claude Code 写一个电商后台项目。第一天,他让 Claude 帮忙实现了一个用户登录模块——Claude 读了代码、分析了项目结构、写出了完整的登录组件。小李很满意,接着让 Claude 继续加一个商品管理功能。

Claude 开始变得“迟钝”——响应慢了,答案没以前准了。小李没在意,继续让它写购物车。结果 Claude 把登录的逻辑误用到了购物车上,甚至开始“胡言乱语”,编造出一些根本不存在的函数

小李百思不得其解:“一开始明明很聪明的啊,怎么越用越笨了?”

2. 揭秘“AI 大脑”:上下文窗口

要理解发生了什么,我们需要先钻进 Claude 的“大脑”里看一看。

Claude 的短期记忆叫做上下文窗口。每次你发消息,Claude 看到的不仅仅是你的新消息——它还包含了从对话开始到现在所有的历史内容。这就像一个人同时举着几百页纸在思考,翻来覆去地找信息,越翻越慢。

现在,让我们想象自己缩小成一个“纳米维修工”,钻进 Claude 的脑子里一探究竟。Claude 的大脑主要由下面几个区域组成:

🧠 大脑分区图:Claude 的认知架构

┌─────────────────────────────────────────────────────────────────────┐
│                        CLAUDE 的认知架构                             │
├─────────────────────────────────────────────────────────────────────┤
│  🧬 基础记忆区       (~2,600 tokens)                                 │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  系统提示词:Anthropic 注入的“宪法”——规定 Claude 的行为准则       │  │
│  └───────────────────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────────────────┤
│  🔧 工具箱           (~17,600 tokens)                                │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  读文件、写文件、执行 Bash、搜索代码……Claude 能用的一切工具        │  │
│  └───────────────────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────────────────┤
│  🔌 外接插件区       (900~51,000 tokens)                             │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  MCP 服务器的工具定义——不用也会占地方!                          │  │
│  └───────────────────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────────────────┤
│  📋 长期记忆文件区   (~302 tokens)                                   │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  CLAUDE.md ——项目的“灵魂”,CLAUDE.md 不会丢失!                  │  │
│  └───────────────────────────────────────────────────────────────┘  │
├─────────────────────────────────────────────────────────────────────┤
│  💬 对话记忆区       (逐渐膨胀……)                                     │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  你问的问题、Claude 的回答、它读的文件、执行命令的输出……           │  │
│  │  全部堆积在这里!越堆越满,越满越乱!                             │  │
│  └───────────────────────────────────────────────────────────────┘  │
└─────────────────────────────────────────────────────────────────────┘

数据来源:

Claude 的上下文窗口总共 200K token,但真正留给对话的只有大约 114K token。更糟糕的是,当使用率超过大约 147K token 时,AI 的推理质量就开始下滑——这就是著名的  “lost-in-the-middle”问题:信息越堆越多,Claude 会开始“忘记”中间部分的内容,只记得开头和结尾。这就是小李遇到的“越用越笨”的根本原因。

现在,我们继续跟着“纳米维修工”的视角,观察 Claude 的大脑在长时间使用后会变成什么样:

🧠 脏乱差的大脑(长时间未清理)

┌─────────────────────────────────────────────────────────────────────┐
│  💬 对话记忆区——已爆满!                                              │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  [00:00] 小李:"帮我写一个登录组件"                              │  │
│  │  [00:01] Claude 读文件:src/auth/login.tsx                    │  │
│  │  [00:02] Claude 写文件:components/LoginForm.tsx              │  │
│  │  [00:03] 小李:"再写个商品管理"                                 │  │
│  │  [00:04] Claude 读文件:src/api/products.ts                   │  │
│  │  [00:05] Claude 执行命令:npm run build (失败)                 │  │
│  │  [00:06] 错误输出:"Error: cannot find module 'auth'"          │  │
│  │  [00:07] 小李:"哦那个我已经改了"                               │  │
│  │  [00:08] 小李:"写购物车" ← 新任务!                           │  │
│  │  ...                                                          │  │
│  │  [00:99] Claude:"我注意到你的登录模块是用 JWT 实现的..."       │  │
│  │          ↑ 小李在写购物车,Claude 却还在提登录!               │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                     │
│  😵 状态:认知混乱!健忘!幻觉频出!                                 │
└─────────────────────────────────────────────────────────────────────┘

小李的 Claude 之所以“越用越笨”,就是因为大脑被旧任务的信息、失败的尝试、过时的假设堆满,新任务的指令被淹没在信息的汪洋大海中

3. 神奇的魔法棒:/clear

就在小李快要崩溃的时候,他翻到了一条指令:/clear。犹豫了一秒后,他输入了 /clear

🧠 清理后的清爽大脑

┌─────────────────────────────────────────────────────────────────────┐
│  💬 对话记忆区——✨ 焕然一新 ✨                                       │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  (空的!)                                                      │  │
│  │                                                               │  │
│  │                                                               │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                     │
│  📋 长期记忆区(CLAUDE.md)——完整保留!                              │
│  ┌───────────────────────────────────────────────────────────────┐  │
│  │  "项目使用 Next.js 14 + TypeScript"                           │  │
│  │  "测试命令:bun test"                                          │  │
│  │  "API 基础地址:https://api.example.com"                      │  │
│  └───────────────────────────────────────────────────────────────┘  │
│                                                                     │
│  🧠 状态:头脑清晰!反应迅速!随时准备接受新任务!                    │
└─────────────────────────────────────────────────────────────────────┘

小李再次输入:“帮我写购物车功能”。

这一次,Claude 的响应速度快了很多,代码质量也恢复了最初的水平。它没有再提登录模块,而是专注地分析购物车需要的文件,写出了干净、准确的代码。

那一刻,小李明白了: /clear 不是“清屏”,而是给 AI 的大脑做了一次彻底的“认知重启” ——清理掉所有累积的对话历史,但保留项目的核心记忆(CLAUDE.md 等配置文件)

二、实现原理篇:/clear 到底做了什么?

2.1 会话持久化机制

在深入 /clear 的实现之前,先要理解 Claude Code 是如何存储对话的。

CLAUDE 的大脑存储系统

💾 硬盘存储(~/.claude/sessions/)
│
├── 📁 projects/
│   ├── 📁 /home/lai/my-project/          (按项目绝对路径存储)
│   │   ├── 📄 transcript_2026-04-01.jsonl  (会话1)
│   │   ├── 📄 transcript_2026-04-02.jsonl  (会话2)
│   │   └── 📄 ...
│   └── 📁 /home/lai/another-project/
│       └── ...
│
└── 📄 history.jsonl   (全局历史汇总)

Claude Code 使用 JSONL 格式来存储对话——每一行是一个 JSON 对象,代表一条消息。这种方式支持高效的增量写入,不会因为追加一条消息就要重写整个文件。所有会话都会保存在 ~/.claude/projects/ 目录下,按项目路径分类存储

2.2 /clear 的内存级操作

当你在交互界面中输入 /clear 时,背后发生的事情不是删除硬盘上的文件,而是在内存级别做了一次“软重启”:

// 伪代码:Claude Code /clear 命令的核心实现逻辑

class ConversationManager {
    // 内存中的对话消息数组
    private messages: Message[] = [];
    private systemPrompt: string;
    private claudeMdContent: string;      // CLAUDE.md 内容
    private toolDefinitions: Tool[];      // 工具定义
    private projectContext: Context;      // 项目上下文
    
    /**
     * /clear 命令的处理函数
     * 效果:清空对话历史,但保留项目长期记忆
     */
    async handleClearCommand(): Promise<void> {
        // 1. 记录当前会话到持久化存储(可选,让用户可以选择保留)
        //    -- 但不清除硬盘上的历史文件
        this.archiveCurrentSessionIfNeeded();
        
        // 2. 清空内存中的对话消息数组——这是核心!
        //    释放所有对话占用的 token 空间
        this.messages = [];                    // ← 灵魂所在!
        
        // 3. 重新加载系统提示词
        this.loadSystemPrompt();
        
        // 4. 重新注入 CLAUDE.md 内容——项目记忆不丢失
        //    Claude 会重新读取 ~/.claude/CLAUDE.md 和 ./CLAUDE.md
        this.claudeMdContent = this.loadClaudeMdFiles();
        
        // 5. 重新加载工具定义
        this.loadToolDefinitions();
        
        // 6. 重新加载项目上下文(工作目录、Git 状态等)
        this.loadProjectContext();
        
        // 7. 向用户显示清理完成的消息
        this.displayConfirmation("✨ 对话历史已清空,CLAUDE.md 等配置已保留");
        
        // 8. 等待用户的新输入——随时准备战斗
        this.waitForUserInput();
    }
    
    // 注意:硬盘上的历史文件(~/.claude/projects/.../transcript_*.jsonl)
    // 不会被 /clear 删除。它们保留了完整的历史记录,以便你后续用
    // claude --resume 恢复查看[reference:13]。
}

上面的代码中,第 3 步的 this.messages = [] 是整个命令的核心——它清空了内存中累积的所有对话消息。从这一刻起,Claude 的“短期记忆”被彻底重置,相当于一个全新的会话开始了。

2.3 保留什么?不保留什么?

/clear 会“记住”的(保留):

保留项说明
CLAUDE.md 文件项目级别的长期记忆,Claude 会重新读取
文件系统访问权限Claude 仍然可以读写项目文件
工具定义读文件、写文件、执行命令等能力不变
工作目录你当前的项目路径
Git 状态版本控制信息

/clear 会“忘记”的(清除):

清除项说明
所有对话历史你问过什么、Claude 回答过什么——全部清空
文件读取记录Claude 之前读过哪些文件
命令执行记录之前运行过的命令及其输出
失败的尝试那些死胡同里的错误信息和被废弃的方案
旧任务的上下文之前任务的全部上下文信息

简单来说: /clear 清空的是“短期对话记忆”,保留的是“长期项目记忆”

三、时序图:/clear 的完整调用过程

下图展示了用户输入 /clear 后,Claude Code 内部各个模块之间的完整交互流程:

clear .png

时序图中的关键环节解读:

  1. 解析与路由:用户在 CLI 界面输入 /clear 后,界面解析器识别出这是一个内置斜杠命令,将其路由到 CommandHandler
  2. 清空内存消息数组ConversationManager.clearConversationHistory() 执行核心操作——this.messages = []。这是最关键的步骤,释放了所有对话历史占用的内存空间。
  3. 重新加载记忆文件:Claude 会重新读取 CLAUDE.md 文件(包括用户级和项目级的),确保项目的长期记忆得以保留并重新注入。
  4. 重新加载工具定义:读文件、写文件、执行命令等工具的配置被重新加载,确保工具功能不受影响。
  5. 重置上下文状态:将整个对话上下文恢复到“全新会话”的状态,等待用户输入新消息。
  6. 持久化不受影响:硬盘上的历史记录(~/.claude/sessions/ 目录下的 JSONL 文件)不会被删除,用户仍可用 claude --resume 恢复之前的会话

四、最佳用法篇:把 /clear 变成你的超级习惯

4.1 核心原则:什么时候用 /clear?

使用场景为什么需要 /clear
🔄 切换到完全不同的任务时登录模块 → 商品管理 → 购物车,不同任务混在一起会让 Claude 混乱
🐛 修复完 Bug,准备写新功能时调试时的失败尝试、错误信息会污染新任务的上下文
🤖 Claude 开始“变笨”或“幻觉”时当 Claude 开始胡言乱语、忘记关键指令时,说明上下文已经污染了
📊 /context 显示使用率超过 85% 时超过 85% 的性能悬崖,再拖下去效果只会更差
💬 对话超过 50 轮时即使没有明显问题,长对话也累积了大量 token,建议清理

4.2 实战工作流:高手的“清理节奏”

┌─────────────────────────────────────────────────────────────────────┐
│                    高手的 /clear 工作流                               │
├─────────────────────────────────────────────────────────────────────┤
│                                                                     │
│  任务 A (登录模块)              任务 B (购物车)         任务 C (测试) │
│  ┌─────────────┐               ┌─────────────┐        ┌───────────┐ │
│  │ 启动会话    │               │ 启动会话    │        │ 启动会话  │ │
│  │     ↓       │               │     ↓       │        │    ↓      │ │
│  │ 实现登录    │               │ 实现购物车  │        │ 写测试    │ │
│  │     ↓       │               │     ↓       │        │    ↓      │ │
│  │ ✅ 完成     │               │ ✅ 完成     │        │ ✅ 完成   │ │
│  │     ↓       │               │     ↓       │        │    ↓      │ │
│  │  /clear    │ ◄──────────────│  /clear    │        │  /clear   │ │
│  └─────────────┘               └─────────────┘        └───────────┘ │
│                                                                     │
│  💡 核心洞察:每个独立任务结束后,立即 /clear!                        │
│     别让上一个任务的“认知垃圾”污染下一个任务![reference:22]           │
└─────────────────────────────────────────────────────────────────────┘

4.3 常用配套命令速查表

Claude Code 的会话管理不是只用 /clear 一把锤子,而是需要一整套工具箱协同工作:

命令作用使用时机
/clear完全清空对话历史,全新开始切换完全不同任务时 / 上下文超过 85%
/compact压缩历史为摘要,保留关键信息不想完全清空但需要释放空间 / 使用率 70%-85%
/context可视化显示当前上下文使用情况定期检查 token 分布,找到“元凶”
/cost查看当前会话消耗的 token 和费用关注预算消耗
/rewind回退到之前的检查点AI 改错了代码,快速撤销
/resume恢复之前的会话需要回到某个历史会话继续工作
claude -c启动时恢复上一次对话次日继续昨天未完成的工作
claude --resume打开会话选择器,选择历史会话从多个历史会话中挑选一个恢复

4.4 一个容易被忽视的重要细节:任务完整性

这是资深用户心照不宣的黄金法则:

在完成一个完整任务之前,千万不要执行 /clear

为什么?因为 /clear 会彻底抹掉 Claude 对当前任务的所有“记忆” ——它已经不记得这个任务的背景、已经写了哪些代码、为什么要这么写。如果你在一个任务做到一半时执行了 /clear,Claude 会“失忆”,你需要从头开始解释整个任务背景。

所以正确的节奏是:任务完整 → /clear → 下一个任务 → /clear → 再下一个,形成一个清晰的“任务-清理-任务”循环。

4.5 与 /compact 的区别:什么时候用哪个?

很多新手搞不清楚 /clear 和 /compact 的区别。简单来说:

对比维度/clear/compact
对话历史完全清空压缩为摘要,保留核心信息
Token 释放100%(对话部分全部释放)部分释放
是否丢失上下文丢失所有对话细节保留关键决策和上下文
适合场景任务完全切换同一任务内上下文过长

使用建议:超过 70% 用 /compact,超过 85% 用 /clear

4.6 高级技巧:用启动参数直接开新会话

如果每次都要先打开 Claude Code 再输入 /clear 才能开始新任务,效率还可以更高。试试这个:

claude "帮我写出所有 TODO 注释,为每个创建 GitHub issue"

这条命令会用一个干净的上下文启动一个全新会话,没有任何历史对话的干扰。当你养成了“把 Claude Code 当作可以随时运行的命令”这个习惯后,效率提升会非常明显

五、总结:/clear 的核心心智模型

把 Claude Code 想象成一个真正的开发者伙伴

  • 短期记忆(上下文窗口)  = 他此刻的“思考焦点”。它有限、会过期、需要定期刷新。
  • 长期记忆(CLAUDE.md)  = 他对整个项目的“深刻理解”。项目规范、代码风格、架构决策——这些永远不会丢。
  • /clear = 你对他说:“忘了刚才讨论的那些细节吧,我们重新聚焦到当前任务上来。”

高手和普通用户的分水岭,往往不在于谁写出了更复杂的提示词,而在于谁更懂得管理上下文。每一次 /clear,都是一次认知重启。每一次认知重启,都让 Claude 以最佳状态迎接下一个任务。

你手中的 /clear,就是 AI 世界的重启键。善用它。🧠✨