乐于分享
好东西不私藏

AI 编程实战:两周做出 DND 建角工具,还赚到了第一笔钱

AI 编程实战:两周做出 DND 建角工具,还赚到了第一笔钱

一个普通前端的 Claude Code 实战手记

起因是一个朋友,和一张被划得乱七八糟的角色卡

去年冬天有次跑团,新来的朋友小张,坐我旁边建角色。一个法师,从八点建到快九点,角色卡被铅笔划了又擦、擦了又划,擦出毛边,最后能力值那栏还填错了——他把调整值当成了属性值填进去,导致整张卡的数据全错位。等我发现的时候,这局已经开打半小时了。

那天回家路上我就在想,这事儿也太离谱了。

玩过 DND(龙与地下城)的人大概都熟悉那个画面。你坐在桌边,面前一张空白角色卡,规则书翻到第三章,旁边的老玩家随口一句:“先选种族,再选职业,能力值用 4d6 去掉最低骰。”你点点头,装作听懂了,然后开始在十几张表格之间反复横跳,想搞明白精灵的黑暗视觉到底是 60 尺还是 120 尺,战士 1 级给几个专长,力量 14 对应的调整值是 +2 还是 +3。

DND 2024 新版规则改了不少,光规则书的厚度就够把新人挡门外。我自己带过的新人没有十个也有八个,每次都得搭进去半小时帮他建角色。倒不是规则有多难,而是信息太散。建一个角色要在种族、职业、背景、装备表之间来回查七八处,每一处都可能填错,错了还会连锁影响后面所有计算。

更要命的是,这些错误新人自己根本发现不了。他不知道矮人有“中毒豁免优势”,所以他根本不会去找这一条;他不知道力量影响的是近战命中而不是法术,所以他算错了也察觉不到。规则的复杂度,全压在了一个对规则最不熟的人身上。

那阵子我心里一直有个念头,觉得这事本该有个软件来替你做。市面上不是没有在线建角工具,但要么全是英文,新人光看界面就退缩;要么功能堆得满满当当,把进阶玩家才用得上的东西一股脑全摆出来,反而把“我就想快点建个一级角色”这个最朴素的需求淹没了。我想要的特别简单:一个专门服务 DND 2024 中文版的东西,一步一步牵着新人走,每一步只让他做一个决定,数据全自动算好,手机上也能用。

问题是,这事我做得了吗?

说实话,我没什么底气

我是个普通前端,工作几年,Vue 写得还算熟,平时就是做做业务页面。但我不是设计师,也没自己从头到尾做出过一个完整的产品,所谓“软件”这个东西,我从没独立做成过。

我清楚自己几斤几两。功能让我写,我能写出来,但界面我是真不行,自己配色能配出一股土味;逻辑我能理顺,可那些边边角角的情况我老是想不全,经常是上线了才被人发现漏了个分支;组件怎么拆我门儿清,但要我说清楚整个项目的数据该怎么组织、各个模块之间怎么串,我就含糊了。说白了,我习惯的是在别人搭好的框架里填空,真给我一张白纸让我从头规划一个完整的东西,我心里没底。

这种没底是有代价的。我电脑里躺着好几个做了一半的项目,都是兴冲冲开了头,做到某个卡点过不去,或者越做越乱、自己都嫌弃,然后就放那儿吃灰了。所以这次开工之前,我对“能不能做完”其实没抱太大期望。

唯一跟以前不一样的,是这回我用上了 Claude Code。

它是 Anthropic 出的一个 AI 编程工具。跟大家熟悉的那种聊天 AI 不太一样:聊天 AI 你得把代码一段段复制给它、它再回一段给你,中间隔着一层。Claude Code 是直接在你电脑上跑的,它能打开你这个项目里所有的文件,自己读、自己改,就像你请了个工程师坐到你电脑前,而不是隔着微信远程指挥一个看不见你屏幕的人。这个区别后面会越来越明显——很多事之所以能成,正是因为它“看得见全貌”。

但工具是工具,怎么用是另一回事。我一开始也踩过坑:什么都不想,直接把活儿整个甩给它,让它自己看着办。结果它确实能给你跑起来的东西,可点开代码一看,各种情况没考虑周全,这个分支没处理、那个边界没兜住;代码也冗余得厉害,同样的逻辑换三个地方各写了一遍,改一处得满项目找。表面上看是它写的,实际上是没人在掌舵,它只能顺着字面意思一路猜下去,越猜越偏。

