前言¶
DeepSeek Harness (DSH) 采用插件化架构,允许通过插件扩展模型提供商。开发者通常需要为不同的模型接口编写适配器。dsh-provider-copilot 插件解决了这一痛点,它将 GitHub Copilot 订阅转换为 DSH 原生的 LLM 提供商,使你能在 DSH 的统一模型选择器中使用 Copilot 模型,无需修改应用代码。
插件概览¶
dsh-provider-copilot 是一个将 GitHub Copilot 订阅桥接到 DSH 的插件。由 youngrock-labs 维护,采用 MIT 许可证。它作为一个 cordis 对象插件,通过 ctx.llm.registerAdapter 注册路由。
核心功能¶
该插件提供以下能力:
* 聊天补全(流式):支持流式响应。
* 模型列表:显示白名单与远程模型列表的交集。
* 推理流透传:支持将 delta.reasoning_content 转换为 DSH 的 reasoning 块,在 UI 中渲染为可折叠的“思考”行。
* 管理命令:提供 /copilot login | logout | status 命令。
* 可观测性:支持 JSONL 格式的日志记录,字段采用严格白名单。
安装与启用¶
使用 dsh plugin 命令安装该插件包。安装后,DSH 会自动发现并注册“Copilot (GitHub)”模型组,无需修改 DSH 源码。
# 安装
dsh plugin --profile <your-profile> add github:youngrock-labs/dsh-provider-copilot
安装后,重启 DSH 或重新加载配置文件以激活插件。插件会立即挂载,模型选择器中会出现“Copilot (GitHub)”分组。
典型用法¶
1. 命令行交互¶
插件注册了三个管理命令:
-
/copilot login
启动设备流程,打印验证 URL 和一次性代码。授权过程在后台完成。 -
/copilot status
显示当前凭据来源、过期时间、可用模型数量以及 P50/P95 延迟。 -
/copilot logout
清除缓存、内存和指标数据。
2. 程序化调用 (BYOK)¶
你可以通过编程方式使用 AuthManager、CopilotClient 和 CopilotProvider。
import { AuthManager, CopilotClient, CopilotProvider } from "dsh-provider-copilot";
const auth = new AuthManager({
byok: { kind: "github", token: process.env.MY_GITHUB_TOKEN! },
});
const client = new CopilotClient({
getBearer: async () => {
const s = await auth.getSession();
return { token: s.token, endpoints: { api: s.endpoints.api } };
},
});
const provider = new CopilotProvider({ client });
for await (const chunk of provider.stream({
model: "gpt-4o-mini",
messages: [{ role: "user", content: "hi" }],
})) {
if (chunk.type === "text") process.stdout.write(chunk.text);
}
注意事项与限制¶
- 非公开 API:插件使用
api.github.com/copilot_internal/v2/token进行令牌交换。该接口是非公开且不稳定的,GitHub 可能随时更改或撤销该端点。生产环境使用需自行承担风险。 - User-Agent 要求:HTTP 请求的 User-Agent 必须以
GitHubCopilot*开头。否则,服务器会返回 403 错误(看起来像认证错误)。 - 权限范围:设备流程的权限范围仅为
read:user,不会请求仓库、代码库或问题权限。 - 客户端 ID:插件内置了官方 VSCode Copilot Chat OAuth
client_id(Iv1.b507a08c87ecfe98)。生成的令牌仅用于用户自己的订阅。 - 不支持工具调用:该插件不实现工具或函数调用,这些功能明确不在范围内。
生态背景¶
DSH 的核心理念是“一切皆插件”。此插件托管在社区目录,与 DeepSeek 或幻方研究院无官方隶属关系。开发者在使用前应检查源码以确认符合项目要求。