Skip to main content

关于 GitHub Copilot 命令行界面 (CLI) 会话数据

你的 Copilot 命令行界面(CLI) 会话会形成一份可搜索的历史记录,记录你处理过的所有内容。 使用自然语言查询过去的会话、生成站立报告、获取个性化提示并恢复以前的工作。

介绍

每次使用 Copilot 命令行界面(CLI)时,会话数据都会记录在本地计算机上。 这包括提示、 Copilot响应、所使用的工具以及已修改的文件的详细信息。 默认情况下,会话数据也会同步到帐户 GitHub 。 这样,你就可以查询你过去的所有会话,包括来自 Copilot 命令行界面(CLI)、Copilot云代理、Copilot 代码评审、VS Code、JetBrains 以及 GitHub Copilot 应用 的会话。

该会话数据为多项功能提供支持,可在 Copilot 命令行界面(CLI)、VS Code、JetBrains、GitHub Copilot 应用 和 GitHub.com 中使用:

  • 查询会话历史记录:询问有关过去工作的自然语言问题,并将 Copilot 搜索会话数据以获取答案。
  • 继续会话:从之前的任意会话中上次离开的位置继续。
  • /chronicle斜杠命令:一组用于生成站立报告、个性化提示、成本分析和改进自定义指令的建议(全部派生自会话历史记录)的专用生成子命令。

使用用户范围的查询,只能查询自己的会话,其他人也无法访问会话数据。

此概念性文章介绍了会话数据的存储和同步方式,以及如何使用它来增强工作流。 有关如何恢复会话、查询Copilot CLI 会话以及使用/chronicle斜杠命令的实践指南,请参阅使用 GitHub Copilot 命令行界面 (CLI) 会话数据。 要从 VS Code 查询会话,请参阅 管理智能体会话

会话数据的存储方式

每个 Copilot 命令行界面(CLI) 会话都会作为一组文件保存在计算机上的 ~/.copilot/session-state/ 目录中。 每个会话的数据包含会话的完整记录。 这些文件允许你恢复交互式 CLI 会话。

除了会话文件, Copilot 命令行界面(CLI) 还在本地 SQLite 数据库中存储结构化会话数据,称为会话存储。 此数据是会话文件中存储的完整数据的子集。 会话存储是支持 /chronicle 斜杠命令的基础,它还允许 Copilot 回答你提出的有关你过去工作的任何问题。

会话同步

默认情况下,Copilot 命令行界面(CLI) 会将您的会话数据同步到您的 GitHub 账户。 这样,你就可以查询来自 Copilot 命令行界面(CLI)、VS Code、JetBrains、GitHub Copilot 应用 或 GitHub.com 的历史会话,其中还包括来自 Copilot云代理、Copilot 代码评审、VS Code 和 GitHub Copilot 应用 的会话。

可以通过在 CLI 设置 JSON 中设置 "remoteExport": false 来选择退出会话同步。 如果您选择退出,会话数据将保留在您的设备上,且您只能通过 Copilot 命令行界面(CLI) 查询这些数据。

对于 Copilot Enterprise 和 Copilot业务 用户,组织管理员必须将“在云中存储本地会话”策略设置为至少“从云查看”。 如果策略已禁用或未配置,则仅本地存储会话。

隐私和数据本地化

本地会话数据存储在 ~/.copilot/session-state/ 计算机中,只能访问该计算机上的用户帐户。

同步的会话数据存储在 GitHub 上,并与你的个人账户相关联。 默认情况下,只有你可以访问它。 组织和企业管理员控制是否通过“在云中存储本地会话”策略提供同步,但启用该策略不会让管理员访问会话数据。

可以选择共享单个会话,为有权访问存储库的其他人提供仅查看访问权限。 共享会话不会被编入其他用户的会话查询索引中。 有关详细信息,请参阅“管理智能体会话”。

