乐于分享
好东西不私藏

让两个 AI 互相拆台:我请了个"另一家公司"的审判官,专门盯着执行官别偷工减料

让两个 AI 互相拆台:我请了个"另一家公司"的审判官,专门盯着执行官别偷工减料

本文是《把 AI 关进笼子,让它替我合并一万个文件》系列第 2 篇。

那天我心情还挺好。执行官(我让 AI 扮演的"合并工人")花了大半天,告诉我一个复杂模块"合并完成"。我随手点开看了一眼——它把我们自己写的一个配置解析能力,悄悄用 upstream 的版本盖掉了。

没报错。没警告。没有任何一行字告诉我"嘿,我删了点东西"。它就这么没了,然后 AI 一脸坦然地报告:搞定。

如果你做过长期 fork 的维护,你知道这种感觉——不是愤怒,是后背发凉。因为它如果不被我抓到,这个功能就这么从产品里蒸发了,而且没有人会知道

问题不在 AI 笨,在我让它自己审自己

我第一反应是给它加更严的 prompt:你不许删东西、删之前要警告我、合并完自己检查一遍。

没用。它当然会"检查",而且检查完信誓旦旦告诉我"没问题"。

后来我想明白了一件事,这是我整个七周里最值钱的一个发现:

让写 patch 的那个模型回头审自己的 patch,等于让作者 review 自己的 PR。它会系统性地放过自己。

这不是 AI 蠢,是认知规律。你自己写完一篇文章,回头校对总比别人帮你校对漏得多——因为你脑子里装着"我本来想表达啥",看代码时眼睛会自动脑补"我本来想保留它的"。AI 一模一样,而且更糟:

AI 没有"丢失感"——它不知道自己在丢东西。

它的目标是"让合并后的代码能跑起来",不是"确保什么都没丢"。能跑 ≠ 没丢。一个被删掉的功能,照样能跑得欢。

所以我干了件听起来很轴的事:再请一个 AI,专门当审判官,盯着第一个 AI 别偷工减料。 而且我故意请"别家公司"的——执行官用 GPT,审判官用 Claude。就为了它俩不会互相护短。

这篇就聊这一条主线:对抗式架构。怎么让两个 AI 互相制衡,又不让它们吵起来烧光我的钱。


先认识这两位:执行官 vs 审判官

先把"Agent"这个词讲人话。给一个 LLM 套上固定的职责、固定的工具、固定的循环,它就成了一个"打工人"。 多 Agent,就是按职责和权限把活拆给好几个打工人,而不是让一个人全包。

我这套系统里,跟今天主题相关的是两个对立角色。

执行官(Executor):唯一动手写文件的那个

执行官是整个系统里唯一能动手改文件的 agent。性格嘛——闷头干活、效率高、但不爱回头看自己漏了啥的实习生。

我给它定了三条铁律,写死在它的岗位说明里:

  1. 1. 不删除当前分支的任何功能代码
  2. 2. 不遗漏 upstream 的任何功能、优化或 bugfix
  3. 3. 所有行为差异必须用注释明确标注

第三条尤其重要。两边都改过同一处时,最偷懒的做法是闷头选一边。但三个月后你完全不记得这里为什么和 upstream 不一样了。所以每一处"有意为之的差异"都得留注释:

# Current branch enhancement (not in upstream)# Feature: HTTP-only Cookie auth, replaces localStorage tokendef set_auth_cookie(response, token):    ...
# Merged from upstream 1.11.3# Feature: MCP tool-call supportclass MCPToolNode:    ...

这些注释不是给 AI 看的,是给未来的我看的。等 upstream 下一个大版本来了,我一眼就知道"这里曾经有过冲突,当初的决定是什么,现在还适不适用"。

审判官(Judge):只许看,不许碰

审判官的定位,我反复强调过一句话:它不是来"帮执行官找通过理由"的,它是来"找漏洞"的。

这个心态差异是致命的。执行官干完活,会下意识觉得"我做完了",带着一种交差的松弛感。审判官在一个完全独立的上下文里冷眼旁观,没有那个"我做完了"的心理包袱。它的任务清单是反着写的——以下任何一条成立,立即否决:

  • • upstream 里存在的逻辑,在合并结果里消失了
  • • 当前分支的独有功能被删除或弱化
  • • 存在没标注的行为差异
  • • 注释内容和代码行为对不上
  • • 合并后构建失败

