乐于分享
好东西不私藏

IOTLink 开发手记-2:AI编程助手实现心得

IOTLink 开发手记-2:AI编程助手实现心得
先上最终实现界面,目前功能放到一个模块里有点拥挤,但是先做出来再说,后面会慢慢优化,记得三十年前高中时候老师常说一句:书要先由薄读厚,再由厚读薄才是真正学会了。目前界面有VSCode的型,借鉴VisualStudio。但内部差的很远,为啥ClaudeCode不搞带界面的编辑工具,感觉主要两点:(1)主要是工作量巨大,做一个好的编辑器比纯AI难度大多了;(2)第二个让用户无处可改代码,一个简单的功能都要消耗token 。
系统整体架构图如下
和其他MQTT,数据库,SSH等模块之间通讯使用的IOTLink Bus方式,这个和MCP的区别。
对比项
IOTLink BUS
MCP
定位
IOTLink 内部能力总线
通用开放协议
使用范围
主要供 IOTLink 使用
可被不同 AI 客户端使用
工具描述
自定义 Schema
MCP 标准 Schema
通信格式
IOTLink 自定义调用块或原生 Tool Call
JSON-RPC
生命周期
由 IOTLink 自己管理
有标准初始化、协商和关闭流程
工具发现
内部注册表
tools/list
工具调用
内部 BUS 路由
tools/call
资源与模板
可自行实现
标准 Resources、Prompts
兼容性
只能连接自有模块
可以接入第三方 MCP Server

下面将共享下开发过程心得,功能部分实现参考多个AI Agent工具实现,界面参考VSCode,VisualStudio.

一、AI 模型其实只负责“思考”

很多人会把 AI 编程助手理解成一个更聪明的代码生成器。

你告诉它:

帮我修复这个程序无法启动的问题。

它看起来能够分析代码、修改文件、执行编译,甚至根据错误继续修复。

但大模型本身并不能直接操作电脑。

它真正能做的事情,是根据当前看到的信息,判断下一步应该做什么。例如:

  • 读取哪个文件;
  • 搜索哪个函数;
  • 修改哪几行代码;
  • 执行什么编译命令;
  • 根据什么错误继续排查。

真正负责读取文件、修改代码和执行命令的,是编程助手背后的工具系统。

因此,一个完整的 AI 编程助手,可以简单理解为:

大模型负责思考,工具负责执行,宿主程序负责管理。

大模型像大脑,文件读取、代码搜索、编辑器和终端像手脚,而任务记录、上下文和检查点则像它的笔记本。

只有这些部分配合起来,AI 才能真正开始“干活”。

二、从聊天框到智能体,中间差了什么?

最早的实现方式非常简单。

用户提出问题,程序把问题和部分代码发送给模型,模型返回一段回答。

这种方式适合解释代码,却很难完成复杂任务。

因为真实的软件项目通常包含成百上千个文件。模型既不知道项目结构,也不知道应该从哪里开始,更无法确认自己的修改是否正确。

后来,我给编程助手增加了文件读取、目录浏览、代码搜索和命令执行能力。

AI 可以先查看项目目录,再搜索相关类和函数,最后读取准确的代码片段。

到这一步,它才开始从“聊天机器人”变成“编程智能体”。

不过,新的问题很快又出现了。

工具越多,模型越容易选错;代码读取越多,请求消耗越大;任务执行时间越长,越容易出现重复搜索和上下文混乱。

于是,开发重点也从“增加功能”,逐渐转向“约束行为”。

三、不是读得越多,理解得越好

在最初的设计中,为了让模型充分了解项目,我会把大量历史对话、文件内容和工具结果一起发送过去。

这样做看起来信息很完整,实际效果却不一定好。

当上下文越来越长时,真正重要的代码很容易被淹没。模型可能记住了大量日志,却忽略了当前真正需要修改的函数。

这让我逐渐意识到:

上下文的价值不在于多,而在于准确。

现在的思路是先提供项目结构,再让模型根据任务逐步获取信息。

