yu-wenchao/dsh-opencode-free-models
无限免费额度的deepseek harnes 免费模型插件-免费api-DeepSeek Harness (DSH) 插件 — 在聊天界面里实时展示 OpenCode Zen 的最新免费模型,无需登录、无需密钥,直接在模型选择器选用即可对话。切换网络实现无限额度,无限量token自由!
Project Overview项目介绍
This is a plugin for DeepSeek Harness (DSH) that automatically fetches the list of free OpenCode Zen models and registers them to DSH's model selector. No login or API key required, you can chat directly after selecting a model. Use it for free access to large models. Note free quota is per IP, switch networks to reset when exhausted.
这是DeepSeek Harness(DSH)的免费模型插件,可自动拉取OpenCode Zen免费模型列表并注册到DSH模型选择器,无需登录和API密钥,安装后直接选择模型对话。适合需要免费使用大模型的场景,注意免费额度按IP分配,额度用完需切换网络重置。
请帮我了解并安装插件:【dsh-opencode-free-models】【https://github.com/yu-wenchao/dsh-opencode-free-models】
Send this message to DSH in your current session. CLI install commands may not be accurate across systems — DSH will figure it out for you.把上面这条消息直接发给当前会话里的 DSH,让它帮你了解并安装。安装命令不一定准确,发给 DSH 更稳。
Or use CLI install (for developers)或使用命令行安装(适合开发者)
CLI Install命令行安装
dsh plugin --profile web add github:yu-wenchao/dsh-opencode-free-models
把 yu-wenchao/dsh-opencode-free-models 加入你的 DSH 配置(web profile)即可启用。
READMEREADME
dsh-opencode-free-models 无限免费额度的deepseek harnes 免费模型插件-免费API
DeepSeek Harness (DSH) 插件 — 在聊天界面里实时展示 OpenCode Zen 的最新免费模型,无需登录、无需密钥,直接在模型选择器选用即可对话。
目录
- 这是什么
- 核心特性
- 工作原理
- 项目结构
- 小白安装教程
- 手动安装(非 Windows / 服务器)
- 从源码构建
- 配置说明
- 后端 API
- 架构详解
- 安全说明
- 常见问题
- 无限额度使用技巧
- 卸载
- 开发指南
- 许可证
这是什么
dsh-opencode-free-models 是一个 DeepSeek Harness 插件,它做的很简单:
- 自动从后端拉取最新的 OpenCode Zen 免费模型列表
- 把这些模型注册到 DSH 的模型选择器里
- 你在输入框右下角直接选择模型就能对话
你不需要做任何额外操作 —— 装完插件,重启 DSH,免费模型就自动出现在模型选择器里了。
核心特性
- 零配置 — 安装即用,无需登录、无需 API Key
- 自动同步 — 模型列表自动从后端拉取,官方新增自动出现、弃用自动消失
- 双端支持 — 同时支持 DSH 桌面端和 Web 端
- 一键安装 — Windows 用户双击
install.bat即可 - 安全可靠 — 无密钥收集、XSS 防护、fail-closed 授权
- 后台可控 — 站长可通过后端控制总开关、单模型上下架、可用时间窗
工作原理
┌─────────────────────────────────────────────────────────┐
│ DeepSeek Harness │
│ ┌──────────────┐ ┌──────────────────────────────┐ │
│ │ 模型选择器 │◄───│ opencode-free provider │ │
│ │ (输入框右下) │ │ (宿主侧 adapter 注册) │ │
│ └──────────────┘ └──────────────┬───────────────┘ │
│ │ │
│ ┌──────────────┐ ┌──────────────▼───────────────┐ │
│ │ 🎁 免费模型 │ │ 轮询后端 /api/models (30s) │ │
│ │ 面板 (抽屉) │ │ 获取最新模型列表 │ │
│ └──────────────┘ └──────────────┬───────────────┘ │
└─────────────────────────────────────┼────────────────────┘
│
┌───────────▼───────────┐
│ 后端 API 服务 │
│ (站长维护) │
│ free-api.gd7.cn │
└───────────────────────┘
数据流
- 插件加载 → 宿主半(
index.js)向 DSH 的llm服务注册opencode-freeprovider - 轮询同步 → 每 30 秒从后端
/api/models拉取最新模型列表,更新模型选择器 - 用户对话 → 选择
opencode-free/*模型 → 请求发送到opencode.ai/zen/v1→ SSE 流式返回 - 暂停/恢复 → 后端关闭总开关 → provider 路由被移除 → 模型从选择器消失
认证方式
所有免费模型使用共享字面量密钥 Bearer public,由宿主在加载时自动注入环境变量 OPENCODE_ZEN_API_KEY=public。用户无需也不应填写任何 Key。
项目结构
dsh-opencode-free-models/
├── src/ # 开发源码
│ ├── index.js # 宿主半(Node 侧):注册 provider、轮询开关、跨进程授权桥
│ ├── provider.js # OpenCode Zen 免 key 适配器:SSE 解析、流式转换、模型管理
│ ├── core.js # 纯函数:配置校验、URL 安全化、模型列表解析、YAML 生成
│ └── client/
│ └── index.js # 浏览器半:面板 UI、分页、授权交互、XSS 防护
│
├── lib/ # 运行时产物(由 build.mjs 从 src/ 原样复制)
│ ├── index.js # 宿主半
│ ├── provider.js # 适配器
│ ├── core.js # 核心 helper
│ └── client.cjs # 浏览器面板(CJS bundle)
│
├── one-click-install/ # 一键安装包(Windows 用户用)
│ ├── install.bat # 安装/更新
│ ├── restart.bat # 重启 DSH
│ ├── install.ps1 # PowerShell 安装脚本(核心逻辑)
│ ├── restart.ps1 # PowerShell 重启脚本
│ └── plugin/
│ └── dsh-opencode-free-models/
│ ├── package.json # 插件元数据
│ ├── cordis.patch.yml # DSH 补丁配置(后端地址、分页等)
│ ├── lib/ # 插件运行时文件(安装时复制到 DSH)
│ ├── README.md
│ └── LICENSE
│
├── scripts/
│ └── build.mjs # 构建脚本:src/ → lib/ + one-click-install
│
├── test/
│ ├── plugin.test.js # 验收测试:core + provider + host + client
│ └── auth.test.mjs # 授权流程测试
│
├── patches/ # 可选补丁(仅特殊环境使用,正常安装无需)
├── docs/ # 详细文档(架构、内部实现、运维手册)
├── package.json # 项目元数据
├── cordis.patch.yml # DSH bundle 层补丁
├── DSH-PLUGIN-ARCHITECTURE.md # 完整架构文档(对照 DSH 源码核验)
├── INSTALL.md # 安装说明
└── LICENSE # MIT 许可证
源码 vs 运行时
| 目录 | 用途 | 说明 |
|---|---|---|
src/ |
开发源码 | 宿主半、适配器、核心 helper、浏览器面板 |
lib/ |
运行时 | 由 build.mjs 从 src/ 原样复制,与 DSH 运行中插件字节一致 |
one-click-install/plugin/ |
发布包 | 安装时复制到 DSH 的 node_modules |
小白安装教程
预计用时:2 分钟
适用系统:Windows 10/11
前提:已安装 DeepSeek Harness
第一步:确认你已安装 DeepSeek Harness
DeepSeek Harness 是一个 AI 助手工具,本插件需要在它里面运行。
如果你还没有安装,请先到 DeepSeek Harness 官网 下载安装。
第二步:下载插件包
从本页面的 Releases 下载最新版本的发布包。
或者直接克隆本仓库:
git clone https://github.com/yu-wenchao/dsh-opencode-free-models.git
下载后解压,你会看到一个 one-click-install 文件夹。
第三步:双击安装
- 打开
one-click-install文件夹 - 双击
install.bat(或安装.bat)
脚本会自动:
- 探测你电脑上 DeepSeek Harness 的安装位置
- 把插件复制到正确的位置
- 在
package.json中注册插件
安装过程中会提示你选择要安装到哪个 DSH 目录(如果你有多个),输入编号即可。
如果脚本提示"没有找到 DeepSeek Harness"
请确认你已安装 DeepSeek Harness,或设置环境变量DSH_HOME指向 DSH 根目录(包含profiles文件夹的那个目录)。
第四步:重启 DeepSeek Harness
安装完成后,脚本会询问是否立即重启。选择 Y 即可。
如果没有选择自动重启,请:
- 完全关闭 DeepSeek Harness(包括系统托盘里的图标)
- 重新打开 DeepSeek Harness
第五步:开始使用
重启后,你会看到:
- 左侧边缘 出现一个绿色的 🎁 免费模型 按钮
- 输入框右下角 的模型选择器里自动出现了
opencode-free/*系列模型
直接选择任意 opencode-free 模型,就可以开始免费对话了!
手动安装(非 Windows / 服务器)
如果你使用 macOS / Linux,或者需要在服务器上安装:
方法一:使用一键安装脚本(推荐)
# 克隆仓库
git clone https://github.com/yu-wenchao/dsh-opencode-free-models.git
cd dsh-opencode-free-models
# 运行安装脚本
node scripts/build.mjs # 构建 lib/
然后把 one-click-install/plugin/dsh-opencode-free-models/ 文件夹手动复制到 DSH 的插件目录:
<DSH_HOME>/profiles/web/node_modules/dsh-opencode-free-models/
方法二:完全手动
把
one-click-install/plugin/dsh-opencode-free-models/整个文件夹复制到:<DSH_HOME>/profiles/web/node_modules/dsh-opencode-free-models/编辑该 profile 的
package.json,添加两处:{ "dependencies": { "dsh-opencode-free-models": "0.1.0" }, "dsh": { "profile": { "bundles": ["dsh-opencode-free-models"] } } }重启 DSH
找不到 DSH 目录?
桌面端常见位置:
- Windows:
C:\Users\你的用户名\AppData\Roaming\DeepSeekHarness\- macOS:
~/Library/Application Support/DeepSeekHarness/- Linux:
~/.config/DeepSeekHarness/
从源码构建
需要 Node.js >= 18。
# 克隆仓库
git clone https://github.com/yu-wenchao/dsh-opencode-free-models.git
cd dsh-opencode-free-models
# 构建(把 src/ 原样复制到 lib/ 和 one-click-install/)
node scripts/build.mjs
# 验证构建产物与源码一致
node scripts/build.mjs --check
# 运行测试
node --test test/plugin.test.js
配置说明
插件配置通过 cordis.patch.yml 或 DSH 设置界面管理。
默认配置
# cordis.patch.yml(bundle 层)
- insert:
- id: opencode-free-models
name: dsh-opencode-free-models
config:
backendUrl: 'https://free-api.gd7.cn/opencode' # 后端地址
pageSize: 20 # 每页模型数
requestTimeoutMs: 10000 # 请求超时(毫秒)
uiSlot: '' # UI 挂载位置(空=右侧抽屉)
providerIdPrefix: opencode # Provider ID 前缀
footerLinks: # 面板底部链接
- label: 技术笔记
url: http://blog.4wc.cn
- label: 插件开发
url: https://blog.gd7.cn/
debug: false # 调试日志
自定义后端
如果你有自己的后端服务:
- 修改
cordis.patch.yml中的backendUrl - 或在 DSH 设置界面的插件配置中修改
分层覆盖
DSH 支持多层配置覆盖(后层优先):
bundle 层(cordis.patch.yml) ← 你在这里
↓
profile 层(profiles/web/cordis.patch.yml)
↓
home 层($DSH_HOME/cordis.patch.yml)
后端 API
插件通过以下接口与后端通信:
GET /api/models
获取模型列表。
{
"ok": true,
"total": 42,
"total_pages": 3,
"page": 1,
"page_size": 20,
"opencode_enabled": true,
"items": [
{
"id": 1,
"title": "模型名",
"api_base_url": "https://opencode.ai/zen/v1",
"model_name": ["model-id-1", "model-id-2"],
"status": "enabled",
"usable": true,
"available_from": "2025-01-01 00:00:00",
"available_until": "2025-12-31 23:59:59"
}
]
}
| 字段 | 说明 |
|---|---|
opencode_enabled |
全局总开关,false 时所有模型不可用 |
items[].status |
disabled 时该模型显示"已下架" |
items[].usable |
false 时该模型不可用 |
items[].available_from/until |
可用时间窗 |
GET /api/version
检查后端版本。
{ "version": "0.1.0" }
GET /api/articles
获取公告/文章列表。
GET /api/license?act=status
获取授权状态。
{ "auth_enabled": false }
架构详解
双进程架构
插件分为两个独立部分:
| 部分 | 文件 | 运行环境 | 职责 |
|---|---|---|---|
| 宿主半 | lib/index.js |
Node.js(DSH 进程) | 注册 provider、轮询开关、跨进程授权桥 |
| 浏览器半 | lib/client.cjs |
浏览器(WebView) | 面板 UI、分页、授权交互 |
两者通过本机 HTTP 桥(127.0.0.1:18766)跨进程通信。
Provider 注册
ctx.llm.registerAdapter(['opencode-free'], adapter)
│
├── listModels() → 返回免费模型列表
├── resolveModel() → 返回模型详情
└── stream() → SSE 流式对话
开关机制
插件有三层开关,取交集:
- 本地开关 (
localEnabled) — DSH 设置界面的插件开关 - 远程开关 (
remoteEnabled) — 后端/api/models的opencode_enabled - 授权门禁 (
authRequired && !authorized) — 后端要求授权但用户未授权
任一关闭 → providerHandle.replace([]) → 模型从选择器消失。
跨进程授权桥
浏览器半(授权弹窗)→ HTTP POST 127.0.0.1:18766/ozf-auth → 宿主半(更新授权状态)
默认 fail-closed:未收到授权信号时隐藏模型。
安全说明
- 无密钥收集 — 使用共享公共密钥
public,用户无需也不应填写任何 Key - XSS 防护 —
innerHTML经sanitizeHtml()剥离危险标签/事件属性/javascript: - URL 校验 —
safeHttpUrl()仅放行绝对http(s)协议 - 授权 fail-closed — 默认
authorized=false,后端要求授权时未收到信号即隐藏模型 - credentials: 'omit' — 面板 fetch 请求不携带 Cookie
常见问题
| 现象 | 可能原因 | 解决方法 |
|---|---|---|
| 左侧没有 🎁 按钮 | 插件未安装或未重启 | 确认 lib/client.cjs 存在,重启 DSH |
| 面板一直"加载中" | 后端不可达或 CORS 未配置 | 检查网络;让站长在后端 CORS 白名单加入 DSH 页面地址 |
| 模型在选择器不出现 | 后端总开关关闭或插件被禁用 | 检查后端 opencode_enabled;检查 cordis.patch.yml 是否 disabled: true |
| 模型出现但发送被拒 | 后端要求授权但未授权 | 在面板中完成授权;或让站长关闭 auth_enabled |
| 升级按钮失败 | 网络/CORS 问题 | 可忽略,不影响使用 |
无限额度使用技巧
核心原理:免费额度按网络 IP 分配,切换网络 = 重置额度 = 无限免费使用!
为什么会出现 429?
OpenCode Zen 的免费模型通过网络 IP 限制每日额度。当你看到 429 Rate Limited 错误时:
- 不是传统意义上的"限流"(请求太频繁)
- 而是你当前网络 IP 的每日免费额度已用完
如何实现无限额度?
准备多个网络,额度用完就切换,每个新 IP 都有全新的每日免费额度:
| 网络来源 | 切换方式 | 额度重置 |
|---|---|---|
| 手机热点 | 关闭 → 重新开启热点 | 新 IP = 新额度 |
| 随身 WiFi | 重启设备或切换 SIM 卡 | 新 IP = 新额度 |
| 家庭宽带 | 重启路由器(部分运营商会换 IP) | 可能新 IP = 新额度 |
| 公司/学校网络 | 切换到手机热点 | 新 IP = 新额度 |
| VPN | 切换不同地区节点 | 新 IP = 新额度 |
推荐操作流程
1. 正常使用免费额度
2. 遇到 429 错误 → 额度用完了
3. 切换网络(如:关闭 WiFi → 开启手机热点)
4. 继续使用 → 又有新的免费额度了!
5. 重复以上步骤 = 无限免费额度
实用技巧
- 手机热点是最方便的方式 — 随时随地切换,无需额外设备
- 随身 WiFi 适合重度用户 — 插入 SIM 卡即可获得独立 IP
- 多准备 2-3 个网络源 — 足够覆盖一天的使用量
- 不需要重启 DSH — 切换网络后直接继续对话,插件会自动使用新 IP 的额度
- 桌面端和 Web 端都适用 — 只要网络切换了,额度就重置了
卸载
Windows(推荐)
双击 one-click-install/restart.bat 或 重启.bat,然后删除插件目录。
手动
删除插件目录:
<DSH_HOME>/profiles/web/node_modules/dsh-opencode-free-models/ <DSH_HOME>/profiles/desktop/node_modules/dsh-opencode-free-models/ # 桌面端从该 profile 的
package.json中移除:dependencies中的"dsh-opencode-free-models"dsh.profile.bundles中的"dsh-opencode-free-models"
重启 DSH
开发指南
开发环境
# 安装依赖(无外部依赖,仅 Node.js >= 18)
node --version # 确认 >= 18
# 运行测试
node --test test/plugin.test.js
# 构建
node scripts/build.mjs
# 验证一致性
node scripts/build.mjs --check
源码修改流程
- 编辑
src/下的源文件 - 运行
node scripts/build.mjs同步到lib/和one-click-install/ - 运行
node --test test/plugin.test.js验证 - 重启 DSH 测试
关键文件
| 文件 | 行数 | 职责 |
|---|---|---|
src/index.js |
372 | 宿主半入口:provider 注册、开关轮询、授权桥 |
src/provider.js |
367 | OpenCode Zen 适配器:SSE 解析、流式转换 |
src/core.js |
258 | 纯函数:配置校验、URL 安全化 |
src/client/index.js |
1674 | 浏览器面板:UI 渲染、授权交互 |
许可证
致谢
- DeepSeek Harness — LLM 宿主运行时
- OpenCode Zen — 免费模型 API
titanwings/dsh-automation
linhut/gongwen-skill
magian1127/deepseek-harness-zh_pro
Jungod1121/dsh-anchored-standard
omdsh-dev/dsh-advisor
wlj521/dsh-ui-tweaks
Moeblack/deepseek-manners