dsh-clinepass-deepseekv4.1:Cline Pass 接入 DeepSeek Harness 的钉选方案

前言

DeepSeek Harness (DSH) 的核心理念是「一切皆插件」。在使用 Cline Pass 作为网关代理时,一个常见需求是将流量钉死在 DeepSeek 官方渠道上,防止回退到其他路由。dsh-clinepass-deepseekv4.1 插件正是为此设计,它将 Cline Pass 集成进 DSH,通过本地拦截与响应校验,强制保证请求只通过 DeepSeek 上游。

核心功能

插件主要解决三个问题:路由配置、渠道钉选校验、用量监控。

  1. 路由与 Key 管理
    插件通过一个标准的 pi-ai provider profile 实现路由。API Key 不需要手动配置文件,直接在 DSH 的 设置 → 模型 界面填写即可。模型目录、地址等界面元素均由 DSH 原生提供,无需自写 UI。

  2. 用量条显示
    卡片上集成了用量监控,显示 5 小时、每周、每月三个时间窗口的剩余量。数据由 DSH 进程通过凭据库中的 Key 请求网关获取,挂载在同源路径上供浏览器读取,浏览器端无法直接接触到 Key。

  3. 端口与路径行为

    • 0.5.0 版本起:插件不再开启任何本地监听端口。
    • 0.7.0 版本起:为了供浏览器读取用量数据,插件在 DSH 的 HTTP 服务上注册了一条路径 /api/clinepass.usage,但进程内依然没有任何 Socket 监听。

工作原理

插件的核心逻辑分为请求注入、响应校验和提示词处理三个部分。

1. 请求注入与提示词处理

  • 钉选字段注入:虽然 Vercel AI Gateway 目前不再执行 providerOptions.gateway.only 字段,插件仍会在发出的请求体中保留该字段,以备将来网关行为变更。
  • 提示词模型名去前缀:网关要求 model 字段为 type/model 格式,而 DSH 的 catalog ID 本身不带前缀。插件会在提示词装配阶段,将模板中的 {{model}} 替换为完整的渠道 ID(如 cline-pass/deepseek-v4.1-flash),而不会影响网关请求体中的实际 ID。

2. 本地闸机制

这是插件最关键的部分。由于网关在 2026-09-22 之后的实测中不再执行 only 字段,插件在本地实现了拦截逻辑:

  1. 响应捕获:插件对 SSE 流式响应进行逐帧转发,但会扣留最后一帧 data: [DONE]。
  2. 裁决:在收到终止帧时,解析响应中的 routing 元数据(包括 finalProvider、resolvedProvider、modelAttempts 等),检查是否有非 DeepSeek 渠道的记录。
  3. 拦截与撤回:
    • 如果发现违规,插件会拒绝放行内容,导致本次调用作废,不会将内容装配进上下文,也不会触发工具调用。
    • 流式场景:采用「撤回」策略,即内容虽然显示过,但实际已作废。这避免了缓冲策略带来的 TPS(tokens per second)数据失真问题。
    • 非流式场景:读取完响应后直接判违规,返回 HTTP 400 错误。

3. 文案净化

为了防止渠道名被滥用(如将 context_length_exceeded 插入错误文案),插件对显示的渠道名做了过滤。只有符合特定形状且不含危险词根的名字才会写入错误文案,其他一律退回固定说法。

配置与用法

由于依赖 DSH 的内部行为,使用该插件无需编写复杂的安装脚本。

  1. 配置 Key
    在 DSH 界面进入 设置 → 模型,找到对应的 provider profile,填入 Cline Pass 的 API Key。

  2. 配置校验级别
    在 profile 的配置中设置 enforcement 参数:

    • strict(默认):拦截所有违规流量。
    • warn:仅告警,不拦截。
    • off:关闭校验,仅保留请求注入逻辑。
    # cordis.patch.yml 或配置文件中的相关段
    - id: clinepass
      config:
        enforcement: strict

注意事项

  1. 非官方与维护状态
    这是一个分享性质的快照项目,非长期维护。作者按 MIT 协议原样提供,不承诺跟进上游接口漂移。如果 DeepSeek Harness 改变其内部行为(例如 pi-ai 组件不再使用全局 fetch),插件会静默失效。

  2. 上游依赖风险
    插件依赖 DSH 的内部行为。如果上游改掉行为,插件不会报错,只是不再起作用。建议在使用前阅读源码确认依赖点。

  3. 版本差异
    事实显示 package.json 版本为 0.9.0,而 README 中有线索显示为 v4.1,使用时请以实际文件为准。

  4. Releases 页面为空
    维护者通过 RELEASING.md 流程发版,仅推 Tag,因此 GitHub Releases 页面可能为空,但这不影响插件的正常使用。

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

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

小夜