自动管理 CLI runtime
区分随包 runtime、Python 下载、Go 与 Java 的独立 CLI,并管理本机会话。
多数本机应用可以让 SDK 负责匹配 runtime 版本、启动 CLI 子进程并通过 stdio 通信。使用默认 new CopilotClient() 时,通常无需手工写 CLI 路径。
各语言的分发差别
| SDK | runtime 来源 |
|---|---|
| Node.js、.NET | CLI 作为 SDK 依赖随包提供 |
| Python | 推荐安装后下载匹配 runtime 并缓存;首次使用可自动下载作为后备 |
| Go | 不自动附带 CLI;无显式路径时先尝试嵌入的 CLI,再查 PATH |
| Java | 不随包或自动嵌入 CLI;需单独安装、指定路径或连接运行中的服务 |
| Rust | 快速开始要求准备 CLI,或采用该语言的应用级打包能力;具体打包步骤以对应 README 为准 |
Python 的预下载命令:
python -m copilot download-runtimeGo 可以用官方 bundler 在构建时嵌入 CLI,或设置 COPILOT_CLI_PATH、提供显式 Connection。Java 可用 setCliPath(...) 指定二进制,或 setCliUrl(...) 连接外部服务。
官方 setup 总览把 Python 概括为自动包含 CLI,专门 bundled CLI 页面则明确“推荐预下载,首次使用后备下载”;分发规划应按后者处理,尤其是禁止启动时联网的部署。
选择认证方式
默认使用已登录用户凭据。也可给 runtime 提供 COPILOT_GITHUB_TOKEN 等环境变量,或在会话中配置自有模型 provider。SDK 的 BYOK 可完全绕过 GitHub Copilot 认证,与要求 GitHub 登录的桌面应用 BYOK 不同。
多用户桌面应用应围绕实际用户身份创建客户端和会话,不能把发行者个人令牌作为所有用户的默认凭据。服务部署详见多租户配置。
命名会话与状态
需要恢复聊天时,在 createSession 中提供应用生成的 sessionId,以后使用 resumeSession(sessionId)。这些教程中的默认本地状态位置为 ~/.copilot/session-state/{sessionId}/;自定义 runtime base directory 后应按新的根目录查找。
不要把“不指定 sessionId 的临时使用方式”直接理解为绝不写任何磁盘状态。断开、恢复与删除是不同生命周期操作,后端必须根据产品保留策略管理。
何时覆盖默认方式
要固定独立 CLI 版本时使用本地 CLI;要独立管理长期服务时使用后端连接;要避免子进程时评估实验性的进程内 runtime。