乐于分享
好东西不私藏

开发丨我用AI给自己做了个思维外挂

开发丨我用AI给自己做了个思维外挂

我是那种脑子停不下来的人。工作时、阅读时、睡前那几分钟,脑子里总会冒出各种念头:一个好的产品想法、一句值得记住的话、一个对工作问题的解法。但这些想法来得快,忘得也快。有时掏出手机打开备忘录,打完字却发现索然无味——那段口语化的碎碎念躺在备忘录里,和几百条同样潦草的记录挤在一起,永远不会有重见天日的时候。

我一直想要这样一个东西:只管打字,什么都不用管,第二天早上能看到一份整洁的整理报告。不是那种需要手动打标签、选分类的“重工具”,而是真正零摩擦的记录——就像对着一个永远不会烦你的朋友说话,他听完点点头,回去默默帮你整理好,第二天把一份漂亮的笔记放在你桌上。

这个东西不存在,所以我做了一个。

一、整体思路:手机打字,NAS 存数据,AI 做整理

项目的核心流程很简单:Android 手机上打字保存 → 通过 WebDAV 协议存到家里的群晖 NAS → 每天凌晨 DeepSeek AI 自动对原始记录进行分类和润色 → 生成日、周、月、季、年五种 Markdown 总结报告。整个过程不需要任何手动操作,AI 全自动运行。

架构上分为两块:前端是一个极简的Android App,用 Kotlin 和 Jetpack Compose 写,只有四个页面——首页输入、历史浏览、日期详情、NAS 设置。后端是一套 Python 脚本,跑在群晖 NAS 上,通过 DSM 任务计划定时触发。AI 引擎用的是 DeepSeek 的 API,兼容 OpenAI 格式,调用成本极低。

整个数据流向是:用户输入口语化文字→ App 通过 WebDAV 写入 NAS 的 raw 目录 → 凌晨 daily_summary.py 读取原始文件,调用 DeepSeek 分类润色 → 输出到 daily 目录 → 周报/月报/季报/年报依次从下层报告中汇总生成。每一层都是纯 Markdown 文件,人可以随时打开看,AI 也能读懂上下文。

二、技术选型:务实优先,不追新

技术栈的选择上,我坚持一个原则:够用就好,不过度设计。

(一)Android 端:Kotlin + Compose + Hilt

Android 端选择了 Kotlin 2.0 + Jetpack Compose + Material 3 的组合。Compose 写 UI 的效率比传统 XML 高得多,Material 3 默认支持 Android 12 以上的动态取色(Material You),省去了大量主题定制时间。依赖注入用的是 Hilt 2.51,虽然配置稍繁琐,但编译期 DI 的稳定性在个人项目中很省心。本地缓存用了 Room 2.6,只缓存最近 7 天的数据,保持轻量。网络层选了 OkHttp 4.12,直接实现了 WebDAV 的 PUT/GET/PROPFIND/MKCOL/DELETE 等 HTTP 方法,没有引入第三方 WebDAV 库——因为 WebDAV 本质就是 HTTP 协议的扩展,用 OkHttp 手写几百行就能覆盖所有需要的方法。

(二)NAS 端:Python 3 + DeepSeek API

NAS 端用 Python 3 编写,没有用任何 Web 框架——就是一套命令行脚本,由 DSM 的任务计划直接调用 python3 执行。选择 Python 是因为它处理文本和调用 API 的便利性,加上群晖系统自带 Python 3.8 环境,不需要额外安装运行时。

AI 引擎选了 DeepSeek,而不是 OpenAI。理由很简单:便宜。DeepSeek Chat 模型的处理能力对于文本分类和润色这个场景完全够用,每千 token 的价格是 GPT-4 的几十分之一。实测下来,每天处理 10 条记录的 API 费用大约是 0.002 美元,月费不超过 7 美分,四舍五入等于不要钱。技术上用的是 OpenAI 兼容接口,一行代码都不用改,只需要把 base_url 从 openai.com 改成 api.deepseek.com。

