跳转到内容

会话管理

Gemini CLI 包含强大的会话管理功能,可以自动保存您的对话历史。这使得您可以在中断工作后,从上次离开的地方继续,回顾过去的交互,并有效地管理您的对话历史。

每次与 Gemini CLI 交互时,您的会话都会自动保存。这一过程在后台自动进行,无需任何手动操作。

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

您可以恢复以前的会话,以在恢复所有先前上下文的情况下继续对话。

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

  • 恢复最新会话:

    Terminal window
    gemini --resume

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

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

    Terminal window
    gemini --resume 1
  • 按 ID 恢复: 您还可以提供完整的会话 UUID:

    Terminal window
    gemini --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890

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

/resume

这将打开一个交互式界面,您可以在其中:

浏览: 浏览您过往会话的列表。 预览: 查看会话日期、消息计数和第一条用户提示词等详细信息。 搜索: 按下 / 进入搜索模式,然后输入以通过ID或内容过滤会话。 选择: 按下 Enter 恢复选定的会话。

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

Terminal window
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]

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

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

Terminal window
gemini --delete-session 2

从会话浏览器:

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

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

为防止您的会话历史无限制增长,您可以启用自动清理策略。

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

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

{
"model": {
"maxSessionTurns": 100
}
}

maxSessionTurns: (数字)在单个会话中允许的最大轮次(用户与模型交换)。设置为 -1 表示无限制(默认值)。

达到限制时的行为:

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