一、Skill 定位

loop-polish 是 TRAE IDE(对标 Cursor / Claude Code 的 AI IDE)的一个 Skill,本质是一份结构化 prompt(SKILL.md),由 TRAE 的 Agent 引擎执行。

它的核心功能用一句话概括:

自动启动你的项目 → 全量跑前后端联调 → 5 个维度打分 → 自动修复问题 → 循环直到达标 → 生成质量报告。

官方描述:Not perfect, don’t ship.(不完美,不上线。)

GitHub: https://github.com/lqclf/loop-polish-skills


二、它解决什么问题

针对开发流程中三类高频痛点:

2.1 上线前的"差不多得了"问题

项目自测时看着没问题,上了联调就翻车:分页参数类型不对、必填校验漏写、删除按钮接错事件、软删除字段写错位置……

人工联调依赖经验和耐心,疏漏是常态。loop-polish 把这套"必查清单"程序化。

2.2 重构后的回归盲区

改了 20 个文件,不知道会不会牵连别的模块。靠人肉测成本高、覆盖不全。loop-polish 通过 git diff 自动圈定改动影响范围,只重测受影响的 case。

2.3 接手老代码的风险

新接手的项目不知道哪里有坑,扫一遍是必要的。loop-polish 跑一遍能列出所有接口的可达性、所有页面的可用性。


三、核心能力清单

loop-polish 的能力矩阵,按执行阶段划分:

3.1 项目识别(自动)

不依赖用户输入,能从文件存在性自动识别项目类型:

识别文件 项目类型
pom.xml / build.gradle Java(Maven / Gradle)
package.json + express/koa/nest Node.js
requirements.txt / pyproject.toml Python(Flask / FastAPI / Django)
go.mod Go
Cargo.toml Rust

前后端可独立识别,纯前端项目(无后端代码)自动跳过接口扫描。

3.2 接口扫描(无需人工配置)

从源码 grep 注解 / 装饰器,识别所有 HTTP endpoint:

语言 / 框架 识别模式
Java Spring @RestController 下的 @GetMapping / @PostMapping / @PutMapping / @DeleteMapping
Node Express / Koa router.get(...) / app.post(...)
Python Flask / FastAPI @app.route(...) / @router.get(...)
Go Gin / Echo r.GET(...) / r.POST(...)

对每个接口反向解析请求体 DTO,自动提取字段名和类型,无需手写接口文档。

3.3 接口验证(6 类用例)

每个接口自动跑以下 6 种测试:

类型 验证目标 预期状态码
正常值 合法参数完整请求 200 / 201
边界值 空串、0、负数、超长字符串 200 或合理错误
必填缺失 去掉必填字段 400
无 Token 访问受保护接口 401
越权 普通用户 Token 访问管理接口 403
异常数据 SQL 注入、特殊字符、恶意 payload 400 或清洗后 200

每个接口最多 2 次重试,避免网络抖动造成误判。

3.4 前端页面验证(基于 Playwright)

通过 Skill 工具 playwright-master 驱动真实浏览器,扫描每个路由并执行交互:

检查项 具体动作
加载 检查白屏、JS 报错(console.error)、首屏时间
表单 必填校验、空值、合法值、提交成功
列表 分页、搜索、删除
弹窗 / Drawer 打开、操作、关闭
导航 菜单点击、tab 切换、面包屑

失败时自动截图并采集控制台日志与失败的网络请求。

3.5 数据库状态验证(可选)

对每一个写操作(POST / PUT / DELETE),不只信 HTTP 响应,还直连数据库二次确认:

POST /api/users  body:{name:"test"}  → 201 {id:123}
   ↓
SELECT * FROM users WHERE id=123
   ↓
断言:name == "test" && created_at != null

支持 MySQL、PostgreSQL、SQLite。连接信息从 application.yml / .env / config.json 等配置文件按优先级自动获取。

安全细节:数据库密码全程不写入报告或日志,自动脱敏为 [REDACTED]

3.6 五维评分体系

每个测试点都按 5 个维度独立打分:

维度 权重 衡量目标
Completeness 完整性 0.40 接口能调通、页面能加载
Correctness 正确性 0.25 返回数据符合预期
UX 用户体验 0.15 交互流畅、错误提示友好
Error Handling 错误处理 0.10 边界 / 权限 / 异常输入正确拒绝
Performance 性能 0.10 API < 2s、页面 < 3s

加权总分 100 分制,target_score 默认 100。

3.7 自动修复(3 级策略)

按问题严重程度分层处理:

优先级 类别 例子
P1 编译 / 语法错误 缺失 import、类型不匹配、空指针
P2 逻辑 / 数据错误 错误查询条件、字段不一致
P3 UX / 性能 缺 loading、错误提示不友好、N+1 查询

三档修复策略:

策略 允许修复 单轮最大文件 单轮最大处数
conservative P1~P2 1 3
moderate P1~P2 2 5
aggressive P1~P3 跨模块 10

修复后单独跑回归用例验证。修坏自动回滚到原代码片段,标记为 unfixable。

3.8 报告生成

执行结束生成 Markdown / HTML 报告,内容包括:

  • Summary:总分、轮数、耗时、通过 / 失败 / 已修 / 剩余 计数
  • Score Trend:每轮 5 维分数趋势表
  • Fix Details:每个修复的文件路径、diff、回归结果
  • Remaining Issues:未修项 + 原因 + 建议(加单元测试 / 加日志 / 人工 review)

