Skip to content

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
    }
  }
}
配置项类型说明默认值
enabledboolean是否启用自动清理true
maxAgestring最长保留时间,如 "24h""7d""4w""30d"
maxCountnumber最多保留会话数,超出时删除最旧的无限制
minRetentionstring安全下限:比此值新的会话不会被自动清理"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 继续任务,它会根据上下文继续工作。