所以这两周我慢慢摸出来的,与其说是“怎么让 AI 写代码”,不如说是“怎么用好它”。下面这几步,基本就是我踩着坑总结出来的。

第一步:把事情讲明白,而不是丢一句命令

很多人用 AI 写代码是这样的:“帮我写一个角色创建页面。”然后收获一坨通用的、跟自己项目八竿子打不着的代码,改起来比自己重写还累。我一开始也这么干过,吃过亏。

所以这次我做的第一件事不是让它写代码,而是跟它讲业务。

我花了大概二十分钟,把 DND 2024 的建角流程从头到尾给它讲了一遍。流程是线性的,分十步:选种族、选职业、选背景、分配能力值、选专长、选法术、选装备、定生命值,最后生成角色卡。关键是每一步之间都有数据依赖。职业决定你能穿什么甲、用什么武器;种族决定你有没有黑暗视觉、有没有特定豁免优势;背景给你额外的技能熟练。这些东西在建角过程中是分散选的,但最后必须全部正确地汇总到一张角色卡上。

讲完之后我没说“帮我写代码”,我说的是:“我需要一个响应式状态对象来存角色数据,涵盖种族、职业、背景、能力值、专长、法术和装备。每个字段该存什么,你帮我把数据结构设计出来。”

讲需求,而不是直接要代码:让它先帮我设计数据结构

它返回了一份完整的character状态设计,字段分门别类,连“这个字段为什么要这么存”都给我标了注释。我扫了一眼,挑出一个问题:法术这块不够,法师和牧师的法术来源不一样,一个靠智力一个靠感知,得支持多来源。它立刻调整。来回三四轮,整个项目的数据骨架就定下来了。

那一刻我有个很微妙的感受。这个数据结构,要我自己从零设计,我得反复推翻好几次,搞不好做到第八步才发现第一步的结构不够用,然后回炉重来。但因为我把业务讲透了,它在一开始就帮我把坑给绕过去了。

值得说一下的是,这种讨论之所以管用,是因为它能记住我们已经定好的所有东西。它不是这一句回答完就忘,而是把整个项目的设计都揣在脑子里。这意味着后面我每加一个新功能,它都知道该跟前面已有的部分对上,而不是另起炉灶。这是和 AI 协作里最该先做的一件事:你得先把业务讲清楚,让它明白你到底在做什么,而不是张口就要代码。你对业务理解得越深,它给你的东西就越准。

第二步:风格是聊出来的,不是调出来的

我想要个什么样的界面?脑子里只有个模糊的感觉:暗黑系,有奇幻感,带点羊皮纸和古卷的气质,但又得现代、耐看,手机上也能用。

我不会设计,也调不来配色。让我自己挑颜色,我大概率会调出一套土味十足的东西。但我会用语言描述。

我跟它说,整体走深色背景,主色用旧金色和暗铜色,底色接近墨黑,要有羊皮纸的质感但别真贴纹理图,用渐变和阴影去做层次;字体要有奇幻味,标题用装饰性字体,正文保证可读。

第一版出来,我把页面跑起来的瞬间,说实话有点小激动——它真的有那个味儿了。但细看还是不行,我说金色太亮,显廉价,降一档,边框换成更细、半透明的。它改。我又说种族选择页那些卡片悬浮效果太平,加点发光。它再改。我说过了,发光太冲,像游戏 UI,克制点。

来回纠了三五轮后稳定下来的种族选择页

就这么来回纠,一个页面通常改三到五轮,风格也就稳了。整个过程特别像在跟一个手很快、但需要你不断给方向的设计师合作。我负责说“这里不对”,它负责立刻给我看下一版,这种即时反馈的爽感,是我以前自己一个人对着 CSS 死磕时从来没有过的。

风格定下来之后,我交代它一句:之后所有页面都按这个风格来,每次写新页面前先去读已经做好的那几页。

我每开一个新功能,都先甩一句“参考 RaceSelect 的风格和代码结构”。注意,这不是一句空话——它真的会去把那个页面的文件从头读一遍,看我之前是怎么配色、怎么排版、代码怎么组织的,然后照着这套来写新页面。换成普通聊天 AI,你就得手动把那个页面的代码全复制过去喂给它,既麻烦又容易漏。而它能自己翻文件,这件事就变得几乎不费力。最后做出来八个页面放在一起,像是一个人一口气写完的,靠的就是这个。

第三步:遇到 bug,让它去找证据,别让它瞎猜

做到一半,我撞上一个问题。选了矮人之后,角色卡上既没显示“矮人刚毅”的每级 +1 HP,也没显示“中毒豁免具有优势”这条特性。

