前言¶
在 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