本地扫描 Vue 项目,发现风险后生成修复任务,交给 Agent 处理并复检。

负责人:肖龙 | 分类:AI 工具 | 状态:可用
Vue Doctor 是 dh-ai 里的 Vue 项目健康检查工具。它会在本地扫描 Vue 项目,检查安全、正确性、性能、包体积、组件结构、可维护性、可访问性和视觉规范问题。
它适合用在接手项目、提交前自检和发版前检查。扫描后会输出 0 到 100 健康分、中文诊断、可视化报告和修复任务:Doctor 负责找问题,Agent 根据任务改代码,改完后再用 Doctor 复检。默认只做本地扫描,不上传源码。
支持 Vue 2、Vue 3,也能识别 Vite、Vue CLI、Nuxt、Quasar、VitePress 和 VuePress 项目。
没有 dh-ai 也可以从这里开始。先安装 Node.js 长期支持版,重新打开终端,运行 node -v 和 npm -v 确认可用。在项目目录执行下面的命令,局部安装 CLI,后续通过 npx dh-ai 使用,无需全局安装。
npm config set @szhn:registry https://npmmirror.digitalhainan.com.cn/
npm i -D @szhn/ai-cli@latestnpx dh-ai doctor .终端会直接告诉你健康分、Top 问题和修完预计能涨多少分,并生成 .dh-doctor/tasks.md。把这份任务清单交给 Agent 修复;改完后再跑一次检查,确认问题已经解决。
终端会先给结论,再列问题。下面这张截图来自一次真实 Vue 项目扫描:先看问题、分数和提升空间,再从底部拿到可交给 Agent 修复的任务。

| 区域 | 你在看什么 |
|---|---|
| 问题块 | 每条问题的分类、规则名、影响、修复建议和文件行号 |
| 全部问题汇总 | 各类问题数量,比如性能、正确性、组件结构 |
| 分数卡 | 当前健康分、等级和进度条 |
| 提升提示 | 修掉 Top 问题后,预计能提升多少分 |
| 底部路径 | 完整报告写到了 .dh-doctor/;其中的 tasks.md 已按优先级整理好,直接交给 Agent 修复 |
report.html 更适合给团队快速看结论。它把终端信息整理成几个面板:健康分、首屏、性能、安全、结构、Top 问题,以及可以直接交给 Agent 修复的问题组。