这恰恰就是我最初想解决的那类错误。一个新人根本不会发现自己漏了这两条,而我的软件本该替他记住——结果我自己的软件先漏了,有点讽刺。

第一反应当然是“AI 写错了”。但我没直接甩一句“你写错了,改一下”。这么说的话,它大概率会随手乱改一通,问题没解决,还可能给你引出新的坑。我以前就这么被坑过,改一个 bug 冒出来俩。

我换了个路子,先让它帮我找证据,确认问题出在哪一层,再动手。我说,矮人角色卡上没显示豁免优势,我不确定是数据本身就没这个字段,还是数据有、只是没被显示出来;你先去查种族数据文件里矮人的数据,看这字段在不在,再看角色卡模板里有没有读这个字段。

它查完告诉我,种族数据里 savingThrowAdvantages这个字段是完整的,矮人的数据没问题,但角色卡模板里压根没渲染过它。同样的毛病,HP 计算函数也根本没接收种族加值这个参数。

所以病根不在数据,在展示层漏了。根因一锁定,修复就花了几分钟。

这里其实藏着它一个很顶用的本事:这个 bug 牵扯到三个不同的文件——存数据的、显示角色卡的、算 HP 的。它能同时把这三个文件都打开,顺着我的角色卡一路倒查回数据源,最后定位到中间的显示环节漏了。这种跨好几个文件、顺藤摸瓜的活儿,要是靠我自己一个文件一个文件地翻,又慢又容易看花眼。

这是整个开发里我体会最深的一点。碰上 bug,先定位再动手,别让 AI 去猜,要让它拿证据。像“我感觉是哪哪的问题,你帮我改改”这种说法,成功率到不了一半;换成“先查数据层有没有这字段,再查显示层有没有读取”,基本是一次定位、一次修复。这个习惯后来救了我很多次,也省下了大把来回扯皮的时间。

第四步:它卡死的时候,换个角度逼它

法术书翻页是整个项目里最磨人的一段,没有之一。

DND 法师有一本法术书,我特别想做成真能翻页的那种效果,每页都有法术内容,翻动时带点纸张的物理手感。这其实是个有点“虚荣”的功能,对建角本身没那么必要,但我就是想要,觉得有了它整个法师体验才完整。为此引入了一个叫 StPageFlip的库。

结果 Claude 前后改了六回,每次都拍胸脯说这下应该行了,可一跑要么翻不动、卡在第一页,要么直接白屏崩掉。改到第五回的时候我是真有点上头了,差点就想把这功能砍掉算了。

但我忍住了,换了个方式。没再说“还是不行,再改”,而是这么讲的:停,先别动代码,我们得先搞清楚这个库初始化到底需要满足什么条件;你去读它的文档,告诉我它要求 DOM 节点在什么时机必须存在,再对照我们现在的代码,指出问题卡在哪。

不让它继续改,而是让它先去读库的文档、把根因讲清楚

这一回它揪出了真正的元凶。StPageFlip要求初始化时 DOM 必须已经渲染完成,而我们是在 onMounted里直接初始化的,那会儿 Vue 还没把页面内容塞进 DOM,翻页插件抓了个空。这里又用上了它一个很省事的能力:StPageFlip是别人写好的现成工具,我对它的内部规矩一无所知,但它能直接把这个库自带的说明文档和源码翻出来读,把那条藏起来的要求挖出来,再回头对照我们的代码一眼看出问题。这事换我自己来,得在网上搜半天、试半天。根因一确认,把初始化挪到 nextTick之后,两分钟搞定,从此再没犯过。

修好之后真正能顺滑翻起来的法术书

那本法术书第一次顺滑翻起来的时候,我盯着屏幕翻来翻去翻了好几遍,纯粹是因为好玩。前面五次的窝火,在那一下全值了。

我的经验是,当 AI 来回改都解决不掉同一个问题时,别让它继续改,该喊停了,切到先分析、再动手的模式。反复改三次以上还搞不定的 bug,几乎都是因为根因压根没找到,在错误的方向上改得再勤也是白费。

第五步:把你不擅长的活交给它

软件做得差不多,我发给跑团群里几个朋友试。一个常当 DM(地下城主)的哥们儿用完提了个需求:“挺好的,但我跑的是自定义设定,有几个自创种族,你这里能加吗?”

