← 返回列表
⚠ 装前注意
一个 DeepSeek Harness dsh 插件:一个进程内的、兼容 OpenAI…
基本兼容但装前注意:未发布到 npm registry,仅可从源码安装 · 最近上游提交 2026/8/14 · 已提供中文文档
dsh 插件:进程内代理,注入官方 OpenCode Zen 客户端请求头,使 Zen 免费模型可在 dsh 中使用,而不会出现 429 FreeUsageLimitError
综合分
34.4
GitHub 分
34.4
用户评分
—
★ Stars
3
周下载量
—
兼容 / 相关生态插件(非 dsh 原生,请按其对应运行时安装)
git clone https://github.com/Yee-h/dsh-zen-proxy.git数据截至 2026/9/19(元数据每日更新 · 实装验证按队列轮转,单条结论的验证时间见上方)
安装兼容性检查⚠ 装前注意
以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。
✗npm 包dsh-zen-proxy(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✓入口文件main/exports/bin 已声明
未发布到 npm registry,仅可从源码安装
验证方式:npm registry 存在性 + package.json 静态校验 · 最后验证 2026/9/19 01:12:00
依赖的 DSH / Cordis 模块
@deepseek-ai/schemastery用户评分
还没有人投票,来当第一个
订阅周报,不错过优质插件更新
每周一封 · 高评分插件 + 新用户活动
README
dsh-zen-proxy
一个 DeepSeek Harness (dsh) 插件:一个进程内的、兼容 OpenAI 的代理,会在向上游请求时注入官方 OpenCode Zen 客户端请求头,从而在 dsh 中启用 Zen 免费模型,且不会出现 429 FreeUsageLimitError。
为什么
OpenCode Zen 的免费层网关会通过指纹识别 HTTP 身份请求头来对第三方客户端进行限流。看起来像官方 opencode CLI 的请求会获得正常的免费配额;匿名或第三方客户端会被限制在一个非常低的兜底配额中,并立即被拒绝:
{"type":"FreeUsageLimitError","message":"Rate limit exceeded. Please try again later."}
dsh 的 LLM 适配器(例如 dsh-llm-pi-ai)被设计为始终发送自己的归属 User-Agent(deepseek-harness/ ...),并会过滤掉任何配置的 user-agent —— 因此任何 dsh 配置都无法让网关看到官方客户端。本插件用一个极小的本地代理来填补这一空白,该代理运行在 dsh 进程内部(随 profile 启动/停止),并在转发到 https://opencode.ai/zen/v1 之前重写身份请求头。
已验证行为
针对 https://opencode.ai/zen/v1/chat/completions 进行了冒烟测试:
| 发送的请求头 | 结果 |
|---|---|
| 无官方请求头 | 429 FreeUsageLimitError |
| 仅 x-opencode- | 429 ❌ |
| x-opencode- + 官方 User-Agent | 200 ✅ |
| x-opencode- + dsh 自己的 UA | 429 ❌ |
网关会校验 User-Agent 的内容,而不仅仅是它是否存在。仅有 x-opencode- 请求头是不够的。
安装
dsh plugin --profile web add "https://github.com/Yee-h/dsh-zen-proxy.git"
或者从本地检出安装:
dsh plugin --profile web add "file:C:/path/to/dsh-zen-proxy"
配置
1. 注册插件(profile 补丁)
添加到 $DSH_HOME/profiles//cordis.patch.yml:
- insert:
- id: zen-proxy
name: 'dsh-zen-proxy'
config:
host: 127.0.0.1
port: 4097
upstreamHost: opencode.ai
upstreamBasePath: /zen/v1
2. 将 opencode 提供方指向该代理
在 $DSH_HOME/settings.yaml 中:
llm-pi-ai:
providers:
opencode:
apiKeyEnv: OPENCODE_API_KEY
baseURL: http://127.0.0.1:4097/v1
将你的 sk-zen-* 密钥保存在 $DSH_HOME/.credentials.yaml 中(或保存在由 apiKeyEnv 指定的环境变量中)。
重启 dsh。只要 profile 运行,代理就会监听 http://127.0.0.1:4097/v1,并在关闭时自动关闭 —— 无需外部进程,无需启动脚本。
工作原理
dsh (dsh-llm-pi-ai)
│ POST http://127.0.0.1:4097/v1/chat/completions
▼
dsh-zen-proxy (in-process)
│ rewrites identity headers, forwards to https://opencode.ai/zen/v1
▼
OpenCode Zen gateway → official-client quota → 200
每次向上游请求时注入的请求头:
| 请求头 | 值 |
|---|---|
| User-Agent | opencode/1.15.5 ai-sdk/provider-utils/4.0.23 runtime/bun/1.3.14 |
| x-opencode-client | cli |
| x-opencode-project | global |
| x-opencode-session | ses_ + 随机值(每个请求) |
| x-opencode-request | msg_ + 随机值(每个请求) |
Authorization 请求头和请求体(model、messages、stream: true 等)原样透传;SSE 流式响应按原样转发。
配置参考
| 字段 | 默认值 | 描述 |
|---|---|---|
| host | 127.0.0.1 | 绑定地址 |
| port | 4097 | 监听端口 |
| upstreamHost | opencode.ai | Zen 上游主机 |
| upstreamBasePath | /zen/v1 | Zen 上游基础路径 |
| userAgent | opencode/1.15.5 ai-sdk/provider-utils/4.0.23 runtime/bun/1.3.14 | 官方 CLI user-agent |
| clientHeader | cli | x-opencode-client 值 |
| projectHeader | global | x-opencode-project 值 |
冒烟测试
$body = '{"model":"deepseek-v4-flash-free","messages":[{"role":"user","content":"hi"}],"max_tokens":16}'
Invoke-RestMethod -Uri "http://127.0.0.1:4097/v1/chat/completions" -Method Post
-Headers @{ "Authorization" = "Bearer sk-zen-你的密钥" }
-ContentType "application/json" -Body $body
预期返回 HTTP 200 并带有真实补全结果。
注意事项与限制
- 免费额度仍然适用:免费额度按 IP + 客户端指纹共享(社区报告约 200 请求/天),并由 OpenCode 动态管理。请求头只能恢复官方客户端层级;它们无法创造额度。
- 即使请求头正确,服务器过载时仍可能偶发 429 —— 请重试或切换到其他免费模型。
- 充值并不能解锁免费模型(已知问题):它只能解锁付费模型。
- 仅代理工具调用的 HTTP 接口(/v1/chat/completions 和 GET /v1/models);资源和提示词不在范围内。
- 本插件有意保持 dsh 自身的归属机制不变:dsh 仍将其真实身份发送到本地代理;身份重写发生在网络边界处。
许可证
MIT扫码进群