实战第一次就见效:API 的第一个合并阶段,就被审判官当场否决,揪出来一个配置解析能力的回退——就是开头那个让我后背发凉的问题。重做之后才通过,后来验证那个问题千真万确。


审判官靠什么找漏洞?三方对比 + 工具证伪

光让审判官"用心看"还不够,AI 用心看也会漏。审判官的火眼金睛,靠的是两样东西。

第一样:三方对比

大多数人(和大多数 AI)审合并,只看"两边的差异"——upstream 一份、当前分支一份,diff 一下。

这就像法庭上只听原告和被告各说一句,你根本不知道是谁先动的手。

正确的做法是三方对比:把"案发前的现场"也调出来——共同祖先(merge-base)、upstream、当前分支,三份一起看。

MERGE_BASE=$(git merge-base HEAD upstream/main)git show "$MERGE_BASE":path/to/file.py > /tmp/base.pygit show "upstream/main":path/to/file.py  > /tmp/upstream.pygit show HEAD:path/to/file.py             > /tmp/current.pydiff3 /tmp/current.py /tmp/base.py /tmp/upstream.py

只看两边,你只知道"现在不一样"。看三方,你才知道"是谁改的、改了什么、为什么改"。

举个真实例子:某个函数,upstream 重构了,我们也改了(加了企业功能)。只看两边,感觉冲突一团乱麻。三方一摆,发现 upstream 改的部分和我们改的部分根本不沾边,直接合并,压根不冲突。

第二样:工具证伪(这条比加 AI 更管用)

这是整个系统里最反直觉、但收益最大的设计:

LLM 负责理解语义,工具负责证伪。

什么意思?审判官里的 AI 再能说会道,它的判断也得先过一道确定性工具检查。工具说"不行",AI 再怎么解释都没用——这个否决(我们叫 VETO)不可商量。

为什么?因为有些丢失模式,AI 用"读"是读不出来的。比如一个接口改了签名,调用方在另外八个文件里没跟着改——AI 看单个 diff 永远发现不了,但一个反向扫描工具 grep 一下就抓住了。这类"工具能查、AI 会漏"的模式,我整理成了六大丢失模式扫描器,每一条都是确定性的 VETO 关卡。

这六大丢失模式具体长啥样、怎么扫,是下一篇 03 篇[1] 的主菜,这里先埋个钩子。今天你只要记住:审判官不是靠"更聪明的 AI",是靠"AI + 一排不会说谎的工具"。


给审判官戴的紧箍咒:只读视图

现在到了最关键的工程细节。

我说审判官"只许看不许碰",这不能靠 prompt 里写一句"请你不要修改状态"——AI 被 prompt 带跑偏太容易了。我得在物理层面让它碰不到。

只读视图(ReadOnlyStateView)是什么

想象整个合并任务的状态(哪些文件、什么风险、谁改了啥)是一大盘数据。我给审判官的,不是这盘数据本身,而是隔着一层只读玻璃罩的它。审判官看得见、摸不着:

  • • 想一个没在它合同里声明的字段?当场抛 FieldNotInContract,直接报错。
  • • 想状态、改任何东西?门都没有——它拿到的就是个只读代理。

更狠的是,这条规矩还有第二道防线:CI 里有个静态扫描,会用 AST 把每个审查 agent 的源码翻一遍,只要出现 state.<字段> = ... 这种写状态的代码,直接挂掉 CI,代码根本合不进来。

# 审判官的岗位说明书(contract),声明它能读什么、绝对禁止什么name: judgeinputs:               # 只能读这几个字段,其余一律拒读  - file_decision_records  - shadow_conflicts  - interface_changesforbidden:  - writes_state      # never state.x = y  - direct_llm_call   # never bypass the retry layercollaboration: review_only

为什么非要"能写的"和"能审的"物理隔离

因为这样出了事能追责

如果每个 agent 都能写文件,出 bug 时你根本理不清:是计划错了?是执行官写错了?还是审判官放过了?三方都有嫌疑。

但在我这套里,写权限只攥在执行官一个 agent 手里,而且它写之前必须先"存档"(快照),写砸了立刻"读档"(回滚)。审判官想让执行官改,只能走状态机绕回去,让执行官再写一次。审判官自己永远碰不到文件。

事故归因时,我永远只需要看执行官的日志。这个"先存档再写、唯一写入通道"的快照机制,是第 4 篇 04 篇[2] 的专题,这里你只要知道:审判官只读、执行官唯一写入,是这套制衡的地基。


