前言¶
在 DSH 里做界面或体验相关任务时,模型往往需要风格参考、配色档案、UX 准则和技术栈实现要点。上游项目 ui-ux-pro-max 提供一套「设计智能」数据库和 Python 检索引擎,传统用法是把技能目录拷进宿主,再在终端执行 python .../search.py。路径固定、命令手写,和 DSH 的工具调用模型也不对齐。
dsh-upm 由维护者 qizhuxu 发布,分类为工作流,是 ui-ux-pro-max 的 DeepSeek Harness 原生插件:技能与数据随包走,检索注册为原生工具与原生命令,并可通过 GitHub Actions 随上游 commit 自动重新封装。下面介绍它是什么、怎么装、怎么用,以及安装与更新时容易踩的坑。
这是什么¶
一句话定位:ui-ux-pro-max 的 DSH 原生插件——bundled skill data、native search / design-system tools、auto re-vendor from upstream。
上游数据规模(README 原文):79 种可检索风格、192 套产品配色与推理档案、74 组字体搭配、119 条 UX 准则、105 个精选图标、17 个 GSAP 动效预设、25 类图表、22 个技术栈。
相对「只 clone 上游、手敲 search.py」,插件额外做三件事:
- 进程内注册
upm-provider,技能与数据随包走,不依赖固定 clone 路径。 - 将
search.py封装为upm_search/upm_stack/upm_design_system等工具;另有upm_domains、upm_status两个不启动 Python 的自检入口。 - GitHub Actions 定时比对上游 commit,有更新则重新打包并开 PR。
结构参考 dsh-taste;执行层使用 DSH 官方 subprocess、argv 数组、无 shell。npm 包版本为 0.1.1(MIT),peer 依赖 @deepseek-ai/cordis ^4.0.4 等,要求 Node >=22.19.0、dsh ^0.2.0-rc.2。
先决条件:Python 3.8+¶
检索引擎是 Python(search.py + core.py + design_system.py)。插件不捆绑 Python,按顺序探测解释器:
- 配置里的
pythonPath; - 环境变量
DSH_UPM_PYTHON; python→python3→py -3。
配置了 pythonPath 就只用它,失败直接报错,不会静默换别的解释器。探测结果在插件实例内缓存。装好后可用 upm_status 查看实际使用的解释器;upm_domains 不启动 Python,无 Python 时仍可列出域与栈。
核心功能¶
技能与命令¶
skills 面默认只注册一条命令(与插件同名):
/dsh-upm
执行上游完整工作流(含 10 条优先级规则与检索契约)。上游技能原名 ui-ux-pro-max;可通过配置 primaryName 改名或保留原名。
插件加载技能时会在正文开头插入 DSH 运行时说明(CLI 参数与工具参数对照),末尾追加数据与参考文件的绝对路径;上游 SKILL.md 文件本身不改。
另有两条原生命令,不经模型、直接出结果:
/upm-search <检索词> [--domain 域 | --stack 栈] [-n 条数] [--json] [--full]
/upm-ds <产品类型 行业 关键词> [-p 项目名] [-f ascii|markdown] [--variance 1-10] [--motion 1-10] [--density 1-10] [--persist -o 项目根] [--page 页面] [--force] [--json]
--domain 与 --stack 只能给一个,混用会报错。
工具一览¶
| 工具 | 作用 |
|---|---|
upm_status |
打包版本、上游 commit、数据规模、数据目录、Python 解释器 |
upm_domains |
12 个搜索域与 22 个技术栈及条目数(纯 JS) |
upm_search |
按域检索 |
upm_stack |
按技术栈检索 |
upm_design_system |
生成完整设计系统,可持久化为 design-system/<slug>/MASTER.md |
12 个搜索域包括 style、color、chart、landing、product、ux、typography、icons、gsap、react、web、google-fonts 等(详见 README 表格)。
22 个技术栈包括 react、nextjs、vue、svelte、astro、swiftui、react-native、flutter 等(完整列表见 README)。
upm_design_system 支持 variance / motion / density 拨盘(1–10),分别影响风格大胆程度、动效复杂度、布局密度。
安装与启用¶
CLI 安装(命令来自 README 原文):
dsh plugin --profile <profile> add github:qizhuxu/dsh-upm
安装后重启 DSH(插件在宿主启动时加载,无热重载)。装好后 upm_status 可查看打包版本、上游 commit 与 Python。
desktop profile 例外:CLI 会拒绝,需在 Electron 插件面板操作,或改 profile 的 package.json:
{
"dependencies": { "dsh-upm": "github:qizhuxu/dsh-upm" },
"dsh": { "profile": { "bundles": ["…", "dsh-upm"] } }
}
在该 profile 目录执行 pnpm install 后重启 DSH。
从 GitHub 安装的 npm 包按 files 字段打包,不含 scripts/vendor.mjs、test/、.github/ 等;运行期不缺技能与数据,本地 re-vendor 或跑测试需 clone 源码仓库。
更新注意:pnpm 将 git 依赖钉在 pnpm-lock.yaml 的 commit 上,上游或 CI 合并新版本不会自动到你机器。需在该 profile 目录:
cd ~/.dsh/profiles/<profile>
pnpm update dsh-upm --lockfile-only
pnpm install --frozen-lockfile
然后重启 DSH。不要手动往 node_modules/dsh-upm 复制文件「更新」,重装会按 lockfile 覆盖。
典型用法¶
原生命令示例(README):
/upm-search "keyboard focus modal" --domain ux -n 5
/upm-search "suspense streaming bundle" --stack nextjs
/upm-ds "beauty spa wellness service" -p "Serenity Spa"
/upm-ds "internal analytics dashboard" -p "Ops Console" --variance 8 --motion 7 --density 8 --persist -o "D:\work\ops-console"
模型侧对应关系示例:search.py "<q>" --domain <d> → upm_search { query, domain };设计系统带持久化时对应 upm_design_system 的 persist / outputDir / page / force 等参数。
检索词宜围绕一个主意图、2–5 个有意义的词;0 结果时换更窄的词或指定 domain 重试,仍无命中应如实说明,勿把通用建议伪装成数据库命中。
配置¶
在 profile 的 cordis.patch.yml 覆盖插件行,例如:
- id: dsh-upm
name: dsh-upm
config:
# pythonPath: C:\Python312\python.exe
# primaryName: dsh-upm
# rank: 380
# maxResults: 3
# timeoutMs: 300000
# graceMs: 10000
默认 rank 为 380:小于用户 ~/.dsh/skills(400),大于项目级 .dsh/skills(100),故项目级副本仍可覆盖插件技能。
适用场景与注意¶
适合谁:在 DSH 中做 UI/UX、落地页、设计系统、多栈前端实现参考,且愿意在本机提供 Python 3.8+ 的开发者。
权限与安全:插件以当前 DSH 进程权限运行;upm_design_system 的 --persist 会向指定目录写文件。安装前应阅读 GitHub 仓库 源码与 MIT 许可证,自行评估数据与脚本行为。
生态说明:DSH 社区插件目录 SkillHub 上的 dsh-upm 页 为独立站点条目,与 DeepSeek / 幻方无官方从属关系。
结尾¶
dsh-upm 把 ui-ux-pro-max 的设计数据库和检索引擎封装成 DSH 插件:一条 /dsh-upm 工作流、五条工具、两条快捷命令,并解决 Python 路径与 pnpm git 依赖更新两类运维问题。需要详情时查阅 目录页 与 GitHub:qizhuxu/dsh-upm。