乐于分享
好东西不私藏

给 AI 编程助手装上审美品味

给 AI 编程助手装上审美品味

Linear 的设计工程师 Emil Kowalski 最近开源了一套 AI Skills,专门解决一个让前端开发者头疼的问题:AI 写出来的 UI 代码功能没问题,但就是「差点意思」。

这条推文在 24 小时内拿到 1000+ 赞和 1000+ 收藏,说明踩这个坑的人不在少数。

问题出在哪

用 AI 写前端代码,最常见的体验是:它能跑,但看着别扭。

下拉菜单用了 ease-in 缓动,打开的时候感觉拖泥带水。弹窗从 scale(0) 开始放大,像凭空蹦出来的。按钮按下去没有任何反馈,像在按一块木板。Toast 通知用 keyframes 做入场动画,快速连续触发的时候动画互相打架。

这些细节单独看都不算 bug,但叠加在一起,整个界面就透着一股「凑合」的味道。

Emil 在 README 里写得很直接:Agents don't have great taste。AI 不知道进入动画该用 ease-out 而不是 ease-in,不知道按钮按下需要 scale(0.97) 的反馈,不知道 Framer Motion 的 x/y 简写属性在主线程繁忙时会掉帧。

他的解法:把领域经验编码成 Skill

Emil 的思路很朴素:既然 AI 缺乏设计品味,那就把品味写成规则喂给它。

他开源的 emilkowalski/skills 仓库包含 7 个 Skill,覆盖了设计工程的各个环节:

  • emil-design-eng:核心 Skill,编码了动画决策框架、组件设计原则、性能规则
  • review-animations:按 10 条不可妥协的标准审查动画代码
  • improve-animations:审计整个代码库的动画,输出优先级排序的修复计划
  • find-animation-opportunities:在 UI 中找到真正需要动效的地方
  • animation-vocabulary:用精确的词汇描述你想要的动效
  • apple-design:Apple 的界面设计和流畅动效原则,翻译到 Web 端
  • pick-ui-library:按任务类型推荐经过验证的 UI 库

安装一行命令搞定:

npx skills@latest add emilkowalski/skills

装完之后,你的 AI 编程助手在处理 UI 相关任务时,会自动加载这些规则。

动画决策框架:四个问题定生死

整套 Skill 的核心是一个动画决策框架。写任何动画代码之前,按顺序回答四个问题:

第一个问题:这个元素需要动画吗?

按使用频率判断。键盘快捷键、命令面板这类每天触发 100 次以上的操作,永远不加动画。Raycast 的命令面板就没有开关动画,因为对高频操作来说,动画只会让人觉得慢。

每天触发几十次的 hover 效果,要么去掉要么大幅缩减。偶尔出现的弹窗、抽屉、Toast,用标准动画。第一次使用的引导页、庆祝动效,可以加点惊喜感。

第二个问题:动画的目的是什么?

每个动画必须能回答「为什么动」。合法的目的包括:空间一致性(Toast 从同一个方向进出)、状态指示(按钮形变表示状态切换)、反馈(按下时缩小确认用户操作)、避免突兀变化(元素突然出现会让人吓一跳)。

如果答案是「看着酷」,而且用户会频繁看到,那就别动。

第三个问题:用什么缓动曲线?

进入/退出的元素用 ease-out,感觉灵敏。在屏幕上移动/变形的元素用 ease-in-out,加速减速自然。hover 和颜色变化用 ease。匀速运动(跑马灯、进度条)用 linear

关键一点:永远别用 ease-in 做 UI 动画。它开头慢,让界面感觉迟钝。同样 300ms 的下拉菜单,ease-outease-in 感觉快得多,因为用户第一眼就看到元素在动。

Emil 推荐用自定义贝塞尔曲线,CSS 内置的曲线太弱了:

/* 强 ease-out,适合 UI 交互 */
--ease-outcubic-bezier(0.2310.321);

