跳转到主要内容

会话上下文与过滤

从 GitHub Copilot SDK v0.1.24 开始,会话中新增了包含工作目录和 Git 信息的上下文,可以在会话列表中进行过滤。

SessionContext

SessionContext 保存会话创建时的工作目录和 Git 仓库信息。

属性

  • cwd (string): 工作目录的绝对路径
  • gitRoot (?string): Git 仓库的根目录(在 Git 仓库之外为 null
  • repository (?string): GitHub 仓库(owner/repo 格式,如 invokable/laravel-copilot-sdk
  • branch (?string): 当前的 Git 分支名

使用示例

SessionListFilter

使用 SessionListFilter 可以只获取特定工作目录或仓库的会话。

属性

  • cwd (?string): 按工作目录完全匹配过滤
  • gitRoot (?string): 按 Git 根目录过滤
  • repository (?string): 按仓库(owner/repo 格式)过滤
  • branch (?string): 按分支名过滤

使用示例

用数组指定过滤器

使用 SessionListFilter 类

session.context_changed 事件

在会话过程中,如果工作目录发生变化,会触发 session.context_changed 事件。

事件类型

事件数据

事件数据包含更新后的上下文信息。

SessionMetadata

SessionMetadata 中新增了 context 属性。

新属性

  • context (?SessionContext): 会话的工作目录和 Git 信息

使用示例

实用示例

获取特定项目的会话

管理功能分支的会话

按工作目录整理会话

注意事项

  • 只有在 Git 仓库内创建的会话,context 才会包含 Git 相关信息(gitRootrepositorybranch)。
  • context 字段在 Copilot CLI v0.0.409 及以上可用。在旧版本上会返回 null
  • 过滤是完全匹配的方式工作。不支持部分匹配或通配符。
  • SessionListFilter 的所有字段都是可选的。不指定过滤器时会返回所有会话。
最新信息请参考 GitHub 仓库
最后修改于 2026年7月18日