把 OpenCode Go 模型路由接入 DSH 并管理密钥
32.7/100
综合分
1
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/24 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add edynasty/dsh-opencode-go-provider该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
更新放缓:最近一次提交在 66 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 22 处,展示前 22 条)
- 读取本地文件lib/index.js:1417
text = readFileSync(path, "utf8"); - 发起网络请求lib/client.js:484
const response = await fetch(path, { - 读取本地文件lib/control-CZd1dUg_.js:1305
if (memoizedManifest === void 0) memoizedManifest = parseModelsManifest(parseJsonFile(readFileSync(MODELS_ARTIFACT, "utf8"), "models.json")); - 读取本地文件lib/control-CZd1dUg_.js:1321
if (memoizedPatches === void 0) memoizedPatches = parsePatchesFile(parseJsonFile(readFileSync(PATCHES_ARTIFACT, "utf8"), "patches.json")); - 写入本地文件lib/control-CZd1dUg_.js:1424
await mkdir(directory, { recursive: true }); - 写入本地文件lib/control-CZd1dUg_.js:1436
await rename(temp, path); - 删除本地文件lib/control-CZd1dUg_.js:1441
if (tempCreated) await rm(temp, { force: true }).catch(() => void 0); - 发起网络请求lib/control-CZd1dUg_.js:1635
const liveRace = await raceCancellation(deps.fetch(endpoint, { - 读取本地文件lib/control-CZd1dUg_.js:1706
if ((await lstat(current)).isSymbolicLink()) { - 读取本地文件lib/control-CZd1dUg_.js:1707
if (await realpath(current) !== `/private${current}`) throw new Error("unsafe-symlink"); - 读取本地文件lib/control-CZd1dUg_.js:1732
info = await lstat(path); - 删除本地文件lib/control-CZd1dUg_.js:1795
await rm(lockPath, { force: true }).catch(() => void 0); - 删除本地文件lib/control-CZd1dUg_.js:1799
if (lockCreated) await rm(lockPath, { force: true }).catch(() => void 0); - 删除本地文件lib/control-CZd1dUg_.js:1832
if (backupCreated) await rm(backupPath, { force: true }).catch(() => void 0); - 写入本地文件lib/control-CZd1dUg_.js:1856
async function writeTextAtomic(path, text, mode, renameSeam = (from, to) => rename(from, to), verifyBeforeRename = async () => void 0, beforeVerify = - 写入本地文件lib/control-CZd1dUg_.js:1866
if ((mode & 511) !== 384) await chmod(temp, mode); - 删除本地文件lib/control-CZd1dUg_.js:1874
if (tempCreated) await rm(temp, { force: true }).catch(() => void 0); - 读取密钥环境变量lib/control-CZd1dUg_.js:7671
if (node_process.env.LOG_TOKENS) console.log("|", cst.prettyToken(source)); - 删除本地文件lib/control-CZd1dUg_.js:8901
if (backupPath !== void 0) await rm(backupPath, { force: true }).catch(() => void 0); - 发起网络请求lib/control-CZd1dUg_.js:9050
const modelsDevRace = await raceCancellation(deps.fetch(MODELS_DEV_API_URL, { signal }), signal, SYNC_DEADLINE_CODE); - 发起网络请求lib/control-CZd1dUg_.js:9069
const liveRace = await raceCancellation(deps.fetch(liveEndpoint, { - 发起网络请求lib/control-CZd1dUg_.js:9115
const response = await globalThis.fetch(url, {
扫描于 2026/11/1(0 天前) · 范围 入口闭包 + 发布文件清单 · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/dsh-api-remotes@deepseek-ai/dsh-attachment@deepseek-ai/dsh-brand@deepseek-ai/dsh-client-connection@deepseek-ai/dsh-client-locale@deepseek-ai/dsh-client-runtime@deepseek-ai/dsh-client-ui-primitives@deepseek-ai/dsh-client-ui-settings@deepseek-ai/dsh-client-ui-settings-plugins@deepseek-ai/dsh-client-ui-slots@deepseek-ai/dsh-credentials给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
README
由 DeepSeek 最新模型翻译生成dsh-opencode-go-provider
面向 DeepSeek Harness(DSH rc.6)的 OpenCode Go LLM provider 组合包:单个 opencode-go 模型路由接入 OpenCode Go 网关,附带 Web Connect 设置卡、 stale-while-revalidate 模型目录与安全的诊断命令。
状态:社区软件,未发布到 npm。 本包以 commit-pinned Git 依赖的形式安装进 DSH profile;npm registry 不是安装途径。本包不隶属于、不受 DeepSeek、 OpenCode 或任何模型供应商的背书或赞助。见 LICENSE 与 THIRD_PARTY_NOTICES.md。
环境要求
- DeepSeek Harness DSH rc.6(本组合包面向 0.1.0-rc.6 peer 图)。
- Node.js ^22.19.0 || >=24.0.0。
- corepack 托管的 pnpm 11.7.0(若 pnpm --version 无法经 Corepack 解析,先执行 corepack enable)。
- 一个 OpenCode Go API key。
展开完整文档(README 剩余 1 节)
dsh-opencode-go-provider 面向 DeepSeek Harness(DSH rc.6)的 OpenCode Go LLM provider 组合包:单个 opencode-go 模型路由接入 OpenCode Go 网关,附带 Web Connect 设置卡、 stale-while-revalidate 模型目录与安全的诊断命令。 状态:社区软件,未发布到 npm。 本包以 commit-pinned Git 依赖的形式安装进 DSH profile;npm registry 不是安装途径。本包不隶属于、不受 DeepSeek、 OpenCode 或任何模型供应商的背书或赞助。见 LICENSE 与 THIRD_PARTY_NOTICES.md。 环境要求 - DeepSeek Harness DSH rc.6(本组合包面向 0.1.0-rc.6 peer 图)。 - Node.js ^22.19.0 || >=24.0.0。 - corepack 托管的 pnpm 11.7.0(若 pnpm --version 无法经 Corepack 解析,先执行 corepack enable)。 - 一个 OpenCode Go API key。该 key 仅在操作时经 DSH credentials 服务以 OPENCODE_GO_API_KEY 为 ref 存储与解析;绝不写入 settings、catalog、日志、错误信息或包内。 安装(Git,commit-pinned) 本包未发布到 npm;受支持的安装方式是 DSH web profile 的 commit-pinned Git 依赖: dsh plugin --profile web add github:edynasty/dsh-opencode-go-provider#d2a447610a5dff4006ac966525effd9669342a78 仓库已提交 lib/,因此 Git 安装无需构建步骤即可加载组合包。卸载会移除包及其 bundle 行: dsh plugin --profile web remove dsh-opencode-go-provider 与 web base bundle 共存 web profile 的 base bundle(@deepseek-ai/dsh-llm-pi-ai)已在 provider 目录中声明了 opencode-go(其目录原生包含该路由)。本包采用该已有条目而非重复注册,并以自身 adapter(更丰富的 SWR catalog)、Connect 卡与 doctor 路由接管该路由。与 base bundle 共存无需任何 profile 改动——特别是无需禁用 llm-pi-ai。 注册内容 - 唯一 provider 路由:opencode-go,由 llm-opencode-go bundle 行(cordis.patch.yml)挂载。 - 一个 settings namespace:llm-opencode-go(刷新间隔、新鲜度窗口、网络超时、下架宽限、credential ref)。 - 一张 Web Connect 设置卡(经 dsh.client.inject 注入),可连接、测试连接、运行诊断与断开。 - 独立 bin(dsh plugin --profile web exec dsh-opencode-go-provider)提供 status、doctor、migration-dry-run 与 migration-apply。 模型目录与协议 内嵌目录(catalog/models.json)派生自 OpenCode 的 models.dev 元数据(https://models.opencode.ai/api.json),只保留 opencode-go provider 记录。 每个模型从该元数据携带自己的协议,adapter 按模型分发,绝不按模型名前缀猜测: | 协议 | 选择依据 | | openai-responses | models.dev SDK 元数据映射到 @ai-sdk/openai 的模型 | | openai-completions | 映射到 @ai-sdk/openai-compatible 的模型(默认类别) | | anthropic-messages | 映射到 @ai-sdk/anthropic 的模型(base URL https://opencode.ai/zen/go) | 模型可用性通过实时端点 https://opencode.ai/zen/go/v1/models 检查,该端点 只贡献可用 id;协议、上下文、模态、成本与推理元数据一律以 models.dev 为准。 目录生命周期(stale-while-revalidate) - 内嵌目录启动即可用——离线且无需凭据。 - 后台刷新维护 5 分钟新鲜度窗口;窗口内的读取绝不触网。 - 60 分钟周期刷新做再验证;过期读取调度一次 single-flight 后台刷新。 - 每次网络尝试受 10 秒超时约束。 - 刷新成功后原子写入缓存(同目录临时文件、0600、fsync、rename),路径为 $DSH_HOME/cache/dsh-opencode-go-provider/catalog.json,随后才切换内存快照;进行中的请求保留其启动时的快照。 - 离线回退:缓存缺失或损坏时以内嵌目录服务(origin: embedded/corrupt);损坏文件绝不删除,失败也绝不覆盖 last-good 状态。 - 隔离(quarantine):有 live id 但无 models.dev 元数据时,以脱敏的可机读原因记录,绝不暴露为可调用模型。 - 14 天下架宽限:models.dev 已知但 live 缺失的模型在 deprecatedAt 时间戳内仍可选;超过 14 天被驱逐(若回到 live 则复活)。 Connect / status / doctor / disconnect - 连接(Connect)(Web 卡或 Host 路由)只把 key 存入 DSH credentials 服务的 OPENCODE_GO_API_KEY;key 绝不回显、回传或写入其他任何位置。 - 状态(status)只输出脱敏事实:configured 是否、来源(embedded/cache/refreshed)、模型数、上次刷新、上次尝试、刷新成功/失败计数。 - 测试连接 / 诊断(doctor)只执行一次带认证的 GET https://opencode.ai/zen/go/v1/models,输出脱敏计数与固定错误码;绝不调用生成端点。 - 断开(disconnect)只移除 OPENCODE_GO_API_KEY 这一个凭据。opencode-go 路由与 Connect 卡保持注册与可选——断开绝不删除 provider、不写入 disabled 列表、也不触碰其他 provider。 connect/disconnect 仅限 Host:独立 bin 会以固定消息拒绝它们,因为 DSH credential store 归运行中的 Host 所有。 迁移手工路由 若旧配置手工设置了 llm-pi-ai.providers.opencode-go,本组合包可将其迁移掉: dsh plugin --profile web exec dsh-opencode-go-provider migration-dry-run <settings.yaml> dsh plugin --profile web exec dsh-opencode-go-provider migration-apply --revision <64-hex> <settings.yaml> - migration-dry-run 只读,输出目标、SHA-256 revision 与删除 key/行 计数(绝不输出 key 名或值)。 - migration-apply 校验期望 revision、获取同目录锁、写入前重新读取并重新哈希、创建带时间戳的可恢复备份(绝不触碰 credentials 文件),并原子发布。并发编辑产生 conflict 且零残留;二次 apply 是幂等的 no-change。 - 仅支持保守的 YAML 形状:无 flow map、anchor 或 alias 的 block mapping 可迁移;不支持的形状在任何锁/备份/写入之前以 unsupported-shape 中止。 - 迁移保留默认模型、其他所有 providers、注释、引号与 key 顺序——只删除 llm-pi-ai.providers.opencode-go 块,credential ref 原样保留。 安全 支持范围、私有报告途径、凭据处理与安全诊断契约见 SECURITY.md。 开发 环境搭建、TDD 工作流、严格类型/禁止私有导入规则、250-LOC 生产代码上限与完整本地门禁见 CONTRIBUTING.md: corepack enable pnpm install --frozen-lockfile pnpm run check CI(.github/workflows/ci.yml)在 Node 22.19.0、24、26 上以 pnpm 11.7.0 与 frozen lockfile 运行相同门禁。Live smoke 需要同时满足本地 RUN_OPENCODE_GO_LIVE=1 显式开启和本地 OPENCODE_GO_API_KEY;CI 两者都不注入,因此该步骤始终跳过。 许可证 MIT —— 见 LICENSE。上游通知与署名保留在 THIRD_PARTY_NOTICES.md。
预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
edynasty/dsh-opencode-go-provider
把 OpenCode Go 模型路由接入 DSH 并管理密钥
相关插件 · 模型接入
API 中继安全审计toby-bridges/api-relay-audit
面向 AI API 中转与 LLM 代理的本地安全审计。
★ 897已汉化DSH
69.4
免费搜索插件DDDMUC/dsh-free-search
DeepSeek Harness 免费搜索插件 —— 无需 API key,零成本,多引擎可切换。 一个给…
★ 761已汉化DSH
68.7
免费联网搜索liustack/modsearch
在官方 App 里模型能联网,切到 API 就不能了。ModSearch 把联网补回来:网页搜索、X…
★ 863已汉化DSH
68.5
OpenCode 免费模型FishBottle7/opencode2dsh
在 DSHDeepSeek Harness里原生使用 OpenCode Zen 的免费匿名模型。
★ 379已汉化DSH
67.8
AI 模型网关tingly-dev/tingly-box
Tingly Box Web UI 演示
★ 373已汉化DSH
67.4
WorkBuddy 账号池XDTrees/dsh-xdpool
把你能白嫖的模型额度接进 DSH 同一个池:WorkBuddy 多账号自动容错、十三家扫码登录、76…
★ 359已汉化DSH
67.1