agent-skills性能检查清单:优化AI代理开发的应用性能
agent-skills是一个为AI编码代理提供生产级工程技能的项目,其性能优化对于提升AI代理开发效率至关重要。本文将详细介绍agent-skills性能检查清单,帮助开发者全面优化AI代理应用性能。## 核心Web指标目标| Metric | Good | Needs Work | Poor ||--------|------|------------|------|| LCP (
·
agent-skills性能检查清单:优化AI代理开发的应用性能
agent-skills是一个为AI编码代理提供生产级工程技能的项目,其性能优化对于提升AI代理开发效率至关重要。本文将详细介绍agent-skills性能检查清单,帮助开发者全面优化AI代理应用性能。
核心Web指标目标
| Metric | Good | Needs Work | Poor |
|---|---|---|---|
| LCP (Largest Contentful Paint) | ≤ 2.5s | ≤ 4.0s | > 4.0s |
| INP (Interaction to Next Paint) | ≤ 200ms | ≤ 500ms | > 500ms |
| CLS (Cumulative Layout Shift) | ≤ 0.1 | ≤ 0.25 | > 0.25 |
这些核心Web指标是衡量应用性能的关键标准,开发者应以此为目标进行性能优化。
TTFB诊断方法
当TTFB(首字节时间)缓慢(> 800ms)时,可在DevTools网络瀑布图中检查以下每个组件:
- DNS解析缓慢→为已知源添加
<link rel="dns-prefetch">或<link rel="preconnect"> - TCP/TLS握手缓慢→启用HTTP/2,考虑边缘部署,验证keep-alive
- 服务器处理缓慢→分析后端,检查慢查询,添加缓存
前端性能检查清单
图片优化
- 使用现代图片格式(WebP、AVIF)
- 响应式图片大小(
srcset和sizes) - 图片和
<source>元素有明确的width和height(防止艺术方向中的CLS) - 折叠下方图片使用
loading="lazy"和decoding="async" - Hero/LCP图片使用
fetchpriority="high"且不延迟加载
JavaScript优化
- 初始加载的捆绑包大小控制在200KB(gzip压缩后)
- 对路由和重量级功能使用动态
import()进行代码分割 - 启用Tree shaking(验证依赖是否提供ESM并标记
sideEffects: false) -
<head>中无阻塞JavaScript(使用defer或async) - 重型计算卸载到Web Workers(如适用)
- 在使用相同props重新渲染的昂贵组件上使用
React.memo() - 仅在分析显示有好处的地方使用
useMemo()/useCallback() - 将长任务(> 50ms)分解以保持主线程可用——这是INP的主要杠杆
- 在长时间运行的循环中使用
yieldToMain模式,以便在块之间运行输入事件 - 使用现代调度API:
scheduler.yield()(首选)、带优先级的scheduler.postTask()、isInputPending()仅在需要时让步 - 使用
requestIdleCallback处理可延迟、非紧急的工作(分析刷新、预取、预热) - 将非关键工作从事件处理程序中延迟(例如分析、日志记录),以免延迟交互响应
- 使用
async/defer加载第三方脚本,审核其大小,当内容较重时使用外观模式(聊天小部件、嵌入)
CSS优化
- 内联或预加载关键CSS
- 非关键样式无渲染阻塞CSS
- 生产环境中无CSS-in-JS运行时成本(使用提取)
字体优化
- 限制为2-3种字体族,每种2-3种字重(每增加一种字重就是另一个请求)
- 仅使用WOFF2格式(最小,普遍支持——跳过WOFF/TTF/EOT)
- 可能时自托管(第三方字体CDN增加DNS + TCP + TLS往返)
- LCP关键字体预加载:
<link rel="preload" as="font" type="font/woff2" crossorigin> - 使用
font-display: swap(或optional用于非关键)避免FOIT阻塞渲染 - 通过
unicode-range进行子集化,仅提供每个页面需要的字形 - 需要多种字重/样式时考虑使用可变字体(一个文件替代多个文件)
- 使用
size-adjust、ascent-override、descent-override调整后备字体指标,减少字体交换时的CLS - 在使用任何自定义字体之前考虑系统字体栈
网络优化
- 静态资源使用长
max-age+ 内容哈希缓存 - 在适当的地方缓存API响应(
Cache-Control) - 启用HTTP/2或HTTP/3
- 为已知源预连接资源(
<link rel="preconnect">) - 在关键非图片资源上使用
fetchpriority(例如关键<link rel="preload">、折叠上方的<script>)——不仅仅在<img>上 - 无不必要的重定向
渲染优化
- 无布局抖动(强制同步布局)
- 动画使用
transform和opacity(GPU加速) - 长列表使用虚拟化(如
react-window) - 无不必要的整页重渲染
- 屏幕外部分使用
content-visibility: auto和contain-intrinsic-size跳过不可见区域的布局/绘制 - 无
unload事件处理程序和HTML响应上无Cache-Control: no-store——保留后退/前进缓存(bfcache)资格
后端性能检查清单
数据库优化
- 无N+1查询模式(使用预加载/连接)
- 查询有适当的索引
- 列表端点分页(从不
SELECT * FROM table) - 配置连接池
- 启用慢查询日志
API优化
- 响应时间< 200ms(p95)
- 请求处理程序中无同步重型计算
- 批量操作代替单个调用循环
- 响应压缩(gzip/brotli)
- 适当的缓存(内存中、Redis、CDN)
基础设施优化
- CDN用于静态资产
- 服务器位于用户附近(或边缘部署)
- 配置水平扩展(如需要)
- 负载均衡器的健康检查端点
性能测量命令
INP现场数据和DevTools工作流程
- 首先是现场数据——在优化之前,检查CrUX Vis或您的RUM工具获取真实用户的INP
- 识别缓慢交互——打开DevTools→性能面板→交互时记录;查找由点击/按键触发的长任务
- 在中端Android上测试——INP问题通常只在较慢的硬件上显现;使用真实设备或DevTools CPU节流(4×–6×减速)
# Lighthouse CLI
npx lighthouse https://localhost:3000 --output json --output-path ./report.json
# Bundle analysis
npx webpack-bundle-analyzer stats.json
# or for Vite:
npx vite-bundle-visualizer
# Check bundle size
npx bundlesize
# Web Vitals in code
import { onLCP, onINP, onCLS } from 'web-vitals';
onLCP(console.log);
onINP(console.log);
onCLS(console.log);
# INP with interaction-level detail (attribution build)
import { onINP } from 'web-vitals/attribution';
onINP(({ value, attribution }) => {
const { interactionTarget, inputDelay, processingDuration, presentationDelay } = attribution;
console.log({ value, interactionTarget, inputDelay, processingDuration, presentationDelay });
});
常见反模式
| Anti-Pattern | Impact | Fix |
|---|---|---|
| N+1 queries | Linear DB load growth | Use joins, includes, or batch loading |
| Unbounded queries | Memory exhaustion, timeouts | Always paginate, add LIMIT |
| Missing indexes | Slow reads as data grows | Add indexes for filtered/sorted columns |
| Layout thrashing | Jank, dropped frames | Batch DOM reads, then batch writes |
| Unoptimized images | Slow LCP, wasted bandwidth | Use WebP, responsive sizes, lazy load |
| Large bundles | Slow Time to Interactive | Code split, tree shake, audit deps |
| Blocking main thread | Poor INP, unresponsive UI | Chunk long tasks with scheduler.yield() / yieldToMain, offload to Web Workers |
| Memory leaks | Growing memory, eventual crash | Clean up listeners, intervals, refs |
通过遵循这份agent-skills性能检查清单,开发者可以全面优化AI代理应用性能,提升用户体验和开发效率。更多性能优化技巧和详细内容,请参考skills/performance-optimization/SKILL.md。
要开始使用agent-skills项目,请克隆仓库:git clone https://gitcode.com/gh_mirrors/agentskill/agent-skills
更多推荐




所有评论(0)