例如修复一个按钮无效的问题,并不需要读取整个项目。通常只需要找到:

    这些信息能够形成一条完整的证据链。

    模型知道自己为什么要修改,也知道修改会影响哪些地方,而不是凭借一个模糊的代码片段进行猜测。

    四、修改代码之前,先证明自己看懂了

    AI 修改代码最危险的地方,不是它不会写,而是它可能在没有充分理解的情况下直接动手。

    因此,我在编程助手中逐步加入了“先读取、再修改”的限制。

    模型需要先获得目标文件的准确内容,确认文件版本没有发生变化,然后才能提交修改。

    修改前还会保存检查点,记录原始内容。修改完成后,再保存新的版本和校验信息。

    如果结果不正确,就可以恢复到修改前的状态。

    这套机制并不能保证 AI 永远不犯错,但可以把错误控制在可恢复的范围内。

    我的体会是:

    智能体真正需要的不是绝对自由,而是可控的行动能力。

    能力越强,越需要明确边界。

    只读任务不能修改文件;问答任务不能随意执行命令;不同角色只能使用被允许的工具;危险操作必须经过额外检查。

    这些限制看起来降低了 AI 的自由度,实际上却提高了它在真实项目中的可用性。

    五、为什么还要支持多个任务?

    当编程助手只能同时处理一件事时,使用体验非常像早期的单任务系统。

    一个任务正在编译,用户就只能等待;想临时查看另一个问题,也容易打断原来的上下文。

    因此,我后来开始增加多任务能力。

    同一个项目目录下,可以建立多个独立任务。例如:

    • 一个任务负责修复程序启动问题;
    • 一个任务负责优化界面;
    • 一个任务负责分析 Token 消耗;
    • 另一个任务负责研究新的智能体功能。

    每个任务拥有自己的对话、执行状态、上下文和工具结果。

    这样做的意义不仅是能够切换页面,更重要的是避免不同任务之间相互污染。

    不过,多任务并不等于所有操作都可以无限并发。

    模型请求可以分别进行,但编译、文件修改和终端命令需要协调。否则两个任务同时修改同一个文件,很容易产生冲突。

    因此,多任务系统背后还需要一个任务协调器,决定谁可以执行、谁需要等待,以及任务停止后如何恢复。

    用户看到的是几个简单的任务标签,程序内部处理的却是状态隔离、资源竞争和执行顺序。

    这也是软件开发中很典型的一件事:

    越简单的界面,背后往往需要越复杂的工程。

    六、工具不是越多越好

    开发过程中,我还踩过一个很明显的坑:给模型提供了太多工具说明。

    文件读取、代码搜索、目录遍历、文本替换、补丁修改、命令执行、Git 操作、任务计划……每个工具都有自己的参数和规则。

    如果把所有工具的完整说明都发送给模型,不仅会消耗大量 Token,也会增加模型的选择难度。

    后来我开始把工具分层。

    基础工具保持稳定,专业能力通过技能按需加载。模型只有在遇到相应任务时,才获得对应的说明。

    同时,工具参数尽量保持简单、统一和明确。

    这让我得到一个很重要的开发心得:

    设计 AI 工具,本质上也是在设计一套给 AI 使用的用户界面。

    人类面对复杂界面会迷路,模型面对复杂的工具定义同样会迷路。

    好的工具不是功能最多,而是让模型容易选对、容易调用,也容易判断执行结果。

    七、真正影响体验的,往往不是模型大小

    我们很容易把 AI 编程助手的效果归因于模型。

    回答不好,就换一个更大的模型;修改失败,就增加更多提示词。

    但在实际开发中,我越来越感觉到,模型只是系统中的一个部分。

    真正决定体验的,还有很多工程细节:

    • 是否给模型提供了准确的项目环境;
    • 是否能找到真正相关的代码;
    • 是否会重复读取相同文件;
    • 工具执行结果是否能够被模型理解;
    • 修改失败后能否恢复;
    • 用户是否能看到当前执行进度;
    • 一个任务是否会干扰另一个任务;
    • 程序异常退出后,任务能否继续。

    模型能力决定了上限,工程系统决定了下限。

    一个模型能力很强,但工具混乱、上下文臃肿、执行过程不可控,最终仍然很难使用。

    相反,即使模型并不是最强,只要上下文准确、工具清晰、反馈及时,也能完成大量实际工作。

    八、我的一点心得

    做 AI 编程助手之后,我最大的变化,是不再把 AI 看成一个“什么都懂的程序员”。

    它更像一个反应很快、知识很多,但需要明确工作环境和操作规则的新同事。

    你不能只告诉它“把这个问题解决掉”,然后期待它自动理解整个项目。

    你需要给它合适的工具、准确的资料、清晰的边界,以及能够检查和恢复的工作流程。

    这和带新人其实很像。

    刚开始时,我们总想把所有资料一次性交给他。后来才发现,真正有效的方法是告诉他当前目标,让他按照任务一步步查找信息,并在关键节点确认结果。

    AI 也一样。

    未来的编程助手,可能不会只是编辑器旁边的一个聊天窗口。它会逐渐成为项目中的任务执行者:理解需求、查找代码、制定步骤、完成修改、运行验证,并把整个过程清晰地展示出来。

    但无论模型多么强大,有一件事应该始终保持不变:

    AI 可以替我们执行很多工作,但最终的判断和责任,仍然属于使用它的人。

    这也是我在开发 IOTLink AI 编程助手过程中,最深的一点体会。

    我们真正要做的,不是让 AI 看起来更聪明,而是让它在真实工作中,更可靠地完成一件事。

    基本 文件 流程 错误 SQL 调试
    1. 请求信息 : 2026-07-23 23:18:33 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/866516.html
    2. 运行时间 : 0.708018s [ 吞吐率:1.41req/s ] 内存消耗:4,717.56kb 文件加载:145
    3. 缓存信息 : 0 reads,0 writes
    4. 会话信息 : SESSION_ID=a2c20cf82fe790264797ee848fcaa88f
    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.001141s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
    2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001543s ]
    3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.012398s ]
    4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.012593s ]
    5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001776s ]
    6. SELECT * FROM `set` [ RunTime:0.008221s ]
    7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000626s ]
    8. SELECT * FROM `article` WHERE `id` = 866516 LIMIT 1 [ RunTime:0.035874s ]
    9. UPDATE `article` SET `lasttime` = 1784819913 WHERE `id` = 866516 [ RunTime:0.037617s ]
    10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.007345s ]
    11. SELECT * FROM `article` WHERE `id` < 866516 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.051879s ]
    12. SELECT * FROM `article` WHERE `id` > 866516 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.069862s ]
    13. SELECT * FROM `article` WHERE `id` < 866516 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.139393s ]
    14. SELECT * FROM `article` WHERE `id` < 866516 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.020659s ]
    15. SELECT * FROM `article` WHERE `id` < 866516 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.119051s ]
    0.712808s