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

OpenCode 模型接入 EDDY597/dsh-opencode-gateway

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

把本机 OpenCode 模型接入 DSH 模型菜单

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

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

安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add EDDY597/dsh-opencode-gateway
该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)

状态速览

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

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
v2.7.0
🔵 扫描:含敏感能力尚无人工评估
展开查看扫描说明与证据 ↓

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

可执行外部命令读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 23 处,展示前 20 条)
  • 发起网络请求
    lib/index.js:294
    const req = http.get(`${serverUrl}/global/health`, options, (res) => {
  • 执行外部命令固定命令
    lib/index.js:439
    if (process.platform === "win32") spawnSync("taskkill", [
  • 执行外部命令来自配置/变量
    lib/index.js:575
    state.process = spawn(opencodeBin, [
  • 发起网络请求
    lib/index.js:627
    const response = await fetch(`${baseUrl}${urlPath}`, {
  • 发起网络请求
    lib/index.js:716
    const response = await fetch(`${baseUrl}/event`, {
  • 读取密钥环境变量
    lib/index.js:1804
    serverPassword: raw.serverPassword ?? process.env.OPENCODE_SERVER_PASSWORD ?? "",
  • 读取密钥环境变量
    lib/index.js:1814
    zenApiKey: raw.zenApiKey ?? process.env.OPENCODE_ZEN_API_KEY ?? "",
  • 发起网络请求
    lib/index.js:1972
    const response = await fetch(url, { signal: AbortSignal.timeout(1e4) });
  • 执行外部命令来自配置/变量
    lib/index.js:4160
    child = spawn(opencodePath, ["models"], {
  • 发起网络请求
    lib/index.js:4277
    if ((await fetch(`${serviceUrl}${pathname}`, { signal: AbortSignal.timeout(timeoutMs) })).ok) return true;
  • 执行外部命令来自配置/变量
    lib/index.js:4296
    const child = spawn(options.exePath, args, {
  • 发起网络请求
    lib/index.js:4331
    const response = await fetch(`${client.serviceUrl}/v1/models`, {
  • 读取本地文件
    lib/index.js:4546
    const parsed = JSON.parse(readFileSync(path, "utf8"));
  • 读取本地文件
    lib/index.js:4559
    accessSync(path);
  • 发起网络请求
    lib/openai-completions-Dn8kaSJS.js:1835
    const response = await this.fetch(this.tokenExchangeUrl, {
  • 发起网络请求
    lib/openai-completions-Dn8kaSJS.js:1835
    const response = await this.fetch(this.tokenExchangeUrl, {
  • 发起网络请求
    lib/openai-completions-Dn8kaSJS.js:1921
    const FetchResponse = "Response" in fetch ? fetch.Response : (await fetch("data:,")).constructor;
  • 发起网络请求
    lib/openai-completions-Dn8kaSJS.js:1921
    const FetchResponse = "Response" in fetch ? fetch.Response : (await fetch("data:,")).constructor;
  • 发起网络请求
    lib/openai-completions-Dn8kaSJS.js:9594
    return this.request(Promise.resolve(opts).then((opts) => {
  • 发起网络请求
    lib/openai-completions-Dn8kaSJS.js:9761
    return await this.fetch.call(void 0, url, fetchOptions);
扫描于 2026/10/31(1 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-loader@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-attachment@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-ui-renderer@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials@deepseek-ai/dsh-launch-environment@deepseek-ai/dsh-llm@deepseek-ai/dsh-llm-pi-ai
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 接入本机模型菜单
  • Zen免费档内嵌

README

由 DeepSeek 最新模型翻译生成
dsh-opencode-gateway DeepSeek Harness(DSH)插件:把本机 opencode 生态接进 DSH 的模型菜单,两条 provider route: | route | 端点 | 承载内容 | | opencode-gateway | http://127.0.0.1:8787/v1(本机 opencode-api-plugin 网关) | 网关聚合的一切:OpenCode Go 订阅(读本地 opencode 登录态)、OpenCode Zen、以及 gateway.config.json 里的任意自定义上游 | | opencode-free | 插件进程内环回代理(默认 http://127.0.0.1:10102/v1) | 内联的 opencode2api 移植:驱动本机 opencode serve 后端访问 Zen 免费档,不依赖网关进程 | 按设计本插件不带用量面板;额度显示由网关的 /api/usage 与托盘承担。
展开完整文档(README 剩余 1 节)
dsh-opencode-gateway

DeepSeek Harness(DSH)插件:把本机 opencode 生态接进 DSH 的模型菜单,两条 provider route:

| route | 端点 | 承载内容 |
| opencode-gateway | http://127.0.0.1:8787/v1(本机 opencode-api-plugin 网关) | 网关聚合的一切:OpenCode Go 订阅(读本地 opencode 登录态)、OpenCode Zen、以及 gateway.config.json 里的任意自定义上游 |
| opencode-free | 插件进程内环回代理(默认 http://127.0.0.1:10102/v1) | 内联的 opencode2api 移植:驱动本机 opencode serve 后端访问 Zen 免费档,不依赖网关进程 |

按设计本插件不带用量面板;额度显示由网关的 /api/usage 与托盘承担。

功能

- OpenCode Go 精修名录:默认菜单对齐 ZCode 的 15 个模型;41 个条目的展示名、上下文窗口、思考强度词表、视觉标记与拒用名单实测值移植自 AIMFllyYS/dsh-protocom-api(MIT)——包括 Go 用 off 拒 none、Grok/Muse 只认 /responses(网关侧已自动转换)这类实测坑。
- 实时模型发现(软失败):两条路由先以配置/种子菜单挂载,端点 listing 回答后原地升级;发现失败静默保持现状,对话不中断。
- 后端生命周期托管:免费档后端不在时自动 spawn opencode serve(首次约 10~20 秒),插件卸载时只回收自己 spawn 的后端;复用自网关的后端留给网关。
- 进程内环回桥:pi-ai 传输需要真实 URL,插件把 LocalProxy 函数包成一个仅绑定回环地址的 HTTP 监听(默认 10102,可配);环回服务永不驻留事件循环,headless 任务照常退出。

系统要求

- DSH ≥ 0.1.7-rc.2 且 < 0.3.0-0(peer 实测范围),已在 0.2.0-rc.2 验证
- 免费档需要本机装有 opencode CLI,建议先 opencode auth login(免费账号模型列表与限额更好,匿名也能用)
- 网关路由需要配套网关 EDDY597/opencode-api-plugin 在运行(start-gateway.cmd、start-tray-hidden.vbs 或托盘)

安装

桌面端(推荐)

打开应用,侧栏选择「插件」→「添加插件」,粘贴本地路径:

D:/Agent/dsh-opencode-gateway

或 Git spec(发布后):

github:<owner>/dsh-opencode-gateway#v0.1.0

点「安装」,等待 pnpm 完成,点「立即启用」。

CLI

pnpm dsh plugin --profile web add "D:/Agent/dsh-opencode-gateway"

安装器会做完整兼容性沙箱校验,在这台机器上单步可能要十几分钟;直接手动组装 profile 更快,见下节。

配置

本插件不安装设置界面;配置写在 composition 层(profile 的 cordis.patch.yml,桌面端在 ~/.dsh/profiles/desktop/),改完重启生效:

- id: opencode-gateway
name: dsh-opencode-gateway
config:
gateway:
provider: opencode-gateway # 路由名 displayName: OpenCode Go baseURL: http://127.0.0.1:8787/v1 apiKeyEnv: OPENCODE_GATEWAY_KEY # 凭据引用(存 ~/.dsh/.env)
hiddenModels: ["free/"] # 隐藏的 listing 前缀(免费档归内联路由)
models: [] # 额外/覆盖条目
free:
provider: opencode-free
serverUrl: http://127.0.0.1:10001 # opencode 后端 proxyPort: 10102 # 环回监听端口 opencodePath: opencode # opencode 可执行文件 manageBackend: true zenApiKeyEnv: OPENCODE_ZEN_API_KEY disableTools: true # 免费档必需
internalAllowedTools: [webfetch, bash, websearch]

模型管理页

DSH 设置里会出现 OpenCode 网关 一节(插件 v0.2.0 起):两张卡片分别管理 OpenCode Go 与 OpenCode Free 路由的模型菜单。

- 刷新:向对应端点拉取实时模型列表(OpenCode Go 走网关 /v1/models,OpenCode Free 走内联代理的后端 listing)。
- 勾选:勾选的模型进入模型菜单(含输入框芯片);未勾选的仅在此列出。从 listing 新发现的模型标"发现"。
- 保存勾选:以修订号围栏的原子写入 settings 页,菜单与输入框芯片即时更新,重启后保留;冲突时整页重载并丢弃暂存。
- 恢复内置默认:unset 该路由的 models,菜单回到内置清单(组合层 models 若配置过则以它为基底)。

优先级:settings 里保存过 models(哪怕空数组)> 组合层 cordis.patch.yml 的 models > 内置默认。保存条目只带 id / 名字 / 容量时,宿主会从内置实测名录补齐缺失的思考强度词表与视觉标记(显式写 reasoningEfforts: false 不受影响)。后端结构性字段(serverUrl / proxyPort / opencodePath 等)在设置页改动后需要重启才生效,模型菜单是即时生效的。

环境变量(~/.dsh/.env)

| 变量 | 说明 |
| OPENCODE_GATEWAY_KEY | 网关 Bearer token;网关未设 token 时任意非空值即可(插件要求凭据非空,缺失在发请求前报 MISSING_CREDENTIAL) |
| OPENCODE_ZEN_API_KEY | 透传为后端 OPENCODE_API_KEY 解锁付费模型;未设时回退读本地 opencode 登录态(v0.1 只读进程环境,不走凭据服务) |

models[] 条目

| 字段 | 说明 |
| id | 端点接受的模型 id,原样转发 |
| name | 选择器展示名 |
| contextWindow / maxTokens | 容量;maxTokens 同时成为该模型的每请求默认输出上限 |
| reasoningEfforts | false 声明不推理;字典 {档位: 线上拼写},仅 off 可留空(发 nothing) |
| input | ["text","image"] 声明图片输入 |

工作原理

- 双路由一个 adapter:PiAiAdapter 每次操作读取当前 profiles 快照;发现事实变化 → 原子 replace 重新注册,不重启、不中断在途流。
- 环回桥:请求体缓冲进 fetch Request,响应逐块写回;头部已发后上游断流按销毁 socket 处理(防 ERR_HTTP_HEADERS_SENT 杀宿主)。
- 重试单层:插件侧 retryPolicy 默认 normal/maxRetries 0——重试全部由网关(订阅路由)或内联代理(免费路由)承担,避免两层叠乘。
- 思考桥接:reasoning_content / reasoning+reasoning_details / 内联 think 标签三种形态由 pi-ai 增量解析统一流入 DSH 的 reasoning-delta 折叠显示(Go 路由的内联标签由网关在服务端剥出)。

已知限制(v0.1)

- 无用量面板(按设计);额度走网关 /api/usage + 托盘。
- zenApiKeyEnv 只读进程环境,暂不解析凭据服务里存的引用。
- headless 一次性任务退出滞留:对照实验(拔掉本插件)同样滞留,属 DSH headless 基座行为,与本插件无关。
- 两个进程同时 spawn 同一后端端口(10001)存在竞态:spawn 失败会报错,重试即好;先健康检查再 spawn 的顺序已尽量规避。

开发

pnpm install
pnpm run build # tsdown → lib/index.js(Host,ESM);tsc -b → lib/types
pnpm run test # vitest

lib/ 构建产物随源码提交(git 安装零构建),改完代码先 build 再提交。

License

MIT © 2026 — 包含移植自 opencode-api-plugin 的嵌入式 opencode2api 实现(其源自 TiaraBasori/opencode2api,MIT,许可副本见 assets/LICENSE.md),以及来自 dsh-protocom-api 的 OpenCode Go 名录实测数据(MIT)。
预览分享卡片长什么样 ↓EDDY597/dsh-opencode-gateway
分享 · DeepSeek Harness Hub
EDDY597/dsh-opencode-gateway

把本机 OpenCode 模型接入 DSH 模型菜单

回到顶部