乐于分享
好东西不私藏

AI编程实践项目模板

AI编程实践项目模板

五层进化 · 工程落地

实践项目模板

基于「五层进化」方法论的真实项目骨架

itg · 嵌入式AI工程化系列

[嵌入式AI工程化系列]第1篇五层进化-- AI编程调试的五层架构第2篇实践项目模板-- 高可复用嵌入式AI编程骨架第3篇自主修复闭环-- AI双轨收敛 · 需求螺旋闭合第4篇电路图分析器-- PDF原理图转AI可读描述第5篇共生演化-- 规格-实现知识一致性第6篇历史的包袱-- 遗留工程与AI迁移策略第7篇最后的拼图:Skills-- 规则感知型即时方法

实践案例 · 可复用模板

高可复用嵌入式AI编程模板传感器采集 · RS485通讯 · 上位机管理

基于"五层进化"方法论的真实项目骨架,集成负日志、CLI调试助手与自动化闭环

1. 项目全景

本项目是一个开箱即用的嵌入式AI编程模板,包含:

  • 嵌入式主板
    (STM32F407):采集温湿度、压力等传感器,通过RS485总线与上位机通讯。
  • 上位机软件
    (Python/Qt):负责设备管理、数据存储、实时曲线显示。
  • Python调试助手
    (核心):同时监控RS485总线流量、控制板串口日志、上位机文件日志,并在适当时机输出AI可读的诊断总结。

整个项目严格遵循文章中的五层进化架构:结构化正/负日志、统一工程目录、多模型协作契约、CLI全自动闭环、Vibe+Verify模板化生成

2. 项目目录结构(统一上下文)

project/├── firmware/# 嵌入式固件│   ├── src/│   │   ├── main.c│   │   ├── sensor.c               # 传感器采集│   │   ├── rs485.c                # RS485驱动│   │   ├── protocol.c             # 通讯协议│   │   └── logger.c               # 正/负日志引擎│   ├── inc/│   │   ├── logger.h│   │   └── negative_logger.h│   └── build/│       └── CMakeLists.txt├── host/# 上位机软件│   ├── main.py                     # 主界面│   ├── rs485_manager.py           # 串口通讯管理│   ├── data_store.py              # 数据存储│   └── logs/                      # 运行时日志目录├── debug_tools/# 调试助手(Python脚本)│   ├── debug_assistant.py         # 核心调试脚本(CLI)│   └── log_parser.py              # 日志解析与总结├── .vscode/│   └── tasks.json                 # 一键自动化任务├── agents.md                      # AI行为准则与项目上下文└── README.md

3. 嵌入式固件:正/负日志实战

固件中集成了完整的结构化日志与负日志引擎,所有关键路径都添加了日志点。以下是RS485通讯任务的核心片段:

// firmware/src/protocol.cvoid rs485_communication_task(void) {    static uint8_t epoch = 0;    LOG_STATE(WAITING_FOR_POLL, epoch);   // 正日志:记录状态    // 等待上位机轮询帧(50ms超时)    EXPECT_WITHIN(50, "POLL_FRAME", poll_received_flag);    if (!poll_received_flag) {        // 负日志已自动输出,此处仅记录额外上下文        LOG("WARN", "Poll timeout, epoch=%d", epoch);        return;    }    EVENT_OCCURRED("POLL_received");      // 正日志:事件发生    // 采集传感器数据并回复    float temp = read_temperature();    float pressure = read_pressure();    rs485_send_response(epoch, temp, pressure);    LOG("INFO", "Response sent: temp=%.2f, press=%.2f, epoch=%d", temp, pressure, epoch);    epoch++;}

RS485管理器

负责串口打开/关闭、轮询帧发送、超时重试。内部同样集成了正/负日志(输出到文件)。

# host/rs485_manager.pydef poll_device(self):    self.send_frame(CMD_POLL)    t0 = time.time()    while not self.response_received:        if time.time() - t0 > 0.05:            self.logger.negative("POLL_RESPONSE",                f"Device {self.dev_id} not responding")            break        time.sleep(0.001)    if self.response_received:        self.logger.positive("POLL_RESPONSE",            f"temp={self.temp}, press={self.press}")

数据管理

存储传感器历史数据,支持CSV导出。日志记录每次操作的成功/失败状态,便于AI诊断。

5. Python调试助手:三合一监控与自动总结

这是整个模板的灵魂脚本,它实现了对三个数据源的实时监控:

  1. RS485总线监听
    (通过USB转RS485适配器,监听模式)
  2. 控制板串口日志
    (通过另一个COM口读取固件printf输出)
  3. 上位机文件日志
    (实时tail -f,监控日志文件新增行)

