前言¶
DeepSeek Harness(dsh)把模型、工具、会话、沙箱和界面都做成插件,官方说法是「一切皆插件」。社区里已经有不少界面增强插件,多数是改 Harness 自己怎么看、怎么点。前端项目里还有另一类问题:删除前要不要二次确认、提交按钮在请求发出后有没有禁用、表单中途退出会不会丢进度。axe、Lighthouse 这类工具能核对对比度、缺失 alt 这类绝对规则,但体验问题往往是相对的——同一套二次确认,对偶尔操作的用户是保护,对每天处理上百条记录的操作员可能是损耗。
dsh-user-experience 把目标用户画像当成走查前提:没有明确「给谁用」,就不下体验结论。它扫描 React / Vue 源码定位问题,能打开页面时再补浏览器证据,确认后给出可复制给编码 Agent 的任务 Prompt。本文按插件目录页、GitHub 仓库 README / package.json 核对后整理。
这是什么¶
dsh-user-experience 是一款面向 DeepSeek Harness 的 UX 走查插件,由 DietCokewithSugar 维护,许可证为 MIT。社区插件目录把它归在「界面增强」,当前 GitHub 星标为 18。仓库 package.json 版本为 0.4.1,插件配置 id 为 ux-experience。
它解决的不是给 Harness 换皮肤,而是在开发阶段提前发现前端体验问题。仓库 README 把它定位成流水线,而不是要记斜杠命令的 CLI:直接说话,或者改完前端文件即可。走查结论带文件位置和规则编号,但不自动改代码。
能力边界以仓库 README 为准:
- 支持 React + TypeScript(
.ts/.tsx)、React + JavaScript(.js/.jsx)、Vue 3(.vueSFC) - 支持 CSS / SCSS / Sass / Less / PostCSS 的保守候选提取;视觉结论仍要真实页面证据
- 当前 Harness 会话能打开项目时,可进一步取截图、DOM 测量,并按画像执行关键任务
- 明确不支持 Svelte、Vue 2、小程序(
.wxml)等;检出时如实告知,不给低质量猜测
社区目录 deepseek-harness-plugin.com 是独立站点,与 DeepSeek / 幻方没有官方从属关系,不能当成官方应用商店。官方仓库在 deepseek-ai/deepseek-harness,插件发现方式之一是 GitHub 的 dsh-plugin topic。
核心功能¶
人设驱动,没有画像就先起草再问¶
每条结论都锚定到明确的目标用户。项目里还没有画像时,插件会从 README 和路由猜 1–3 个草稿,用短卡片问一句「按这些用户来看?」,确认后再走查。之后画像写进 .ux/personas.yml,可随 git 共享,队友不必重复这一步。
走查还会从项目文档和本次业务流程判断产品类型(consumer、enterprise、ecommerce、content、finance、healthcare、developer-tool、internal-tool 或 other),再套对应的体验重点。
27 条规则,按证据等级说话¶
规则以 Nielsen 可用性启发式为基础,共 27 条。模型判断为主,AST / CSS 求证为辅。每条结论标记为 static(源码/CSS)、rendered(真实截图/DOM/尺寸)或 interactive(记录过 Persona 任务步骤)。没有浏览器能力时继续静态走查,不会假装看过页面。
布局密度、视觉语言、主要操作是否清晰,至少要有 rendered 证据;流程冗余、导航过深、表单校验过晚这类问题,至少要有 interactive 任务记录。CSS 只能提供检查线索,没有真实路由截图时,不会断言留白、层级或视觉质量有问题。
高频检查顺序是:反馈与系统状态 → 表单与流程恢复 → 信息架构、导航和主要操作 → 认知负荷、一致性、边缘状态、基础可用性与性能。最终报告仍按严重度排序。界面上用一级到四级问题,P0–P3 只作内部标识。
下面几条能说明规则怎么和工作方式挂钩:
- R-04 不可逆操作缺二次确认、R-07 提交中按钮未禁用:模型加 AST
- R-09 深浅色模式适配缺失:纯 AST,不消耗 token
- R-10 布局拥挤、R-13 页面用途或主要操作不清:必须有 rendered 证据
- R-14 关键任务冗余交互、R-20 中途退出丢失表单进度:必须有 interactive 记录
改完前端文件会自己跑一次¶
改完前端文件(包括 CSS),回合收尾时自动对该文件所属的完整组件 / 页面做一次静态走查,不问画像、不问范围。没有画像就先写成草稿再查。只有一级 / 二级问题才会出声,避免打断写代码。自动走查默认开启,可用 .ux/rules.local.yml 或插件配置关掉。
用户用自然语言主动发起的走查,会在工具可用时升级到截图和 Persona 任务。
报告卡片与确认闭环¶
报告首屏只讲用户能看懂的信息:哪个页面、出了什么事、严不严重。文件路径、规则 ID、内部编号折在「技术细节」里,展开后可复制成结构化 YAML。判定不用记编号:点「确认存在 / 不是问题」,或者说「第 2 条不成立」「三级以下全部忽略」。
确认某条问题后,卡片提供「复制给 AI 的任务 Prompt」。Prompt 只描述观察现象、发生场景、用户影响和验收目标,不预设代码改法,并写明插件只读到部分代码、要求补齐完整上下文。文案问题允许直接改文案。
下次走查时若某条问题消失、且该位置确实被重新扫描,插件把它记成隐式确认——用户改掉了,这条成立。位置本次没扫到或代码整块删除,记为 stale,不计入「扫了没发现」。
运行模式按场景选择:改动触发的走查用 auto(出报告、不打断);用户主动走查用 review(批量确认);精细调规则时可改成 interactive(逐条确认)。判定顺序是 .ux/rules.local.yml 的 mode → 插件配置 → 自动探测。
安装与启用¶
社区目录页给出的安装命令是:
dsh plugin add github:DietCokewithSugar/dsh-user-experience
仓库 README 针对 Web 客户端,写成指定 web profile(本插件在 package.json 里声明了 dsh.client.platform 为 web):
dsh plugin --profile web add github:DietCokewithSugar/dsh-user-experience
需要可复现安装时,目录页和仓库都建议固定 commit 哈希。仓库 README 的写法如下(哈希请到 main 提交记录 复制最新 40 位 SHA;下面这一枚来自 README 原文,用于绕过部分 Windows + pnpm 11 上的 getRepoRefs / resolveGit 失败):
dsh plugin --profile web add github:DietCokewithSugar/dsh-user-experience#57fe06eb8bc1313a931bfb50eb2416c52bb1fdea
若上次失败已经把 dsh-user-experience 写进了 profile 的 package.json,先删掉那一行再装。安装成功后刷新页面即可,一般不必重启。仓库已提交预构建 lib/,从 GitHub 安装时不执行 prepare / preinstall / postinstall。仅当提示无法热加载时,再重启或重新加载 web profile。
本地构建与测试使用 @deepseek-ai/dsh-*@0.1.0-rc.6 和 @deepseek-ai/cordis@4.0.1;运行时由 profile 通过 peer 提供,DSH 范围为 >=0.1.0-rc.6 <0.2.0。Harness、Cordis、React 都是宿主 profile 的 peer dependency,本插件不往 profile 里再装一份私有副本。
安装后可用配置(在 profile 的 cordis.patch.yml 或 --patch 层按 id 覆盖;用户的 .ux/rules.local.yml 优先级更高):
- id: ux-experience
config:
maxScanFiles: 300
maxCandidatesPerRule: 5
maxCandidatesPerFile: 25
maxFindings: 30
excludePatterns: ['test', 'stories']
mode: detect
autoScan: true
autoScanEditTools: ['write', 'edit']
autoScanMaxFiles: 20
autoScanDebounceTurns: 1
outputLanguage: auto
outputLanguage 为 auto 时,先跟随当前用户语言,再回退到项目主 README;也可显式设为 zh-CN 或 en。报告卡片和 AI 任务 Prompt 支持中英文。
典型用法¶
仓库 README 强调:直接说话,不用学 /ux。
第一次走查可以这样说:
看看下单流程从选品到支付好不好用
我们主要给运营用
项目里还没有画像时,会先出一张短卡片确认目标用户。说「就这些」或改一句,走查接着跑。
报告出来之后,继续说话或点卡片按钮:
第 2 条不成立
这几条都对
三级以下全部忽略
删除那条我确认
确认某条问题后,点「复制给 AI 的任务 Prompt」,粘贴给编码 Agent。改完前端文件则不必再发指令:回合收尾会自动跑静态走查,只有一级 / 二级问题才提示一句。
仓库文件约定如下:
| 文件 | 是否提交 git | 说明 |
|---|---|---|
.ux/personas.yml |
提交 | 项目级用户画像,团队共享;CI 模式依赖它 |
.ux/glossary.yml |
提交 | 术语表与判定,后续只做增量比对 |
.ux/rules.local.yml |
不提交 | 个人走查偏好,支持 mode 与 autoScan |
.ux/history.jsonl |
不提交 | 指纹历史账本,用于长期指标,不是判定结果 |
建议在项目 .gitignore 中加入:
.ux/rules.local.yml
.ux/history.jsonl
个人偏好示例:
# .ux/rules.local.yml
mode: review
autoScan:
enabled: true
debounceTurns: 1
适用场景与注意事项¶
适合这些情况:
- 正在用 DeepSeek Harness 写 React(TypeScript / JavaScript)或 Vue 3 前端,希望在合入前看到可定位的体验问题
- 团队能对「给谁用」达成共识,愿意把
.ux/personas.yml放进仓库 - 需要把走查结果交给另一个编码 Agent 去改,而不是让走查插件自己改代码
使用时注意:
- 插件以当前 dsh 进程的权限运行,安装时可能执行代码。安装前应检查源代码仓库和许可证;生产环境建议锁定可信 commit。
- 没有浏览器 / 截图工具、或项目当前跑不起来时,只能做静态走查。布局、视觉、触控热区、流程冗余等结论会被降级或不出。
- 不支持 Svelte、Vue 2、小程序。把这类项目交给它,不会得到可靠的体验结论。
- 插件不自动改代码。确认问题后的 Prompt 也只描述现象,具体改法要由编码 Agent 结合完整仓库决定。
- 自动走查扫的是组件 / 页面,不是 diff 行;改了一处样式,报告可能覆盖整页。可用
autoScanDebounceTurns控制频率。 - 目录页收录日期为 2026-08-15,仓库仍在快速迭代。安装命令、配置项和规则集合以当时打开的目录页与 GitHub README 为准。
小结¶
dsh-user-experience 把「给谁用」写成走查前提,用 27 条规则扫 React / Vue 源码,能打开页面时再补截图和任务记录。它不改你的代码,只给出可定位、可确认、可转给编码 Agent 的体验问题。
目录页:https://deepseek-harness-plugin.com/zh-CN/plugins/dsh-user-experience/
GitHub:https://github.com/DietCokewithSugar/dsh-user-experience