dsh-local-sub2api:在 DeepSeek Harness 里一键跑本地 Sub2API

前言

Sub2API 是一套可把多上游账号、分组和渠道统一转发的管理网关。单独部署通常要自备 Docker、数据库,还要自己记管理员账号。DeepSeek Harness(DSH)用户若只想在本机试路由、统计或 OpenAI 兼容转发,往往希望「打开 Harness 就能用」,而不是再维护一套公网或手工 compose。

下面介绍的 dsh-local-sub2api(维护者 LinJohn8,GitHub:LinJohn8/dsh-local-Sub2api)把 Sub2API 本地栈内嵌进 DSH:随 Harness 在本机拉起 Sub2API + PostgreSQL + Redis(官方 Docker 镜像,仅监听 127.0.0.1),左侧栏提供 Local Sub2api 入口,主面板 iframe 展示 Sub2API 原管理界面,并完成本地自动登录。上游账号、API Key 等仍在 Sub2API 界面里配置,插件不代填凭据。

这是什么

插件 id 为 local-sub2api,npm 包名 dsh-local-sub2api,当前资料中版本为 1.0.0,许可证 MIT。它不实现 Sub2API 业务逻辑,而是编排本机 Docker 栈、内嵌 Web 控制台,并可选把 Harness 里已有的 OpenAI 兼容厂商自动登记为 Sub2API 上游账号。

核心功能

资料中确认的能力包括:

  • 打开 DSH 时可自动准备并启动本地 Sub2API(可通过设置或 YAML 关闭自动启动)。
  • Docker Desktop 未运行时尝试自动启动,并等待引擎就绪(依赖 WSL2 后端)。
  • 侧栏 Local Sub2api 按钮;运行中则在主面板内嵌 Sub2API 管理界面。
  • 插件生成本地管理员并调用 Sub2API 登录接口注入会话,打开即已登录,无需公网服务器。
  • 面板状态栏:运行状态、刷新、停止、重启、在系统浏览器中打开。
  • 中英文文案;跟随 Harness 浅/深色主题偏好(内嵌页以 Sub2API 自身样式为主)。
  • 服务只绑定本机回环,不对外网开放。
  • model-vendor adapter:栈就绪后可自动把已有 OpenAI 兼容厂商(如皮卡丘中转、DSh Our Free Model、Qoder 中国版免费 Qwen3.8-Flash)作为上游接入 Sub2API。

Sub2API 内的账号、分组、密钥、模型广场、日志等原有功能均保留;runMode: simple 时隐藏多用户/SaaS/计费相关界面,适合本机单人使用。

环境要求

  • Windows,且已安装 Docker Desktop(WSL2 后端;插件会检查并尝试启动 Docker)。
  • 首次启动需从 Docker Hub 拉取镜像(资料称约 250 MB,视网络而定)。
  • 本机端口 18080(Sub2API)与 18081(供内嵌面板的本地代理)须可用;proxyPort 被占用时会自动顺延,状态栏会显示实际端口。
  • 日常启动多为数秒到数十秒。

安装与启用

已抓取 README 未给出 dsh plugin add … 一类 CLI 安装语句。可按社区目录页 skillhub.cn 插件条目 或 GitHub 仓库说明,在 Harness 的插件 / Plugins 页面安装并启用;停用与移除也在该页面完成(移除后容器不会自动删除,需按后文自行 docker compose down)。

安装后,插件通过 cordis.patch.yml 注册客户端注入(@deepseek-ai/dsh-client-ui-layout 等),侧栏即可出现入口。

在 cordis.patch.yml(例如 C:\Users\86158\.dsh\cordis.patch.yml 或对应 profile 下的同名文件)中可覆盖同 id 配置:

- id: local-sub2api
  config:
    autoStart: false           # 随 Harness 自动启动本地服务(默认关闭)
    autoStartDocker: true      # Docker Desktop 未运行时尝试自动启动
    sub2apiPort: 18080         # Sub2API 本机端口
    proxyPort: 18081           # 内嵌面板使用的本地代理端口
    image: weishaw/sub2api:0.2.19   # 升级时改这里
    runMode: simple            # simple=本地单用户;standard=完整功能
    stopOnUnload: false        # 关闭 Harness 时是否停止容器

修改 sub2apiPort / image 后,下次启动会重建对应容器。

