DeepSeek Harness Plugin Hub

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

探索

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

社区

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

相关链接

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

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

Model List — DeepSeek Harness 插件(DSH Plugin)
← Plugins
M

dsh-model-list

Model List

OpenRouter 免费模型浏览器插件(双界面):获取 OpenRouter 模型,筛选免费模型(价格为 0 或 :free),在 Settings 标签页中按最新优先列出,支持本地搜索和完整模型信息,并一键创建可直接使用的 DSH 模型配置(settings.yaml 路由 + 已存储凭据)。

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

npx -y @deepseek-ai/dsh plugin --profile web add github:jsoncode/dsh-model-list#746bf04230e67d04c30009995c639f17adeda7b7
README兼容性版本

说明

OpenRouter 免费模型浏览器插件(双界面):获取 OpenRouter 模型,筛选免费模型(价格为 0 或 :free),在 Settings 标签页中按最新优先列出,支持本地搜索和完整模型信息,并一键创建可直接使用的 DSH 模型配置(settings.yaml 路由 + 已存储凭据)。双语界面(zh/en),不使用硬编码路径,可发布到 npm / GitHub

兼容性与来源证明

Model List 以 dsh-model-list 发布,当前版本为 0.1.3。Plugin Hub 会校验它的 manifest,并保存精确安装来源,便于复现安装结果。

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

版本

0.1.3stable
2026/9/9

相关插件

正在加载相关插件…

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

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

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

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

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

相关插件

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

Usage@linxin666/dsh-usage用于 dsh Web GUI 的使用统计插件:检测各提供商的余额和编码计划配额,并提供实时令牌使用记录,同时在侧边栏条目中显示当前会话提供商今日的使用量Whale Widgetdsh-whale-widgetDSH Web 界面右下角的 DeepSeek 余额小鲸鱼挂件:余额/今日已用/峰谷定价、自定义泡泡点击序列(文本/余额/今日/峰谷/图片/随机语句与并列加权选择)、逐行样式与字体、悬浮快捷编辑、音效与每轮消耗、自定义角色/动图/音效、吸附与翻转自定义Commandcode Provider@mars-sea/dsh-commandcode-provider适用于 Command Code 的非官方 DeepSeek Harness LLM 提供商插件,移植自 pi-commandcode-provider(MIT)。注册“commandcode”提供商路由,并在 Models 页面添加卡片和实时模型目录。Plugin Subscriptionsdsh-plugin-subscriptions将 ChatGPT (Codex)、Claude、Grok (X Premium)、GitHub Copilot 和 Google Antigravity 订阅用作 DeepSeek Harness LLM 提供商,并通过网页设置页面使用 OAuth 登录

README

dsh-model-list

dsh-model-list logo