(三)通信协议:WebDAV 而非自建 API

App 和 NAS 之间的通信没有自建 API 服务,而是直接用群晖自带的 WebDAV Server。做这个决定是因为:第一,我不想在 NAS 上多维护一个常驻的 Web 服务进程;第二,WebDAV 是 HTTP 协议的标准扩展,OkHttp 原生支持需要的所有方法;第三,WebDAV 天然支持目录结构、文件锁、认证——这些恰好是这个项目所需的核心能力。代价是文件写入需要实现完整的锁机制(读-改-写-解锁),多写了几十行代码,但换来的是零运维负担。

三、开发中踩过的七个坑

如果我说开发过程一帆风顺,那一定是在说假话。以下是真实的踩坑记录,按时间顺序排列。

(一)Gradle 版本的连环错

用Android Studio 首次打开项目时,AS 自动把 Gradle 从 8.9 升级到了 9.4,又把 AGP(Android Gradle Plugin)从 8.5.2 悄悄改成了 7.4.2,还顺手把 Kotlin 从 2.0 降回了 1.8。结果是连 Sync 都过不了,报了一整套版本冲突错误。最终的做法是逐一手动恢复 gradle-wrapper.properties、libs.versions.toml、settings.gradle.kts 和根 build.gradle.kts 四个文件。教训是:AS 的自动迁移功能在版本跨度大的时候并不可靠,版本目录(Version Catalog)的项目最好先把这些文件提交到 Git,出问题了直接 git checkout。

(二)kotlin.Result 的语法陷阱

Kotlin 标准库的 Result 是一个 inline value class,不是 sealed class。这意味着你不能用 is Result.Success 或 is Result.Failure 来做 when 分支判断——编译会直接报错。正确的用法是 result.fold(onSuccess = {...}, onFailure = {...}) 或 result.isSuccess/result.isFailure。我在 EntryRepository 和 WebdavApi 里各写了一处这个错误,都是因为手快写成了 when 模式。这个错误很容易犯,因为它看起来太像 sealed class 了。

(三)Hilt 依赖注入的 MissingBinding

Hilt 编译时报了 EntryDao cannot be provided without an @Provides-annotated method。问题在于我在 AppModule 里只提供了 AppDatabase,但没有单独提供 EntryDao。Room 的 @Dao 注解不会自动让 Hilt 识别——需要在 Module 里显式写 provideEntryDao(db: AppDatabase) = db.entryDao()。这是我第一次在 Hilt 里搭配 Room 使用,少了这一步导致 KSP 处理器报了一长串错误,排查了好一阵。

(四)WebDAV 路径多一层 /homes

App 的 WebDAV 地址我反复试了 /thoughts、/ryze/thoughts 都返回 405(Method Not Allowed)。外部 curl 测试又全部返回 401(需要认证),让人很困惑——为什么认证了就变 405?最后发现群晖 WebDAV Server 的路径结构比我想的多一层:实际的 WebDAV 根路径不是 /,而是 /homes/,用户主目录在 /homes/ryze/ 下面。完整的路径是 /homes/ryze/thoughts。这个问题的本质是我对群晖 WebDAV 的目录映射机制不够了解——WebDAV Server 套件默认通过 Apache 反向代理,路径映射规则和直接访问文件系统不一样。

(五)Android 明文 HTTP 的安全策略

Android 9 以上默认禁止 HTTP 明文流量。我的 NAS 内网地址用的是 http:// 而不是 https://,App 一发送请求就直接被系统拦截,报了 CLEARTEXT communication not permitted。解决方法是在 network_security_config.xml 里把 NAS 的域名加入白名单,允许明文传输。第一次只加了 localhost 和内网 IP 段,忘了加自定义域名 nas.ryze.fashion,导致又报了一次。

(六)Compose LazyColumn 的 key 重复闪退