报告里绝不出现原始请求体、token、数据库连接字符串。

3.9 模式与作用域

两种执行模式:

模式 行为 适用
full 测 + 修 + 循环 上线前最终打磨
preflight 只扫描不修改 CI 合并门禁

四种作用域:

作用域 范围
all 前端 + 后端 + DB
backend 后端 + DB
frontend 仅前端
api 仅后端接口

四、安全设计

loop-polish 是个会改你代码的工具,安全设计是重点。

4.1 Git 隔离

所有修改在 loop-polish/round-{timestamp} 分支上做,跑完自动切回原分支。git diff main 可清晰看到所有改动。

4.2 本地修改保护

执行前若工作区有未提交代码,自动 git stash 暂存,跑完 git stash pop 还原。

4.3 端口安全

不无脑 taskkill / kill -9。会先判断占用端口的进程是否属于当前项目,不是则警告并询问用户。

4.4 敏感信息脱敏

  • Authorization / Cookie header → [REDACTED]
  • 请求 / 响应里的 password / token / secret → [REDACTED]
  • 数据库连接字符串 → 不写入报告

4.5 高危操作确认

涉及以下变更时,停下来弹 AskUserQuestion 询问:

  • 数据库 schema 变更
  • 删除代码超过 10 行
  • 鉴权 / 权限逻辑修改
  • 跨模块联动修改
  • 配置文件修改

4.6 中断可恢复

执行过程中若被 SIGINT / 异常中断,状态保存到 .loop-polish-state.json,下次跑自动从断点续跑。


五、典型适用场景

场景 推荐配置
个人项目上线前最终打磨 mode=full, strategy=conservative, target_score=100
团队 PR 合并门禁 mode=preflight, target_score=95, scope=api
重构后回归验证 mode=full, scope=all, max_rounds=3
接手陌生老项目 mode=full, strategy=moderate, timeout_minutes=60
性能专项检查 scope=api, auto_fix.strategy=aggressive

六、明确不能做的事

为避免误用,列清楚边界:

  • 不能救跑不起来的项目:前置条件是项目本身能 build、能 run
  • 不能修架构问题:只处理 P1~P3 的具体问题点
  • 不能替代单元测试:它是集成验证,不是单元测试
  • 不适合生产环境:会起本地服务、连数据库、读配置文件
  • 不是银弹:复杂业务逻辑问题需要人工 review

七、与同类工具的差异

工具 类别 loop-polish 不同点
ESLint / Checkstyle 静态分析 不跑项目、不调接口
Postman / Apifox 接口测试 需手写用例,不会自动发现
Cypress / Playwright 浏览器自动化 需写脚本,不评分不修复
SonarQube 代码质量平台 重、要部署、不会改
Claude Code / Cursor AI 编程 不主动找问题,需 prompt

loop-polish 的定位:项目上线前的最后一公里,不替代上面任何工具,而是站在它们后面做最后兜底。


八、安装与首次运行

一行命令安装:

# Mac / Linux
curl -fsSL https://raw.githubusercontent.com/lqclf/loop-polish-skills/main/install.sh | bash

# Windows PowerShell
iwr https://raw.githubusercontent.com/lqclf/loop-polish-skills/main/install.ps1 -UseBasicParsing | iex

或手动把 SKILL.md 放到项目的 .trae/skills/loop-polish/ 目录,重启 TRAE。

启动:在 TRAE 对话框输入 Run loop polish 或中文 跑一下 loop polish 即可。


九、配置示例

在项目根目录新建 .loop-polish.json

{
  "mode": "full",
  "max_rounds": 5,
  "target_score": 95,
  "scope": "all",
  "auto_fix": {
    "enabled": true,
    "strategy": "conservative",
    "max_per_round": 3
  },
  "browser": { "headless": true },
  "db_verify": true,
  "report": {
    "format": "markdown",
    "output_dir": "./polish-reports/"
  },
  "timeout_minutes": 120
}

完整配置项见 GitHub 仓库 CONFIG.md


十、适用与不适用

适合:

  • 中小型全栈项目(Java + Vue / Node + React / Go + Vue 都支持)
  • 有完整 Git 历史的项目
  • 已有 CI 但缺集成验证环节的团队
  • 个人开发者的副业项目

不适合:

  • 纯静态展示型站点(无后端、无动态逻辑)
  • 微服务架构、跨多个仓库的项目(目前只支持单仓)
  • 严格生产环境(它会写代码、连 DB)
  • 完全零基础的新项目(前置条件是项目能跑起来)

总结

loop-polish 是个工程化、自动化、可控的全栈质量打磨工具,核心价值:

  1. 省人工联调时间:机器跑得比人细、跑得比人勤
  2. 降低上线风险:上线前把所有可达性 / 正确性问题列清单
  3. 可解释:5 维评分 + 完整 diff + 修复依据
  4. 可控制:3 级策略 + 高危确认 + Git 隔离
  5. 可集成:CI 里跑 preflight 作门禁

它不是银弹,不替代单元测试、不替代 code review,但它能把你项目里"差不多得了"的那部分,机械化地揪出来。

GitHub: https://github.com/lqclf/loop-polish-skills

https://mp.weixin.qq.com/s/OYURzZLigbcuaDVx4tIk4g

Logo

AtomGit AI 社区提供模型库、数据集、Agent、Token等资源

更多推荐