Skip to content

会话管理

Gemini CLI 包含强大的会话管理功能,可以自动保存你的对话历史。这允许你中断工作并从上次离开的地方继续,查看过去的交互,并有效地管理你的对话历史。

自动保存

每次你与 Gemini CLI 交互时,你的会话都会自动保存。这在后台进行,无需任何手动干预。

  • 保存内容: 完整的对话历史,包括:
    • 你的提示和模型的响应。
    • 所有工具执行(输入和输出)。
    • Token 使用统计(输入/输出/缓存等)。
    • 助手的思考/推理摘要(如果可用)。
  • 位置: 会话存储在 ~/.gemini/tmp/<project_hash>/chats/
  • 范围: 会话是项目特定的。切换到不同项目的目录将切换到该项目的会话历史。

恢复会话

你可以恢复之前的会话,以继续对话并恢复所有先前的上下文。

从命令行

启动 CLI 时,可以使用 --resume(或 -r)标志:

  • 恢复最新:

    bash
    gemini --resume

    这会立即加载最近的会话。

  • 按索引恢复: 首先列出可用会话(参见列出会话),然后使用索引号:

    bash
    gemini --resume 1
  • 按 ID 恢复: 你也可以提供完整的会话 UUID:

    bash
    gemini --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890

从交互界面

当 CLI 运行时,你可以使用 /resume 斜杠命令打开会话浏览器

text
/resume

这会打开一个交互界面,你可以:

  • 浏览: 滚动浏览过去会话的列表。
  • 预览: 查看会话日期、消息数量和第一个用户提示等详情。
  • 搜索:/ 进入搜索模式,然后输入以按 ID 或内容过滤会话。
  • 选择:Enter 恢复选定的会话。

管理会话

列出会话

要从命令行查看当前项目所有可用会话的列表:

bash
gemini --list-sessions

输出示例:

text
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]

删除会话

你可以删除旧的或不需要的会话以释放空间或清理历史记录。

从命令行: 使用 --delete-session 标志加索引或 ID:

bash
gemini --delete-session 2

从会话浏览器:

  1. 使用 /resume 打开浏览器。
  2. 导航到要删除的会话。
  3. x

配置

你可以在 settings.json 文件中配置 Gemini CLI 如何管理你的会话历史。

会话保留

为防止历史记录无限增长,你可以启用自动清理策略。

json
{
  "general": {
    "sessionRetention": {
      "enabled": true,
      "maxAge": "30d", // 保留会话 30 天
      "maxCount": 50 // 保留最近 50 个会话
    }
  }
}
  • enabled:(布尔值)会话清理的主开关。默认为 false
  • maxAge:(字符串)保留会话的时长(例如 "24h"、"7d"、"4w")。超过此时间的会话将被删除。
  • maxCount:(数字)要保留的最大会话数。超过此数量的最旧会话将被删除。
  • minRetention:(字符串)最小保留期(安全限制)。默认为 "1d";比此期限更新的会话永远不会被自动清理删除。

会话限制

你还可以限制单个会话的长度,以防止上下文窗口变得过大和昂贵。

json
{
  "model": {
    "maxSessionTurns": 100
  }
}
  • maxSessionTurns:(数字)单个会话中允许的最大轮次(用户 + 模型交换)。设置为 -1 表示无限制(默认)。

    达到限制时的行为:

    • 交互模式: CLI 显示信息消息并停止向模型发送请求。你必须手动开始新会话。
    • 非交互模式: CLI 以错误退出。

aicodex 文档网站