/* 强 ease-in-out,适合屏幕内移动 */
--ease-in-outcubic-bezier(0.7700.1751);

/* iOS 风格的抽屉曲线 */
--ease-drawercubic-bezier(0.320.7201);

第四个问题:动画持续多久?

元素类型推荐时长
按钮按压反馈100-160ms
工具提示、小弹窗125-200ms
下拉菜单、选择器150-250ms
模态框、抽屉200-500ms

核心原则:UI 动画控制在 300ms 以内。180ms 的下拉菜单比 400ms 的感觉灵敏得多。转得快一点的 loading spinner 让应用感觉加载更快,即使实际加载时间一模一样。

十条不可妥协的审查标准

review-animations 这个 Skill 定义了一套严格的动画审查标准。Emil 的态度是:默认打回,通过靠争取。

这十条标准覆盖了从合理性到性能的各个维度:

  1. 每个动画必须有理由——空间一致性、状态指示、反馈、解释、避免突兀
  2. 频率匹配——高频操作不加动画,低频操作可以加惊喜
  3. 缓动方向正确——进入/退出用 ease-outease-in 做 UI 直接打回
  4. UI 动画 300ms 以内——超了必须有理由
  5. 变换原点正确——弹窗从触发点展开,不从中心(模态框除外)
  6. 可中断——快速触发的元素用 CSS transition 或弹簧动画,不用 keyframes
  7. 只动 transform 和 opacity——动 width/height/margin 直接打回
  8. 无障碍——prefers-reduced-motion 必须处理,hover 动画必须加媒体查询
  9. 非对称时序——按下慢(用户在做决定),释放快(系统在响应)
  10. 整体协调——动效风格和组件个性匹配

性能陷阱:Framer Motion 的硬件加速坑

这套 Skill 里有一个很多人不知道的 Framer Motion 性能陷阱。

Framer Motion 的简写属性(xyscale)不走 GPU 加速,它们用 requestAnimationFrame 在主线程上跑。当浏览器同时加载内容、执行脚本、绘制页面时,这些动画会掉帧。

// ❌ 不走 GPU 加速,主线程繁忙时掉帧
<motion.div animate={{ x: 100 }} />

// ✅ 走 GPU 加速,主线程繁忙也流畅
<motion.div animate={{ transform: "translateX(100px)" }} />

Emil 提到他在 Vercel 做 dashboard 标签页动画时遇到过这个问题。用 Shared Layout Animations 做的切换在页面加载时掉帧,换成 CSS 动画(跑在合成线程上)就解决了。

CSS 动画天然跑在主线程之外。浏览器忙着加载新页面时,CSS 动画依然流畅,Framer Motion 动画会卡。预设动画用 CSS,动态可中断的动画用 JS,这是性能最优的搭配。

pick-ui-library:别让 AI 乱选库

pick-ui-library 解决的是另一个常见问题:AI 不知道用什么库,要么手写一个 Toast 组件,要么装一个没人维护的包。

这个 Skill 按任务类型给出明确推荐,全部是 Emil 自己用过的、信任的库:

任务推荐库
无样式、可访问的 UI 组件base-ui
命令菜单(⌘K)cmdk
Toast / 通知Sonner
验证码输入input-otp
通用动画(弹簧、布局、进出场)motion (Framer Motion)
数字动画(计数器、价格)NumberFlow
实时/流式图表Liveline
通用图表recharts
拖拽dnd kit
虚拟列表Virtuoso
状态管理zustand
条件 classNameclsx
Tailwind 变体样式cva
主题切换next-themes

Skill 的设计原则是:识别任务,不是识别库名。用户说「我需要一个下拉框」,这是一个 UI 原语任务,应该推荐 base-ui,即使用户提到了别的库。先查 package.json 看项目已经用了什么,如果已经在用列表里的库,继续用它。如果用的是竞品,标记推荐但别擅自换依赖。

几个容易忽略的细节

这套 Skill 里有几个细节值得单独拿出来说。

