在本机通过 OpenCode CLI 调用兼容模型并续接会话
30/100
综合分
0
GitHub 星标
—
npm 周下载
—/5
用户评分
数据截至 2026/10/20 · 周下载取自 npm 全网(含 CI / 镜像),非本站安装数;综合分由星标、活跃度与兼容性检查合成。
安装命令 · 需先装 dsh CLI 引擎
dsh plugin --profile web add home-river/dsh-opencode-cli-bridge该包不可直接 npm 安装,改从 GitHub 源安装(明细见下方安装检查)
状态速览
判定依据:实装验证 · 静态安装检查 · 自动扫描 · 仓库维护状态信任档位:已验证
是什么
dsh 原生插件 · model
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成
本站实装验证(真实安装 L4 覆盖全站;L5 为运行时冒烟或实机截图,覆盖范围小于 L4) · 验证所用 dsh 版本 · 静态安装检查 · 风险分级 · 仓库维护状态。 下方各区块是它的证据明细。
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码v2.7.0🔵 扫描:含敏感能力尚无人工评估展开查看扫描说明与证据 ↓
安全扫描自动 · 静态分析源码
v2.7.0静态扫描发现插件具备触达本地系统的能力:执行外部命令、读写/删除本地文件、读取剪贴板或密钥类环境变量(至少其一)。这是能力清单,不是危险判定——具体能力项与证据见下方,安装前请自行判断是否需要。
可执行外部命令读写/删除本地文件写入剪贴板(不计风险)发起外部网络请求
查看扫描证据(共 31 处,展示前 31 条)
- 读取本地文件src/catalog-store.ts:28
if (!existsSync(cachePath)) return null; - 读取本地文件src/catalog-store.ts:29
const parsed: unknown = JSON.parse(readFileSync(cachePath, "utf8")); - 写入本地文件src/catalog-store.ts:42
mkdirSync(dirname(cachePath), { recursive: true }); - 写入本地文件src/catalog-store.ts:44
writeFileSync(tmp, JSON.stringify(file), "utf8"); - 写入本地文件src/catalog-store.ts:45
renameSync(tmp, cachePath); - 执行外部命令来自配置/变量src/catalog-store.ts:53
const child = spawn(command, args, { - 读取本地文件src/cli-bridge.ts:44
st = statSync(abs); - 执行外部命令来自配置/变量src/cli-status.ts:76
child = spawn(command, args, { stdio: ["ignore", "pipe", "pipe"], windowsHide: true }); - 发起网络请求src/client.js:189
res = await fetch(MODELS_URL, { method: "GET" }); - 发起网络请求src/client.js:206
res = await fetch(FILTER_URL, { - 发起网络请求src/client.js:249
res = await fetch(CLI_STATUS_URL, { method: "GET" }); - 写入剪贴板src/client.js:285
await navigator.clipboard.writeText(text); - 读取本地文件src/discover-cli.ts:21
return statSync(p).isFile(); - 读取本地文件src/discover-cli.ts:47
content = readFileSync(shimPath, "utf8"); - 读取本地文件src/install-advice.ts:32
return statSync(p).isFile(); - 读取本地文件src/model-filter.ts:94
text = readFileSync(configPath, "utf8"); - 读取本地文件src/model-settings.ts:74
const text = readFileSync(configPath, "utf8"); - 写入本地文件src/model-settings.ts:89
mkdirSync(dirname(configPath), { recursive: true }); - 写入本地文件src/model-settings.ts:91
writeFileSync(tmp, JSON.stringify(root, null, 2), "utf8"); - 写入本地文件src/model-settings.ts:92
renameSync(tmp, configPath); - 写入本地文件src/plugin.ts:28
mkdirSync(LOG_DIR, { recursive: true }); - 写入本地文件src/plugin.ts:29
appendFileSync(join(LOG_DIR, file), data); - 写入本地文件src/plugin.ts:112
mkdirSync(LOG_DIR, { recursive: true }); - 写入本地文件src/plugin.ts:113
writeFileSync(join(LOG_DIR, "last-request.md"), info.prompt); - 执行外部命令固定命令src/run-cli.ts:43
const killer = spawn("taskkill", ["/PID", String(pid), "/T", "/F"], { - 执行外部命令来自配置/变量src/run-cli.ts:79
child = spawn(opts.command, opts.args, { - 读取本地文件src/session-store.ts:36
if (existsSync(file)) { - 读取本地文件src/session-store.ts:38
const data = JSON.parse(readFileSync(file, "utf8")) as { bindings?: SessionBinding[] }; - 写入本地文件src/session-store.ts:61
mkdirSync(dirname(this.#file), { recursive: true }); - 写入本地文件src/session-store.ts:63
writeFileSync(tmp, JSON.stringify({ bindings: [...this.#map.values()] }, null, 2)); - 写入本地文件src/session-store.ts:64
renameSync(tmp, this.#file);
扫描于 2026/10/31(1 天前) · 范围 全包扫描(包内未声明入口) · 来源 GitHub 仓库
静态扫描只反映源码中出现的调用,不构成安全背书;人工评估与自动扫描相互独立、互不覆盖。
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个
DeepSeek Harness 插件,经本机 OpenCode CLI 使用 OpenCode 兼容模型——原生 LlmAdapter 透传桥,OC 会话持久续接
README
由 DeepSeek 最新模型翻译生成dsh-opencode-cli-bridge
在 DeepSeek Harness 里通过本机 OpenCode CLI 使用 OpenCode 兼容模型——原生 LlmAdapter 桥接,无 sidecar、无额外进程、无 API Key。
DeepSeek Harness 插件 · MIT License
功能特性
- 原生 adapter——模型选择器出现 opencode-bridge provider,装好即用
- 会话一对一续接——DSH 会话 ↔ OpenCode session 绑定,工具结果跨轮可见
- 打字机流式——OC 整段输出切块 + 节奏层模拟流式,思考/工具回传结构化镜像
- CLI 环境检测——面板常驻状态卡(版本/路径/来源),未安装时给推荐安装命令,一键复制
- 模型暴露筛选——侧边卡片勾选面板,想暴露哪些模型自己定
- 健壮性——五层超时、取消即杀进程树(Windows taskkill /T)、12 类错误分类、协议解析防护
前置要求
| 依赖 | 要求 |
| DeepSeek Harness | 0.2.x(实测线 0.2.1) |
| Node.js | ≥ 20(DSH 能跑就满足) |
| pnpm | ≥ 10(dsh plugin add 用它装依赖,需在 PATH;npm i -g pnpm) |
展开完整文档(README 剩余 1 节)
dsh-opencode-cli-bridge
在 DeepSeek Harness 里通过本机 OpenCode CLI 使用 OpenCode 兼容模型——原生 LlmAdapter 桥接,无 sidecar、无额外进程、无 API Key。
DeepSeek Harness 插件 · MIT License
功能特性
- 原生 adapter——模型选择器出现 opencode-bridge provider,装好即用
- 会话一对一续接——DSH 会话 ↔ OpenCode session 绑定,工具结果跨轮可见
- 打字机流式——OC 整段输出切块 + 节奏层模拟流式,思考/工具回传结构化镜像
- CLI 环境检测——面板常驻状态卡(版本/路径/来源),未安装时给推荐安装命令,一键复制
- 模型暴露筛选——侧边卡片勾选面板,想暴露哪些模型自己定
- 健壮性——五层超时、取消即杀进程树(Windows taskkill /T)、12 类错误分类、协议解析防护
前置要求
| 依赖 | 要求 |
| DeepSeek Harness | 0.2.x(实测线 0.2.1) |
| Node.js | ≥ 20(DSH 能跑就满足) |
| pnpm | ≥ 10(dsh plugin add 用它装依赖,需在 PATH;npm i -g pnpm) |
| OpenCode CLI | 必须:本插件通过本机 opencode CLI 出模型流量 |
OpenCode CLI 未装也没关系——打开 OC-bridge 面板,顶部「CLI 环境」区块会告诉你状态并给出按你的环境推荐的安装命令(自动探测 npm / scoop / choco),一键复制即可。
安装
npm 安装(推荐)
dsh plugin --profile web add dsh-opencode-cli-bridge
或本地 tgz / 源码安装
npm pack
dsh plugin --profile web add ./dsh-opencode-cli-bridge-0.1.0.tgz
提示:找不到 dsh 命令时可用 npx -y --package @deepseek-ai/dsh dsh plugin ... 兜底。
验证:重启 dsh web,打开模型选择器 → 出现 opencode-bridge 分组并列出模型 → 选中开聊。
使用
OC-bridge 面板:顶部 CLI 环境状态卡 + 模型暴露勾选
- 模型选择器:直接选 opencode-bridge 下的模型对话;
- OC-bridge 面板(左栏「插件」卡旁):顶部是 CLI 环境状态卡;下方勾选要暴露到选择器的模型,保存后下次打开选择器生效;
- 取消:DSH 侧停止生成即杀掉 CLI 进程树,不留孤儿进程。
配置
面板写回 ~/.dsh-opencode-bridge/config.json,也可手改:
{
"models": {
"include": ["opencode/mimo", "opencode/gpt"],
"exclude": ["opencode/gpt-5-pro"]
}
}
规则(匹配完整模型 id,模式仅支持 通配):
1. include 非空时只展示命中项;留空 = 全放行;
2. exclude 优先级最高,命中即隐藏;
3. opencode-go/ 默认隐藏,需要时在 include 显式写回。
改完即生效(每次打开选择器重读),配置损坏不报错、退回默认并记诊断日志。
思考强度:插件声明 reasoning.efforts 并把 reasoningEffort 透传 opencode run --variant;但免费模型实测不响应 --variant——「接受并转发」≠「保证生效」。
工作原理
DSH 会话 → DSH LLM 服务 → opencode-bridge LlmAdapter → opencode run --format json(本机 CLI,--dir 工作区 / --session 会话绑定) → JSON Lines 事件 → DSH text-delta / reasoning / usage / finish
- 绑定:~/.dsh-opencode-bridge/sessions.json 记录 DSH 会话 → OC 会话与消息水位,续轮增量发送;账本漂移或 OC 会话失效时自动重建并全量重放一次;
- 回传:正文 → text 块;思考 → 原生 reasoning 块;工具调用/结果 → 结构化镜像(借 reasoning 块承载,避免 tool-call 块触发 DSH 工具循环造成双重执行);
- 发现:CLI 四级发现(显式路径 → PATH → npm 全局布局 → 报错引导),Windows 下 .cmd shim 解析出真身 exe 直接执行,不用 shell。
安全与隐私
- 只调用本机已装的 OpenCode CLI,流量从你的机器直达模型上游;无遥测、无第三方统计、无安装脚本(pnpm 零构建脚本摩擦);
- 诊断日志写在 ~/.dsh-opencode-bridge/(requests.log 请求摘要 / diagnostics.log 协议诊断 / sessions.json 会话映射),不含 API Key;
- ⚠️ 取证日志 last-request.md 会保存最近一次请求的 prompt 原文(排障用),介意可随时删除该文件,功能不受影响;
- 面板的「CLI 环境」检测是只读的:不执行任何安装/卸载动作,只探测并给命令。
DSH 版本兼容
| 你的 DSH 版本 | 本插件版本 |
| 0.2.1 及之后的 0.2.x(含 0.2.1-rc 线) | 0.1.0 |
插件在顶层用 engines.dsh: ">=0.2.1-0 <0.3.0" 声明兼容范围,安装与启动都会校验;不满足时插件会被整包跳过,并列入 skippedBundles(可用 dsh plugin --profile allow-version <pkg@ver> --dsh-version <ver> --accept-risk 强行豁免,风险自担)。
开发
npm test # tsc 全量 + client 构建 + node --test 单测 239 条
OCBRIDGE_IT=1 npm run test:integration # 真实 CLI 集成测试(需本机 opencode)
- src/:host 半区(发现/spawn/协议/事件/adapter/路由)+ client.js(OC-bridge 面板,vanilla JS + React.createElement,无打包链);
- test/:fake CLI 单测(走真实 spawn 路径)+ 真实 CLI 集成测试;
- docs/:GOALS.md(目标与验收)、CLI-BEHAVIOR.md(CLI 行为实测记录)、research/(DSH 合同研究);
- issues/:关键 bug 的现象/根因/修复方案记录(工程过程透明)。
License
MIT预览分享卡片长什么样 ↓
分享 · DeepSeek Harness Hub
home-river/dsh-opencode-cli-bridge
在本机通过 OpenCode CLI 调用兼容模型并续接会话
相关插件 · 模型接入
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