GitHub Copilot 编程 SDK
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/copilot-sdk。
技能介绍
要解决什么问题
如果你要在自有应用里调用 GitHub Copilot(而不是只在终端里敲 copilot),需要一套稳定的进程间协议、会话状态和多语言 API。Copilot SDK 通过 JSON-RPC 封装 Copilot CLI:CLI 仍负责模型调用、工具执行与 MCP 生命周期,你的代码只关心「客户端 → 会话 → 消息」这条主路径。
核心能力与用法
- 多运行时:Node.js、Python、Go、.NET 包名与 API 形态一致,典型流程是创建
CopilotClient、createSession/resumeSession,再sendAndWait或开启streaming订阅增量事件。 - 传输:默认 stdio(CLI 子进程管道,适合本地单进程);TCP 适合把 CLI 当无头服务、多客户端共享同一 CLI 实例。
- 扩展 Copilot 能力:用 JSON Schema 定义自定义工具;在
onPreToolUse/onPostToolUse等钩子里做权限(allow/deny/ask)、改参数、脱敏或注入上下文。 - MCP:可挂本地 stdio 或远程 HTTP MCP 服务器;集成前应用 MCP Inspector 单独测
tools/list,避免 stdout 被调试日志污染。 - 认证与 BYOK:凭据优先级从显式
githubToken、HMAC、环境变量到 CLI 已登录 OAuth;BYOK 可接 OpenAI、Azure、Anthropic、Ollama 等,但密钥不持久化,恢复会话须重配provider,且无自动刷新 bearer。 - 会话持久化:自定义
sessionId后状态落在~/.copilot/session-state/{sessionId}/(对话、工具结果、plan 等);API 密钥与内存工具状态不会跟着恢复。长对话可用infiniteSessions做自动压缩,替代 CLI 的/compact。
边界与注意点
SDK 不能替代 CLI 的交互 UI、斜杠命令、--share 导出、YOLO 等;导出与用量可改用 session.on() + getMessages() 或用量事件。权限模型默认拒绝,需实现 onPermissionRequest 等处理器。生产部署要规划会话清理、CLI 健康检查、密钥托管,以及多租户下「每用户单独 CLI」与「共享 CLI + sessionId」的隔离取舍。
使用场景
- 在自研 IDE 插件里用 Node SDK 创建会话并开启 streaming,把 Copilot 回复实时渲染到编辑器侧栏
- 多租户 SaaS 为每位用户分配 `user-{userId}-{taskId}` 会话 ID,进程重启后用 resumeSession 恢复代码助手对话
- 在工具执行前用 onPreToolUse 拦截写盘类工具,对敏感路径返回 deny 并附带 permissionDecisionReason
- 后端以 TCP 模式连接无头 Copilot CLI,让多个微服务 worker 共享同一 CLI 实例处理 sendAndWait 请求
适合人员
- 负责把 Copilot 嵌进公司内部开发平台、需要 Python/Go 统一会话 API 的平台后端工程师
- 做多租户代码助手产品、要在恢复会话时重配 BYOK provider 且不能持久化 API 密钥的 SaaS 架构师
- 维护企业 MCP 工具链、要把本地 stdio 或远程 HTTP MCP 挂进 Copilot 会话的安全与平台团队工程师
- 需要把 Copilot CLI 当无头服务部署在 K8s、并规划 session-state 挂载与会话 TTL 清理的 DevOps/SRE