脚本将所有日志统一为结构化格式,并在测试结束后、检测到负日志时、或定时周期自动输出AI可读的总结报告,方便复制给AI模型诊断。

#!/usr/bin/env python3# debug_tools/debug_assistant.py"""三合一调试助手:监听RS485总线、控制板串口日志、上位机日志文件,并按正/负日志规范输出统一的结构化日志与AI诊断总结。用法:    python debug_assistant.py --rs485 COM3 --mcu COM4 --host-log ../host/logs/app.log选项:    --summary-interval 10  每10秒自动输出一次总结(默认检测到负日志时立即输出)    --output-summary-only  仅输出总结,不输出实时日志行"""import serialimport timeimport reimport osimport argparsefrom datetime import datetimefrom collections import defaultdictclass DebugAssistant:    def __init__(self, rs485_port, mcu_port, host_log_path, summary_interval=0):        self.rs485 = serial.Serial(rs485_port, 9600, timeout=0.1) if rs485_port else None        self.mcu = serial.Serial(mcu_port, 115200, timeout=0.1) if mcu_port else None        self.host_log_path = host_log_path        self.host_log_pos = 0        self.summary_interval = summary_interval  # 0表示仅负日志触发        self.negative_events = []        self.positive_events = []        self.last_summary_time = time.time()        self.running = True    def read_rs485_line(self):        if self.rs485 and self.rs485.in_waiting:            line = self.rs485.readline().decode('utf-8', errors='ignore').strip()            if line:                print(f"[RS485] {line}")                self.categorize_log(line, source='RS485')    def read_mcu_line(self):        if self.mcu and self.mcu.in_waiting:            line = self.mcu.readline().decode('utf-8', errors='ignore').strip()            if line:                print(f"[MCU] {line}")                self.categorize_log(line, source='MCU')    def read_host_log(self):        if not os.path.exists(self.host_log_path):            return        with open(self.host_log_path, 'r', encoding='utf-8') as f:            f.seek(0, 2)            size = f.tell()            if size > self.host_log_pos:                f.seek(self.host_log_pos)                new_lines = f.read().splitlines()                self.host_log_pos = size                for line in new_lines:                    print(f"[HOST] {line}")                    self.categorize_log(line, source='HOST')    def categorize_log(self, line, source):        """根据日志内容分类为正/负事件"""        if 'NEGATIVE' in line or 'expected' in line.lower():            self.negative_events.append((source, line))        elif 'POSITIVE' in line or 'occurred' in line.lower():            self.positive_events.append((source, line))    def generate_summary(self):        """生成AI可读的诊断总结"""        summary = []        summary.append("=" * 40)        summary.append(f"🕒 调试总结 [{datetime.now().strftime('%H:%M:%S')}]")        summary.append(f"📊 正事件数量: {len(self.positive_events)}")        summary.append(f"⚠️ 负事件数量: {len(self.negative_events)}")        if self.negative_events:            summary.append("--- 负事件详情 (期望但未发生) ---")            for src, evt in self.negative_events[-5:]:  # 最近5条                summary.append(f"  [{src}] {evt}")        if self.positive_events:            summary.append("--- 最近正事件 ---")            for src, evt in self.positive_events[-3:]:                summary.append(f"  [{src}] {evt}")        summary.append("=" * 40)        return "\n".join(summary)    def run(self):        print("🚀 调试助手启动,按Ctrl+C停止...")        try:            while self.running:                self.read_rs485_line()                self.read_mcu_line()                self.read_host_log()                # 触发总结的条件:                # 1. 检测到新的负事件立即输出                # 2. 或者按间隔周期输出                now = time.time()                if self.negative_events and (self.summary_interval == 0 or now - self.last_summary_time > self.summary_interval):                    print("\n" + self.generate_summary())                    self.last_summary_time = now                    # 仅保留最近的汇总,防止重复输出同一批                    self.negative_events = self.negative_events[-1:]                time.sleep(0.05)        except KeyboardInterrupt:            print("\n🛑 停止监控,输出最终总结:")            print(self.generate_summary())if __name__ == "__main__":    parser = argparse.ArgumentParser(description="三合一调试助手")    parser.add_argument("--rs485", help="RS485监听串口")    parser.add_argument("--mcu", help="控制板日志串口")    parser.add_argument("--host-log", help="上位机日志文件路径")    parser.add_argument("--summary-interval", type=int, default=0, help="总结输出间隔(秒),0=仅负日志触发")    args = parser.parse_args()    assistant = DebugAssistant(args.rs485, args.mcu, args.host_log, args.summary_interval)    assistant.run()

