前言¶
DSH 的模型選擇器過去是一份短名單。現在它常常是一片:DeepSeek、GPT、Claude、Gemini、Qwen、GLM、Kimi、豆包、Llama、Mistral,在界面上全部渲染成同樣的灰色文字。你要發的那條消息用哪個模型,靠的是逐字讀完名字後回憶出來。名字只差一個後綴的兩個模型,也很容易點錯。
dsh-model-logos 就是爲這件事寫的:不改變選擇器的交互,只把每個模型旁邊那格文字換成一枚可辨識的標記,把選擇從「回憶」變成「識別」。下面是對這個插件的介紹。
這是什麼¶
dsh-model-logos 是一個 DSH Web 界面插件,作者 Altermoe,MIT 許可證,當前提交版本 0.5.0。它的範圍很小:
- 輸入區(composer)的模型按鈕、模型選擇器頂部和每個選項行,顯示當前模型的標記;
- 設置 → 模型 的提供商行、提供商編輯器標題、模型行,預留並填充品牌標記位;
- 提供一個模型圖標頁面和一個圖標選擇器,按模型修改它當前的標記。
插件不做的一件事是重寫選擇器本身。點擊、搜索、勾選狀態、推理強度標籤仍歸內置組件,插件只重繪標籤本身的內容(同一個位置只能放一個標籤),因此其中會復現模型名和發佈徽標。這是全文唯一的替換點。
目錄頁把它歸在「趣味換裝」分類下。
爲什麼用圖標¶
原來的做法是讀文字。一枚標記能在一瞥之下給出答案,和手機桌面不寫成一列應用名是同一個理由;更重要的是,名字只差後綴的模型容易點錯,一個看錯的決定會在你發送消息之前被一枚標記攔住。
插件裏還有一個不那麼顯眼的設計:一個模型可以有兩個品牌。 廠商(vendor)是提供它的通道 —— OpenRouter、火山引擎、本地中轉;模型(model)是你對話的對象 —— Claude、Qwen、DeepSeek。在聚合器那一行裏這是兩個不同的答案,所以得到兩枚不同的標記,插件也不會讓一個冒充另一個。
核心功能¶
下面按界面位置列出,全部來自 README 的「What you get」一節。
輸入區與模型選擇器。 模型按鈕上是當前模型的標記;選擇器頂部是當前模型;每個選項行帶自己的標記。標籤被重繪而不是包裹,因此插件要復現內置標籤上的模型名與發佈徽標。點擊、搜索、勾選、推理強度標籤仍由內置組件處理。
設置 → 模型 的標記位。 每個提供商行和編輯器標題左側保留 22 px 標記位:官方通道填廠商標記,手寫的提供商留空佔位,只是對齊。每個模型行開頭是 22 px 圖標位,模型標記還沒解析出來時顯示一枚虛線佔位,標記出現時名稱不會挪動。
帶 Logo 的添加提供商下拉框。 替換掉原生的 <select>,帶品牌標記;原生 select 仍留在下方作爲狀態來源。
模型圖標頁面。 插件自己的設置入口會列出你提供商中的模型,顯示它當前的標記,並提供修改入口。
隨時可達的選擇器。 在設置 → 模型中點某個模型的圖標就會打開選擇器,模型圖標頁面按模型打開,所以改掉一次誤判是一次點擊,不用改配置文件。
圖標從哪來¶
插件先做自動匹配:按模型 id 和名稱給出初始標記,再根據提供商兜底。這只是默認值,不是規則,每個模型都可以覆蓋:
- 自動識別 —— 回到自動匹配結果;
- 不使用圖標 —— 這個模型不顯示標記;
- 首字母圖標 —— 用名稱生成一個確定性的色塊,適合本地或小衆模型,看起來是有意爲之而不是冒充品牌;
- 廠商圖標 —— 公司或渠道標記(Anthropic、Google、Alibaba、ByteDance、OpenRouter 等);
- 模型圖標 —— 模型產品標記(Claude、Gemini、Qwen、豆包、Kimi 等)。
選擇器把兩組上下排布,同時搜索兩組。有些公司和模型共用一枚圖形(DeepSeek、Mistral、MiniMax),這類標記放在模型組,官方渠道行復用同一枚 artwork;兩者確實不同時 —— Anthropic 對 Claude、Google 對 Gemini、Alibaba 對 Qwen、ByteDance 對豆包 —— 選擇器同時提供兩枚。組內順序不是按字母,而是按一份可復現的網絡知名度快照,綜合 GitHub、npm、Wikipedia、Hugging Face 與 B 站信號。方法與原始數據在 docs/rankings.md。
圖標的來源不是手繪:全部是自包含的 24×24 SVG,來自固定版本的 @lobehub/icons-static-svg 1.102.0(MIT)、Simple Icons(CC0)的 Xiaomi,以及取自本應用 Web 前端的 DeepSeek 官方鯨魚。構建檢查會把生成的路徑數據與已提交的上游文件逐條比對,改一枚標記只能改它的來源。運行時不會拉取任何東西。
安裝與啓用¶
把公開倉庫添加到 DSH 配置檔:
dsh plugin --profile web add github:Altermoe/dsh-model-logos
源碼安裝會在本機構建插件(倉庫的 prepare 腳本執行 pnpm run build),需要 Node.js ≥ 26.13.0 與 pnpm;首次安裝時市場會請求一次構建授權。想跳過構建,從最新發佈下載 dsh-model-logos.tgz 後直接加文件:
dsh plugin --profile web add ./dsh-model-logos.tgz
本地檢出也可以走插件管理器:
plugin_manager action=install_bundle target=<指向本目錄的絕對路徑>
然後刷新 Web 界面。插件在「插件」裏顯示爲 Model Logos / 模型 Logo;禁用它會移除全部裝飾,頁面恢復原樣。星標爲 0(截至目錄頁抓取時),說明這是個剛起步的項目,升級與兼容性要靠自己驗證。
典型用法¶
裝好之後默認就有東西可看,不需要改配置:打開輸入區,當前模型按鈕旁就是它的標記;打開設置 → 模型,提供商行和模型行都有圖形,添加提供商的下拉框也可以直接靠形狀選擇。
要改某個模型的標記,點設置 → 模型裏那個模型的圖標,在選擇器裏挑一個,或者到「模型圖標」頁面按模型改。想回到插件自己的判斷,選「自動識別」;本地的、沒有品牌歸屬的模型,選「首字母圖標」比編一個廠商標記合適;確實不需要標記的,選「不使用圖標」。
配置項保存在 DSH 用戶設置文檔裏 —— 配置檔的 cordis.patch.yml,和其他偏好放在一起。不放在 localStorage,也不產生網絡請求。覆蓋項綁定在 provider + model 這一對上,所以兩個提供商各服務一個同名模型時,可以顯示不同標記。
適用場景與注意¶
適合誰:模型列表較長、或同時掛了幾個聚合器與本地通道,從一堆灰色文字裏找模型開始容易點錯的 Web 界面使用者。手寫的提供商、本地 URL 也會受益,只是沒有廠商 Logo 可填。
幾條邊界是插件自己寫明的,使用前值得知道:
- 廠商 Logo 只屬於官方通道。 中轉、自建服務器或本地 URL 背後沒有廠商品牌,所以不顯示廠商 Logo —— 插件明確說編造一個出來就是在撒謊。標記位仍保留並留空,讓各行對齊。官方通道全部有標記,冷門通道回退爲確定性的字母色塊。
- 沒把握的模型不會被留白。 設置行保留 22 px 圖標位和虛線佔位,一點就打開選擇器。
- 名稱始終都在。 每個按鈕、每個菜單行仍帶着名字,不認標記界面也照樣可用。
安裝前的常規動作還是要做:這是一個第三方插件,運行時繼承當前 DSH 進程權限,源碼、package.json 與許可證文本(MIT)建議先自己過一遍再裝;插件聲明瞭 cordis.patch.yml 會寫入用戶設置文檔,介意的話先看裏面寫了什麼。此外,圖標素材是商標,只是用來標識你實際使用的提供商或模型。
結尾¶
dsh-model-logos 解決的是界面信息密度問題:把「讀完一個名字」壓成「認出一枚標記」,代價是一次插件安裝和少量配置,禁用即完整還原。它不接管選擇邏輯,不產生網絡請求,圖標全部自包含。也就是說,它能加多少便利,取決於你有多少個模型和多少個聚合器。
- 社區目錄頁:https://www.skillhub.cn/plugins/Altermoe/dsh-model-logos
- 源碼與文檔:https://github.com/Altermoe/dsh-model-logos
- 更細的運行時契約與設計取捨見倉庫內
docs/architecture.md,與其他 DSH 圖標插件的關係見docs/prior-art.md。