乐于分享
好东西不私藏

从 0 到 1:用 AI 编程助手将 RagFlow 知识库集成到企业智能体平台

从 0 到 1:用 AI 编程助手将 RagFlow 知识库集成到企业智能体平台

本文记录了一次完整的 AI 辅助开发实践——从需求提出、技术调研、架构设计到代码实现与测试验证,全程由 AI 编程助手(Qoder)协同完成。


一、背景与需求

我正在构建一个企业级智能体平台,底层对接开源 AI Agent 框架,提供会话管理、流式对话、工具调用等能力。

平台已具备完整的对话功能,但缺少一个关键能力:让 AI 助手在回答问题时能够引用企业内部知识库

我们已经部署了 RagFlow(一款开源的 RAG 引擎),里面存放了架构设计文档、技术规范等企业知识。需求很明确:

在会话对话框中,允许用户主动开启知识库开关,选择要引用的知识库,AI 在回答时自动检索相关资料作为参考依据。


二、技术调研:RagFlow API 探秘

2.1 认证方式的抉择

RagFlow 提供两种认证方式:

方式
端点
特点
账号密码登录
POST /api/v1/auth/login
密码需 RSA 加密,实现复杂
API Key
Header: Authorization: Bearer ragflow-xxx
简单稳定,官方推荐

调研过程中发现,RagFlow 的 Web 登录接口要求对密码做 RSA 公钥加密(返回 "Fail to crypt password" 错误),这在前后端分离架构中实现成本过高。最终选择 API Key 认证——在 RagFlow 管理界面「头像 → 设置 → API → Create new key」一键生成。

2.2 核心 API 验证

通过 AI 助手操控浏览器登录 RagFlow 实例,创建 API Key 后,逐一验证了关键接口:

bash

# 知识库列表GET /api/v1/datasets?page=1&page_size=100→ 返回 "架构书籍"(19 分块 / 2 文档)# 语义检索POST /api/v1/retrievalBody: { "question""微服务架构""dataset_ids": ["726bb44a..."], ... }→ 返回带相似度分数的相关文本块

两个接口均验证通过,为后续集成奠定了基础。


三、架构设计:研读 QwenPaw 源码的启示

3.1 QwenPaw 内部的 RAG 机制

在动手之前,我让 AI 助手深入研读了 QwenPaw 源码,发现它有一套成熟的 RAG 架构——双通道检索

  1. 自动检索通道
    (Auto Memory Search):中间件在每次调用大模型前拦截,无条件执行语义检索,将结果伪装成 tool_call/tool_result 注入消息
  2. 主动检索通道
    (memory_search 工具):注册为 Agent 工具,由大模型自主判断是否需要检索

QwenPaw 的 RAG 哲学可以总结为一句话:

开关即意图,每轮自动检索,相关性交给检索引擎,取舍交给大模型。

3.2 我们的集成策略

QwenPaw 内部的 RAG 对接的是自己的长期记忆系统,并非外挂知识库。但它的设计思路给了我们重要启示:

  • 用户显式打开开关 = 明确的意图表达
    ,无需再做复杂的意图识别
  • 每轮提问前前置检索
    ,将资料注入上下文
  • 检索相关性由 RagFlow 保证
    ,最终取舍由大模型完成

考虑到我们的场景是通过 QwenPaw 的公开 HTTP API(/api/console/chat)通信,无法像内部中间件那样注入 tool_call 块,因此采用提示词注入方式——将检索结果拼接为用户消息的一部分。

3.3 整体架构

plaintext

┌─────────────────────────────────────────────────────┐                    前端 (Vue 3)                                                                            设置页:配置 RagFlow 地址 + API Key                   首页:知识库开关  选择知识库  发送时前置检索      └──────────────────────┬──────────────────────────────┘                        HTTP (localhost:8000)┌──────────────────────▼──────────────────────────────┐              后端代理 (FastAPI)                                                                            /api/ragflow/config    — 保存/获取配置               /api/ragflow/test      — 测试连接                    /api/ragflow/datasets  — 获取知识库列表              /api/ragflow/retrieval — 执行语义检索              └──────────────────────┬──────────────────────────────┘                        httpx (内网)         ┌─────────────┼─────────────┐                                    ┌─────────────────┐      ┌─────────────────────┐  RagFlow 服务            QwenPaw AI 服务       知识库 + 检索           对话 + 流式响应      └─────────────────┘      └─────────────────────┘

为什么用后端代理而非前端直连 RagFlow?

  1. 避免 CORS 问题
    ——RagFlow 服务未配置跨域头
  2. 保护 API Key
    ——密钥不暴露给浏览器
  3. 与现有架构一致
    ——QwenPaw 的 Token 管理也走后端代理

四、开发过程

4.1 后端:5 个代理端点

在 FastAPI 后端新增 RagFlowConfig 数据模型和 5 个 API 端点:

classRagFlowConfig(Base):    __tablename__ ="ragflow_config"id= Column(Integer, primary_key=True)    base_url = Column(String(500), nullable=False)    api_key = Column(String(500), default="")    updated_at = Column(DateTime, default=datetime.utcnow)

