DeepSeek Harness Plugin Hub

发布与管理完整 Harness Profiles,发现适合你的插件。

探索

插件目录环境预设文档中心动态

社区

发布插件联系我们报告问题

相关链接

Plugin Hub GitHubDeepSeek Harness 官方项目系统状态隐私说明
© 2026 DeepSeek Harness Plugin HubPowered byPaxTech

独立、非官方社区项目,与 DeepSeek 官方无隶属、授权或背书关系。

Opencode Go Key Broker — DeepSeek Harness 插件(DSH Plugin)
← Plugins

dsh-opencode-go-key-broker

Opencode Go Key Broker

DSH 插件:OpenCode Go API 密钥池,按配额自动切换,包含“设置”选项卡和编辑器配额徽章。

插件会安装到这里;不确定时保持 web。

npx -y @deepseek-ai/dsh plugin --profile web add dsh-opencode-go-key-broker@0.1.1
README兼容性版本

兼容性与来源证明

Opencode Go Key Broker 以 dsh-opencode-go-key-broker 发布,当前版本为 0.1.1。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
npm
Registry 更新时间
2026/9/21

版本

0.1.1stable
2026/9/21

相关插件

正在加载相关插件…

最新版
0.1.1
DSH
*
HMR
重启进程
Tree shaking
未声明可安全裁剪
解包体积
74.7 kB
文件数
6
Surface
web
许可证
MIT
发布源
npm
GitHub
★ 0
周下载
0
最近提交
2026/9/21
查看源码 ↗
README Badge

点击下方 Badge 复制 Markdown,粘贴到 README 即可。

这是你的 Plugin?认领权益 · 优先安全扫描

验证 package.json 声明的 GitHub 仓库,即可管理这个公开页面。认领后,Hub 会优先安排当前版本的安全扫描,并在通过后公开展示结果。

认领这个 Plugin →
报告问题
DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录

相关插件

继续浏览 security-access 分类下经过校验的插件。

Cc Safety Netcc-safety-net编码代理 CLI 钩子——阻止破坏性命令和访问机密文件DSCODE@toddzheng024/dscode-bundle完整的 DeepSeek 编码代理,支持持久化 shell、Ultra 协作和自动权限审查。Mcp Connectordsh-mcp-connectorDeepSeek Harness MCP Connector:连接服务器,搜索活动连接中的工具,并排查发现问题。包含持续更新的目录;支持 OAuth 2.0 PKCE、API 密钥、Streamable HTTP/stdio,以及 mcpServers JSON 导入。Experimental Auto Review@deepseek-ai/dsh-experimental-auto-review针对每个工具的 LLM 授权审查,适用于 DeepSeek Harness Auto 权限预设

README

dsh-opencode-go-key-broker

DSH-плагин: автоматическое переключение ключей OpenCode Go по состоянию квоты (rolling / weekly / monthly) + отдельная вкладка в Settings для управления пулом.

Зачем

В настройках моделей у маршрута opencode-go можно указать только один ключ (apiKeyEnv: OPENCODE_GO_API_KEY). Когда у ключа выгорает окно квоты, запросы падают с QUOTA, и переключение приходится делать руками.

DSH резолвит ключ маршрута перед каждым запросом (dsh-llm-pi-ai: credentials.resolve(profile.apiKeyEnv) внутри prepareCall), поэтому достаточно менять значение одного рефа — маршруты, модели и адаптер трогать не нужно.

Что делает

Пул хранится как конвенция (её же читает виджет dsh-opencode-go-usage):

OPENCODE_GO_API_KEY: sk-…        # то, что реально читает маршрут (активный ключ)
OPENCODE_GO_KEY_ACTIVE: go2      # пометка активного (★ в виджете)
OPENCODE_GO_KEY_go1: sk-…
OPENCODE_GO_KEY_go2: sk-…
OPENCODE_GO_KEY_go3: sk-…

Две ветки переключения:

  1. Превентивная — раз в refreshMs опрашивает GET /v1/usage по каждому ключу пула. Если активный ключ «красный» (status !== "ok" или percent >= thresholds[window]), берётся следующий зелёный и остаётся активным (sticky), пока не покраснеет сам.
  2. Реактивная — слушает waterfall agent/request-error. При QUOTA / INVALID_CREDENTIAL меняет ключ и возвращает { kind: 'retry' }: агент-луп переподготавливает запрос и перерезолвивает креденшел, то есть повтор идёт уже с новым ключом — в том же ходу, без ожидания следующего.

Запись идёт через credentials.set/unset (dsh-credentials-local) — тот же кросс-процессный лок, что у страницы Models, поэтому ручные правки и UI не затирают друг друга. Значения ключей не покидают Host: в браузер уходят только имена, маски и проценты.

