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

OpenCode 桥接 home-river/dsh-opencode-cli-bridge

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

在本机通过 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
装得上吗
本站已在 dsh 0.2.1-rc.2 下真实安装成功
非静态推断
L4 · 真实安装等级说明 →
安全吗
本站尚未对该插件做风险分级
暂未覆盖,不等同于无风险
还在维护吗
活跃:最近一次提交在 13 天前
档位由哪些信号合成

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

验证判据与等级说明 →
社区实装还没有人打卡 · 装过的第一个就是你
安全扫描自动 · 静态分析源码
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
预览分享卡片长什么样 ↓home-river/dsh-opencode-cli-bridge
分享 · DeepSeek Harness Hub
home-river/dsh-opencode-cli-bridge

在本机通过 OpenCode CLI 调用兼容模型并续接会话

回到顶部