DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

DeepSeek Harness Plugin Hub
ProfilesPlugins分类动态文档登录管理 Profiles
ProfilesPlugins分类动态文档登录
← Plugins
C

dsh-cc-switch-bridge

Cc Switch Bridge

将 cc-switch 中保存的第三方模型提供商作为 DeepSeek Harness 模型提供

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

npx -y @deepseek-ai/dsh plugin --profile web add github:qipengxiang/dsh-cc-switch-bridge#383338621eb323a42e9ee0c9cb20f1f8dfcbfdf2
README兼容性版本

兼容性与来源证明

Cc Switch Bridge 以 dsh-cc-switch-bridge 发布,当前版本为 0.1.0。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

DSH 兼容范围
*
运行环境
web
发布来源
github
Registry 更新时间
2026/10/20

版本

0.1.0stable
2026/10/20

相关插件

正在加载相关插件…

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

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

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

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

认领这个 Plugin →
报告问题

相关插件

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

Experimental Cot Translation Bundle@deepseek-ai/dsh-experimental-cot-translation-bundle扩展推理的实验性机器翻译Our Free Model@ebony-vinyl/dsh-our-free-modelOur Free Model — 在 dsh 里装上这个插件即可,无需登录、注册或填 API Key,就能使用包括 DeepSeek V4.1 Flash、Kimi K3 在内的前沿模型,桌面端另有 EAC 协付渠道;2.0 起接入 LobsterAI、Qoder、TRAE、Cline、Loomy、Raccoon、MiniMax、ZCode、Gemini 十个账号渠道(原有匿名免费通道保留)(登录、账号池、积分领取、本地 OpenAI 网关与局域网转发、数据看板与运行日志),六页毛玻璃界面统一呈现。Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编程套餐配额,并实时记录令牌使用情况;侧边栏 Settings 行上方显示紧凑的价格概览卡片Client Ui Model Capabilities@linxin666/dsh-client-ui-model-capabilities为自定义 pi-ai 提供商声明每个模型的能力(图像输入和推理力度),可直接在 Models 设置卡片中编辑;写入官方 llm-pi-ai 设置命名空间,不更改 DSH 源代码。

README

cc-switch bridge

中文说明

Every Anthropic-compatible provider saved in the local cc-switch app becomes one provider route in DeepSeek Harness, so its models appear in the model picker and switch like built-in models.

What it reads

~/.cc-switch/cc-switch.db (read-only), table providers, rows with app_type claude / claude-desktop. From each row: ANTHROPIC_BASE_URL, ANTHROPIC_AUTH_TOKEN / ANTHROPIC_API_KEY, the model ids from meta.stackModels and the ANTHROPIC_*MODEL env keys (model[1M] labels keep the id and give the context window), plus the row name as the group title. Rows are re-read every 60s and on every model-picker open, so edits made in cc-switch show up without restarting Harness.

Rows whose meta.apiFormat is anything but anthropic, or without a base URL / credential / model, are skipped and logged. Codex rows are imported through the built-in pi-ai adapter instead (see Settings page); the other tool groups store their own shapes, see "Why some groups are not imported".

What it registers

One ctx.llm.registerAdapter() route per provider (ccswitch-<first 8 chars of the cc-switch id>), speaking Anthropic Messages (/v1/messages, SSE or plain JSON) and translating the reply into Harness stream chunks: text, reasoning/thinking, tool calls, usage, finish reasons. Tool call/result pairing is repaired before sending, because one unanswered tool call makes the upstream reject the whole session.

Thinking levels

The levels are not the bridge's own ladder: cc-switch already declares them per model, and the Harness menu mirrors that declaration, so both apps offer the same choices.

  • codex rows carry modelCatalog.models[].reasoningLevels (+ defaultReasoningLevel), which is what cc-switch shows for a Codex provider.
  • pi rows carry thinkingLevelMap, where a null value means the level is not offered.
  • The row with the same provider name wins; the same model id under another provider only fills in what that row does not say.

none in cc-switch is off here. Hosts whose endpoint cannot replay a thinking block are excluded in replaysWithoutThinking() in lib/thinking.js, and the plugin config thinking: false drops every effort menu.

Settings page

Settings → cc-switch-bridge lists the tool groups your cc-switch actually has configured (Claude Code, Claude Code Desktop, Codex, …) and imports the ones you tick. Changing the selection re-syncs immediately — no restart — and the model picker follows.

GroupHow it is imported
Claude Code / Claude Code Desktop / any Anthropic-format groupthe bridge's own adapter, one route per provider
Codexhanded to the built-in dsh-llm-pi-ai adapter: one provider per cc-switch Codex row, api taken from the row's wire_api (openai-responses / openai-completions), base URL and model catalog straight from the row
pi / openclaw / opencodeeach stores its own app's config structure and the bridge has no parser for it yet, so they are listed as not importable
geminithis machine's row is an empty config, so there is nothing to import

The Codex handoff needs no manual setup: turning it on writes a codex entry into the dsh-llm-pi-ai plugin config in the desktop profile patch (settingsNs: codex) and stores each row's key in the credential store under CCSWITCH_CODEX_<row>. Turning it off again removes both the routes and the secrets the bridge wrote.

The page itself is a browser half (client.js) served by this package and talks to the host over /dsh-cc-switch/state (GET snapshot, POST {apps, order} for the selection and its order). The lower half of the page lists what is actually live, as "bridged" and "handed to pi-ai".

Why some groups are not imported

Not a model problem and not a protocol problem: cc-switch stores one config structure per tool, and the bridge only parses two of them — claude / claude-desktop (env.ANTHROPIC_*) and codex (TOML).

GroupWhat cc-switch actually storesStatus
pibaseUrl / api / models[] / thinkingLevelMap — pi-ai's own provider shapefields map almost 1:1, not implemented yet
openclawbaseUrl / api / models[], also pi-ai-shapednot implemented yet
opencodeAI SDK {npm, options, models} (@ai-sdk/openai-compatible / @ai-sdk/anthropic)needs a small npm → api map, not implemented yet
gemini{"env":{},"config":{}} (empty on this machine)nothing to import

The first three would ride the same pi-ai handoff once parsed; no Harness change needed.

Status file

~/.dsh/dsh-cc-switch-bridge.status.json — written after each successful sync: which routes and models the host process actually holds. First place to look when a provider is missing from the picker.

Ordering

The bridged and pi-ai rows can be dragged to reorder them; the saved order (order in the state file) is the order the routes are registered in, so it is what the model picker shows. The DeepSeek account/official groups stay pinned first because the picker does that itself.

After editing this plugin

The profile installs it as a link, but the running host keeps the old module loaded: toggle the plugin off and on in Settings → Plugins (or restart the app).

Checks

node tests/smoke.mjs — SSE decoding, error mapping, tool-call repair, max_tokens clamping, model labels, ordering, and a read of the real cc-switch database. node tests/client-render.mjs — renders the settings page against a stub React, which catches the hook-order regression that blanks the page inside the app.