这个bug 的报错非常明确——Key was already used——但触发时机很微妙。我用条目时间和内容的 hashCode 组合作为 LazyColumn 的 key,以为够用了。结果当同一条内容保存了两份(时间不同但 hashCode 可能相同,因为 hashCode 的碰撞概率高于直觉预期),App 直接闪退。解决方案是:对于没有唯一 ID 的数据,要么用 index 做 key,要么不要指定 key 让 Compose 按位置自动处理。

(七)Python 3.8 的类型提示兼容性

群晖自带的Python 是 3.8,不支持 list[dict] 这种 PEP 585 语法(3.9 才引入)。脚本一运行就报 TypeError: type object is not subscriptable。加一行 from __future__ import annotations 就解决了,但之前确实忘了 NAS 的 Python 版本比本地低。另一个 Python 问题是 common.py 的 docstring 里包含中文引号"随想杂记",被解析器当成了字符串结束符,导致 SyntaxError。这些问题都很低级,但组合在一起可能浪费半小时排查时间。

四、几个值得拿出来说的设计

做完之后回头看,有几个设计我觉得值得单独写出来。

(一)文件锁:最简单的并发控制

App 和 AI 脚本同时操作同一个原始记录文件,理论上存在竞争。但为了一个单用户的工具引入数据库或者消息队列太荒谬了。最终实现了一个基于文件锁的读写互斥:App 写入前先 PUT 一个空文件 .sync/write.lock 作为锁,写入完成后 DELETE 释放;AI 脚本运行前检查锁文件是否存在,如果存在就跳过本轮处理。锁获取加了指数退避重试(250ms → 500ms → 1000ms → 2000ms),第 3 次失败后强制执行僵尸锁清理。整个实现不到 60 行代码,但解决了核心的读写安全问题。这种简单粗暴的方案放在分布式系统里可能被骂,但放在个人 NAS 上就是最合适的。

(二)AI 调用的分级温度策略

不同层级的报告对AI 的要求是不同的。日报需要精准的分类和润色,温度设为 0.3,确保输出稳定一致;周报开始引入一些观察性内容,温度调到 0.5;月报和季报需要更多的洞察,温度 0.6-0.7;到了年报,我希望 AI 写得有温度、有故事性,温度直接开到 0.8。这个分级温度的设计是受了 OpenAI Cookbook 里关于不同任务适用不同 temperature 的建议启发的,效果很好——日报每次的输出风格高度统一,年报读起来像是一个了解你的人在帮你做年终回顾。

(三)降级策略:AI 不可用时不崩溃

DeepSeek 的 API 虽然便宜,但偶尔也会超时或返回非 JSON 格式的响应。common.py 里实现了一个 fallback_classify 函数:当 LLM 调用失败或 JSON 解析失败时,所有条目被归入"随想杂记"分类,原始内容原样保留。这保证了即使 AI 完全不可用,系统也不会丢失数据——用户第二天看到的是一份"未经整理"的原始记录日报,而不会是空白页。每层报告脚本都有类似的 fallback 机制:如果下层报告文件不存在或是空的,就跳过该层,不让错误向上传播。

(四)写穿缓存:要速度也要可靠

App 的数据层采用写穿缓存(Write-Through Cache)策略。用户保存一条记录时,数据先写 NAS(WebDAV),成功后才写入本地 Room 数据库。读取时优先展示本地缓存的最近 7 天数据(响应式 Flow,毫秒级刷新界面),同时后台从 NAS 拉取最新内容覆盖缓存。缓存写入失败不会影响主流程——用 Timber 打个 warning 日志就放过去。这种设计保证了:在线时体验快,离线时至少有 7 天数据可看,缓存崩了也不影响核心功能。

(五)部署与运维:群晖的"零成本"后端

部署过程比开发简单得多。NAS 端只需要五个步骤:创建 thoughts 目录结构、上传 Python 脚本、配置 DeepSeek API Key、pip install openai、在 DSM 任务计划里新建五个定时任务。定时任务的 Cron 安排避开了整点——日 1:17、周 2:23、月 3:37、季 4:41、年 5:53——这是故意把分钟数打散,避免多个任务同时触发抢 CPU。

