96SEO 2026-08-06 02:28 17
因为公司给了 Cursor 的席位,所以这篇文章主要以前端使用 Cursor CLI 的视角来说明。Claude Code 或者其他 AI 工具一样可以采用这一套工作流,后端也可以借鉴类似流程。其实,

再看常见低级问题,
接口字段为空导致页面白屏
按钮重复点击导致重复提交
loading / empty / error 状态漏处理
接口字段改名后没有兼容旧数据
权限按钮展示条件漏了某个状态
被吞掉。测试环境只看到“操作失败”
落到项目里只需一个命令:
npm run ai-review
从跑完会生成来看,
.review/ai-review.md
它不会替你写业务逻辑,也不会保证“零 Bug”。但对于一些低级、重复、容易漏看的问题,它确实能提前拦下一部分。对我这一步最大的价值不是“让 AI 证明代码没问题”。而是:在提测前先让 AI 帮我扫一遍本次改动,把明显风险暴露出来。
很多团队会把 AI Review 放到上线前,作为发布前最终一道兜底。这当然也有价值,但我更建议把它前移到提测前。
从原因很简单来看。越晚发现问题,修复成本越高。
This step is not a replacement for testing but reduces some “should not flow into testing phase” issues.
第一次用 AI 审代码时人们往往直接问:
帮我检查当前分支有没有问题
这种问法效果不好。项目太大,上下文太散,AI 很容易给出一些正确但没用的建议。如“建议补充单元测试”“建议调整异常处理”等,对“这次能不能提测”帮助有限。
true focus in pre‑test review is:
This is exactly value of git diff. It naturally defines boundary of this change.
配置完成后只需执行:
npm run ai-review
默认比较 origin/main...HEAD,即当前分支相对
agent,but cursor-agent。you can set env var:
CURSOR_CLI=cursor-agent npm run ai-review
cat .review/ai-review.md
This script generates several helper files:
- .review/release.stat // change statistics
- .review/release.files // file list
- .review/release.diff // full diff
- .review/review-prompt.md // prompt used
- .review/ai-review.md // final report
The most important is .review/ai-review.md<\/a>. Just look at this file before submitting for test.
第一步先的观点是,添加 npm script
在 `package.json` 里增加一个脚本:
json
{
"scripts": {
"ai-review": "node scripts/ai-review.mjs"
}
}
这样团队成员不需要记住具体脚本方法,也不需要关心底层到底执行了哪些命令。只要会跑项目里的 npm script,就能使用这套提测前检查流程。后续统一约定为:
bash
npm run ai-review
此命令会自动完成三件事:
* 自动对比 origin/main...HEAD。按理说,* 自动生成本次 diff 文件。老实说,* 调用 Cursor CLI 做只读审查并写入报告。
至于接下来,新增自动审查脚本
新建文件 scripts/ai-review.mjs 并填入下面内容:
javascript
import { execFileSync } from 'node:child_process';import { existsSync,mkdirSync。writeFileSync } from 'node:fs';import { dirname,resolve } from 'node:path';import { fileURLToPath } from 'node:url';
const _filename = fileURLToPath;说起来,const _dirname = dirname;const rootDir = resolve;const baseBranch = process.argv || 'origin/main';const target = process.argv || 'HEAD';const cursorCli = process.env.CURSOR_CLI || 'agent';const reviewDir = resolve;怎么说呢,const statFile = resolve;const filesFile = resolve;const diffFile = resolve;const promptFile = resolve;const outputFile = resolve;
function run {
return execFileSync(command。args,{
再看cwd,rootDir,encoding:'utf8',stdio:options.stdio||
});}
function write{writeFileSync;}
function hasOriginRemote{
try{run;return true,}
catch{return false;}
}
function ensureReviewDir{
if)mkdirSync;}
function generateDiffFiles{
const range=${baseBranch}...${target};const pathspec=];write),write);write),}
function generatePrompt{
const prompt=`你现在是一名资深前端代码审查员。请 - .review/release.files:改动文件列表 - .review/release.diff:完整代码 diffReview 目标:找出本次变更中可能在测试阶段暴露为 Bug 的风险点,主要关注业务正确性、运行时稳定性、接口兼容性和使用者操作边界。从请主要检查来看,• 是否有 undefined / null / 空数组 / 空对象导致运行时错误?• 是否有接口入参 / 出参 / 字段名 / 字段类型兼容性问题?
话说回来,• 是否有权限 / 鉴权 / 越权访问或权限展示问题?• 是否有重复请求 / 请求竞态 / 按钮重复提交问题?• 是否有 loading / error / empty 状态缺失?• 是否有弹窗 / 表单 / 分页筛选状态未重置?• 是否有缓存更新/失效/脏数据?• 异常处理是否完整,是否被吞掉?• 配置/环境变量/灰度开关缺失默认值?• 埋点/日志缺失导致难定位?• 回滚风险或新旧逻辑不可兼容?
输出格式的观点是,
P0 阻塞提测问题。
P1 高风险问题。不过,
P2 建议调整。
人工确认项 列出 AI 无法完全判断,但提测前应人工确认事项。
至于要求。• 只基于本次 diff 分析,不泛泛而谈。• 每个问题都要写清楚:文件、描述、风险、建议修改及是否阻塞。• 不评价风格除非影响真实 Bug。• 不输出空泛 “补充单元测试”,除非可指明具体分支。其实,• 如 diff 信息不足,可明确说明需补充哪个文件或上下文。
`;write,return prompt;}
function runCursorReview{
const result=run;write,}
function main{
ensureReviewDir;按理说,console.log;console.log,console.log;if){
console.log;run,不过,}
console.log;generateDiffFiles;console.log,const prompt=generatePrompt;console.log,runCursorReview;不过,console.log;}
main,
:运行 npm run ai‑review
bash
npm run ai-review
控制台大致会输出:
text
Base branch: origin/main
从Target来看,HEAD
Cursor CLI: agent
Fetching origin...
Generating git diff files...
Generating review prompt...
Running Cursor CLI review...
AI review report generated:/your-project/.review/ai-review.md
接下来查看报告:
bash
cat .review/ai-review.md # 或者 `vim` 等编辑器查看即可
报告结构示例的观点是。
markdown
无
-
src/components/UserTable.vue
描述: 接口字段从
userName 改为 username 未做兼容;老缓存为空数组时报错,风险: 页面崩溃或数据显示为空。建议: 在解构之前做空值兜底;更新缓存策略,
...
仅列出与差异相关的小调整,例如添加 loading 状态…
人工确认项
-
确认 VITEFEATUREFLAG 在测试环境已开启默认值。
-
确认后端已支持空字符串返回值…
用途
-
可直接贴到需求卡片、PR 评论或测试说明里。
-
用作团队复盘哪些 Bug 在提前被拦下。
-
修正后可
跑一次比较差异。
我一般主要看报告里的哪些内容?其实,
分类
什么是关键
示例
P0 阻塞
必须马上修复,否则无法提交
新增页面读取 时如果接口返回空数组抛错
P1 高风险
有可能在测试阶段被打回。需要评估优先级
接口字段从 userName 改成 username 未做兼容
人工确认项
AI 无法判断环境配置或业务细节
VITE_xxx 开关默认值;后端已兼容新增字段
前端项目里最容易被提前扫出来的问题
空数据导致页面崩溃
javascript
const name=user.profile.name;
若 profile 为 null 则直接崩溃。AI 审查会捕捉此类新访问。
Loading/Error/Empty 状态缺失
请求中按钮未禁用;其实,请求失败无提示,空数组无占位图;其实,慢接口显示旧数据等。
接口字段兼容性
如 backend 把 userName 改成 username 而 UI 未做兜底。
重复请求与竞态
搜索框切换页码时请求顺序错乱导致结果错误。
权限展示与按钮禁用逻辑
无权限使用者看到操作按钮但实际不可操作。怎么说呢,
AI 检查完后要不要顺手修?
可以但最好不要把自动修复放进 NPM RUN A.I.-REVIEW 命令里。保持职责单一这方面,
1️⃣ 提供 审核报告——把风险点暴露出来。2️⃣ 开发者手动决定是否修复,接下来可
调用 AI 专门修正特定行。
这样既避免误判变成误改,也保留人类判断权。
小结
Git Diff 并调用 Cursor
3️⃣ 输出 .review/ai-review.md
4️⃣ 人工确认 P0/P1 并根据情况主动让 AI 修复,再跑一次。它并不能取代 Code Review 或 QA,但极大提高了发布速率与质量保障力度。
"}
作为专业的SEO优化服务提供商,我们致力于通过科学、系统的搜索引擎优化策略,帮助企业在百度、Google等搜索引擎中获得更高的排名和流量。我们的服务涵盖网站结构优化、内容优化、技术SEO和链接建设等多个维度。
| 服务项目 | 基础套餐 | 标准套餐 | 高级定制 |
|---|---|---|---|
| 关键词优化数量 | 10-20个核心词 | 30-50个核心词+长尾词 | 80-150个全方位覆盖 |
| 内容优化 | 基础页面优化 | 全站内容优化+每月5篇原创 | 个性化内容策略+每月15篇原创 |
| 技术SEO | 基本技术检查 | 全面技术优化+移动适配 | 深度技术重构+性能优化 |
| 外链建设 | 每月5-10条 | 每月20-30条高质量外链 | 每月50+条多渠道外链 |
| 数据报告 | 月度基础报告 | 双周详细报告+分析 | 每周深度报告+策略调整 |
| 效果保障 | 3-6个月见效 | 2-4个月见效 | 1-3个月快速见效 |
我们的SEO优化服务遵循科学严谨的流程,确保每一步都基于数据分析和行业最佳实践:
全面检测网站技术问题、内容质量、竞争对手情况,制定个性化优化方案。
基于用户搜索意图和商业目标,制定全面的关键词矩阵和布局策略。
解决网站技术问题,优化网站结构,提升页面速度和移动端体验。
创作高质量原创内容,优化现有页面,建立内容更新机制。
获取高质量外部链接,建立品牌在线影响力,提升网站权威度。
持续监控排名、流量和转化数据,根据效果调整优化策略。
基于我们服务的客户数据统计,平均优化效果如下:
我们坚信,真正的SEO优化不仅仅是追求排名,而是通过提供优质内容、优化用户体验、建立网站权威,最终实现可持续的业务增长。我们的目标是与客户建立长期合作关系,共同成长。
Demand feedback