这需求很合理,但对我是个不小的工程量。它意味着要做一个后台管理页,增删改查、表单校验、图片上传、数据持久化全得有。前面那些建角页面我好歹熟,这种带完整后台的东西,要我自己从头做,起码搭进去一周,而且大概率做得很糙。

我跟 Claude 说,我要一个 DM 管理页,能在不改代码的前提下新增种族、职业、背景,数据格式得跟现有的 hardcoded 数据完全一致,这样玩家的建角流程一行代码都不用动,就能直接用上新加的内容。

它反问了我几句:数据存哪,本地还是服务器?图片怎么处理?要不要权限控制?这几个问题问得挺到位,有两个是我压根没想到的。

我一一答了,它给出方案:Node.js 起一个本地服务,数据用 JSON 文件存,前端管理页直接调接口,新增的数据格式和原有 hardcoded 数据严格对齐,所以建角那边一个字都不用改。我说行,再补上对 UI 的要求,它就开写了。值得一提的是,它不只是把代码写出来——装依赖、起本地服务、跑起来验证,这些命令它能自己在终端里敲,我基本只需要看着结果说“行”或者“这里不对”。

整个管理功能,从我提需求到第一版跑通,不到两小时。我那哥们儿当晚就把他的自创种族录进去了,然后用我的软件建了个角色,截图发群里。那一刻挺奇妙的——我做的东西,真的在解决另一个人的真实问题了,而这速度,我一个人无论如何也达不到。

让它横跨数据层和展示层去查证据,而不是凭感觉乱改

两周之后,我手里多了什么

22 次提交,从零到一款能用的 DND 建角软件。

它现在能做到:引导新人走完完整的十步建角流程,每一步只需要做一个决定;中文化了 DND 2024 全部核心种族、职业、背景数据,新人不用再啃英文规则书;能力值调整值、AC、HP、熟练加值全自动算好,从根上杜绝了小张那种填错位的事;法师有专属法术书界面,可以翻页查阅已知法术;DM 能通过管理页自行新增种族、职业、背景,不用改一行代码;最终生成一张完整角色卡,截图就能保存,直接发给 DM。

 

 

 

从选职业、选背景、分配能力值,到选法术、定生命值,最后生成一张完整角色卡
回头看最初那个痛点,其实被解掉了大半。建一个一级角色,从半小时压到了几分钟,而且基本不会出错——该有的特性它都替你记着,该算的数它都替你算了。新人要做的,只剩下“我想玩个什么样的角色”这一个真正属于他的决定。

不够好的地方也有:数据覆盖还不全,目前只到核心手册,扩展模组里的东西还没补;没有账号系统,数据存在本地,换台设备就得重来;移动端适配还有些细节没打磨。

但对一个两周的个人项目来说,这早超出我原本的预期了。

这件事真正教会我的

不是“AI 能帮你写代码”,这谁都知道。

我后来想明白的是,你对一件事懂得越深,AI 能帮你做的就越多。我懂 DND 的规则,所以我说得清数据结构要存什么、边界在哪、哪段逻辑不合规、矮人那条豁免优势该挂在哪一层。这些判断没有一个是 AI 替我做的,它做的只是把我的判断翻译成代码,而且比我自己写快得多。反过来,一个对 DND 一无所知的人,直接丢给 AI 一句“做个 DND 建角软件”,它会还你一堆看着像样、一推就倒的东西。能跑,但规则全是错的,他自己还看不出错在哪。

但让我感触最深的,其实是另一层。

你想想,DND 建角这个需求,真实存在,而且不止我一个人需要。可它为什么一直没有一个好用的中文工具?不是技术上做不出来,而是这事太“小”了——它的用户盘子撑不起一个团队专门去开发。真正精通前后端、什么都能写的工程师,要么在做更大的项目,要么也犯不上为这么个小众需求花一周时间。于是这类需求就一直悬在那儿,谁都看得见,谁都不去做。

而最想做、也最知道该怎么做对的人,往往恰恰是被卡在代码这一关的那群人。一个跑了十年团的资深 DM,他比任何工程师都清楚这软件该长什么样、哪条规则不能错,但他可能连 Vue 是什么都不知道,这道门槛就把他挡在了外面。

vibe coding 真正动人的地方,就在这儿。它没有把工程师替换掉,它是把那群“懂行,但苦于代码略弱”的人,头一回放进了开发这件事里。你深耕的那个领域、你脑子里那些别人没有的判断,以前因为不会写代码,只能停留在“要是有个软件就好了”的念想里;现在它们能落地了。我这两周做的,本质上就是把我对 DND 的理解,借着 AI,变成了一个真的能用的东西。

