乐于分享
好东西不私藏

阿里内部跑了两年的 AI 代码审查工具开源了:终于不用再把Review 全押给 Prompt

阿里内部跑了两年的 AI 代码审查工具开源了:终于不用再把Review 全押给 Prompt

点击上方 程序员成长指北,关注公众号

回复1,加入AI Coding 群

AI 代码工具把“写出来”这件事变快以后,很多团队很快会撞上另一个问题:PR 的数量和改动量都涨了,Review 却没有同样扩容。

让 Claude Code、Codex 或 Cursor 帮忙看一遍改动,当然有用。但只要 diff 稍微大一点,大家大概率都遇到过几个场景:它漏看了几个文件;它指出的问题很像那么回事,行号却落在注释上;同一套规则今天执行得不错,换一次上下文又像没读过一样。

这不是模型“不够聪明”这么简单。代码评审里有一部分事,本来就不应该依赖模型临场发挥。

最近我仔细看了阿里开源的 OpenCodeReview(https://github.com/alibaba/open-code-review)(命令行是 ocr)。它最值得借鉴的地方,不是“又有一个 AI Review 工具”,而是把评审拆成两层:让程序保证流程,让 Agent 做理解和判断。 这套分工对任何正在做 AI Coding 工作流的团队都有参考价值。

本文适合:已经用 AI 写代码、希望把本地检查或 PR 评审做得更稳定的开发者和团队。它不是让 AI 替你签字合并,而是给人工 reviewer 一份更干净、可复核的第一轮意见。

OpenCodeReview 官方项目概览图

为什么写这篇文章

很多开发者都知道,给 Agent 一段 git diff 再说一句“帮我 review”,通常能找到一些问题。小改动时,这样做的性价比不错。

但当它变成团队里的固定流程,问题就换了:不是这次能不能找到一个 bug,而是每次到底审了什么、没审什么、为什么这样判断、失败了该不该阻塞。前面这些问题如果没有答案,评审结果就很难进入 CI,也很难建立信任。

OpenCodeReview 官方给出的 benchmark 也在说明这一点:同一底层模型下,它用真实 PR 的基准测试比较通用 Agent,在 Precision 和 F1 上更高、Token 消耗更低;代价是 Recall 更低。这个取舍很诚实——它选择少报一点,换取让人工少花时间确认误报。基准覆盖 50 个开源仓库、200 个真实 PR、10 种语言,并由 80 多位工程师交叉标注了 1,505 个缺陷。具体数字仍要用自己的仓库复测,但方向是对的:评审不是只追求“能多找多少”,还要控制“人需要白看多少”。

本文你能学到什么

  • 为什么一份 Review Skill 或 Prompt 很难单独承担团队级评审;
  • OpenCodeReview 如何把确定性流程和 Agent 判断拆开;
  • 怎样先在本地验证,再接进 PR,而不是一上来就制造更多评论噪声;
  • 在 Claude Code / Codex 直接评审和独立评审引擎之间,怎么选。
OpenCodeReview 的工程化评审流水线

先看结论:Skill 没有过时,但它不该独自背流程

这里很容易走到两个极端。

第一种是觉得有了 OCR,就不需要 Claude Code 的 review skill 了;第二种是觉得“我写一份更长的规则”就能覆盖一切。两种都不太对。

Skill 很适合作为入口:告诉 Agent 团队最在意的风险、检查顺序、输出格式,甚至把它接到日常命令里。它的优点是轻、灵活,适合一个人临时检查一次改动。

但下面几件事,不能只靠自然语言约束:

评审里的问题
只靠 Prompt 的风险
更适合的做法
哪些文件必须审
Agent 可能挑几个文件就结束
从 Git diff 计算范围并输出 preview
哪条规则作用于哪个文件
同一句规则被模型理解成不同重点
用路径匹配和规则文件决定命中项
一次评审何时算结束
模型没调用完成工具,流程却静默结束
由程序设置轮数、有效调用和失败条件
评论落在哪一行
行号漂移,人工要重新找位置
用 diff 片段匹配,失败后再重定位
多文件改动怎么跑
上下文越塞越大,漏项难追踪
拆分任务并明确并发和隔离边界

一句话说,Skill 是给 Agent 的工作说明;评审引擎是给流程的验收标准。 团队需要两者,不是二选一。

OpenCodeReview 是怎么把流程“卡住”的

从 ocr review 开始到评论输出,OCR 的架构并不神秘,但每一步都有明确责任边界。

1. 先算清楚 diff,再让模型开始说话

它支持工作区、单个 commit 和分支区间三种来源:

# 当前工作区:暂存、未暂存、未跟踪的改动 ocr review
# 评审从 main 分叉到 feature 分支的改动 ocr review --from main --to feature-branch
# 只看一个提交 ocr review --commit abc123

真正值得养成习惯的是这条:

ocr review --preview

它不会调用模型,只展示哪些文件会被保留、哪些被过滤。很多评审“没发现问题”,其实不是模型判断错了,而是关键文件压根没进入题面。把 preview 当成评审前的单元测试,尤其适合刚接入项目规则时。

2. 过滤和规则匹配,由代码而不是模型决定

OCR 会过滤二进制文件、用户排除路径、不支持的后缀、默认测试文件路径等;项目还可以用 .opencodereview/rule.json 配置排除项和按路径生效的规则。

比如,下面这类规则比“帮我注意安全”更容易落地:

{  "exclude": ["**/generated/**", "**/*.lock"],  "rules": [    {      "path": "**/*Controller.java",      "rule": "检查鉴权、参数校验、租户隔离和错误码兼容性;新增查询必须给出租户条件证据",      "merge_system_rule": true    },    {      "path": "**/*.java",      "rule": "新增查询必须确认租户隔离;缺少租户条件时给出调用链证据",      "merge_system_rule": true    }  ]}

这里有个很实用的细节:同一层规则只取第一个匹配项。因此更具体的 Controller 规则应该放在通用 Java 规则前面。写完别靠猜,直接用 ocr rules check <文件路径> 看它到底匹配了哪条。

规则也不要变成第二份 ESLint。格式、import 顺序和可自动修复的 lint 项交给静态检查;OCR 的规则应该优先写“这个项目最贵的错误”,例如权限越权、租户隔离、金额精度、幂等性、兼容性。

3. Agent 只负责它擅长的动态部分

文件进入队列后,每个文件会在独立的子任务里评审。小 diff 直接进入主循环;变更行数达到阈值时,先让模型做一份检查计划,然后再读取完整文件、搜索代码库、查看其他变更文件。

这正是 Agent 该发挥的地方。它可以判断“只看 diff 不够,我还要找谁调用了这个函数”“这个改动要不要读配置和测试”;但它不该自行决定“我今天只看这三个文件就算完成”。

OCR 对主循环还设了工具调用上限、连续无有效结果的停止条件,以及上下文压缩和 token 预算守卫。你不必记住这些内部参数,记住一个工程原则就够了:模型可以探索,流程不能失控。

4. 评论先定位,再过滤,最后输出

很多 AI Review 工具最影响体验的,往往不是有没有找到问题,而是评论贴不到正确的行。

OCR 的做法是让模型在评论中给出 existing_code,再用程序把这段代码和 diff 做匹配,解析到实际的起止行。如果匹配失败,才触发一次重定位;评审结束后还会让过滤阶段对照当前 diff,删除能够证明为误报的评论。

这不代表它不会误报,也不代表行号永远正确。它只是把“定位”从模型顺带完成的一步,升级成单独可验证、可回退的组件。对 PR 评论来说,这个区别很大:少一次人工找代码,意见才更有机会被真正处理。

用起来之前,先做一次最小验证

官方前置条件是 Git 2.41+、Node.js 18+。本地先固定一个版本跑通,不要在第一次尝试时就把它挂到所有 PR 上。

# 安装并确认版本npm install -g @alibaba-group/open-code-reviewocr version# 默认模式下配置模型;委托模式不需要 OCR 自己的 API Keyocr config providerocr config modelocr llm test

进入一个有真实改动的仓库,我建议按下面顺序走:

  1. ocr review --preview
    :范围是否正确?有没有把 generated、lock 文件和无关测试混进来?
  2. 先只写 3~5 条和正确性直接相关的项目规则,再执行 ocr rules check 验证命中。
  3. 给一次业务背景。比如:ocr review --background "本次改动修复支付回调幂等性,不能改变旧接口返回码"
  4. 人工读一轮输出,记录“真正有用”“无效”“漏掉”的问题类型。

第四步看起来最朴素,却决定了它能不能进入团队流程。别用“模型看起来很聪明”作为验收标准;挑 10~20 个历史 PR,统计哪些评论真被采纳、哪些问题总是漏掉、每次等待和 token 大致是多少。这样再调规则、模型和并发,才有依据。

Claude Code、Codex 和 OCR,到底怎么配合

如果你已经在用 Coding Agent,不需要切换阵营。OCR 有 Claude Code、Codex、Cursor 等集成,也提供委托模式:OCR 做文件选择和规则解析,宿主 Agent 用自己的模型来完成评审。

可以按下面这个简单规则选:

场景
推荐默认动作
原因
个人改了几十行,想快速找明显问题
直接让 Claude Code / Codex review
上下文少,交互更快
改动跨多个目录,担心漏文件
先跑 ocr review --preview,再评审
先校验范围,减少“看起来审了”的错觉
团队有固定的业务风险
用 rule.json 把规则沉淀下来
不靠每个人反复复述同一段要求
每个 PR 都要跑第一轮检查
把 OCR 放进 CI,人工负责最终判断
输出、失败和审查范围可追踪
不能把代码发到公共服务
配置可控端点,先核对组织合规要求
OCR 在本地运行,但模型端点仍决定数据去向

最后一行尤其要注意。“OCR 本地运行”不等于“代码天然不出内网”:它会把内容发送给你配置的模型端点。私有部署、企业网关和审计策略是否满足要求,仍要由你们自己确认。

接入 CI 前,有一个安全边界不能跳过

把评审意见自动贴到 PR 很诱人,但 CI 里同时存在两个高风险输入:来自 PR 的代码,以及拥有模型凭据、评论权限的环境。

因此建议按官方 CI 文档的原则做两件事:模型 Token 只放 Secret;使用带 Secret 的 job 时,不执行 PR 提交进来的脚本或测试。先把 workflow 和规则合进默认分支,再新建一个测试 PR,检查 Actions 日志、汇总评论、行内评论和失败 Artifact 是否符合预期。

这一步不是“部署细节”。如果评审机器人为了看一段不可信代码而把 Secret 暴露出去,工具越自动化,事故半径反而越大。

总结:别让模型承担它不擅长的确定性

OpenCodeReview 不会替代人工 Review,也不可能消灭误报和漏报。它真正提供的是一条更清楚的边界:模型负责理解改动、追上下文、提出怀疑;程序负责确保审查范围、规则匹配、停止条件和评论落点都有迹可循。

如果你现在只是偶尔让 Agent 看一次改动,先把任务说具体就够了;如果同一套检查要在多人、多个 Agent 和 CI 中重复发生,就值得把流程从 Prompt 里拿出来。代码生产越来越快之后,Review 的升级不是让模型说得更多,而是让每一条意见更容易被相信、被定位、被处理。

你可以立刻执行的检查清单

  • [ ] 选一个有历史 PR 的小仓库,而不是生产主仓库,安装并运行 ocr review --preview
  • [ ] 写下团队最贵的 3~5 类错误,放进 .opencodereview/rule.json,并用 ocr rules check 验证匹配顺序。
  • [ ] 挑 10~20 个历史 PR,比对采纳率、误报类型、漏报类型、耗时和 token,而不只看“找到了几个问题”。
  • [ ] 明确模型端点、代码出境和 Secret 使用的边界;不要把带 Secret 的 CI job 当作不可信 PR 的执行器。
  • [ ] 当评审结果稳定后,再考虑用 CI 自动留下第一轮意见,人工 reviewer 保留合并责任。
Codex 系列文章推荐欢迎学习关注

Codex 小白入门:从安装到插件、MCP、Skills,一篇把配置讲明白

Codex 不得不装的 12 个插件,都在这了

Codex 官方新增这个插件,终于补上了 UI 短板

DeepSeek、Kimi、Qwen、GLM 怎么接入 Codex?这篇一次讲清楚

别再把 Harness 和 Loop 吹玄了:研发工程师真正该补的是这层能力

我把 Codex 提效命令重新捋了一遍,这篇够全了

GPT-5.6 的 Sol、Terra、Luna 怎么选,怎么用?一篇文章讲透

让 Codex 自己查账:一个省 token 的小技巧

改一行代码后,别再让 Agent 重读整个仓库!

别把聊天记录甩给下一个 Agent:高手都在写 handoff

AI 社群

我组建了一个氛围特别好的 AI 社群,里面有很多 AI Coding小伙伴,如果你对AI 学习感兴趣的话(后续有计划也可以),我们可以一起进AI相关的交流、学习、共建。下方加 考拉 好友回复「AI」即可。

 “分享、点赞在看” 支持一波👍

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-13 19:06:46 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/929240.html
  2. 运行时间 : 0.205459s [ 吞吐率:4.87req/s ] 内存消耗:4,621.92kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=4ce8ebda5488163428942ae8f7dff5dd
  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 ( 4.22 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.11 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.000944s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001844s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000702s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000678s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001364s ]
  6. SELECT * FROM `set` [ RunTime:0.000556s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001498s ]
  8. SELECT * FROM `article` WHERE `id` = 929240 LIMIT 1 [ RunTime:0.001153s ]
  9. UPDATE `article` SET `lasttime` = 1786619206 WHERE `id` = 929240 [ RunTime:0.002662s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000701s ]
  11. SELECT * FROM `article` WHERE `id` < 929240 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001123s ]
  12. SELECT * FROM `article` WHERE `id` > 929240 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001056s ]
  13. SELECT * FROM `article` WHERE `id` < 929240 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001651s ]
  14. SELECT * FROM `article` WHERE `id` < 929240 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001988s ]
  15. SELECT * FROM `article` WHERE `id` < 929240 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001608s ]
0.208733s