Appearance
Gemini CLI 自动保存每次对话到 ~/.gemini/tmp/<project_hash>/chats/,按项目目录区分。用 gemini --resume 恢复最近一次会话,--resume <n> 或 --resume <id> 恢复特定会话,/resume 打开交互式浏览器。/resume save <tag> 创建命名检查点。默认保留 30 天,可在 settings.json 中自定义。
会话管理
Gemini CLI 自动保存所有对话历史,让你可以随时回到上次中断的地方继续工作。
自动保存
每次交互都会被实时录制,无需手动操作。
保存内容:
- 你的提示词和模型的回复
- 所有工具调用(输入和输出)
- Token 用量统计
- 代理的思考和推理摘要(如有)
存储路径:~/.gemini/tmp/<project_hash>/chats/
其中 <project_hash> 是基于项目根目录生成的唯一标识符,切换到不同项目目录时会自动切换到该项目的会话历史。
恢复会话
命令行方式
启动 Gemini CLI 时加 --resume(或 -r)标志:
bash
# 恢复最近一次会话
gemini --resume
# 按编号恢复(先用 --list-sessions 查看编号)
gemini --resume 1
# 按会话 ID 恢复
gemini --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890会话浏览器(交互式)
在 CLI 会话中输入 /resume 打开交互式浏览器:
| 操作 | 键位 |
|---|---|
| 上下浏览 | 方向键 |
| 搜索会话内容 | / 然后输入关键词 |
| 确认选择 | Enter |
| 退出浏览器 | Esc |
浏览器会显示每个会话的日期、消息数量和第一条用户 Prompt 预览。
命名检查点
在关键节点手动创建命名标签,方便按名称跳转:
bash
# 保存当前会话为命名检查点
/resume save my-decision-point
# 列出所有命名检查点
/resume list
# 恢复指定检查点
/resume resume my-decision-point
# 删除检查点
/resume delete my-decision-point/chat 命令是 /resume 的别名,两者功能完全相同。
查看所有会话
bash
# 从命令行列出当前项目的所有会话
gemini --list-sessions输出示例:
Available sessions for this project (3):
1. Fix bug in auth (2 days ago) [a1b2c3d4]
2. Refactor database schema (5 hours ago) [e5f67890]
3. Update documentation (Just now) [abcd1234]删除会话
bash
# 按编号删除(从命令行)
gemini --delete-session 2也可以在 /resume 浏览器中导航到目标会话,按 x 删除。
删除会话时,相关的实现计划、任务追踪记录、工具输出和活动日志也会一并清除。
配置会话保留策略
在 settings.json 中自定义保留规则:
json
{
"general": {
"sessionRetention": {
"enabled": true,
"maxAge": "30d",
"maxCount": 50
}
}
}| 配置项 | 类型 | 说明 | 默认值 |
|---|---|---|---|
enabled | boolean | 是否启用自动清理 | true |
maxAge | string | 最长保留时间,如 "24h"、"7d"、"4w" | "30d" |
maxCount | number | 最多保留会话数,超出时删除最旧的 | 无限制 |
minRetention | string | 安全下限:比此值新的会话不会被自动清理 | "1d" |
限制单次会话长度
防止单个会话的上下文窗口无限增长:
json
{
"model": {
"maxSessionTurns": 100
}
}达到 maxSessionTurns 限制时:
- 交互模式:显示提示信息,停止发送新请求,需要手动新建会话
- 非交互模式:以错误码退出
设为 -1 则不限制(默认)。
并行多会话(Git Worktrees)
同时处理多个独立任务时,可以结合 Git Worktrees 使用,每个工作树拥有独立的 Gemini 会话,避免任务之间相互干扰。
导出会话
将当前会话内容导出为文件:
bash
/resume share conversation.md # 导出为 Markdown
/resume share conversation.json # 导出为 JSON常见问题
Q: 不同项目的会话是分开存储的吗?
A: 是的。会话按项目根目录哈希隔离存储,切换到不同目录就切换到该目录的会话历史,完全独立。
Q: 命名检查点和自动保存的区别是什么?
A: 自动保存是每次交互后实时记录,会话浏览器里都能找到;命名检查点是你手动在特定时刻打的标签,方便按名称快速定位,适合标记关键决策节点。
Q: --resume 恢复会话后,上次未完成的任务会继续吗?
A: 会话历史(对话内容)会完整恢复,但工具执行状态不会自动续接。恢复后你需要重新指示 AI 继续任务,它会根据上下文继续工作。