Craft Agents一键连接GitHub Copilot:设备码OAuth认证流程详解 📅 发布时间:2026/8/31 19:40:09 👁 浏览次数: Craft Agents一键连接GitHub Copilot设备码OAuth认证流程详解【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-oss本文面向新手用户详解开源项目Craft Agents一个可连接多种大模型的桌面智能体应用如何一键连接 GitHub Copilot并完整拆解其背后的设备码 OAuth 认证流程——从点击按钮到令牌安全落盘全程无需手动填写 API Key10 分钟内即可上手。一、为什么桌面应用偏爱“设备码”认证传统 OAuth 认证要求应用内置一个重定向回调地址来接收授权码这对浏览器网站很方便但对桌面应用来说却有两个痛点密钥安全隐患把 OAuth Client ID 和密钥打包进桌面安装包任何人都能反编译提取️环境不友好服务器、无头设备、远程桌面上未必有可用的本地浏览器回调端口。设备码流程Device Code Flow正是为解决这些问题而生应用先向 GitHub 申请一个“一次性验证码”用户在自己设备的浏览器里登录 GitHub 并输入该码桌面应用则在后台静默轮询等待授权结果。整个过程应用不保存任何 GitHub 密码或密钥授权页面打开在用户自己的浏览器里凭证不会经过应用内存中转即使用户没有图形界面也可以在手机浏览器里完成授权。二、一键连接 GitHub Copilot最快操作步骤Craft Agents 把上述流程做成了三步走的向导式体验位于应用的新手引导Onboarding流程中第 1 步选择模型服务商在 OnboardingWizard.tsx 引导页中选择GitHub Copilot作为模型服务商。应用已内置其服务商元数据参见 provider-metadata.ts。第 2 步点击“用 GitHub 登录”进入凭证步骤后界面会显示“连接到 GitHub”的说明并提供一个带外链图标的按钮。点击后桌面端会自动唤起系统默认浏览器跳转到 GitHub 的设备授权页界面上同时展示一个大号等宽字体设备码如ABCD-1234样式并自动复制到剪贴板点击即可再次复制还会显示“已复制到剪贴板”的确认提示。这一整套交互实现在 CredentialsStep.tsx 中设备码状态由 useOnboarding.ts 统一管理。第 3 步浏览器中确认授权在浏览器里登录你的 GitHub 账户粘贴刚才的设备码点击“授权”。桌面应用界面会从“等待授权中…”变为绿色的Copilot 已连接提示全程无需手动刷新。✅三、设备码 OAuth 认证流程原理详解下面用一张文字时序图拆解幕后发生了什么核心实现位于 llm-connections.ts阶段发生位置做了什么① 发起流程服务端收到copilot:startOAuth请求先中止上一个未完成的流程防止重复认证再启动 Pi SDK 的loginGitHubCopilot登录器② 下发设备码服务端 → 客户端GitHub 返回userCode用户可见码和verificationUri授权页地址服务端通过copilot:deviceCode事件推送给客户端并顺带唤起系统浏览器③ 用户授权用户浏览器用户在 GitHub 页面登录并输入设备码④ 轮询换取令牌服务端SDK 在后台轮询 GitHub 令牌端点直到检测到用户已授权⑤ 令牌落盘服务端调用凭据管理器把三个令牌安全保存返回success: true几个值得新手注意的设计细节幂等防护服务端用一个全局的AbortController追踪进行中的流程重复点击“连接”会自动取消旧流程避免两个设备码互相打架见 llm-connections.ts。协议即契约所有交互都走统一的 RPC 通道如copilot:startOAuth、copilot:cancelOAuth、copilot:getAuthStatus、copilot:logout定义在 channels.ts客户端只需订阅设备码回调即可见 types.ts。订阅等级自适应设备码流程顺带完成了一次关键的“Copilot 令牌交换”能自动识别你的订阅类型个人版 / 企业版等并匹配正确的 API 端点用户无需任何额外配置。四、认证完成后令牌如何安全存储与续期授权成功后服务端会保存三个关键字段llm-connections.ts字段含义有效期accessTokenCopilot API 令牌内含正确的接入端点信息短效约 1 小时refreshTokenGitHub 访问令牌用于静默刷新上面的令牌长效expiresAt过期时间戳—凭据统一交由 凭据管理器 落盘管理而不是散落在明文配置里。得益于短效令牌 自动刷新机制日常使用时你完全感觉不到认证的存在——令牌到期前会自动用刷新令牌换新这也是“一键连接长期免维护”体验的底层保障。五、状态查询、取消与登出三个实用操作查询是否已连接调用copilot:getAuthStatus即可返回authenticated布尔值界面据此决定显示“连接”还是“已连接”徽章llm-connections.ts。中途反悔在浏览器授权前点击取消会触发copilot:cancelOAuth服务端立即中止轮询不会留下“僵尸流程”。彻底登出copilot:logout会清除该连接名下的全部凭据之后再连接即视为全新流程llm-connections.ts。六、FAQ 常见问题Q1设备码可以粘贴到多个账户的浏览器里吗可以输入但只有第一个完成授权的设备码生效应用侧也通过流程互斥机制保证同一时间只有一个有效流程。Q2为什么我的浏览器没有被自动打开应用会尽力唤起系统浏览器如果安全策略拦截了自动打开可手动前往 GitHub 的设备登录页输入设备码认证结果一样。Q3一小时后令牌过期我会掉线吗不会。短效令牌由刷新令牌自动续期除非你主动登出或 GitHub 侧撤销授权。Q4这套流程支持 GitHub Enterprise 吗当前登录器默认面向 github.com企业域名输入被置空处理后续可在 connection-setup-logic.ts 相关的连接配置中观察连接如何被装配。七、延伸阅读源码导航清单模块路径Copilot OAuth 服务端处理llm-connections.tsRPC 通道定义channels.ts设备码事件协议events.ts引导页凭证步骤 UICredentialsStep.tsx引导流程状态 HookuseOnboarding.ts凭据管理器manager.ts服务商元数据provider-metadata.ts总结Craft Agents 用标准的设备码 OAuth 模式把“连接 GitHub Copilot”简化成了选服务商 → 点登录 → 输验证码三步。对用户是零配置的顺畅体验对开发者则是一套可复用的安全认证范本——不暴露密钥、令牌短效自动续期、流程可随时取消与重放。【免费下载链接】craft-agents-oss项目地址: https://gitcode.com/GitHub_Trending/cr/craft-agents-oss创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考