dsh-provider-copilot:将 GitHub Copilot 接入 DeepSeek Harness

前言

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 或幻方研究院无官方隶属关系。开发者在使用前应检查源码以确认符合项目要求。

羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