这张图是完整报告样例,用来展示报告的阅读方式。除了健康分和 Top 问题,还能看到首屏相关信号、性能和结构评分、构建产物、最大资源,以及适合交给 Agent 或需要人工判断的修复任务。实际结果会随项目代码和是否执行构建检查而变化。
| 分数 | 标签 | 含义 |
|---|---|---|
| ≥ 75 | Great | 整体健康,按 Top 问题逐步优化即可 |
| 50 到 74 | OK | 有明显风险,建议本周内处理 |
| < 50 | Critical | 优先修安全和正确性问题 |
先做一次完整扫描,确认问题后分批处理;每批处理完只复检改动部分,避免反复扫完整个项目。
| 阶段 | 做什么 |
|---|---|
| 摸底 | dh-ai doctor . 看整体健康分和 Top 问题 |
| 修复 | 打开 .dh-doctor/tasks.md,把任务交给 Agent 按优先级分批修复 |
| 复检 | dh-ai doctor . --scope changed 只看本次改动 |
| 提交前 | dh-ai doctor . --staged 只检查已暂存的文件 |
| 发版 | dh-ai doctor . --verbose --build 检查构建产物 |
不用背规则 ID,知道 8 类检查即可:
| 分类 | 举例 |
|---|---|
| 安全 | 硬编码密钥、v-html、不安全外链 |
| 正确性 | 列表 key、模板副作用、Vue 2 过时写法 |
| 性能 | 路由同步加载、模板重复计算、CSS 动画习惯 |
| 包体积 | lodash / moment 全量引入、单 chunk、大图片 |
| 组件结构 | 组件过大、入参过多 |
| 可维护性 | 样式影响范围过大 |
| 可访问性 | 图片 alt、按钮名称 |
| 视觉规范 | 过小文字、层级过高等 |
某条规则看不懂时:
dh-ai doctor rules explain no-sync-route-component输出会说明四件事:问题是什么、会带来什么影响、建议怎么改、改完怎么验证。
扫描结束后,默认写到项目根目录:
.dh-doctor/
report.md 给人看:总览、分类、Top 问题、修复建议
report.html 给人看:首屏、性能风险和修复优先级页面
tasks.md 给 Agent 看:按优先级排好的修复任务
report.json 给脚本 / CI 看:结构化数据
build-baseline.json 下次构建体积对比的内部参照(仅在跑过 --build 后生成)建议把 .dh-doctor/ 加入 .gitignore。
不想翻终端时,直接打开 report.html 看首屏、性能和优先级;需要完整依据时,打开 report.md;需要给 Agent 修复时,打开 tasks.md。即使用 --json、--score 等方式让终端只输出机器可读结果,这些报告仍会写进输出目录。
| 你想做什么 | 命令 |
|---|---|
| 第一次摸底 / 平时自检 | dh-ai doctor . |
| 看清楚每个问题在哪一行 | dh-ai doctor . --verbose |
| 改完代码,确认没引入新问题 | dh-ai doctor . --scope changed |
| 只看改动行上的问题 | dh-ai doctor . --scope lines |
| 提交前只扫暂存文件 | dh-ai doctor . --staged |
| 发版前查包体积、拆包 | dh-ai doctor . --build |
| 构建较慢,延长等待时间 | dh-ai doctor . --build --build-timeout 300 |
| 只看严重问题 | dh-ai doctor . --no-warnings |
| 只看某一类问题 | dh-ai doctor . --category Security |
| 输出结构化 JSON | dh-ai doctor . --json --json-compact |
| 不要扫描后出现交接选择 | dh-ai doctor . --no-interactive |
命令太多时,把常用命令写进 package.json:
{
"scripts": {
"doctor": "dh-ai doctor . --verbose",
"doctor:check": "dh-ai doctor . --scope changed",
"doctor:release": "dh-ai doctor . --verbose --build"
}
}代码扫描之外,Doctor 还可以检查已经能访问的页面。下面这些命令适合在测试环境或上线前使用:
| 你想做什么 | 命令 |
|---|---|
| 测量移动端页面性能 | dh-ai doctor perf https://example.com --urls /,/home --mobile --throttle |
| 读取已有性能结果 | dh-ai doctor perf https://example.com --input .unlighthouse |
| 检查指定页面有没有白屏、报错和失败请求 | dh-ai doctor runtime https://example.com --urls /,/home --mobile |
| 安全地发现同站页面后逐页检查 | dh-ai doctor runtime https://example.com --discover --max-pages 20 |
| 找出过度设计和可能可删的代码 | dh-ai doctor ponytail . |
perf 是实验室性能测量,实时扫描需要 Node 22.18+ 和 @unlighthouse/cli;如果已有性能结果,使用 --input 可以直接读取。runtime 需要 Node 18+ 和本机 Chrome 或 Edge。它只访问同站安全链接,不点击按钮或提交表单;截图默认关闭,开启 --screenshots 前请注意截图可能包含业务内容。
推荐走统一 Skill 安装,装完后可在 AI 工具里使用 /vue-doctor:
dh-ai skill init frontend/vue-doctor --tool qoder --scope user完整安装、触发方式和修复流程见 vue-doctor Skill。
也可以用快捷入口,把同一份 skill 写到常见 Agent 目录:
dh-ai doctor install --dry-run # 先预览会写入哪些文件
dh-ai doctor install # 交互选择要使用的 Agent使用 dh-ai doctor install -y 时,会默认安装给 Codex、DeepSeek 和 Qwen Code;需要 Claude Code 或 Cursor 时,请用不带 -y 的交互安装并勾选。
dh-ai doctor . --verbose然后在 DeepSeek、Qwen Code、Claude Code 或 Cursor 里使用 /vue-doctor,或扫描结束后在终端选“交给 Codex / DeepSeek / Qwen Code / 复制 prompt”。
终端交接只会在可交互终端出现;CI 或 Agent 环境会自动跳过。此时直接把 .dh-doctor/tasks.md 交给负责修复的人或 Agent 即可。
Agent 会读 .dh-doctor/tasks.md,按 Top 问题分批修。每批修完再跑:
dh-ai doctor . --scope changed适合交给 Agent 的问题通常是局部、机械、可复检的改动,比如补稳定 key、给图片补 alt、给外链补 rel、把全量 lodash 改成按需引入。
安全、权限、接口封装、路由兜底、构建失败这类问题,建议先由人确认边界,再让 Agent 改具体代码。
大多数项目不用配。只有“生成代码要跳过”“某条规则太吵”时才需要。在项目根目录建 doctor.config.json:
{
"ignore": {
"files": ["src/generated/**"],
"rules": ["no-v-html"]
}
}也支持写在 package.json 的 dhAiDoctor 字段里。
doctor 会按下面顺序合并配置:
package.json 里的 dhAiDoctorpackage.json 里的 vueDoctordoctor.config.jsonvue-doctor.config.json(同名规则以后面的设置为准)常用字段只有三个:ignore.files 跳过文件,ignore.rules 关闭规则,rules 调整单条规则级别。
默认扫描不会执行构建,速度更快。发版前建议加 --build:
dh-ai doctor . --verbose --build这会先执行项目的 build 脚本,再检查真实产物。构建失败不会让 doctor 直接中断,它会把失败原因写进报告,方便先修构建。
如果项目构建很慢,可以调长等待时间:
dh-ai doctor . --build --build-timeout 300vue 依赖或 .vue 文件。--build。dh-ai doctor 和 ai-cli doctor 有区别吗? 功能没有区别。正式命令是 dh-ai doctor,ai-cli doctor 只用于兼容旧脚本。
先看终端底部有没有 可视化报告 路径。默认路径是 .dh-doctor/report.html。如果传了 --output-dir,就去指定目录找。
--scope changed 没有扫出问题? 它只看相对基线新增的问题。默认会优先找 prod,也可以手动指定:
dh-ai doctor . --scope changed --base dev先确认是不是测试、mock、fixture、生成代码或历史包袱。如果确实不需要检查,用 ignore.files 或 ignore.rules 收敛,不要为了消掉提示去改业务行为。
可以。CI 里建议用结构化输出:
dh-ai doctor . --json --json-compact --no-interactiveCI 会自动跳过终端交接选择;--no-interactive 用来明确表达这一点,便于团队统一脚本行为。
工具属于 @szhn/ai-cli 的 doctor 子命令。如需反馈规则误报、报告展示或接入问题,请联系负责人 肖龙。