AI 写代码之后,谁来保证它真的通过检查?用 Vite+ 统一开发与验证流程
让 AI 编码 Agent 生成页面往往很快,真正麻烦的是后半程:它是否运行了正确的 lint、类型检查、测试和生产构建?不同项目的命令各不相同,CI 又可能和本地配置分叉。前端工程师 Jan Michálek 分享了自己连续三周、在四个项目中使用 Vite+ 的经验:重点不是把所有工具“变成一个”,而是让开发者、Agent 和 CI 有一条可复现的工作路径。
Vite+ 统一的是入口,不是所有配置
Vite+ 将常见开发任务收束到 vp 命令:Vite 负责开发和构建,Vitest 负责测试,Oxlint 与 Oxfmt 负责检查和格式化,另有 tsdown 与 Vite Task 等组件。项目仍会有 package.json、tsconfig,框架也可能保留自己的配置;因此,不应把它理解成“一个配置文件解决一切”。
新建 React + TypeScript 项目时,作者展示的命令流程是:
vp create vite -- --template react-ts cd project-name vp install vp dev vp check vp test vp build
vp install 会使用项目选定的包管理器;Vite+ 不会取代 npm 或 pnpm。这里假定 vp 已可用,作者也提到可通过包管理器在项目中本地运行,而非必须全局安装。实际使用前应查看当前版本的官方安装说明和 vp help create,不要把文章中的版本示例当成永久不变的安装指令。
给 Agent 一个可验收的“完成定义”
单纯在提示词里说“做完功能”,并不能确保 Agent 跑过验证。更可靠的做法,是将仓库已有的检查流程写进 Agent 指令,并要求它报告实际执行结果。例如:
## 完成任务前的检查 - 修改代码后运行 vp check,并修复失败项。 - 修改行为后,运行相关测试(vp test)。 - 交付 Vite 应用前运行 vp build。 - 自动修复后检查 diff,并再次运行检查。 - 最终报告实际执行的命令与结果;失败时不要声称已完成。
这段规则应按项目调整:旧项目的测试脚本、框架构建命令可能不同,先确认命令真实存在,再写入说明。vp check 的类型检查也不是无条件保证;原作者特别提醒,类型相关检查取决于 Vite+ 配置中的 typeAware 与 typeCheck 设置。新建模板的默认配置不能替代对既有仓库的核对。
同理,vp check --fix 可以自动修复部分问题,但自动改动并非最终审核。先看 diff,再重跑检查,才能知道修复是否引入了额外变更。
本地绿灯不等于应用正确
lint 和类型检查只能覆盖特定问题。行为是否符合需求,还得靠测试;最终应用能否构建,则由构建命令验证。作者建议把相同检查放进 CI,避免 Agent 在本地看到的结果与流水线不一致。仓库级指令能减少重复解释,但不能取代人工审查,也不能保证 Agent 不会绕过规则。
Vite+ 的命令边界尤其值得写清楚:vp build 是 Vite 应用构建;vp run build 则运行 package.json 脚本或配置任务。对于 Next.js 等有自身构建流程的项目,不能想当然地用前者替换框架命令。monorepo 中,vp run 可以按工作区依赖安排任务;但 package.json 脚本缓存并非默认开启,配置任务的缓存行为也不同。理解这些区别,比盲目追求命令更少重要。
迁移时先验证,不要照搬性能数字
作者报告,在自己的一个 monorepo 中,调整 CI 工作流后耗时从 4 分钟降到 50 秒;某个 pre-commit 检查从 11 秒降到不到 2 秒。这是特定项目的个人测量,不是控制变量下的通用基准,也不能据此承诺每个仓库都会提速。执行内容、文件范围和配置都会影响结果。
vp migrate 可以协助转换旧配置,但它只是迁移起点。迁移后应对比原有 lint、测试、Git hooks 和构建产物;自定义插件、规则仍可能需要手工处理。另一个容易误读的命令是 vp upgrade:作者指出它更新的是全局 CLI,并不会自动升级每个项目的本地 vite-plus 依赖。
适合从新项目开始试
如果正在用 AI 创建新的 Vite 应用,可以先选定一套工具链,再把 vp check、相关测试和 vp build 写进仓库说明与 CI,并要求 Agent 提交可核验的执行结果。对于已有大型项目,先做小范围迁移并比较行为;如果现有流程稳定,单凭“一个命令入口”未必值得整体替换。对其他框架,也应先明确哪些 Vite+ 能力适用,再保留框架自身必需的构建步骤。
核心收益不是让 Agent 自动写得更快,而是缩小“代码已生成”和“代码已验证”之间的空白。把检查步骤变成团队共享、可重复的流程,最终仍由测试结果、构建结果和人工审查共同定义完成。