Установка

Из реестра npm:

dsh plugin --profile desktop add dsh-opencode-go-key-broker

Из GitHub (без реестра, ставится сразу после публикации репозитория):

dsh plugin --profile desktop add github:Gdenich/dsh-opencode-go-key-broker

Локально из исходников (для разработки):

dsh plugin --profile desktop add file:/path/to/dsh-opencode-go-key-broker

dsh plugin add дописывает пакет в dsh.profile.bundles сам — по полю dsh.bundle.patch. Дальше перезапусти DSH Desktop: список плагинов и boot manifest читаются при загрузке профиля.

Две ловушки pnpm, о которых стоит знать:

  • свежий релиз не ставится сразу (политика минимального возраста релиза) — если нужна именно новая версия, ставь точную: dsh-opencode-go-key-broker@0.1.1;
  • dsh.profile.bundles в desktop-профиле правится только вручную или через CLI: профиль desktop управляется приложением, но список bundles, разошедшийся с шаблоном поставки, приложение считает пользовательским и не перезаписывает.

Настройка

Политика — в cordis.patch.yml (или в override профиля):

КлючПо умолчаниюСмысл
enabledtrueвыключить брокер целиком
dryRuntrueтолько логировать решения, ничего не менять
refreshMs60000период опроса /v1/usage
timeoutMs15000таймаут запроса usage
thresholds.{rolling,weekly,monthly}98с какого процента окно «красное»
warnPercent80с какого процента показывать «близко»
stickytrueсидеть на ключе, пока он не покраснеет
preferfirstкого брать при переключении: first | headroom
switchOnErrortrueреактивная ветка (retry в том же ходу)
keyNamesавтоявный список имён пула вместо сканирования файла

Переключение возможно только на «не красный» кандидат: если у всех остальных ключей окно ≥ порога, статус rate-limited или запрос usage не удался (сеть/401), брокер остаётся на текущем ключе и пишет в журнал no-alternative. Уровень «близко» (warn, ≥ warnPercent) кандидатом быть не мешает — он не красный.

Порядок ввода в эксплуатацию: оставь dryRun: true, поработай, посмотри «Журнал решений» на вкладке Settings → OpenCode Go Keys («переключил бы на go2, потому что monthly: 96%»), и только потом поставь dryRun: false.

Ограничитель: не больше 3 переключений в минуту (защита от циклов при исчерпанных окнах у всех ключей).

Вкладка Settings

Settings → OpenCode Go Keys: активный ключ и состояние, таблица ключей (маска, ★ активный, окна rolling/weekly/monthly с процентами и временем до сброса, уровень ok/близко/лимит/нет данных), кнопки «Сделать активным» и «Удалить», форма добавления ключа и журнал решений.

HTTP-маршруты (Host)

МетодПутьНазначение
GET/plugins/dsh-opencode-go-key-broker/snapshot?force=1состояние пула и лог
POST/plugins/dsh-opencode-go-key-broker/activate {name}форс активного ключа
POST/plugins/dsh-opencode-go-key-broker/refreshопросить usage сейчас
POST/plugins/dsh-opencode-go-key-broker/diagдиагностика клиента (пишется в $DSH_HOME/opencode-go-key-broker-diag.ndjson)

Мутации принимаются только с loopback и с того же origin.

Разработка

# хост-тесты: самодостаточны, но плагину нужны peer-пакеты DSH,
# поэтому рядом с исходниками должен быть node_modules с ними
ln -sfn "$HOME/.dsh/profiles/desktop/node_modules" node_modules   # или путь к бандлу приложения
node test/host.test.mjs          # 14 сценариев брокера
node test/client-render.test.mjs # 4 блока клиента (React-заглушка, без зависимостей)

Правки исходников не подхватываются автоматически: профиль ставит пакет как file:-зависимость, pnpm кладёт копию (жёсткими ссылками) в node_modules/dsh-opencode-go-key-broker. После изменения файлов нужно либо скопировать их в эту папку, либо повторить dsh plugin --profile desktop add file:<путь>. Хост-код и cordis.patch.yml читаются при старте — изменения политики и хоста требуют перезапуска приложения; клиентский бандл отдаётся с диска, ему достаточно жёсткого рефреша страницы.

Ограничения

  • Ключи в пуле должны быть валидны: невалидный (401) считается «красным».
  • network/timeout при опросе не считаются «красными» — иначе один сетевой сбой уводил бы с рабочего ключа.
  • Смена ключа меняет аккаунт-контекст: prompt-cache у OpenCode Go привязан к ключу, поэтому первый запрос на новом ключе пойдёт без кэша.