端点设计:

端点
方法
功能
/api/ragflow/config
POST
保存配置(同时验证连通性)
/api/ragflow/config
GET
获取配置(API Key 脱敏)
/api/ragflow/test
POST
测试连接
/api/ragflow/datasets
GET
获取知识库列表
/api/ragflow/retrieval
POST
执行语义检索

关键设计细节:

  • 保存即验证
    POST /config 保存前会先调 RagFlow 列知识库,连通失败直接拒绝保存
  • API Key 脱敏
    GET 返回时只显示末 4 位(****dpc
  • 超时控制
    检索接口 30s 超时,列表接口 15s 超时

4.2 前端 API 层:ragflow.js

新建 ragflow.js,封装 8 个函数,其中最核心的是提示词拼接历史还原

// 将检索结果拼接为注入给大模型的提示词exportfunctionbuildRagPrompt(question, chunks, datasetNames){const refs = chunks.map((c, i)=>{const src = c.document?`(来源:${c.document})`:''return`[${i +1}]${src}\n${c.content.trim()}`}).join('\n\n')return(`【知识库参考资料】\n`+`以下为从知识库「${datasetNames}」检索到的相关资料,`+`请优先结合这些资料回答用户问题。`+`若资料与问题无关请忽略,不要编造资料中不存在的内容:\n\n`+`${refs}\n\n`+`【用户问题】\n${question}`)}// 历史回显时还原干净的用户问题exportfunctionstripRagPrompt(text){const idx = text.indexOf('【用户问题】')if(idx ===-1)return textreturn text.slice(idx +'【用户问题】'.length).trim()}

  为什么需要 stripRagPrompt 因为注入的提示词会被 QwenPaw 存入会话历史。当用户回看历史消息时,不应看到那一大段注入的参考资料,而应只看到自己原始的提问。通过标记包裹(【知识库参考资料】...【用户问题】...),前端可以在展示时精准剥离。

4.3 设置页:RagFlow 配置卡片

在设置页新增第三张配置卡片(前两张是 QwenPaw 连接和企业 Branding):

  • 服务地址
    输入框
  • API Key
     密码输入框(附创建指引提示)
  • 测试连接
    按钮 → 调后端验证
  • 保存配置
    按钮 → 保存并自动列出知识库
  • 知识库预览区
     → 显示已配置的知识库名称、分块数、文档数

4.4 首页:知识库开关与检索注入

这是用户体验的核心。在输入框上方添加了一个知识库工具条

<divclass="kb-toolbar"><!-- 开关按钮 --><buttonclass="kb-toggle":class="{ active: kbEnabled }"@click="toggleKb">    📚 知识库<spanv-if="kbEnabled">:开</span></button><!-- 知识库多选下拉 --><divv-if="kbEnabled"class="kb-dropdown-wrap"><buttonclass="kb-select-btn"@click="kbDropdownOpen = !kbDropdownOpen">      {{ kbSelectedIds.length ? `已选 ${kbSelectedIds.length} 个` : '选择知识库' }} ▾</button><divv-if="kbDropdownOpen"class="kb-dropdown"><labelv-for="ds in kbDatasets":key="ds.id"class="kb-option"><inputtype="checkbox":value="ds.id"v-model="kbSelectedIds"/><span>{{ ds.name }}</span><span>{{ ds.chunk_count }} 分块</span></label></div></div><!-- 检索状态提示 --><spanv-if="kbRetrieving"class="kb-retrieving">📚 检索知识库中...</span></div>

发送消息时的检索注入流程:

asyncsendMessage(){let sendText = displayText// 开启知识库时:先检索 RagFlow,将资料注入发给大模型的文本if(this.kbEnabled&&this.kbSelectedIds.length){this.kbRetrieving=truetry{const result =awaitretrieveRagFlow(displayText,this.kbSelectedIds,5)if(result.chunks&& result.chunks.length){        sendText =buildRagPrompt(displayText, result.chunks,this.kbSelectedNames)}}catch(e){console.warn('RagFlow 检索失败,降级为普通提问:', e)}this.kbRetrieving=false}// 将(可能注入了知识库资料的)文本发给 QwenPawawaitsendChatMessage(sendText, sessionId, callbacks, signal, attachments)}

优雅降级:如果 RagFlow 检索失败(网络超时、服务宕机等),不会阻断对话,而是静默降级为普通提问,仅在控制台输出警告。


五、测试验证

5.1 后端接口测试

5 个端点逐一通过 curl 验证:

POST /api/ragflow/config  → 200 "配置已保存,连通正常(1 个知识库)"GET  /api/ragflow/config  → 200 {"configured"true"api_key_masked""****dpc"}POST /api/ragflow/test    → 200 {"success"true"message""连接成功,共 1 个知识库"}GET  /api/ragflow/datasets → 200 {"datasets": [{"name""架构书籍""chunk_count": 19}]}POST /api/ragflow/retrieval → 200 {"total": 3, "chunks": [...]}

5.2 浏览器端到端测试

通过 AI 助手操控浏览器完成全流程实测:

  1. ✅ 设置页 RagFlow 卡片正确渲染,状态显示"已配置"
  2. ✅ 知识库预览显示"📚 架构书籍 19分块/2文档"
  3. ✅ 首页"📚 知识库"开关按钮可点击切换
  4. ✅ 下拉选择器正确列出知识库并支持多选
  5. ✅ 发送问题时显示"📚 检索知识库中..."状态
  6. ✅ 用户气泡标注"📚 引用知识库:架构书籍"
  7. ✅ 大模型基于检索资料流式作答(内容包含微服务架构定义、核心特征等)
  8. ✅ 控制台零报错,所有网络请求 HTTP 200
在ragflow看到的知识库信息:
选一个架构书籍进去,可以看到文档 :
随意选一个文档,可以看到分片信息:
对话框可以选择知识库:
在上面的内容可以看到,已成功通过 知识库获取到了内容。


六、技术亮点与思考

6.1 "简单版"的哲学

最初考虑过两种方案:

方案
描述
复杂度
A(采用)
用户手动开关 + 选择知识库,前端前置检索注入
B(放弃)
将 RagFlow 注册为 QwenPaw 的 MCP 工具,由 Agent 自主决定何时检索

选择方案 A 的理由:

  • 用户意图明确
    ——开关本身就是意图表达,无需复杂的意图识别
  • 可控性强
    ——用户知道什么时候在用知识库,什么时候没有
  • 实现轻量
    ——不需要改动 QwenPaw 侧配置
  • 可渐进升级
    ——后续如需更智能的触发,可在此基础上叠加

6.2 提示词注入 vs 工具注入

QwenPaw 内部用 tool_call/tool_result 伪装注入检索结果(模型更重视工具返回),但我们通过公开 API 只能传用户文本。提示词注入的效果如何?

实测表明,只要提示词结构清晰(用标记分隔参考资料和用户问题,并明确指示"优先结合资料回答"),大模型能很好地利用注入的知识库内容,且不会在资料无关时强行引用。

6.3 后端代理模式的价值

整个项目中,QwenPaw 和 RagFlow 的所有敏感操作都通过 FastAPI 后端代理:

  • Token 管理
    :后端自动登录 QwenPaw、5 天轮换 Token
  • API Key 保护
    :RagFlow 密钥只存后端数据库,前端永远看不到明文
  • 统一错误处理
    :后端将各种异常统一转换为友好的中文提示
  • CORS 无忧
    :前端只与同源后端通信

七、代码规模与交付

模块
文件
新增代码量
后端代理
backend/main.py
~180 行
前端 API 层
frontend/src/api/ragflow.js
121 行(新建)
设置页
frontend/src/views/Settings.vue
~80 行
首页交互
frontend/src/views/Home.vue
~120 行
合计4 个文件~500 行

从需求提出到功能上线(含调研、设计、编码、测试),AI 辅助开发总耗时约 2 小时


八、总结

这次 RagFlow 知识库集成的实践,验证了一个完整的 AI 辅助开发工作流:

  1. 需求描述
     → 用自然语言向 AI 表达意图
  2. 技术调研
     → AI 操控浏览器登录 RagFlow、验证 API、研读 QwenPaw 源码
  3. 架构设计
     → AI 分析现有代码结构,提出集成方案并给出理由
  4. 方案审批
     → 人类决策"先做简单版",AI 立即调整执行
  5. 代码实现
     → AI 逐模块编码,人类审查关键逻辑
  6. 自动测试
     → AI 操控浏览器完成端到端验证

最终交付的功能虽然"简单",但架构合理、体验流畅、可维护可扩展。用户只需在设置页配一次 API Key,之后在对话中一键开启知识库,AI 就能结合企业内部资料给出有据可依的回答。

这就是 AI 时代软件开发的缩影——人类负责决策和审美,AI 负责调研和实现


我是AI易用君,我在此公众号分享探索、学习、使用AI的经验,让我们一起来学AI,用AI,AI(爱)让生活更美好。如果你觉得我说的对,欢迎点赞收藏。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-08 09:04:45 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/878612.html
  2. 运行时间 : 0.212271s [ 吞吐率:4.71req/s ] 内存消耗:4,714.41kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=8fd2803b0ab48dab3b9f65f1eb39b15e
  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.000966s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001639s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000717s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000660s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001229s ]
  6. SELECT * FROM `set` [ RunTime:0.000599s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001613s ]
  8. SELECT * FROM `article` WHERE `id` = 878612 LIMIT 1 [ RunTime:0.001147s ]
  9. UPDATE `article` SET `lasttime` = 1786151085 WHERE `id` = 878612 [ RunTime:0.001400s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000686s ]
  11. SELECT * FROM `article` WHERE `id` < 878612 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001094s ]
  12. SELECT * FROM `article` WHERE `id` > 878612 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.007637s ]
  13. SELECT * FROM `article` WHERE `id` < 878612 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.014529s ]
  14. SELECT * FROM `article` WHERE `id` < 878612 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.003074s ]
  15. SELECT * FROM `article` WHERE `id` < 878612 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.005438s ]
0.214064s