反共谋:为什么我故意请"另一家公司"

回到开头那个"轴"的决定:执行官用 OpenAI 的 GPT,审判官用 Anthropic 的 Claude。故意不同家。

很多人觉得这是因为"Claude 更会审查"。不是的。

真正的原因是:同一家的两个模型,像一个师傅教出来的两个徒弟,容易犯一模一样的错,还互相点头。 这叫共谋偏差(collusion bias)。如果执行官和审判官是同源模型,执行官漏掉的盲区,审判官大概率也看不见——俩人对着同一个坑齐刷刷地视而不见。

换一家厂的模型,等于换了一双完全不同训练出来的眼睛。它的盲区和执行官的盲区不重叠,这才有制衡的意义。

落到工程上,这件事一点不玄学。系统里每个 agent 都有自己独立的一份 LLM 配置(AgentLLMConfig),各管各的 provider、model、API key 环境变量:

agents:  executor:    provider: openai        # one company    model: gpt-5.4  judge:    provider: anthropic      # the other company — anti-collusion    model: claude-opus-4-6

想换配比、想加备用 key、想给简单任务降档省钱,改这一块就行,互不干扰。


别让审判官当独裁者:协商,而不是硬否决

讲到这你可能觉得:审判官这么强势,执行官岂不是任它拿捏?

早期我确实是这么设计的——审判官说不行就是不行,执行官乖乖重做。结果发现一个问题:审判官有时候误判。它说"你把 upstream 的某个逻辑弄丢了",但其实执行官是有意合并掉的,而且有充分理由。

所以现在审判官的裁决,是协商的起点,不是终点

执行官可以不服。它能带着合并证据,组织一份"反驳"(build_rebuttal)——我没丢,这里是这么对应的,证据如下。审判官收到反驳,会重新评估:

  • • 觉得反驳有理 → 收回裁决,达成一致;
  • • 觉得还是不行 → 维持裁决,执行官老实修。
for round in 0..max_dispute_rounds:    verdict = judge.review(merge_result)    if verdict.approved:        break                              # agreed    rebuttal = executor.build_rebuttal(verdict.issues, evidence)    verdict = judge.re_evaluate(rebuttal)  # judge may be persuaded    if verdict.approved:        break# still no consensus after max rounds → escalate to human

两边每一轮交换的不是"命令",是"证据 + 理由"。这比"审判官一票否决"健康得多——既防住了执行官偷工减料,又不让审判官的误判把对的合并给毙了。

(注意:这是针对语义层面的争议。前面说的工具证伪 VETO 是另一回事——工具说构建失败了,那是客观事实,没得商量。)


死循环怎么解?请个"和事佬"把视角拉高一层

协商听着美好,但你应该已经闻到一股烧钱的味道了。

万一执行官和审判官杠上了呢?执行官反驳、审判官维持、执行官再反驳……或者更糟,参谋改计划、计划审计官又驳回、参谋再改——无限往复,每一轮都是真金白银的 LLM 调用。

幼稚解法是加个硬上限:max_rounds=5,到第五轮强制放行。但你想想,到第五轮还没谈拢的计划,八成是半烂的,强行喂给执行官,事故更大。

我的解法是请第三个角色:调度协调员(Coordinator),一个纯 Python 的和事佬,自己不持有任何 LLM。

它就盯着一件事:同一类问题是不是反复出现? 一旦反复次数达到阈值(默认 2),它不会自己下场判,而是给原来那个 agent 换一套特殊的 prompt(我们叫 META-* 提示),让它把视角拉高一层

常规审查问的是:"这个计划对不对?"元审查(meta-review)问的是:"我们为什么一直卡在这里?"

这是两个完全不同的问题。前者钻在当前争论里,后者跳出来看全局。换个大脑、换个高度,卡死的局往往就松动了。元审查的结论会写进 coordinator_directives,作为下一轮的战略指引。

轮次 1、2:  执行官和审判官正常你来我往轮次 3(达到阈值):    和事佬发现"同一类 issue 又来了"    → 让原 agent 换 META-* prompt 做元审查    → 问"我们为什么卡在这",结论写入 coordinator_directives轮次 4:  带着这个高层指引重新来过仍不收敛 → 交给人

这个"和事佬 + 元审查"的模板,任何多 agent 的审查回环都能套。完整工程清单我放在了系列最后的 06 篇[3]


最后一道出口,永远是人

