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

本地桌面控制台 leoporoluo/openchamber-providers

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

免命令行启动本地运行时,管理档案插件与工作区

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

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

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

状态速览

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

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

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

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

展开查看检查明细 ↓

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

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

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

验证方式:npm registry 存在性 + package.json 静态校验 · 最后检查 2026/10/7 16:41:20

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

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

读写/删除本地文件读取剪贴板或密钥环境变量发起外部网络请求
查看扫描证据(共 6 处,展示前 6 条)
  • 请求外部主机.
    service/main.js:1
    "use strict";var w=require("node:http"),g=require("node:fs"),y=require("node:os"),E=require("node:path");var h=t=>{let e=t.trim().replace(/ +$/,"");i
  • 发起网络请求
    service/main.js:1
    "use strict";var w=require("node:http"),g=require("node:fs"),y=require("node:os"),E=require("node:path");var h=t=>{let e=t.trim().replace(/ +$/,"");i
  • 读取密钥环境变量
    service/main.js:1
    "use strict";var w=require("node:http"),g=require("node:fs"),y=require("node:os"),E=require("node:path");var h=t=>{let e=t.trim().replace(/ +$/,"");i
  • 读取密钥环境变量
    service/main.ts:17
    const TOKEN = process.env.OPENCHAMBER_SERVICE_TOKEN ?? '';
  • 读取本地文件
    service/main.ts:73
    return readFileSync(path, 'utf8').trim();
  • 发起网络请求
    service/main.ts:85
    const response = await fetch(url, {
扫描于 2026/11/4(0 天前) · 范围 全包扫描 · 来源 GitHub 仓库
涉及外部主机:.

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

依赖的 DSH / Cordis 模块
@deepseek-ai/cordis@deepseek-ai/cordis-plugin-group@deepseek-ai/cordis-plugin-hmr@deepseek-ai/cordis-plugin-include@deepseek-ai/cordis-plugin-loader@deepseek-ai/cordis-plugin-timer@deepseek-ai/cosmokit@deepseek-ai/dsh@deepseek-ai/dsh-acp@deepseek-ai/dsh-acp-app@deepseek-ai/dsh-agent@deepseek-ai/dsh-agent-default-model
给这个插件打分还没有人投票↓
用户评分
还没有人投票,来当第一个

功能亮点

  • 免命令行启动本地运行时
  • 管理档案插件
  • 管理工作区

README

由 DeepSeek 最新模型翻译生成
OpenChamber Providers 面向 OpenCode 的专注型服务商管理器,以 OpenChamber 扩展的形式提供。 这是一个 OpenChamber 扩展,用来管理 OpenCode 的自定义 OpenAI 兼容服务商。入口有两个:右侧边栏的面板,或者全屏页面。 它直接改写 ~/.config/opencode/opencode.jsonc(或 opencode.json)里的 providers 块,因此 OpenCode 会自行重新加载,服务商随即出现在 Settings → Providers 中,连同它的模型、上下文长度、能力与推理等级一起显示。文件里的其他内容原样保留:注释、格式、键顺序以及无关设置都逐字节不变。
展开完整文档(README 剩余 1 节)
OpenChamber Providers

面向 OpenCode 的专注型服务商管理器,以 OpenChamber 扩展的形式提供。

这是一个 OpenChamber 扩展,用来管理 OpenCode 的自定义 OpenAI 兼容服务商。入口有两个:右侧边栏的面板,或者全屏页面。

它直接改写 ~/.config/opencode/opencode.jsonc(或 opencode.json)里的 providers 块,因此 OpenCode 会自行重新加载,服务商随即出现在 Settings → Providers 中,连同它的模型、上下文长度、能力与推理等级一起显示。文件里的其他内容原样保留:注释、格式、键顺序以及无关设置都逐字节不变。

功能

- 新增、编辑、删除自定义服务商(第三方网关、自托管运行时)
- 服务商 ID、显示名称、API 协议、base URL 和 API key
- 模型支持小数形式的上下文与输出上限、上游模型 ID、图像输入和工具调用
- 推理等级以可点击卡片呈现,写入 OpenCode 自己的 capabilities.reasoning;自定义包还会补上对应的 variants,因为 OpenCode 不会为它推导出任何变体
- 同时读取 opencode.json 和 opencode.jsonc;编辑结果写回它来自的那个文件
- 保存时与磁盘上的块合并,因此 headers、请求体、定价、已禁用的模型和手写的 variants 都能保留
- 读取旧版 V1 写法(npm / options / variants 记录)并改写为 V2
- 面板跟随 OpenChamber 的主题与布局:页面上分两栏,边栏里逐级下钻
- 不发网络请求,不跑后台服务

安装

在 OpenChamber 中打开 Settings → Extensions → Folder, ZIP or URL,粘贴:

https://github.com/leoporoluo/openchamber-providers.git

然后选择 Add,并批准文件系统权限(它可能需要读写 ~/.config/opencode/opencode.json 和 opencode.jsonc)。

也可以从本地克隆安装:

git clone https://github.com/leoporoluo/openchamber-providers.git

把克隆目录的绝对路径粘贴到同一个输入框里。

使用

1. 打开边栏上的面板,或进入 Extension pages → OpenChamber Providers 使用全屏。
2. 选择 Add provider。
3. 填写服务商 ID(例如 acme)、显示名称、API 协议、base URL 和 API key。
4. 至少添加一个模型:ID、显示名称、上下文长度、最大输出、推理等级,以及它是否接受图像、是否调用工具。
上下文长度和最大输出可以留空:此时不写入 limit,由 OpenCode 套用自己的默认值,而不是硬写一个可能出错的数字。
5. 选择 Save。块写入完成,服务商出现在 Settings → Providers 下。
编辑和删除的操作方式相同。Reload 会在面板之外有改动时,重新读取两个配置文件。

API key 以明文写入 settings.apiKey。要把密钥从文件里挪走,改填 {env:VAR_NAME}(或 {file:path/to/secret})。

内置覆盖

providers.anthropic 条目如果只设置 settings.baseURL,就是覆盖内置服务商,而不是定义新服务商。面板把这类条目标为 Built-in override,并且不去动它们:它们没有包或模型需要管理,改写会破坏覆盖。

安全与权限

OpenChamber Providers 不发网络请求,不启动后台服务,也不向智能体发送提示词。它只读取和更新权限请求里列出的 OpenCode 配置文件。

写入是外科手术式的:只替换 providers.<id>(并删除遗留的 provider.<id> 孪生条目),使用 jsonc-parser 编辑。写入前后都会解析文件,文件损坏时报出行号和列号,而不是直接覆盖。

兼容性

- OpenChamber 2.0.0 或更新版本
- OpenCode 2.x 配置格式(providers / package / settings / modelID),保存时迁移 V1 配置
- Web 和 Desktop 版 OpenChamber 客户端

开发

npm install
npm run typecheck # tsc --noEmit
npm test # core logic tests, no host needed
npm run build # bundle panel/main.ts -> panel/main.js (IIFE)
npm run build:dev # same, unminified
npm run preview # build a local preview page in scripts/preview
npm run check # typecheck + test + build + preview

预览会用内存中的配置运行真实面板:用任意静态服务器托管仓库,打开 scripts/preview/index.html?theme=dark&locale=zh。加上 &surface=rail 可检查窄布局。它只是开发辅助,不会随扩展发布。

OpenChamber 从不在安装时构建扩展,所以要把构建出的 panel/main.js 和源码一起提交。发布更新时,改 package.json 里的 version,重新构建,提交并推送;Extensions 页面随后会提供 Update。

目录结构

package.json extension manifest (openchamber block) + build scripts
icon.svg rail icon, masked in the current text color
panel/index.html panel page
panel/styles.css layout and chrome, using only host theme tokens
panel/main.ts host connection, theme, locale
panel/app.ts panel state, layout and interactions
panel/i18n.ts English and Chinese copy
panel/core/json.ts JSON value helpers
panel/core/config.ts file location, read, and surgical JSONC writes
panel/core/provider.ts provider drafts <-> config blocks, V1 migration
panel/core/protocols.ts protocol <-> runtime package
panel/core/validate.ts form validation
panel/ui/ small DOM and icon helpers
tests/core.test.ts core logic tests
scripts/preview/ development preview (not shipped)
core 层不碰 DOM,也不依赖宿主环境:它接收 JSON 文本和值,返回文本,因此可以在 Node 里测试,面板只是包在它外面的一层薄壳。

从 1.x 升级

2.0.0 版把推理等级写成 capabilities.reasoning,不再手写 variants。OpenCode 2 正是靠它生成符合协议的 variants。首次保存某个模型时,旧面板生成的 variants 会被丢弃(标准等级 ID,且其设置只包含它写入的推理键),手写的 variants 则保留。面板能读旧格式,所以已有的服务商打开后,等级和限制都原样还在。

排查推理等级问题

OpenCode 2 只对认识的运行时包,把 capabilities.reasoning 转成 variants。用 Custom package 时它什么都不推导,于是面板自己为选中的等级写 variants;这些 variants 只是普通的 reasoningEffort 覆盖层,正是 OpenAI 兼容端点所期望的形式。

如果保存后选择器里看不到任何等级,按顺序检查这几项:

1. 模型至少选中了一个等级。所有卡片都关掉会写入
reasoning: { supported: false },这是故意隐藏选择器。
2. 选中的等级是端点支持的。只接受 low、medium、high 的网关会拒绝 xhigh 或 max;挑它文档里写明的等级。
3. 协议与端点匹配。OpenAI Chat Completions 对应 /chat/completions, OpenAI Responses 对应 /responses(并附带 reasoning.encrypted_content), Anthropic Messages 对应 /messages(并发送 thinking 和 effort)。
用错协议会发出端点拒绝的请求,哪怕等级显示正常。

手写的 reasoning: { supported: true } 如果没点名任何等级,在所有卡片都关掉时保持原样,因为这种模式下等级由包决定。在面板里改名的模型,还会丢掉只重复旧 ID 的显示名,所以选择器不会再显示旧名字。

许可证

MIT
预览分享卡片长什么样 ↓leoporoluo/openchamber-providers
分享 · DeepSeek Harness Hub
leoporoluo/openchamber-providers

免命令行启动本地运行时,管理档案插件与工作区

这是你的仓库?认领条目

回到顶部