Copilot 在询问有关过去交互的问题或使用 /chronicle 斜杠命令时读取会话数据。 会话数据(如以前的提示、上下文和响应)可能会发送到 AI 模型,就像在任何正常 Copilot 命令行界面(CLI) 交互中一样。

管理会话数据

你可以在本地和 GitHub.com 上管理会话数据。

  • 本地数据:若要在本地删除特定 CLI 会话的数据,请从 ~/.copilot/session-state/中删除相关的会话目录。 若要清除所有本地会话数据,请删除下 ~/.copilot/session-state/的所有内容。 执行此操作后,必须手动重新编制会话存储的索引。 请参阅本文后面的重新索引会话存储。 删除本地文件不会影响已同步到帐户的会话数据。 不能在本地删除同步的数据。
  • 同步的数据:可以从中删除或隐藏同步的 GitHub.comCLI 会话。 隐藏会话会将其从会话索引中删除,使其不再显示在查询结果中。 删除会话会将其从你在 GitHub.com 上的会话列表中移除。 删除操作适用于 CLI、VS Code 和 GitHub Copilot 应用 会话。

/chronicle斜杠命令

/chronicle斜杠命令提供用于从会话历史记录中生成见解的专用子命令,包括站立报告、个性化提示、成本分析和改进自定义说明的建议。 有关子命令和用法示例的完整列表,请参阅 使用 GitHub Copilot 命令行界面 (CLI) 会话数据

何时使用会话数据

  • 在一天开始时:运行 /chronicle standup last 3 days 以生成最近工作内容的摘要,而不是手动整理。
  • 定期进行级别提升:每周或两次运行 /chronicle tips ,以发现可能缺少的功能和工作流改进。
  • 当 Copilot 不断犯相同的错误时:运行 /chronicle improve 以识别模式并生成自定义指令,使代理对项目更有效。
  • 若要了解令牌使用情况:请运行 /chronicle cost tips 以查看令牌的运行位置,并获取降低成本的建议。
  • 若要搜索特定主题:运行 /chronicle search KEYWORD 以查找包含特定术语或主题的会话。 与自由形式的问题不同,此功能会直接在会话内容中搜索关键词,而不是从语义上理解你的查询。
  • 回顾过去的工作:问一个自由格式的问题,例如“我是否处理了与付款 API 相关的任何内容?” Copilot 将会搜索你的历史记录。
  • 要继续以前的工作:使用 copilot --continuecopilot --resume 来接续你之前的进度。

重新编制会话存储的索引

会话存储是在 CLI 会话期间以增量方式填充的。 会话的数据将写入到特定于会话的子目录中的 ~/.copilot/session-state/磁盘。 这也会在会话期间定期发生,并且会话结束时也会定期发生。

可以从磁盘上的会话文件重新编制会话存储的索引。 重新编入索引还会将您的会话数据同步到您的账户。

可能需要重新编制索引的情况包括:

  • 为旧会话编制索引:如果在会话存储存在之前创建的磁盘上有旧会话文件,则重新编制索引将使用这些会话中的数据填充会话存储。
  • 会话删除:如果要从历史记录中删除会话,可以删除会话目录,然后重新编制会话存储的索引。
  • 迁移/恢复会话:如果将会话文件移动到另一台计算机,或从备份还原它们,而不移动/还原会话存储文件(~/.copilot/session-store.db),则可以使用重新索引命令重新创建会话存储。
  • 文件损坏:如果会话存储文件 (~/.copilot/session-store.db) 损坏或意外删除,则可以从会话文件恢复会话存储。
  • 意外终止:如果会话由于崩溃或断电而意外终止,并且在内存中保存的数据尚未写入会话存储,如果这些数据在终止前已经写入到磁盘的会话文件中,您仍然可以用这些缺失的数据填充会话存储。

若要对会话存储重新编制索引,请使用交互式 CLI 会话中的以下斜杠命令:

Copilot prompt
/chronicle reindex

延伸阅读