dsh-market-card:把倉庫 README 排成可上架的雙語市場卡片

前言

在 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 裏生成

  1. 執行上面的 dsh plugin add 並重啓 Web GUI。
  2. 打開「市場卡片」,填入插件倉庫根目錄。
  3. 點擊「生成卡片」,預覽 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
羽毛球分组比赛记分
小程序二维码

欢迎使用《羽毛球分组比赛记分》微信小程序

小夜