dsh-lightvela:把 LightVela OpenAI 兼容网关接入 DSH 模型 Provider

前言

在 DeepSeek Harness(DSH)里跑智能体时,模型通常通过各家的 provider 插件注册到内核。若上游是 LightVela 这类 OpenAI 兼容网关,自己写 HTTP 转发、处理 SSE、对齐 StreamChunk 格式,还要在 401、429、402 时换 key,工作量不小。社区插件 dsh-lightvela(维护者 bob868335-rgb)走 Magpie 式接入:自包含注册 provider、自动发现模型、流式转发,并支持多 API key 失败自动切换。分类为「模型推理」,适合已在 DSH 生态里、希望把 LightVela 当统一模型入口的开发者。

这是什么

dsh-lightvela 把 LightVela 的 OpenAI 兼容 API 接到 DSH 的 ctx.llm.registerAdapter 契约上,不直接依赖 @deepseek-ai/* 包,内核换版时由结构化契约承接。安装并重载后,模型选择器会出现独立的 LightVela 分组(provider 名固定为 lightvela,不混进 Magpie 组)。当前 package 版本为 0.2.0,许可证 MIT。

核心功能

下面按 README 已写明的能力归纳,不超出资料范围。

多 key 账号池与切换

配置 accounts 时可指定 failover(默认)或 round-robin。仅在响应码阶段换号(尚未输出 chunk),避免半截流重复。常见上游响应与处理如下:

上游响应 处理
402 / quota / 额度类 该号冷却后换下一个
429 按 retry-after 或 rateLimitCooldownMs 冷却后换号
401 / 403 熔断后换号
网络错误 / 5xx 短暂冷却后换号
400 等请求错误 不换号,直接报错

全部不可用时报 NO_ACCOUNT。

模型发现与流式转发

对 GET {baseURL}/models 拉目录,支持白名单与 fallbackModels;发现失败可沿用上一次有效目录。对话走 POST {baseURL}/chat/completions,SSE 转为 DSH StreamChunk,包含 reasoning_content、tool_calls、usage。maxTokens 同时约束单次 max_tokens 与默认输出上限(积分感知)。

用量工具

注册工具 lightvela_usage,读取上游 billing 路由汇报已用额度与账号状态。资料注明:上游只提供「已用」,剩余积分需在 LightVela 控制台「套餐与费用」查看。

安装与启用

插件以当前 dsh 进程权限运行;安装前建议浏览仓库源码与 LICENSE。官方安装方式有三种(均需指定 profile):

# 方式一:直接从本仓库
dsh plugin --profile <你的profile> add github:bob868335-rgb/dsh-lightvela

# 方式二:下载 Release 里的 tarball
#   https://github.com/bob868335-rgb/dsh-lightvela/releases
dsh plugin --profile <你的profile> add file:/绝对路径/dsh-lightvela-0.2.0.tgz

# 方式三:本地目录
dsh plugin --profile <你的profile> add link:/绝对路径/dsh-lightvela

装完后重载一次或重启 dsh,即可在模型选择器中看到 LightVela 分组。

典型配置

配置写在 cordis.patch.yml 的 config 块,或用 dsh 配置编辑器修改。

单账号

config:
  baseURL: https://token.lightvela.com/v1
  apiKeyRef: LIGHTVELA_API_KEY   # 或直接 apiKey: 'sk-...'
  maxTokens: 8192
  models: [auto]

多账号自动切换

config:
  baseURL: https://token.lightvela.com/v1
  accounts:
    - label: 主账号
      apiKey: 'sk-aaaa'
    - label: 备用账号
      apiKey: 'sk-bbbb'
    - label: 环境变量里的号
      apiKeyRef: LIGHTVELA_BACKUP_KEY
  strategy: failover          # failover(默认)| round-robin
  rateLimitCooldownMs: 60000
  quotaCooldownMs: 1800000

配置了非空 accounts 后,顶层 apiKey / apiKeyRef 会被忽略。

API key 优先级(高到低):config.apiKey 或 accounts[].apiKey → credentials 里 apiKeyRef → 环境变量 apiKeyRef(如 LIGHTVELA_API_KEY)。仓库不含真实 key,patch 里仅为占位引用。

模型选择与子代理

/v1/models 常见项包括 auto、deepseek-v4-pro-202606 等。auto 为路由器,由网关决定实际模型,资料说明其没有触发模型级 60 RPM 限制;deepseek-v4-pro-202606 有模型级 60 RPM,密集调用可能 429。

子代理若要使用 LightVela,需在 profile 的 subagent-model-selection-settings.allowedModels 中增加例如:

- provider: lightvela
  model: auto

推理模型可按需配置 reasoningEfforts、defaultReasoningEffort。

适用场景与注意

适合:已在 DSH 中开发智能体,希望通过 LightVela 统一对接 OpenAI 兼容模型,且需要多 key 容灾、自动模型目录与标准流式语义的场景。

注意:

  • DSH 插件生态以「一切皆插件」为理念;SkillHub 目录页 为社区站点,与 DeepSeek / 幻方无官方从属关系。
  • 流空闲上限等可调字段见 README 配置表(如 streamIdleTimeoutMs 默认 300000)。

结尾

dsh-lightvela 把 LightVela 网关以零内核耦合方式纳入 DSH,补齐多账号切换、模型发现、SSE 转 StreamChunk 与用量查询工具,减少自研 provider 的重复劳动。

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

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

Xiaoye