全局状态(internal/state)
internal/state/global.go 维护进程级全局状态,通过 getter/setter 访问:
| 状态 | 说明 |
|---|---|
cwd | 当前工作目录 |
sessionID | 当前 session UUID |
isInteractive | 是否交互模式 |
mainLoopModelOverride | 模型覆盖(来自 --model 参数) |
SessionState(持久化)
internal/session/state.go 定义持久化到磁盘的 session 级状态:
type SessionState struct {
LastSummarizedMessageID string // 最后被 session memory 摘要的消息 UUID
PlanMode bool // plan mode 是否激活
InvokedSkills []string // 本 session 已触发的 skill 列表
}存储路径:<projectDir>/<sessionID>.state.json
对话历史(history)
internal/session/history.go 管理对话历史的持久化,支持 --continue 和 --resume 恢复上次会话。
历史文件存储在 .claude/ 目录(project dir),格式为 JSON。
Session ID
Session ID 是 UUID v4,在以下情况生成或复用:
- 新会话:自动生成
--continue:使用最近一次 session ID(state.GetMostRecentSessionID(cwd))--session-id/--resume:使用指定的 session ID
Plan Mode
SessionState.PlanMode 记录 plan mode 激活状态,通过 EnterPlanMode / ExitPlanMode tool 切换,持久化到 session state 文件,跨工具调用保持一致。
相关页面
- query-engine — 会话历史传入 RunParams.Messages
- compact — session_memory_compact 使用 LastSummarizedMessageID
- overview — —continue / —resume 参数