我以前总觉得做一个完整的“软件”是另一个量级的事,是属于“产品团队”的事,不是我一个写业务页面的前端能碰的。这两周改变了我这个看法。门槛没有消失,但它挪了位置——从“你得把代码写得多好”,变成了“你得真的懂你要解决的那件事,并且对它足够较真”。

写给想试试的人

Claude Code 目前需要订阅 Claude Pro,或者按 API 用量付费,在终端里运行,Mac 和 Windows 都支持。如果你用 VS Code,有配套插件,体验会更好。

门槛不算高,会用终端,有一点点编程基础就行。不必是全栈,甚至不必太懂后端,能看懂代码,会查资料去分析,且有创意这就足够了

剩下你真正需要的,其实是对某件事有点执念。

我就是想让小张们建角时别再把卡划得乱七八糟,正是这点执念撑着我熬过了翻页崩溃的第五次、撑着我走完了两周,也让我清楚每个功能做到什么程度才算“对”。这份判断力 AI 给不了你,但有了它,AI 能陪你走挺远——远到你自己都有点吃惊。

:Claude Code 怎么装、怎么上手

说点实在的,给真想动手试的人。下面这些信息会随官方更新而变,以 Anthropic 官方文档为准,这里只给个大概的路子。

先说账号。Claude Code 这个工具本身免费,但要用得有个付费账号撑着,可以是 Claude Pro(每月 20 美元,已包含 Claude Code 额度)、Claude Max,或者 Anthropic Console 的 API 充值(按 token 用量计费)。免费的 Claude.ai 账号用不了。一般个人开发,Pro 订阅就够折腾很久了。

再说环境。它跑在终端里,macOS、Linux 都能直接用;Windows 目前要走 WSL(也就是在 Windows 里开一个 Linux 子系统),不能裸装在原生 Windows 上,这点要注意。机器配置不挑,4G 内存起步就行,因为所有计算都在 Anthropic 的服务器上跑,你本地只是个发请求的客户端,但得联网。

装的方式有两种。官方现在推荐的是原生安装器,一条命令、不用先装 Node.js,还能后台自动更新:

# macOS / Linux,一行装好(具体命令以官网为准)curl -fsSL https://claude.ai/install.sh | bash

如果你本来就吃 Node 这套,或者想锁定某个版本,也可以走 npm(需要 Node.js 18 以上):

npm install -g @anthropic-ai/claude-code

装完别用 sudo 去装全局包,容易留下一堆权限的坑;真遇到权限报错,正经做法是改用 nvm 把 Node 装进自己的用户目录。

装好之后,在你的项目目录里敲一句 claude就进去了,第一次会让你登录(浏览器里用 Anthropic 账号授权一下)。然后你就可以像我前面那样,直接跟它讲你要做什么。如果你平时在 VS Code 里写代码,装个配套插件,体验会顺手不少。

剩下的就是前面整篇讲的那些事了:先讲清业务再要代码、让它对齐已有风格、遇到 bug 让它先查证据、卡住了就喊停换分析模式。工具就这么点,真正决定上限的,还是你对自己要做的那件事懂得有多深。

项目地址

项目还在迭代,核心建角流程已经能用,支持 DND 2024 中文规则,DM 可以通过管理页自定义内容。如果你是 DND 玩家,欢迎试用,也欢迎告诉我哪里还不够好。

在线体验:http://47.120.19.14:8088

源码(github):https://github.com/zaz-nlu/DND-create/tree/master

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-06 11:45:16 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/713850.html
  2. 运行时间 : 0.118325s [ 吞吐率:8.45req/s ] 内存消耗:4,717.71kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=d9f003567a16899564c1a758a2053697
  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.000423s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000547s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000251s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000274s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000517s ]
  6. SELECT * FROM `set` [ RunTime:0.001008s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000651s ]
  8. SELECT * FROM `article` WHERE `id` = 713850 LIMIT 1 [ RunTime:0.003509s ]
  9. UPDATE `article` SET `lasttime` = 1780717517 WHERE `id` = 713850 [ RunTime:0.005029s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000269s ]
  11. SELECT * FROM `article` WHERE `id` < 713850 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000485s ]
  12. SELECT * FROM `article` WHERE `id` > 713850 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000362s ]
  13. SELECT * FROM `article` WHERE `id` < 713850 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000774s ]
  14. SELECT * FROM `article` WHERE `id` < 713850 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008390s ]
  15. SELECT * FROM `article` WHERE `id` < 713850 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001447s ]
0.120108s