dsh-model-picker-brand
Manifest valid★ 1Provider logos and model IDs in the DSH model picker, registered as a label decorator on the official conversation.input.model.label slot; providers match by token, display name, model ID and explicit

dsh-model-picker-brand
Provider logos and model IDs in the DeepSeek Harness model picker.
The composer's model picker normally shows one line of text — DeepSeek-V4.1-Flash. This plugin puts
a brand logo in front of every model and adds the model ID beside the name, so you can tell at
a glance which provider a model belongs to and which exact route you are on.
Zero core changes: it registers a label decorator on the official
conversation.input.model.label slot. Disable the plugin and the picker is exactly as shipped.
- 22 brand marks — colored vectors, light and dark themes, 14px and 16px verified
- Registry-driven matching — provider id, display name (Chinese included), or model prefix; unknown providers get a letter monogram instead of another vendor's logo
- Never breaks the picker — every label renders inside a
try/catchand falls back tomodel.name

Install
From the plugin wizard
Open Settings → Plugins → Add plugin, search dsh-model-picker-brand, and click Install.
With the dsh CLI
dsh plugin --profile web add dsh-model-picker-brand
Straight from this repository, without npm:
dsh plugin --profile web add github:zhangyongshuai56-hub/dsh-model-picker-brand
Update
dsh plugin --profile web update dsh-model-picker-brand@latest
Restart (or hot-reload) the host once. Remove the bundle entry to uninstall — nothing else is written.
Requirements: dsh >= 0.2.1-rc.2. No build step, no runtime dependencies.
中文说明
输入框的模型选择器从「纯文本模型名」改为「提供商彩色 logo + 模型 ID」:触发按钮显示 [logo] 模型ID,
菜单项与列表项显示 [logo] 名称 + 灰色模型 ID。零内核改动——只往官方插槽
conversation.input.model.label 注册标签装饰器(priority −10 接管渲染),停用插件即恢复原样。
安装:dsh plugin --profile web add dsh-model-picker-brand,重启生效。
What changes
| Where | Before | After |
|---|---|---|
| Composer trigger button | DeepSeek-V4.1-Flash | [logo] deepseek-flash (compact, ID first) |
| Menu "Model" row | DeepSeek-V4.1-Flash | [logo] DeepSeek-V4.1-Flash deepseek-flash |
| Model list items | DeepSeek-V4.1-Flash | [logo] DeepSeek-V4.1-Flash deepseek-flash |
| Unknown provider | plain text | first-letter monogram in a colored chip |
Hovering any label shows name · id as a title.
How it works
The official picker renders every model label through a slot:
renderSlot("conversation.input.model.label",
{ provider, model, placement, selected },
{ fallback: model.name })
placement is "trigger" | "menu" | "option". This plugin registers a decorator on that slot at
priority −10; the slot registry renders the lowest priority, so it takes over the label without
touching @deepseek-ai/dsh-client-ui-model-selection. The official badge plugin
(dsh-client-ui-deepseek-model-label-1017) also registers at priority 0 and is shadowed while this
plugin is enabled — disable this plugin and it comes back untouched.
Every label is wrapped in a try/catch: any unexpected shape falls back to model.name, so the
picker can never fail to render because of this plugin.
Brand matching
A flat id → icon table breaks the moment a provider ships a second id (zhipu / z-ai / glm /
zcode are the same vendor). Matching is registry-driven instead — each brand carries three kinds of
clues, tried by confidence:
| Order | Clue | Examples |
|---|---|---|
| 1 | override (localStorage) | {"some-new-provider":"zhipu"} — no code change needed |
| 2 | token on provider.id | zhipu zhipuai z-ai zai glm zcode bigmodel chatglm; split on separators, longer tokens first |
| 3 | name on provider.name (Chinese included) | 智谱 智谱清言 通义千问 月之暗面 阿里云 豆包 |
| 4 | model prefix (weakest) | glm-4.6 → Zhipu, claude-3-7 → Claude, gpt-4o → OpenAI, gemini-2.5 → Gemini |
| 5 | no match | first-letter monogram — never another vendor's logo |
Fix a provider without waiting for a release:
localStorage.setItem('dsh.model-picker-brand.overrides', JSON.stringify({ 'my-provider': 'zhipu' }))
Debug from the browser console: dshModelPickerBrand.resolve({ id: 'zai' }).
Assets and theming
22 brands: colored vectors from svgl, with simple-icons (CC0) filling the gaps. All trademarks belong to their owners; the marks are used only to identify the service a model comes from.
- Monochrome marks (Anthropic, OpenAI, Ollama, Qwen, OpenRouter) become
currentColorand follow the light/dark theme. - Colored marks (DeepSeek, Claude, Gemini, Mistral, NVIDIA, Kimi, Cloudflare) keep their real colors; white details stay white, so a blue tile with a white glyph does not turn into a black blob.
- Z.ai / Zhipu uses the official logo from z.ai (
#2D2D2Dtile + white hairline + white Z). The hairline is what keeps it readable on dark themes at 14px. - Root
<svg>fill/stroke are pushed down into a<g>; gradient IDs are namespaced per brand so inline SVGs cannot repaint each other.
Development
npm test # 42 cases: id variants, Chinese names, model inference, fallback, overrides
The test loads lib/client.js through a stub ModuleLoader, then asserts the resolver — offline, no
host required.
lib/index.js host half — one status route (/dsh-model-picker-brand/status)
lib/client.js browser half — the label decorator and bundled vectors
cordis.patch.yml bundle patch that mounts the plugin
tests/resolve.test.mjs
Releases are published from CI through npm trusted publishing (OIDC, no token) with a SLSA
provenance statement: pushing a v* tag runs npm run check, npm test, then
npm publish --provenance. See .github/workflows/publish.yml.
License
MIT. Brand marks remain the property of their respective owners.
Comments
Loading…
From the same category
by anywhere-labs
为 DeepSeek Harness (DSH) 插件生态打造的现代化桌面端解决方案。万物皆「插件」,桌面本身也是「插件」。
★ 34.4k
↓ 175/wk
MIT
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-plugin-desktopby zhu1090093659
DeepSeek Harness (DSH) Web Plugin Aggregation Ecosystem · Everything is a plugin, distributed via the Creative Workshop
★ 9.9k
↓ 225/wk
Apache-2.0
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-webA collection of independent Web UI plugins and skins, including task boards, Git graphs, mobile access, and live token stats.
★ 8.6k
↓ 225/wk
Apache-2.0
TypeScript
dsh plugin --profile web add dsh-webby PC2005-cloud
DSH 桌面宠物:一行命令装好即用的透明动画小桌宠,支持多开、大小位置随心配置;还内置 DIY 素材链,能用 AI 视频自造专属宠物
★ 5.2k
↓ 224.8k/wk
MIT
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-petby omdsh-dev
开放的侧边栏底座,支持三方拓展注册新侧边栏页面。内置文件渲染编辑/终端/侧边对话/Git/子代理页面 | Open sidebar foundation, supports third-party extensions to register new sidebar pages. Built-in file rendering/editing, terminal, side chat, Git,
★ 4.8k
↓ 99.3k/wk
MIT
TypeScript
Oct 30, 2026
dsh plugin --profile web add dsh-better-sidebarby bowenliang123
The best DeepSeek Harness plugin for context insight and management, with context dashboard / browser / sidebar and context command, for context statistics, composition, breakdown, evolution details,
★ 4k
↓ 139k/wk
Apache-2.0
TypeScript
Nov 2, 2026
dsh plugin --profile web add dsh-context