Skip to content
FunCoding

Search

Search docs, Skills and MCP

自动管理 CLI runtime

区分随包 runtime、Python 下载、Go 与 Java 的独立 CLI,并管理本机会话。

This page has not been translated into English yet. The original Chinese version is shown below.

多数本机应用可以让 SDK 负责匹配 runtime 版本、启动 CLI 子进程并通过 stdio 通信。使用默认 new CopilotClient() 时,通常无需手工写 CLI 路径。

各语言的分发差别

SDKruntime 来源
Node.js、.NETCLI 作为 SDK 依赖随包提供
Python推荐安装后下载匹配 runtime 并缓存;首次使用可自动下载作为后备
Go不自动附带 CLI;无显式路径时先尝试嵌入的 CLI,再查 PATH
Java不随包或自动嵌入 CLI;需单独安装、指定路径或连接运行中的服务
Rust快速开始要求准备 CLI,或采用该语言的应用级打包能力;具体打包步骤以对应 README 为准

Python 的预下载命令:

python -m copilot download-runtime

Go 可以用官方 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。