按钮必须有按压反馈。transform: scale(0.97):active 状态。这让 UI 感觉在响应用户。缩放要微妙,0.95-0.98 之间。

永远别从 scale(0) 开始动画。 现实世界中没有东西会从零突然变大。从 scale(0.95)opacity: 0 开始,感觉自然得多。

弹窗的变换原点要感知触发位置。 下拉菜单应该从触发按钮的位置展开,不是从中心。Base UI 提供了 var(--transform-origin) 变量,直接用就行。模态框是例外,它从中心展开。

Tooltip 的延迟策略。 第一个 Tooltip 有延迟(防止误触),但一旦有一个 Tooltip 打开了,后续的应该立即显示、没有动画。这让人感觉整个工具栏都更快。

用 blur 遮盖不完美的过渡。 当两个状态的交叉淡入淡出感觉不对时,加 filter: blur(2px)。模糊把两个状态融合在一起,欺骗眼睛感知为一次平滑的变换。

对国内开发者的启示

Emil 的做法给国内 AI 辅助开发提了一个醒:AI 写代码的能力在快速提升,但「品味」这件事仍然需要人类专家来定义。

国内的 AI 编程助手(如 Cursor、Copilot 在国内的使用场景)同样面临这个问题。代码能跑,但 UI 细节粗糙。解决思路是一样的:把团队的设计规范、动效标准、组件选型偏好编码成 Skill 或 System Prompt,让 AI 在生成代码时自动遵守。

具体到实操,你可以做三件事:

  1. 整理一份团队 UI 规范文档,把缓动曲线、动画时长、组件选型写成明确规则
  2. 把这些规则喂给 AI,不管是通过 Skill 文件、System Prompt 还是自定义指令
  3. 建立审查清单,像 Emil 的十条标准一样,每次 AI 生成的 UI 代码都过一遍

领域专家知识 + AI 执行能力,这个组合比单纯依赖 AI 的通用能力有效得多。Emil 自己也说了:AI 不会取代领域专业知识,它会放大你能从中获得的东西。

资源链接

  • emilkowalski/skills GitHub 仓库[1] — 完整源码和安装说明
  • animations.dev[2] — Emil 的动画课程,更深入的讲解
  • Agents with Taste[3] — Emil 关于 AI 品味的文章
  • easing.dev[4] — 贝塞尔曲线可视化工具
  • base-ui[5] — 无样式可访问 UI 组件库
  • Sonner[6] — Toast 通知库,npm 周下载量 1300 万+

引用链接

[1] emilkowalski/skills GitHub 仓库: https://github.com/emilkowalski/skills

[2] animations.dev: https://animations.dev/

[3] Agents with Taste: https://emilkowal.ski/ui/agents-with-taste

[4] easing.dev: https://easing.dev/

[5] base-ui: https://base-ui.com

[6] Sonner: https://sonner.emilkowal.ski

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-22 22:00:30 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/871075.html
  2. 运行时间 : 0.221662s [ 吞吐率:4.51req/s ] 内存消耗:4,807.50kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=37ea74077a712c64d386c69f08bd2877
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 3.94 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.30 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000440s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000848s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.010287s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000325s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000581s ]
  6. SELECT * FROM `set` [ RunTime:0.000254s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000586s ]
  8. SELECT * FROM `article` WHERE `id` = 871075 LIMIT 1 [ RunTime:0.009582s ]
  9. UPDATE `article` SET `lasttime` = 1784728830 WHERE `id` = 871075 [ RunTime:0.067607s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000358s ]
  11. SELECT * FROM `article` WHERE `id` < 871075 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000635s ]
  12. SELECT * FROM `article` WHERE `id` > 871075 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001870s ]
  13. SELECT * FROM `article` WHERE `id` < 871075 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001551s ]
  14. SELECT * FROM `article` WHERE `id` < 871075 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.048322s ]
  15. SELECT * FROM `article` WHERE `id` < 871075 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001303s ]
0.223843s