💡 这个脚本就是CLI闭环的物理载体:AI可以通过命令 python debug_tools/debug_assistant.py --rs485 COM3 --mcu COM4 --host-log host/logs/app.log 直接启动监控,并实时获取结构化总结,无需人工解读日志。

6. agents.md:AI协作契约

放入项目根目录,任何接入的AI助手都会自动遵守项目规范。

# agents.md - RS485传感器采集项目## 项目概述- 嵌入式平台:STM32F407,RS485总线9600bps- 传感器:温湿度SHT30、压力传感器(模拟量)- 上位机:Python/PyQt,通过USB-RS485适配器通信## 状态枚举| 数值 | 枚举名 | 含义 ||------|--------|------|| 0 | IDLE | 空闲 || 1 | WAITING_FOR_POLL | 等待上位机轮询 || 2 | SENDING_RESPONSE | 正在发送数据 |## 行为准则1. 所有日志分析优先查找 [NEGATIVE] 和 [POSITIVE] 标签2. 上位机日志位于 host/logs/ 下,格式为结构化键值对3. 调试助手启动命令:`python debug_tools/debug_assistant.py --rs485 COMx --mcu COMy --host-log host/logs/app.log`4. 建议修改固件时,使用 git diff 格式输出5. 遇到通讯超时,优先检查RS485总线终端电阻和设备地址## 已知陷阱- 轮询间隔必须 > 50ms,否则固件可能因中断过载丢帧- RS485收发切换需延时2ms,避免总线竞争

7. VSCode Tasks:一键全自动测试

// .vscode/tasks.json{    "version": "2.0.0",    "tasks": [        {            "label": "build-fw",            "type": "shell",            "command": "cd firmware/build && cmake --build .",            "problemMatcher": ["$gcc"]        },        {            "label": "flash",            "dependsOn": ["build-fw"],            "type": "shell",            "command": "openocd -f interface/stlink.cfg -f target/stm32f4x.cfg -c 'program firmware/build/firmware.elf verify reset exit'"        },        {            "label": "start-debug-assistant",            "dependsOn": ["flash"],            "type": "shell",            "command": "python debug_tools/debug_assistant.py --rs485 COM3 --mcu COM4 --host-log host/logs/app.log",            "isBackground": true,            "problemMatcher": []        },        {            "label": "run-host-app",            "dependsOn": ["start-debug-assistant"],            "type": "shell",            "command": "python host/main.py"        },        {            "label": "full-test",            "dependsOn": ["run-host-app"],            "group": { "kind": "test", "isDefault": true }        }    ]}

8. 五层进化在本项目中的映射

层级
文章方法
本项目落地
第一招
双向可观测性
固件/上位机均使用正负日志宏;调试助手自动归类并总结
第二招
统一上下文
标准目录结构 + agents.md 提供完整项目语境
第三招
多模型协作
低代码模型生成模板,高能力模型分析调试总结
第四招
CLI闭环
debug_assistant.py 可被AI直接调用,输出结构化总结
第五招
完整闭环工程
VSCode Tasks 实现一键 full-test,案例库可积累日志样本

🎯 使用场景:当AI助手(如Claude、GPT)接入此项目时,只需读取 agents.md 和项目结构,即可自主运行 full-test 任务,读取调试助手输出的总结,并基于正/负日志定位问题。整个过程无需人工解释硬件细节。

这个模板可以直接克隆到任何RS485传感器采集项目中。只需修改传感器驱动和协议帧定义,其余工程化组件(日志、调试助手、agents.md、tasks.json)均可复用。真正的"一次搭建,终身受益"。

itg ·-lvgl-

< 上一篇:五层进化 下一篇:自主修复闭环 >[返回系列首页]

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-10 01:17:41 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/598171.html
  2. 运行时间 : 0.154208s [ 吞吐率:6.48req/s ] 内存消耗:4,724.12kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5e89ef167f620d14f70a2a0b229b2243
  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.000613s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000685s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000332s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000280s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000493s ]
  6. SELECT * FROM `set` [ RunTime:0.000195s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000517s ]
  8. SELECT * FROM `article` WHERE `id` = 598171 LIMIT 1 [ RunTime:0.000686s ]
  9. UPDATE `article` SET `lasttime` = 1778347061 WHERE `id` = 598171 [ RunTime:0.005749s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.004800s ]
  11. SELECT * FROM `article` WHERE `id` < 598171 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000543s ]
  12. SELECT * FROM `article` WHERE `id` > 598171 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000388s ]
  13. SELECT * FROM `article` WHERE `id` < 598171 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000714s ]
  14. SELECT * FROM `article` WHERE `id` < 598171 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.011099s ]
  15. SELECT * FROM `article` WHERE `id` < 598171 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.010188s ]
0.158283s