dsh-model-list is a DeepSeek Harness (DSH) plugin that browses OpenRouter's model directory (the official openrouter.ai/models catalog) and adds any model — free variants included — to your DSH model list in one click.

  • Model Hub entry (设置 → 模型聚合平台 / Model Hub): the Settings entry hosts one tab per provider platform (OpenRouter today; the PLATFORMS registry makes future providers a one-line addition). All fetch logic runs host-side; the tab is the single entry point.
  • Show-in-menu toggle: a slide switch at the very top of the platform page. When on, a 【模型聚合平台 / Model Hub】 entry button appears in the host sidebar's footer action area and opens the same directory in a large overlay. The preference persists in localStorage (default off).
  • Dialog palette: the overlay and dialogs follow dsh-get-balance — a rgba(0,0,0,.32) scrim with blur(12px) saturate(1.2), a color-mix(bg-layer-1 78%) glass panel with a border-l2 hairline, 14px radius and a 0 16px 48px rgba(0,0,0,.28) shadow, border-l1 dividers, solid button-primary-fill for primary buttons and active tabs / sub-tabs / filter chips, bg-base inputs, bg-layer-2 cards, and state-* tokens for status colours.
  • Official directory, 1:1: the host fetches the official frontend endpoint https://openrouter.ai/api/frontend/v1/models/find?active=true&fmt=cards&order=newest — once with variant=standard and once with variant=free (both return one card per model, no pagination) — and joins each card's weekly token usage from the response's data.analytics. The browser renders the official filter set client-side: search, sort (weekly usage / newest / context size / input price / output price / name), input & output modalities, prompt-pricing buckets (Free / <$1 / $1–$2 / $2–$5 / $5–$10 / >$10 per M tokens), context-length buckets (<8K / 8K–32K / 32K–128K / 128K–1M / >1M), capabilities (tools / reasoning / structured outputs), series and providers. Cards follow the official anatomy: author avatar, name, weekly usage, provider, description, and spec chips (context, max output, input/output price per M tokens, modality arrows, capability badges).
  • Full info per card: id (click to copy), provider, quantization, created date, supported parameters, moderated / forced-reasoning flags, upstream warnings, expandable full description. Layout adapts to narrow panels and mobile widths.
  • "Add to model list" → one-click model config: the dialog takes an OpenRouter API token only when the platform has no stored credential yet (live-checked via GET /api/v1/key on demand). Confirming then
    1. stores the token through the host credentials service (.credentials.yaml, OPENROUTER_API_KEY),
    2. merges the model into the OpenRouter route in settings.yaml (llm-pi-ai namespace — reuses the existing openrouter / openrouter-free / openrouter.ai route when one exists, preserving its apiKeyEnv and model entries verbatim; otherwise creates openrouter-free with the openai-completions protocol and https://openrouter.ai/api/v1), and
    3. optionally sets it as the default model for new sessions (agent-default-model namespace). The model is selectable in the chat composer's model selector immediately — no host restart.
  • Robust fetching: every OpenRouter request retries up to 10 times (exponential backoff + jitter); a failed refresh degrades to the cached list with a stale notice. Results are cached in $DSH_HOME/dsh-model-list.json (6-hour freshness window).
  • Bilingual UI (中文 / English), no hardcoded paths.

中文文档

Commands

ScriptWhat it does
npm run checktsc -b typecheck (host + client programs)
npm run buildclean lib/, tsc -b, then tsdown bundles lib/index.js (host, ESM) + lib/client.js (browser, __ModuleLoader__ factory)
npm run watchtsdown watch mode
npm run verifysimulate the host module loader against lib/client.js (factory shape + seed externals)
npm run test:opsoffline host-logic tests (find/cards normalization, weekly-usage join, route detection, config-write orchestration, store round-trip incl. v1-cache rejection)
npm run smokelive smoke test against the real OpenRouter models/find endpoint
npm run releasecheck + build + verify, then npm version patch and git push --follow-tags
npm run publish:npmcheck + build + verify, then npm publish --access public

Installation

# Local development (link the workspace; picks up rebuilds of lib/ automatically)
dsh plugin --profile web add ./dsh-model-list

# Published: npm / tarball / GitHub
dsh plugin --profile web add dsh-model-list
dsh plugin --profile web add github:you/dsh-model-list#<sha>

dsh --profile web --dump-config   # verify the layer
dsh --profile web                 # start (restart required for the host half to load)

Local development dependencies: the host loads lib/index.js through native Node ESM, so @deepseek-ai/schemastery and @deepseek-ai/dsh-settings must be resolvable from the plugin directory. Either run pnpm install inside the plugin directory, or use the committed lib/ build (this repository commits lib/, mirroring dsh-jenkins).

Usage

  1. Open Settings → 模型聚合平台 / Model Hub (or enable 在菜单中显示 / Show in menu at the top of the page and use the 【模型聚合平台】 button at the bottom of the host sidebar), pick the platform tab (OpenRouter).
  2. The directory arrives from cache when fresh (hit 刷新 to force a refetch). Use the search box, the variant dropdown, the output-modality tabs, the sort dropdown (weekly usage / newest / context / prices / name), and the filter groups (input modalities, discount, context length, prompt & output pricing, series, supported parameters, providers, model authors) — the official models-page set.
  3. Click 添加到模型列表 / Add to model list on a card:
    • the token field appears only when the platform has no stored credential yet (otherwise the existing OPENROUTER_API_KEY is reused and noted in the dialog),
    • optionally tick 设为新会话的默认模型,
    • confirm — the config is written and the dialog shows the exact route/model to pick in the composer's model selector.

Adding a platform

  1. src/client/components/FreeModelsSection.tsx: append { id, labelKey } to PLATFORMS and mount the panel by id.
  2. Copy src/client/components/OpenRouterPanel.tsx as a starting point; ops carry platform: '<id>'.
  3. src/host/ops.ts: extend the runOp platform dispatch (fetch/filter per the platform's API, map its models onto RouteModelProfile, and teach model-config.ts the platform's credential ref and route naming).

Structure

├── src/host/*.ts      # Host half: /dsh-model-list/api route (platform-dispatched ops),
│                      # OpenRouter fetch+filter+sort (10 retries), cache store,
│                      # model-config writer (settings + credentials services)
├── src/client/*.tsx   # Browser half: settings.section shell with platform tabs,
│                      # per-platform panel (search, cards), add-to-model-list dialog
├── lib/index.js       # Host half build artifact (tsdown, ESM), committed
├── lib/client.js      # Browser half build artifact (tsdown → __ModuleLoader__ factory), committed
├── scripts/           # verify-client.mjs, test-ops.mts (offline), smoke-openrouter.mts (live)
├── tsdown.config.ts   # node half + client bundle banner wrapper
├── cordis.patch.yml   # Bundle patch: plugin row referenced by package name
└── package.json       # dsh.bundle + dsh.client(web) manifests + peerDependencies

Notes

  • OpenRouter free models still require an account token (daily rate limits apply); the dialog says so.
  • The write path is the sanctioned one: settings.update('llm-pi-ai', …) validates against the llm-pi-ai schema (a bad profile is refused where it is written) and the adapter re-registers routes live, so no host restart is needed after adding a model.
  • Manual edits to an existing OpenRouter route (custom apiKeyEnv, extra profile fields) are preserved: adding a model only rewrites that route's models array (merged by id, same id → replaced).
  • The plugin never touches settings/credentials files directly — everything goes through the host services; its own cache file (dsh-model-list.json) is the only file it writes.