第 13 期:Session 与 Session History
💡 进群学习加 wx: agentupdate
(申请发送: 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 --> C13.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 的持久化记忆是如何工作的。