第 13 期:Session 与 Session History

⏱ 预计阅读 4 分钟 更新于 2026/5/7
💡 进群学习加 wx: agentupdate
(申请发送: agentupdate)

本期核心:Session 是 Claude Code 的最小工作单元。理解它的边界,才能高效管理会话。


13.1 什么是 Session

Session 是一次完整的 Claude Code 会话。从启动到退出(或 /clear)。

flowchart LR
    A[启动 Claude Code] --> B[Session 开始]
    B --> C[对话交互]
    C --> D{用户操作}
    D -->|继续对话| C
    D -->|/clear| E["Session 重置
新 Session 开始"] D -->|退出 Claude Code| F[Session 结束] E --> C

13.2 Session 数据存储

每个 Session 有唯一 ID(UUID),所有数据存储在:

~/.claude/projects/-Users-eric-work-teachagent/
├── e437f4ea-...-ed7c.jsonl   ← 当前 session 的 transcript
├── e437f4ea-...-ed7c/         ← session 配置目录
├── ccadf395-...-9a50.jsonl   ← 上一个 session
└── memory/                    ← 持久化记忆(跨 session)

13.3 Session History(JSONL Transcript)

每个 session 的完整对话记录保存在 .jsonl 文件中:

{"type":"user","content":"读取项目",...}
{"type":"assistant","content":[{"type":"text",...},{"type":"tool_use","name":"Read",...}],...}
{"type":"tool_result","content":"文件全部内容...",...}

JSONL 文件就是上下文的完整内容 — 所有发给 API 的消息都记录在里面。

HUD 读取此文件获取工具活动、agent 状态、todo 进度等数据。


13.4 Session 与缓存的关系

flowchart TD
    subgraph "Session A"
        A1["请求1: 写缓存"] --> A2["请求2: 缓存命中"]
        A2 --> A3["请求3: 缓存命中"]
    end
    subgraph "Session B"
        B1["请求1: 缓存不存在"]
        B2["请求2: 重新写缓存"] --> B3["请求3: 缓存命中"]
    end
    A3 -->|"/clear 或新开"| B1

关键:缓存不跨 session。每次新 session 第一轮最贵。


13.5 Session 与 Memory 的区别

Session Memory
生命周期 单次会话 永久(直到手动删除)
存储 .jsonl transcript 文件 memory/ 目录下的 .md 文件
内容 完整对话 + 工具结果 关键决策、偏好、发现
跨会话 不保留 保留,新 session 自动加载
大小 可能几 MB 通常几 KB

下期预告:第 14 期讲解 Memory 系统——跨 Session 的持久化记忆是如何工作的。