本章总览
状态管理解决「谁持有真相」:对话存在哪、工具列表从哪来、权限规则如何跨 turn 保留。本章区分全局 bootstrap 状态与会话级 AppState。
总览图
渲染图表中…
学完本章你应该能
- 列出三层状态:全局 / 应用 / 文件缓存
- 理解 sessionStorage 持久化路径
- 知道改 state 会影响哪些 UI 组件
核心概念(先读懂这些)
AppState 是对话的中枢
messages、tools、mcpClients 等字段驱动 REPL 渲染。React Context(Ink) 向下传递,避免 prop drilling。
持久化与内存
sessionStorage 负责 crash-safe 写入磁盘;内存 AppState 负责实时交互。恢复会话时要 reconcile 二者。
建议学习步骤
- 对照状态层次图
- 找到 AppState.tsx 字段定义
- 思考:切换 model 改的是哪层 state
状态层次(组件图)
渲染图表中…
状态层次
bootstrap/state.ts 全局:sessionId, model, cwd
AppState.tsx 应用:messages, tools
FileStateCache 文件:已读文件快照
sessionStorage.ts 持久化:~/.claude/projects/
AppState 核心字段
| 字段 | 类型 | 说明 |
|---|---|---|
| messages | Message[] | 对话历史 |
| tools | Tools | 当前可用工具 |
| permissionContext | ToolPermissionContext | 权限规则 |
| mcpClients | MCPServerConnection[] | MCP 连接 |
本章小结与延伸
读 Agent 行为先找 state 在哪改;debug 会话问题先查 sessionStorage。 继续学习: