🎁 福利专区全网大模型免费应用 + 新用户福利 + 注册活动入口,低成本玩转 AI

OpenCode 免费模型 FishBottle7/opencode2dsh

DeepSeek Harness
FishBottle70 天前有提交已提供中文文档扫描:含敏感能力

在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。

67.9/100
综合分
385
GitHub 星标
—
npm 周下载
—/5
用户评分

数据截至 2026/11/3 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。

自动兼容检查未通过:缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装。以下命令仍可尝试,但可能失败。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add FishBottle7/opencode2dsh
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态
信任档位:已验证
是什么
dsh 原生插件 · model
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 0 天前
档位由哪些信号合成

本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安装兼容性检查需源码安装

缺少 main/exports/bin 入口声明;仓库 package.json 标记 private,未发布到 npm,需从源码安装

展开查看检查明细 ↓

以下结论由程序自动检查 npm 包、engines 声明与入口文件得出,未做人工实机验证——能装不等于用着没问题。

✗npm 包opencode2dsh(未发布到 npm,仅可源码安装)
✓Node 引擎未声明 engines.node
✓dsh CLI 依赖未声明 dsh 版本约束
✗入口文件缺少入口声明

源码安装时若 pnpm 拦截 prepare 脚本,按其提示在 pnpm-workspace.yaml 的 allowBuilds 中放行后重跑。

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/29 15:33:25

安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。

可执行外部命令读写/删除本地文件发起外部网络请求
查看扫描证据(共 15 处,展示前 15 条)
  • 执行外部命令来自配置/变量
    packages/plugin/src/agent-process.ts:89
    const child = spawn(this.agentPath, this.args, { stdio: ['ignore', 'pipe', 'pipe'] })
  • 执行外部命令固定命令
    packages/plugin/src/agent-process.ts:265
    const killer = spawn('taskkill', args, { stdio: 'ignore', windowsHide: true, timeout: GRACEFUL_STOP_TIMEOUT_MS })
  • 读取本地文件
    packages/plugin/src/config.ts:303
    await stat(path)
  • 读取本地文件
    packages/plugin/src/config.ts:316
    const existing = (await readFile(paths.tokenPath, 'utf8')).trim()
  • 写入本地文件
    packages/plugin/src/config.ts:320
    await mkdir(dirname(paths.tokenPath), { recursive: true })
  • 写入本地文件
    packages/plugin/src/config.ts:321
    await writeFile(paths.tokenPath, token + '\n', { encoding: 'utf8' })
  • 写入本地文件
    packages/plugin/src/config.ts:323
    await chmod(paths.tokenPath, 0o600).catch(() => {})
  • 写入本地文件
    packages/plugin/src/config.ts:351
    await mkdir(paths.dataDir, { recursive: true })
  • 写入本地文件
    packages/plugin/src/config.ts:353
    await writeFile(tmpPath, JSON.stringify(config, null, 2), 'utf8')
  • 删除本地文件
    packages/plugin/src/config.ts:354
    await rm(paths.configPath, { force: true })
  • 写入本地文件
    packages/plugin/src/config.ts:355
    await rename(tmpPath, paths.configPath)
  • 写入本地文件
    packages/plugin/src/index.ts:125
    void writeFile(
  • 读取本地文件
    packages/plugin/src/index.ts:472
    if (existsSync(sibling)) return sibling
  • 发起网络请求
    packages/plugin/src/provider.ts:122
    const response = await fetch(providerBaseURL(port) + '/models', {
  • 发起网络请求
    packages/plugin/src/provider.ts:138
    const response = await fetch(`http://127.0.0.1:${port}/healthz`, { signal: controller.signal })
扫描于 2026/11/3(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库

静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。

给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 使用免费匿名模型
  • 无需APIkey

DSH 插件——为 DeepSeek Harness(DSH)提供 OpenCode Zen 免费模型。免费 LLM API,无需 API key。在 DSH 中使用 OpenCode Zen 免费模型,无需 API key

README

由 DeepSeek 最新模型翻译生成
opencode2dsh 在 DSH(DeepSeek Harness)里原生使用 OpenCode Zen 的免费匿名模型。 无需 API Key。无需注册。无需额外进程。 opencode2dsh 会向 DSH 注册一个原生的 LlmAdapter,直接流式对接 OpenCode Zen 的匿名免费通道——也就是 OpenCode 官方 CLI 无需登录即可使用的那批免费模型,它们会以 opencode2dsh 这个常规 provider 出现在你的 DSH 模型选择器里。 插件发出的请求与 OpenCode CLI 的流量完全同形(相同的 User-Agent、相同的关联请求头),模型目录通过三级回退链保持新鲜。不用登录任何账号,也不用自己部署任何东西。
展开完整文档(README 剩余 1 节)
opencode2dsh

在 DSH(DeepSeek Harness)里原生使用 OpenCode Zen 的免费匿名模型。

无需 API Key。无需注册。无需额外进程。

opencode2dsh 会向 DSH 注册一个原生的 LlmAdapter,直接流式对接 OpenCode Zen 的匿名免费通道——也就是 OpenCode 官方 CLI 无需登录即可使用的那批免费模型,它们会以 opencode2dsh 这个常规 provider 出现在你的 DSH 模型选择器里。

插件发出的请求与 OpenCode CLI 的流量完全同形(相同的 User-Agent、相同的关联请求头),模型目录通过三级回退链保持新鲜。不用登录任何账号,也不用自己部署任何东西。

特性

- 零凭据、零配置——匿名通道不需要任何 Key;装好、重启、开聊
- 原生 adapter,无 sidecar——一个 npm 包,没有子进程、没有二进制、没有本地端口(旧版 Go sidecar 不随包发行,见 legacy/)
- CLI 同形伪装——请求携带 OpenCode CLI 的 User-Agent 和整套会话/请求/项目关联头,按会话派生
- 思考等级可选——带推理的免费模型在 DSH 模型选择器里出现思考等级选项(模型声明档位的按声明展示,其余提供 Off/Minimal/Low/Medium/High);Off 向上游发送 reasoning_effort: "none" 真正停思考,不选则保持上游默认
- 按声明支持图片输入——只要 models.dev 的模型条目在 modalities.input 里列了 image,图片附件就会被放行;只声明 text 的模型仍然拒绝;元数据缺省时退回已验证的视觉家族
- 实时目录 + 三级回退——上游实时列表 ∩ 元数据判定免费,断网时依次回退到磁盘缓存与已验证的静态名单
- 自愈能力——启动期快速重试、周期刷新,并落盘健康快照便于排查
- 规范的错误呈现——上游故障(限流、鉴权、超时、传输)以分类的 finish 原因送达 DSH,重试策略始终由 DSH 掌控

安装

从插件市场安装(推荐,收录后可用):在 DSH 里打开 设置 → 插件市场,搜索 opencode2dsh,一键安装。

从 npm 安装:

dsh plugin --profile web add @opencode2dsh/dsh-plugin

从源码安装(自行打包):

git clone https://github.com/FishBottle7/opencode2dsh.git
cd opencode2dsh/packages/plugin
pnpm install && pnpm pack
dsh plugin --profile web add ./opencode2dsh-dsh-plugin-<version>.tgz

验证:重启 dsh web,打开模型选择器,在 opencode2dsh 分组里选模型即可。

需要 DSH(DeepSeek Harness)0.1.7 及以上、带 web profile(IP 池设置页依赖 0.1.7 的插件页契约);Node.js ≥ 20(DSH 能跑就满足);出站 HTTPS 需可达 opencode.ai 与 models.dev。

配置

默认配置开箱即用。需要覆盖时,编辑 profile 的 cordis.patch.yml:

- id: opencode2dsh
name: '@opencode2dsh/dsh-plugin'
config:
mode: adapter # adapter(默认)| sidecar providerId: opencode2dsh refreshSeconds: 300 # 目录刷新周期(秒)

| 配置项 | 默认值 | 说明 |
| mode | adapter | adapter:原生 LlmAdapter 直连 Zen。sidecar:旧版本地 agent 模式,不随包发行——请从 legacy/agent 自行构建并通过 agentPath 指定。 |
| providerId | opencode2dsh | 在 DSH 中显示的 provider 名称。 |
| refreshSeconds | 300 | 实时目录刷新间隔;定价元数据每 24 小时刷新。 |
| allowedModels | [] | 模型白名单,仅 adapter 模式生效(旧 sidecar 忽略;插件 0.3.14 起,issue #83):DSH 可展示和调用的模型 id,精确匹配。留空则暴露全部符合条件的免费模型。只做收敛——付费/弃用/本地阻止/探活规则仍然生效,直调名单外模型会在发起任何网络请求前快速失败并给出明确错误。 |
| agentPath | 自动解析 | 仅 sidecar:agent 二进制路径。 |
| agentArgs | — | 仅 sidecar:传给 agent 的额外 CLI 参数。 |
| restartDelayMs / restartMaxDelayMs / maxConsecutiveCrashes | 1000 / 60000 / 5 | 仅 sidecar:重启退避与熔断阈值。 |
| firstEventMs / bodyIdleMs / responsesBodyIdleMs | 30000 / 120000 / 300000 | 仅 adapter,插件 0.3.7 起支持:流存活超时,单位毫秒,取 1 到 600000 的整数。分别控制首事件等待、流中静默,以及 Responses 模型(muse-spark-)的静默下限。冷启动慢时可调大 firstEventMs。不设置则使用默认值;修改后重启 DSH。 |

本地 OpenCode 委托(插件 0.3.x,docs/delegation.md,ref #76)——针对持续 403 FreeTierError 凭据门禁的可选兜底。默认关闭;除非显式开启,匿名路径与现状逐字节一致:

delegation:
enabled: true # 总开关,默认 false opencodePath: '' # 显式指定 opencode 二进制;否则 managed → 全局 → npm minVersion: '1.18.0' # 低于此版本的候选直接跳过 memLimit: '96MiB' # 注入子进程的 GOMEMLIMIT gcPercent: 30 # 注入子进程的 GOGC trimIntervalMs: 60000 # Windows EmptyWorkingSet 节拍;0 关闭 startTimeoutMs: 60000 # 健康等待预算

开启后插件会保管你的 opencode 凭据(只取 opencode 一个条目,0600 种进隔离 XDG 根,绝不写日志),并仅在匿名车道与姊妹主机重试都被凭据门禁拒绝时,才把回合交给受管的本地 opencode serve。开启前请先读 docs/delegation.md §2 的安全说明。

工作原理

DSH 会话 │ harness chunk(block-start / text-delta / usage / finish …)
▼
ZenAdapter(注册的 LlmAdapter) │ pi-ai openai-completions 流式 ▼ https://opencode.ai/zen/v1 ← Authorization: Bearer public 携带与 CLI 同形的请求头: user-agent: opencode/…
x-opencode-client, x-opencode-session, x-session-affinity,
X-Session-Id, x-opencode-request, x-opencode-project

- 会话关联——session/project id 由会话首条用户消息经 SHA-256 派生(同一会话稳定、不可逆推),每个请求再附带一个全新的随机 id,与 CLI 行为一致。
- 目录回退链——S1:实时 GET /v1/models;S2:models.dev 定价元数据判定 "免费";S3:编译期验证的静态名单。上游故障时由磁盘缓存(约 7 天有效期)兜底。
- 韧性——adapter 在启动时立即注册;若首次目录拉取撞上网络尚未就绪(VPN/TUN 重连、DNS 等),会以短周期重试(约 1 分钟内),随后转入常规刷新。
- sidecar 模式(mode: sidecar,旧版)——拉起本地 Go agent( opencode2api 的单租户移植版),监听 127.0.0.1:<随机端口>、token 鉴权,并注册标准 llm-pi-ai 路由。
不随包发行;请从 legacy/agent 构建(go build ./cmd/agent)并把 agentPath 指向产物。

健康状态与排查

插件在每轮刷新后写入健康快照:

~/.opencode2dsh/adapter-status.json

{
"status": "ready",
"total": 64,
"exposed": 9,
"lastError": "",
"writtenAt": "2026-08-29T07:01:54.915Z"
}

| 现象 | 可能原因与处理 |
| 403 FreeTierError / "OpenCode's free tier can only be used from within OpenCode" | 上游限制免费通道的客户端,插件会保留该说明;这不是个人 API 密钥错误。请使用上游支持的 OpenCode 客户端或正式 API 服务。若拒绝是持续的(直连 + 姊妹主机都 403,而请求形状/IP 都干净),issue #76 的可选本地委托会让回合改走你自己的 opencode 登录——读完安全说明后再开启 delegation.enabled。 |
| 启动页报 Failed to load plugins … list slot "plugins.item" requires options.id,或 IP 池条目没有配置页 | DSH 早于 0.1.7 的插件页契约。升级 DSH 到 0.1.7(推荐最新);页面挂载门控是 configForms.whileServed,0.1.6 及更早上整页不出现,模型路由不受影响。 |
| 安装插件后 DSH 0.1.7/0.2 无法启动,报 pending … settingsScope | 更新插件到 0.3.5;DSH 0.2 的 IP 池设置在插件页的 opencode2dsh 条目里。 |
| 只有 3 个模型 | 启动时网络未就绪,重试会在约 1 分钟内补齐;看 adapter-status.json 里的 lastError。 |
| lastError: "fetch failed" 持续出现 | 出站 HTTPS 到 opencode.ai 被拦截;检查代理/VPN 规则。 |
| 对话中报限流错误(429 … Endpoint is unavailable) | 匿名通道按 IP 限额,免费模型竞争大。#51 修复后,插件的 provider 重试策略会静默扛过 429 突发(8 次重试、约 1s→20s 退避、每步最坏约 90s),不再直接抛给用户;仍被打满时可降低思考强度、换一个竞争较小的 -free 模型,或在插件设置页开启 IP 池(多出口轮换)。 |
| 思考耗尽输出预算,没有正文 | 插件 0.3.6 会在模型支持 Off 时关闭思考重试一次。已有任何正文或工具调用则不会重试。重试保持原输出上限,仍可能失败,两次请求的用量合并统计。不支持 Off 的模型(如 Muse)需要手动调整设置或更换模型。 |
| Muse 报 REGION_BLOCKED / "This model is not available in your country" | Zen 不向当前网络地区提供该模型。插件 0.3.5 保留上游解释;旧版会把这个 403 误报为 API 密钥无效。匿名通道不需要个人密钥,可使用当前地区可用的模型。 |
| 连接 127.0.0.1: 报错 | 残留的 sidecar 路由遮蔽了 adapter;插件 ≥ 0.2.1 启动时会自动清理。 |
| 安装时报 ERR_PNPM_IGNORED_BUILDS | pi-ai 的传递依赖(@google/genai、protobufjs)带构建脚本,运行时并不需要。在插件市场里按提示选择允许/拒绝,或在 profile 的 pnpm-workspace.yaml 的 allowBuilds: 下把这两项设为 false。 |

安全性

- 不涉及任何机密:匿名通道的 Key 就是字面量 public;插件不存储任何东西,也没有任何遥测。
- 安装产物仅限 lib/;不执行任何依赖的构建脚本。
- 所有请求均从你的机器直连 opencode.ai / models.dev。
- 本地 OpenCode 委托(docs/delegation.md,ref #76)默认关闭、需显式开启。开启后插件将保管你的 opencode 凭据——只取 opencode 一个条目,0600 种进隔离 XDG 根,绝不写日志,除本地子进程外绝不外发——并经由受管的本地 opencode serve 代理。若上游因此判定异常使用,后果由你的账号承担。在你机器上执行工具被三层纵深挡住(ask-then-reject + 响应体扫描 + 环境隔离),详见文档。

开发

git clone https://github.com/FishBottle7/opencode2dsh.git
cd opencode2dsh/packages/plugin
pnpm install
pnpm typecheck && pnpm test
pnpm build # 打包到 lib/

旧版 Go sidecar 在 legacy/agent(go test ./...)。架构说明与移植记录见 docs/。

发布:在 packages/plugin 执行 pnpm pack(prepack 会构建并同步文档)。

致谢

- opencode2api,作者 @jasonxu114514——legacy/agent 里的旧版 Go sidecar 是其匿名通道实现的移植版,目录回退链与请求伪装细节同样源自它。
本项目能成立,全靠它踩过的路。

贡献者

与维护者一起修复、测量、设计的社区成员:

- @1Dreamer666——#99 上下文上限探针矩阵与 300k 修复(#100);#103 流截断的根因诊断、修复提案与并行 PR(#104,塑造了最终合并的实现)。
- @IThanjie——#96/#98 reasoning 回传问题的根因链(pi-ai dist 逐行定位)与本地验证补丁。
- @kizaki-R——#80 免费通道门禁测量与姊妹主机重试;#84 自适应 blocklist 探测;#83 白名单设计意见。
- @GT-610——#65 会话 id 派生修复(0.3.12 的核心)与 #70 订阅池健康体系大修。
- @ftf112233——#86 上下文窗口修复与 #87 哨兵竞争修复。
- @BobJu0721——#74 免费通道测量与 #67 会话 id 修复。
- @reisen-ww——#76 凭据门 A/B 证据、本地委托方案设计与 PR #92 背后的 MIT opengate 参考实现。

- OpenCode——运营免费匿名 Zen 通道。
- @earendil-works/pi-ai——adapter 模式使用的线上协议层。
- DeepSeek Harness 与 dsh-market 社区。

友链

LinuxDo —— 新的理想型社区

许可证

MIT © FishBottle7
预览分享卡片长什么样 ↓FishBottle7/opencode2dsh
分享 · DeepSeek Harness Hub
FishBottle7/opencode2dsh

在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。

回到顶部