设置页(推荐):打开 设置 → 本地 Sub2api:

开关 作用 默认
服务开关 立刻启动/停止本地 Sub2API,并显示运行或已停止 停止
打开 Harness 时自动启动 记录下次打开 DSH 是否自动拉起 关

两项持久化在 <dataDir>/preferences.json,无需改 YAML 重载插件;设置页优先于 YAML 中的 autoStart。若要恢复「以 YAML 为准」,删除 preferences.json 即可。

典型用法

经过上面的步骤启用插件后,可按 README 中的流程操作:

  1. 打开 DeepSeek Harness,插件自动准备环境。
  2. 侧栏点击 Local Sub2api(展开显示文字,收起显示图标)。
  3. 状态为「运行中」时显示管理界面;首次为「启动中…」,等待镜像拉取与数据库迁移;失败时面板显示原因与重试。
  4. 在 Sub2API 界面添加上游账号、分组与 API Key。
  5. 本机其它程序调用 Sub2API 时,基址为 http://127.0.0.1:18080,OpenAI 兼容路径示例:http://127.0.0.1:18080/v1,Key 使用界面创建的 sk-...。

不经 Harness、仅用浏览器访问时,打开 http://127.0.0.1:18080,使用运行目录 .env 中的 ADMIN_EMAIL / ADMIN_PASSWORD 登录。

查看运行状态(Harness 运行时):

Invoke-RestMethod http://127.0.0.1:54922/local-sub2api/status | ConvertTo-Json

手动触发上游厂商接入:

Invoke-RestMethod http://127.0.0.1:54922/local-sub2api/action -Method Post -ContentType 'application/json' -Body '{"action":"provision-providers"}' | ConvertTo-Json

默认内置 adapterProviders 三项(皮卡丘、DSh Our Free Model、Qoder CN Qwen3.8-Flash),密钥通过 apiKeySource 从环境变量、~/.dsh/.credentials.yaml 的 refs 或 ~/.dsh 下文件读取,仅写入本机 Sub2API,解析失败则该项 skipped,不影响其它厂商。关闭自动接入可设 adapterAutoProvision: false,彻底关闭 adapter 设 adapterEnabled: false。

调用 Qoder 免费模型时,资料要求 model 填 qodercn/qfmodel。Our Free Model 需先在本机启用转发(forward.enabled 为 true),否则 Sub2API 容器无法连上宿主机网关;默认假定转发端口与 host.docker.internal 访问方式见 README 中的 baseUrl 说明。

数据目录与日常排查

默认运行目录:%USERPROFILE%\.dsh\local-sub2api(跟随 DSH_HOME),内含生成的 docker-compose.local.yml、敏感 .env、data/sub2api、data/postgres、data/redis。

docker ps --filter name=dsh-local-sub2api
docker logs -f dsh-local-sub2api

docker compose -f "$env:USERPROFILE\.dsh\local-sub2api\docker-compose.local.yml" down

完全重置需 down 后删除 data 目录(会丢失所有 Sub2API 配置)。常见问题:Docker 未就绪、端口占用、首次启动慢(拉镜像/迁移)、内嵌页仍是登录页(自动登录失败,可用 .env 账号或重启/重建管理员)。

适用场景与注意

适合:已在 Windows + Docker Desktop 上使用 DSH,希望在本机统一试用 Sub2API 路由、日志与多上游管理,且不想暴露公网管理端口的开发者。

务必注意:

  • 插件以当前 DSH 进程权限运行,会启动 Docker 容器并读写 ~/.dsh 下凭据与数据;安装前应自行查阅源码与 MIT 许可证,确认可接受风险。
  • 本地代理会去掉 Sub2API 的 X-Frame-Options / CSP frame-ancestors 以便 iframe 内嵌,代理仅监听 127.0.0.1。
  • 若在 Sub2API 内修改管理员密码,需与 .env 同步或由插件重新生成(配合清空 data 的说明见 README)。
  • DSH 生态理念是「一切皆插件」;skillhub.cn 为社区目录,与 DeepSeek / 幻方无官方从属关系。

结尾

dsh-local-sub2api 把 Sub2API 收成「打开 Harness 即可用的本机网关」:Docker 栈、自动登录、侧栏控制台,并可选对接你已有的 OpenAI 兼容厂商。进一步了解与获取源码见 目录页 与 GitHub 仓库。

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

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

小夜