前言¶
在 DSH 生態裏給插件寫上架 PR 時,描述、安裝命令、截圖和「能力 / 限制」往往要手工拼在一起;限制寫漏了,審覈和讀者都容易誤解插件邊界。DeepSeek Harness 支持用插件擴展客戶端能力;社區插件目錄是獨立站點,與 DeepSeek / 幻方無官方從屬關係。下面介紹的 dsh-market-card(維護者 dingchenhui0618-arch,分類:客戶端)只做一件事:讀取倉庫裏已經存在的 README.md、package.json 和 docs/*.png,排版成 1200px 寬的中英雙語市場卡片,並輸出自包含 HTML、真實 2x PNG,以及可直接粘貼的 Markdown 片段。缺字段就標「缺」,不做機器翻譯、不補寫事實。
這是什麼¶
dsh-market-card 既是 DSH 插件,也是獨立 CLI(dsh-market-card / bin/market-card.mjs)。它把「倉庫現狀」變成一張可以直接貼出去的市場卡片:標題、一句話、安裝命令、截圖牆、能力、限制,以及可選的版本 / 許可等信息。與同作者 dsh-launch-card 相比,本項目會合成真實 PNG、支持 docs/*.png 截圖牆、把中英限制聲明當作必需字段並用 --strict 攔截,額外產出 card.md 與 card.json;與 dsh-readme-reel(截圖轉視頻)產物不同,這裏是靜態卡片。
- 目錄頁:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-market-card
- 源碼:https://github.com/dingchenhui0618-arch/dsh-market-card
- 許可證:MIT(README 與 package.json 一致)
- 當前 package 版本:0.1.0
核心功能¶
從 README 與倉庫文件提取字段¶
- 中文標題:首個加粗短語,或由根目錄
market-card.json覆蓋 - 英文標題:README H1,或
market-card.json - 中英各一句 tagline、安裝命令(README 裏第一條
sh/bash代碼塊) - 截圖:
market-card.json指定,或 README 圖片 +docs/**/*.png拼牆,最多 4 張,過小圖標自動跳過 - 能力 / 限制:
market-card.json,或 README 的## 能力/## 限制小節;中英各至少 1 條(嚴格模式下不全則失敗)
輸出物¶
| 文件 | 內容 |
|---|---|
card.html |
自包含 HTML,截圖以 data URI 內嵌,離線可開或貼進 PR 預覽 |
card.png |
本機 Chrome / Edge 無頭渲染,默認 2x(約 2400px 寬;--scale 1 可降到 1200px) |
card.md |
標題、安裝命令、能力/限制、截圖,一段可直接粘貼的上架 PR 片段 |
card.json |
結構化 provenance:字段來源文件與行號、缺失項 |
--strict 在字段不全時退出碼 2 且不寫文件;不加 strict 時卡片會蓋 DRAFT 章並列出待補字段。英文缺失會進 missing 列表——工具不做機器翻譯,英文應由作者確認。
DSH 客戶端面板¶
重啓 Web GUI 後,對話視圖頂部會出現「市場卡片」標籤頁:填寫含 README.md 的倉庫根路徑,點「生成卡片」即可預覽 PNG、打開 HTML、複製安裝命令。插件只在點擊生成時讀本地文件,不聯網。
安裝與啓用¶
作爲 DSH 插件安裝時,使用 README 中的命令(將 <你的 profile> 換成實際 profile):
dsh plugin --profile <你的 profile> add dsh-market-card
安裝後重啓 Web GUI,在「市場卡片」面板中使用。插件以當前 DSH 進程權限運行;安裝前應自行查看源碼與 MIT 許可證,確認符合你的環境策略。
運行 CLI 需要 Node ≥ 20(開發與測試使用 24.x),零 npm 運行時依賴。package.json 中 DSH 引擎範圍爲 >=0.2.1-rc.2 <0.3.0。
典型用法¶
在 DSH 裏生成¶
- 執行上面的
dsh plugin add並重啓 Web GUI。 - 打開「市場卡片」,填入插件倉庫根目錄。
- 點擊「生成卡片」,預覽 PNG 或複製安裝命令。
命令行¶
在插件倉庫或任意機器上,對目標插件目錄執行:
node bin/market-card.mjs ../my-plugin --out dist
node bin/market-card.mjs ../my-plugin --strict --json
第一條寫出 dist 下的 HTML/PNG/Markdown/JSON;第二條在字段不全時以退出碼 2 失敗,並輸出 JSON 診斷。
用 market-card.json 覆蓋啓發式提取¶
自動提取是啓發式的,英文尤其需要人工撰寫。可在被介紹插件倉庫根放置 market-card.json,例如:
{
"category": "tools",
"title": { "zh": "示例插件", "en": "Demo Plugin" },
"tagline": { "zh": "一句話中文。", "en": "One English sentence." },
"capabilities": { "zh": ["..."], "en": ["..."] },
"limitations": { "zh": ["..."], "en": ["..."] },
"screenshots": [
{ "path": "docs/panel.png", "caption": { "zh": "面板", "en": "The panel" } }
]
}
完整示例見上游倉庫 examples/dsh-warden.market-card.json。未寫 category 時卡片不顯示分類,工具不會猜測市場分類。
適用場景與注意¶
適合誰: 正在給 DSH 插件市場準備上架 PR 的維護者,希望安裝命令、截圖牆、能力/限制與倉庫 README 保持一致,並需要一張可分享的 PNG 或自包含 HTML。
環境依賴: 生成 PNG 需要本機已安裝 Chromium 系瀏覽器(Chrome / Edge)。找不到瀏覽器時仍會寫 HTML,PNG 狀態爲 browser-missing,CLI 退出碼 3;可通過環境變量 DSH_MARKET_CARD_BROWSER 指定可執行文件。
行爲邊界(插件自述限制):
- 卡片固定 1200 CSS 寬,非響應式;頁面過高(超過約 16000px)會拒絕出圖。
- 標題、安裝命令等提取規則固定(如首個加粗、第一個 shell 代碼塊);README 結構特殊時請用
market-card.json。 - 不讀 git 歷史以外的外部數據,不上傳、無遙測,生成過程不修改被讀取的倉庫。
結尾¶
dsh-market-card 把「倉庫裏已有的事實」排版成雙語市場卡片,減少上架 PR 手工拼文案和漏寫限制的情況;需要嚴格字段時可依賴 --strict 與 card.json 的 provenance 覈對來源。
- 插件目錄:https://www.skillhub.cn/plugins/dingchenhui0618-arch/dsh-market-card
- GitHub:https://github.com/dingchenhui0618-arch/dsh-market-card