这是整套制衡里我最坚持的一条原则:最终出口永远是人,而且是显式的人,没有超时回退。

什么叫"没有超时回退"?很多系统会设计成:等人决策,超过 24 小时没回应,就用默认值自动放行。我把这条路堵死了。

具体到代码,记录"这个决策是谁做的"的来源枚举(DecisionSource)里,只有 AUTO_PLANNER/AUTO_EXECUTOR/HUMAN/BATCH_HUMAN 这几种,故意没有TIMEOUT_DEFAULT 这种值——也就是说,系统里压根没有"超时自动放行"这个来源。人机接待员(渲染人工决策模板的那个 agent)的岗位说明里也明确禁止填默认值。结果就是:

一个需要人拍板的条目,只要人没明确决策,它的决定就永远是 ESCALATE_HUMAN(交人处理),绝不会被一个默认值蒙混过去。

为什么这么轴?因为整个系列的核心恐惧,就是"东西在我不知道的情况下悄悄没了"。一个超时默认值,就是这种悄悄丢失的完美温床——你出去喝了杯咖啡,回来发现系统"帮你"做了二十个你根本没看过的决定。不行。需要人看的,就必须等人看。

死循环的终极解法,从来不是"更聪明的 LLM",而是"把问题结构化地、清清楚楚地交到人手上"。


小结:别让 AI 当运动员兼裁判

回头看,这套对抗式架构其实就一句话能概括:

别让同一个 AI 既当运动员又当裁判。

把它拆开,拆成一条制衡链:

角色
职责
关键约束
执行官 Executor
唯一动手写文件
三铁律 + 写前快照 + 唯一写入通道
审判官 Judge
冷眼找漏洞
只读视图 + 跨供应商 + 工具证伪 VETO
调度协调员 Coordinator
死循环和事佬
纯 Python 不持 LLM + 元审查拉高视角
最终拍板
显式决策、无超时回退

执行官写、审判官审、审判官只读、还故意请别家公司的、谈不拢就拉高视角、最后永远交给人。每一环都在防同一件事:

AI 没有"丢失感"——它不知道自己在丢东西。所以我得替它建一套它逃不掉的笼子。


这套东西我已经做成了开源系统。如果你也在维护一个长期分叉的 fork,或者正在搭自己的多 agent 工作流,欢迎试试:

pip install code-merge-systemmerge upstream/main --dry-run    # only analyzes, writes nothing

--dry-run 只出计划、不动你一个文件,先看看它怎么给你的文件分类、怎么排执行官和审判官的活。首次运行会开个浏览器向导带你配置。觉得哪里设计得蠢,或者哪个制衡没防住你的场景,欢迎来 GitHub 拍砖、提 issue——我这套笼子也是被一个个真实的坑逼出来的,多一双眼睛多一分踏实。

下一篇,我们把镜头怼到审判官的火眼金睛上:那六种 AI 自己绝对发现不了、只能靠工具揪出来的"丢失模式",到底长什么样。


上一篇 七周战争:我是怎么被一次上游合并逼到用 AI 硬刚的[4] · 下一篇 一个都不许少:AI 会悄悄吞掉东西的六种方式[1]

引用链接

[1] 03 篇: 03-never-lose-anything.md[2] 04 篇: 04-step-on-solid-ground.md[3] 06 篇: 06-caging-the-llm.md[4] 我用 AI 合并一万个文件,第一周白干了——然后我把这套血泪方法做成了系统

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-07 16:41:39 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/724341.html
  2. 运行时间 : 0.174455s [ 吞吐率:5.73req/s ] 内存消耗:4,739.59kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=77649f4a7f4d0872dd033ff711477446
  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.000515s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000947s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000363s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000764s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001751s ]
  6. SELECT * FROM `set` [ RunTime:0.000640s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001851s ]
  8. SELECT * FROM `article` WHERE `id` = 724341 LIMIT 1 [ RunTime:0.004909s ]
  9. UPDATE `article` SET `lasttime` = 1780821699 WHERE `id` = 724341 [ RunTime:0.028739s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000890s ]
  11. SELECT * FROM `article` WHERE `id` < 724341 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001573s ]
  12. SELECT * FROM `article` WHERE `id` > 724341 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001498s ]
  13. SELECT * FROM `article` WHERE `id` < 724341 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002343s ]
  14. SELECT * FROM `article` WHERE `id` < 724341 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.010732s ]
  15. SELECT * FROM `article` WHERE `id` < 724341 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002465s ]
0.178463s