文件传输遇到一个小插曲:SCP 在群晖上因 SFTP 子系统配置问题无法使用,最后用了 tar 管道的方式传输:本地 tar 打包 → SSH 管道 → 远端解包。这种方案在 DevOps 圈里算是老派做法了,但确实稳定。

Python 包安装也出了状况:直接从 PyPI 下载 openai 包超时(NAS 的网络环境访问海外源不稳定),换了阿里云的 PyPI 镜像后秒下。一个 pip install openai -i https://mirrors.aliyun.com/pypi/simple/ 解决问题。在国内部署 NAS 服务的读者建议直接把镜像源写进 pip.conf,后续更新省事。

(六)费用核算:一台永远不关机的电脑就是最好的服务器

整个项目的运行成本可以忽略不计。硬件用的是已有的群晖DS918+,不需要额外投入。DeepSeek API 每天处理 10 条记录的日报约 0.002 美元,周报月报季报年报的 AI 综述加起来每月约 0.01 美元,月费总计约 7 美分,折合人民币不到五毛钱。唯一的"成本"是 NAS 的 7×24 电费,但这台机器本来就常年开机跑着 Docker 和其他服务,多跑几个 Python 脚本基本不增加功耗。

四、写在最后

这个项目从构思到能用,实际编码时间大约一个周末。但最有意思的不是代码本身,而是它改变了我的记录习惯。以前打开备忘录需要克服一种微妙的心烦:想到要写、要分类、要整理,就算了。现在只需要几秒钟打几个字,甚至用豆包输入法直接说也行,剩下的事AI会帮我做。这种"零摩擦记录"的体验,比任何花哨的功能都更有价值。

做个人项目,我觉得最重要的品质是克制。功能列表里很想加的东西太多了——语音输入、Markdown 编辑器、桌面端同步、向量搜索——但我很清楚每加一个功能,维护负担就翻一倍。所以最后这个 App 的功能少到可以被一句话说清楚:打字,保存,第二天看日报。够了。

AI 编程工具在这次开发中帮了大忙,但主角永远是人。AI 擅长的是"已知的方案"——它能帮你快速写出 WebDAV 客户端的样板代码、帮你排查 Gradle 版本冲突、帮你生成 DeepSeek 调用的 prompt 模板。但做什么、不做什么、架构怎么搭、数据怎么流、哪些坑要绕开——这些判断是人的事,也是写代码真正的乐趣所在。

这个项目我会继续用下去。如果你也对"零摩擦记录"有兴趣,或者自己有一台 NAS 在吃灰,不妨也试试。代码思路都在GitHub上面了,点击查看原文就可以看到,剩下的就是花一个周末,给自己做一个懂你的思维外挂。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-31 17:00:30 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/689214.html
  2. 运行时间 : 0.087105s [ 吞吐率:11.48req/s ] 内存消耗:4,828.11kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5ec3fb5561633a13a1ee75e674074a2e
  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.000631s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000874s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000312s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000845s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000603s ]
  6. SELECT * FROM `set` [ RunTime:0.001926s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000709s ]
  8. SELECT * FROM `article` WHERE `id` = 689214 LIMIT 1 [ RunTime:0.000559s ]
  9. UPDATE `article` SET `lasttime` = 1780218030 WHERE `id` = 689214 [ RunTime:0.001760s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000274s ]
  11. SELECT * FROM `article` WHERE `id` < 689214 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000495s ]
  12. SELECT * FROM `article` WHERE `id` > 689214 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000469s ]
  13. SELECT * FROM `article` WHERE `id` < 689214 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001308s ]
  14. SELECT * FROM `article` WHERE `id` < 689214 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001610s ]
  15. SELECT * FROM `article` WHERE `id` < 689214 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001128s ]
0.088908s