乐于分享
好东西不私藏

Excel数据自动生成海报· 小白自动化

Excel数据自动生成海报· 小白自动化

办公自动化 · 新手复刻

Excel 丢进群,汇总海报自动回

Node.js × Git × Kimi Code × 飞书

· 不会写代码也能搭机器人

· 四站走完从环境到上线

· 发 Excel 自动返回汇总海报

· 聊天开发法可复制

11 PARTS

PART 0101 这篇文章,先带你认清"复刻"这件事认清全貌
PART 02先看一眼:这个机器人到底能帮你做什么预览效果
PART 03路线图:四站走下来,机器人就上线了四站路线
PART 04第一站:先把这几个基础工具装好安装环境
PART 05第 2 站:建文件夹,打开 AI,把需求"聊"出来聊出需求
PART 06第 3 站:在飞书后台"造"出机器人配置飞书
PART 07第 4 站:启动机器人、进群测试、再让 AI 继续改测试迭代
PART 08日常使用:化验员发文件,你收海报日常用法
PART 09出问题了这样排查故障排查
PART 10附录 1:项目里的文件,各自管哪一块文件地图
PART 11这套"聊天开发法",换个功能也能照着用方法复用

化验员每天翻 Excel 看数据,管理者想一眼掌握当日结果却无处下手——这是大多数实验室的日常。

其实不用写一行代码:本教程是系列第 1 篇,先帮你建立整体印象,后面再用 Kimi Code 把 Excel 丢进群、机器人自动回汇总海报这件事一步步搭出来。

封面 · 2.35:1

01

PART

01 这篇文章,先带你认清“复刻”这件事

这 11 节教程要带你从零复刻一个化验数据飞书汇总机器人。名字听起来长,但拆开看就两点:一边是化验数据,另一边是飞书里的汇总机器人。它的作用,就是把化验数据汇总之后,自动推送到飞书里。

你不需要会写代码。整个过程中,你的角色是“提想法、答问题、点鼠标、看效果”——真正写代码这件事,全部交给 Kimi Code(一个 AI 编程工具)来完成。

!提醒:不用写代码,不等于完全不用动脑。你要把需求描述清楚,还要会判断 AI 生成的结果对不对。

本文是 11 个部分中的第 1 部分,所以不会在这里展开具体操作,而是先把“你要做什么、需要准备什么”讲清楚,给你一个整体印象。后面的部分再一步一步带你动手。

02

PART

先看一眼:这个机器人到底能帮你做什么

这一节我们先不展开技术细节,先让你看看“做完以后用起来是什么感觉”。只有先知道它长什么样、解决了什么问题,后面动手时才不会迷路。

以前的做法是这样的:化验员把检测数据一项项填进 Excel,想看今天做了什么、结果怎么样,只能自己打开表格,一行一行翻、一张一张找。

现在变成这样了:化验员只需要把 Excel 文件往飞书群里一发,机器人立刻读取文件,把当天和新增的检测明细做成一张好看的长图(海报)自动发回群里。

这张海报看起来并不复杂,但已经把关键信息都亮出来了:

!它不是去后台文件夹里定时抓数据,而是靠“往群里发 Excel”这个动作触发;发一次,它就汇总一次,只统计当天和新增的内容。

说白了,它把一个原本需要人打开表格、逐行查看的活儿,变成“发文件 → 等海报”这两步。后面的章节,我们就从 0 开始教你把它搭出来。

03

PART

路线图:四站走下来,机器人就上线了

这一节先不敲代码,也不点飞书后台,咱们把整趟路程在地图上画一遍。知道自己在哪一站、下一站干什么,后面才不会迷路。

做这件事一共分四站。前面两站主要在你的电脑上完成:装软件、建文件夹、把需求“聊”给 AI;第三站进到飞书后台创建机器人;最后一站启动它、发消息测试,哪里不顺再让 AI 改。

干什么
谁来干
大概多久
第 1 站
装三个软件(Node.js / Git / Kimi Code)
20 分钟
第 2 站
建文件夹,打开 AI,把需求“聊”出来
你 + AI
30 分钟
第 3 站
在飞书后台造机器人(AI 会告诉你点哪里)
20 分钟
第 4 站
启动、测试、哪里不满意就让 AI 改
你 + AI
随缘

先认识一下第一站要装的三个工具:

• Node.js:让 JavaScript 代码能在电脑本地运行的环境,可以理解成机器人的“发动机”。

• Git:代码版本管理工具,后面从网上下载项目代码、更新代码都得靠它。

• Kimi Code:一个可以写代码、改代码的 AI 助手,装好后它会像结对编程的同事一样坐在你旁边。

!这四站最好按顺序走,别跳过。前面软件没装好,后面打开 AI 聊需求时容易报一堆环境错误,反而更费时间。

时间都是估算。如果你之前装过 Node.js 或 Git,第一站可能 5 分钟就结束;如果你第一次接触飞书后台,第三站可能需要多摸索一会儿。第四站的“随缘”不是开玩笑——机器人第一次启动后,通常都会遇到点小毛病,改一两条配置、再测一轮,这个过程可长可短,心态上预留半小时到一小时比较稳妥。

从这里开始,我们将进入第一站:安装软件。

04

PART

第一站:先把这几个基础工具装好

这一站的任务很简单:把后面机器人运行必须用到的几个软件装上。别嫌麻烦,就跟做菜先备菜一样,基础工具不到位,后面报错更耽误事。

1.1 装 Node.js:给机器人准备"发动机"

这一步是给电脑装上 Node.js。它相当于机器人的发动机,后面 Kimi Code 跑起来、以及各种脚本执行,都靠它。

Node.js 官网打开慢的话,下面两个办法任选:

方法一:官网直装

1

打开 [nodejs.org](https://nodejs.org),点页面最大的绿色按钮下载 LTS 版。

!LTS 是"长期支持版"的意思,比最新测试版更稳定,新手就选它。

方法二:国内镜像

如果官网打不开或速度太慢,用下面两个国内镜像,找文件名带 `LTS` 的最新版:

• Mac 选 `arm64.pkg`(苹果自研芯片,如 M 系列)或 `x64.pkg`(Intel 芯片)

• Windows 选 `x64.msi`

PROMPT

淘宝镜像:https://registry.npmmirror.com/binary.html?path=node/华为云镜像:https://mirrors.huaweicloud.com/nodejs/

2

双击下载好的安装包,一路点"继续 / 同意",默认设置装完即可。

!Mac 用户注意:如果用的是 M 系列芯片,不要选成 `x64.pkg`,否则后续跑起来可能变慢或报错。

1.2 装 Git:这是 Kimi Code 运行的依赖

Node.js 装好后,再来装 Git。Git 本来是程序员做版本管理的工具,这里不需要你深入用,只是 Kimi Code 运行时需要它。

Windows 用户

Windows 系统必须手动安装。复制下面这个网址,直接贴到浏览器地址栏回车,就会开始下载:

PROMPT

https://registry.npmmirror.com/-/binary/git-for-windows/v2.55.0.windows.5/Git-2.55.0.5-64-bit.exe

!这个链接是给 64 位 Windows 用的。如果你的电脑是 32 位,或者以后想自己找最新版,看下面的方法。

下载完成后双击 exe,一路点"Next"装完即可。

以后想更新版本,按这个步骤找:

1

打开版本列表页:

PROMPT

https://registry.npmmirror.com/binary.html?path=git-for-windows/

2

点页面最下面的最新版本号文件夹。

3

进去后选 `Git-xxx-64-bit.exe` 下载安装。

Mac 用户

Mac 一般系统自带 Git。打开终端,输入:

BASH

git --version

如果回车后有版本号显示,说明已经装好了,不用管。

如果系统提示"未安装 Git"或弹出安装窗口,点"安装",等它自动完成即可。

!终端就是电脑里一个能直接敲命令的黑色/白色小窗口。Mac 打开方式:按 `Command + 空格`,输入"终端",回车。

1.3 装 Kimi Code:接下来真正干活的 AI

前面两个都是"基础设施",现在装主角 Kimi Code。它就是你后面要指挥的 AI 程序员,帮你写代码、改配置。(如果没有kimi code账号,可以用opencode,在opencode.ai官网有方法,这里有免费模型可以使用)今天不作为重点。

打开终端:

• Mac:按 `Command + 空格` → 输入"终端" → 回车

• Windows:开始菜单搜索"PowerShell",打开它

把对应系统的下面这一行完整复制进终端窗口,然后按回车。

Mac 用户用这个:

BASH

curl -fsSL https://code.kimi.com/kimi-code/install.sh | bash

Windows 用户用这个,在 PowerShell 里执行:

POWERSHELL

irm https://code.kimi.com/kimi-code/install.ps1 | iex

!复制命令时一定要注意:竖线 `|` 和它前后的空格都要带上,少一个符号就可能失败。

装完后,在终端输入:

BASH

kimi --version

如果显示了版本号,就说明安装成功。

1.4 装 Chrome:海报渲染用的"画笔"

Chrome 浏览器是给机器人当"画笔"用的。后面如果涉及把数据生成海报图片,就靠它来渲染页面。

如果你的电脑里已经有 Chrome,直接跳过这一步。

如果没有,去下面这个网址安装,国内可以直接打开:

https://www.google.cn/chrome/ 点下载按钮,按提示安装即可。

1.5(可选但推荐)给 npm 换国内源:让后面的安装快一点

npm 是 Node.js 自带的"应用商店",后面 Kimi Code 会自动从上面下载各种零件。默认源在国外,国内访问很慢,甚至失败。

建议在终端执行一次下面这行命令,把下载地址切到国内镜像:

BASH

npm config set registry https://registry.npmmirror.com

执行完没有报错就是成功了。后面 AI 自动安装依赖时,速度会快很多,也少出莫名其妙的网络错误。

!这一步不强制,但强烈建议做。否则后面等 AI 安装零件时,可能会卡很久或者报 timeout。

05

PART

第 2 站:建文件夹,打开 AI,把需求“聊”出来

动手做项目之前,先在电脑上给 AI 划一块工作区。这一步不复杂,却是后面所有代码、配置、测试的落脚点。

2.1 建一个空文件夹,在里面打开 AI

这一节先给项目安个家,再启动命令行版 Kimi,让 AI 进入你的工作目录。

先打开你的“文稿”文件夹,新建一个空文件夹,名字随便取,比如 `jiancehuibao`。这就是项目的老家。

然后打开终端(Mac 上叫“终端”,Windows 上类似 PowerShell / CMD),进入这个文件夹:

BASH

cd ~/Documents/jiancehuibaokimi

• `cd` 是“切换目录”的意思,后面跟的是文件夹路径。

• `kimi` 是启动命令行版 AI 的指令。

!小技巧:输入 `cd ` 加空格后,把文件夹拖进终端窗口,路径会自动填好,不用手打。

第一次运行 `kimi` 时要登录。在终端输入 `/login`,回车,然后按提示在浏览器里完成授权,可以用飞书扫码,也可以用手机号登录你的 Kimi 账号。

看到终端里出现输入框,就说明 AI 已经在这个文件夹里待命了。之后你发的每一句话、它生成的每一份代码,都会落在这个文件夹里,不会乱跑。

2.2 先立两条规矩

这一节是给 AI 定方向。它出厂设定比较热情,经常一次性抛七八个问题,或者放着本机已有的工具不用,非要从网上重新下载。先立两条规矩,后面会省很多麻烦。

把下面这段直接复制发给 AI:

PROMPT

以后请遵守两条规则,并写入全局配置长期生效:1. 向我提问时一次只问一个,我回答了再问下一个。2. 优先使用本机已有的工具,先检查是否已安装,本机没有再去下载。

!为什么要先立这两条规矩?不立第一条,AI 会一次抛一堆问题,你根本答不过来;不立第二条,它可能放着本机现成的软件不用,去网上下载一堆重复的东西,徒增麻烦。

这里的“全局配置”,就是 AI 会记住这两条的设置,下次启动依然有效。

2.3 抛出你的一句话想法

规矩定好后,就可以开口说你要做什么了。这一步只需要一句大白话,先不用管技术细节。

本项目当时发给 AI 的就是下面这句,你可以照抄,也可以改成自己的业务:

PROMPT

我想做一个功能,化验员每日将化验数据上传到飞书,飞书链接到本功能处理后,提取当日检测数据做汇总卡片发到飞书。用 spec 法,用苏格拉底式思维梳理。

• `spec 法`:先把需求写成一份明确的“规格说明书”,再动手写代码。

• `苏格拉底式思维`:像老师一样连续追问,一层层帮你理清楚“到底要做什么”。

2.4 一问一答,把需求聊清楚

一句话只是起点。接下来 AI 会按你刚立的规矩,一次只问一个问题,你照实回答就行。如果不知道怎么答,就回它“不知道,你建议呢”,它一样能继续。

下面把当时真实的问答列出来,方便你提前知道会被问到什么,以及每个回答最终定下了什么设计:

#
AI 问
当时的回答
由此定下来的设计
1
数据传到飞书是什么形式?
Excel 文件
输入 = .xlsx
2
文件怎么到功能手里?
机器人监听群消息接收文件
飞书机器人收群文件
3
表里数据结构什么样?
成品/竞品/微生物几个表,表头固定,每天追加
按表头找日期列、按日期筛行
4
卡片展示什么?
名称、时间、指标全抽出来,目标是不用每天开表
核心价值 = 免开表
5
什么时候发、发到哪?
当下直接处理,发同一个群
实时触发,回发原群
6
跑在哪?用什么写?
先本机,稳定后传服务器;Node.js
长连接模式,搬家不改代码
7
怎么算"当天的数据"?补传呢?
看新增:跟昨天比 + 当天日期结合
口径 = 当天 ∪ 新增
8
明细怎么排版?
不分组,按名字 + 指标平铺
平铺,超长自动拆分
9
要智能体还是机器人?
机器人就够
企业自建应用

!有现成的数据样例(比如一份真实 Excel),最好直接告诉 AI 文件名,让它自己去读表结构,比你口头描述一百句都准。

如果当时没有样例,也可以口头描述,但后面测试时大概率还要补一份。能早就早。

2.5 AI 写代码,你当监工

需求聊完后,AI 会先整理一份 `SPEC.md`,也就是“需求规格文档”。然后它会开始写代码、安装依赖、拿你的样例文件做测试。

中间它要执行系统命令时,会弹出来问你“是否允许”。你只要看一眼,没毛病就点允许。

这一步你基本不用动手,等它说“写完了”即可。下一节再看它产出了什么。

06

PART

第 3 站:在飞书后台"造"出机器人

代码已经跑通了,但机器人还缺一个"飞书身份"。这一步必须在飞书开放平台的网页上手动完成,AI 帮不上忙,也省不掉。

3.1 创建一个企业自建应用

先给机器人办个"户口"。名字随便取,后面还能改。

1

打开 [飞书开放平台](https://open.feishu.cn),用企业账号登录。

2

点 创建企业自建应用,名称可以填"化验数据汇总"之类,自己记得住就行。

3

进入应用主页后,左侧找到 添加应用能力,点进去,把 机器人 能力加上。

3.2 开通权限:机器人的"上岗证"

机器人光进群没用,得让它"看得见消息、发得出消息、读得了文件、传得了图片"。这 4 个权限缺一不可,少一个后面就会卡住。

左侧进入 权限管理,搜索并勾选下面 4 项:

权限代码
大白话解释
`im:message`
能读取群里的消息
`im:message:send_as_bot`
能以机器人身份往群里发消息
`im:resource`
能下载群里收到的 Excel 文件
`im:resource:upload`
能上传图片,汇总后的海报就靠它发出去

!权限一定要 4 个全开。很多人做到后面发现机器人收不到文件或发不了图,回头一查,往往是这里漏打了一个勾。

3.3 开启事件订阅:给机器人装上"耳朵"

权限有了,机器人还得知道"群里有人说话了"。这叫事件订阅。大白话说,就是飞书一有消息,就主动推给机器人。

1

左侧点 事件与回调,再点 事件配置

2

订阅方式 选 使用长连接接收事件。长连接的意思,是机器人主动跟飞书保持一条"专线通话",随叫随到。这个方案最大的好处是:你的电脑在家里挂着就能跑,不用额外买服务器,省钱。

3

点 添加事件,搜索"接收消息",把 接收消息 v2.0 加上。

3.4 发布版本:让配置真正生效

飞书的规矩是:改完配置,必须发布一个新版本才能用。这不是走形式,是每次修改后的必经步骤。

左侧进入 版本管理与发布,点 创建版本,版本号填 `1.0.0`,然后提交发布。

!这是最容易踩的坑。以后只要你动过权限、事件或任何后台配置,都要回来重新创建一个版本并发布,否则新设置不会生效。

3.5 把机器人拉进工作群

机器人上线了,但群里还没它。找到化验员平时发检测表的那个群:

群设置 → 群机器人 → 添加机器人 → 选你刚才创建的应用。

添加成功后,群里会出现一个机器人头像,它才算真正"入职"。

3.6 把 App ID 和 App Secret 填进本地配置

现在需要把机器人的"工号和密码"写进代码能读到的地方。这个操作必须你自己在本地完成,任何人、任何 AI 都不应该看到这组密码。

进入开发者后台,左侧点 凭证与基础信息,里面有两个关键字段:

• App ID:机器人的"工号",可以公开。

• App Secret:机器人的"密码",绝对不能泄露。

!安全提醒:App Secret 就是机器人的密码。不要把它发到 AI 聊天窗口、微信群、飞书群或任何聊天工具里。一旦发出去,会被服务器留存记录;泄露了,别人就能冒充你的机器人发消息、读文件。

请按下面这几步,自己在电脑上操作:

1

打开项目文件夹,找到 `.env` 文件。如果没有,就把 `.env.example` 复制一份,重命名为 `.env`。

2

用文本编辑器打开它。Mac 用户可以右键文件 → 打开方式 → 文本编辑。

3

按下面这个格式填写,然后保存:

PROMPT

APP_ID=cli_开头的那一串APP_SECRET=另一长串CHROME_PATH=/Applications/Google Chrome.app/Contents/MacOS/Google Chrome

最后一行 `CHROME_PATH` 是告诉机器人"画笔(也就是 Chrome 浏览器)放在哪"。Mac 上如果已经安装了 Google Chrome,直接照抄上面这行就行。

!`.env` 文件已经被 `.gitignore` 排除,不会随代码一起传到网上。但如果不小心把 App Secret 泄露出去了,立刻去飞书开发者后台重置 App Secret,再把新值填回 `.env`,旧值就作废了。

07

PART

第 4 站:启动机器人、进群测试、再让 AI 继续改

4.1 启动机器人

机器人搭好了,下一步就是让它真正跑起来。  

打开命令行窗口,进入项目所在的文件夹,运行:

BASH

npm start

`npm start` 是 Node 项目最常用的启动命令,执行后脚本会把机器人服务拉起来。

看到终端里出现 `机器人已启动…`,就说明它已经在工作了。

!终端窗口不能关:这个窗口一关,机器人服务就停了,相当于直接下班。

启动成功之后,就可以进群验证了。

4.2 进群测试

这一步是确认机器人在真实群里能不能干活。建议按下面三条逐项测:

• 往群里发一份检测 Excel —— 机器人应该立刻回一张汇总海报;

• 在群里发 `汇总 昨天` —— 机器人应该回昨天的海报;

• 如果发了消息却没有任何反应,把现象直接告诉 AI,比如复制这一句:"发送了,没有反应"

AI 会根据日志去查原因。  

本项目当时就遇到过权限没开全、事件订阅没配全的情况,AI 看日志后一分钟就定位到了。

!没反应时优先看两点:机器人有没有被拉进群、有没有消息读取权限;飞书后台的「事件订阅」是不是都勾上了。这两处漏配最常见。

4.3 不满意就继续提需求

机器人的海报样式、科学计数显示格式,都不是一次定稿的,而是一步步聊出来的。

你当时和 AI 的对话大概长这样:

你当时说的话
AI 做的
(发一张参考截图)"参考这个美化汇报卡片"
先改成飞书卡片美化版
"不好,渲染成图片试试,能不能达到参考图"
换成 HTML 海报 → 截图发图片
"微生物里含量 10 后面的数据是次方"
把 `3.2X109` 显示成 `3.2×10⁹`
"图片里固定内容在哪里我想手动改"
告诉你文案写在 `src/poster.js` 的哪些位置

!改完样式或文案后,记得说一句"重启",机器人重启才会生效。

整个流程的核心就一句话:你负责挑毛病,AI 负责改。

08

PART

日常使用:化验员发文件,你收海报

化验员:把 Excel 往群里一丢就行

这一节是写给上传数据的人看的。操作越省事,漏传和错传就越少。

化验员的操作和平时在群里发文件完全一样——直接把检测 Excel 发到群里就行。如果发完之后机器人没动静,就 @一下机器人 再发一次,通常就能被识别。

!嫌每次都要 @ 太麻烦?可以让 AI 帮你开通 `im:message.group_msg` 这个群消息读取权限。权限开了之后,不用 @,机器人也能自动读到文件。`im:message.group_msg` 是飞书机器人读取群里普通消息的接口权限,可以理解为“机器人能竖着耳朵听群聊”的开关。


你:坐等海报,也能查历史

这一节是写给看结果的人用的。群里不用多说话,掌握几个关键词就能调出想要的海报。

文件一进群,机器人会自动处理并生成海报,你啥也不用发。如果想主动查历史,就在群里发下面这些口令:

你在群里发
机器人会回
啥也不发
文件进群后,海报自动来
`汇总 昨天` / `汇总 今天`
对应日期的海报
`汇总 2026-08-20`
指定日期的海报
`汇总`
默认出昨天的海报

这些口令都是普通文字消息,直接发在群里就行,不用加标点或特殊格式。


特殊情况:机器人会怎么处理

这一节把日常可能遇到的“幺蛾子”列清楚,省得你以为机器人坏了。

下面是常见场景和机器人的对应做法:

遇到的情况
机器人会怎么做
今天没数据,也没有新文件
回一句“暂无当日或新增检测数据”
补传前几天的数据
自动识别为“新增”,照常上海报
同一天重复发同一个文件
当日数据再报一次(方便你看改过的版本),旧数据不会刷屏
发的不是 Excel
装没看见
数据特别多
自动拆成几张海报,每张 12 条
画海报失败
自动降级成文字卡片,汇报绝不会丢

!注意:补传前几天的文件不会覆盖旧海报,而是作为“新增”再报一次;同一天重复发同一个文件也不会让旧数据刷屏,只会把当天数据再贴一次,方便核对修改后的结果。

!机器人为什么分得清“新数据”和“老数据”?它会把看过的每一行数据记在一个叫 `data/snapshot.json` 的“小本本”里,靠这个文件判断哪些已经报过、哪些是新增的。第一次上传时,它会先记账、只报当天的数据,防止历史数据一次性刷屏。如果你想让它重新认账,直接删掉 `data/snapshot.json`,再重新传一次文件就行。

09

PART

出问题了这样排查

到这一步,机器人已经跑起来了。但只要是程序就会出状况,这一节把常见问题列成一张"病历表",帮你快速定位、少踩坑。遇到异常先别慌,按症状找处方,大部分都能当场解决。

任何不对劲:先把现象告诉 AI

排查机器人最省力的方法,不是你自己硬啃日志,而是把"我看到了什么"直接描述给 AI。AI 会根据你的现象去查日志、追调用链,通常能直接指出根因。

!这是全文首推的排错姿势:遇到任何异常,先让 AI 帮你定位,比盲目搜索快得多。

发文件没反应:四步检查

如果往群里发文件,机器人一点动静都没有,依次检查下面四个地方:

第一,终端窗口是不是被你顺手关了。本地运行时,程序依赖这个窗口活着,窗口一关进程就停。

第二,事件订阅里有没有加"接收消息 v2.0"。没开通这个事件,飞书压根不会把文件消息推给你的机器人。

第三,改完配置后有没有发布新版本。飞书后台很多配置必须点"发布"才会真正生效,只保存不发布等于没改。

第四,发文件时记得 @机器人 试试。有些场景下不 @ 就不会触发机器人响应。

收到文字卡片而不是海报:补一个权限

如果机器人回你的是干巴巴的文字卡片,而不是预想中的图片海报,那大概率是缺少 `im:resource:upload` 这个权限。

`im:resource:upload` 是飞书用来上传图片、文件等媒体资源的接口权限。没有它,机器人就没办法把生成的海报发出来,只能降级用文字卡片应付。

!开通权限后,一定要点"发布新版本",否则权限变更不会生效。

想推倒重来重新记账:删掉快照文件

如果你测试过程中数据搞乱了,想清空记录从头再来,直接删掉 `data/snapshot.json` 这个文件即可。

`snapshot.json` 是机器人用来记住"已经处理到哪儿了"的快照文件。删掉它,相当于把账本归零,机器人下次启动会从最新状态重新识别。

机器人要 24 小时在线:搬到服务器上

本地电脑不能一直开着,想让机器人稳定在线,需要把它部署到服务器上。

具体怎么搬、服务器要准备哪些依赖,README 里已经列好了清单。可以直接把 README 的部署说明交给 AI,让它一步步帮你完成迁移。

10

PART

附录 1:项目里的文件,各自管哪一块

代码跑起来之后,你可能会想:“这些文件到底是干嘛的?改又该动哪个?”这一节就把项目里的文件逐个说清楚,方便你后面排查问题或者自己加功能时找对人、进对门。

文件
大白话
`使用教程.md`
使用教程,也就是你现在正在看的这篇文章。
`SPEC.md`
需求清单:做这个机器人时聊出来的决定、拍板的功能点都记在这里。
`README.md`
给技术人员看的说明:部署、依赖、配置这些偏开发的内容。
`src/index.js`
机器人本体(入口程序):负责收消息、下载文件、调度生成海报。
`src/excel.js`
读 Excel 的核心逻辑:定位表头,挑出当天和新增的数据行。
`src/poster.js`
海报模板:标题、颜色、字体、布局,所有视觉样式都在这里。
`src/format.js`
格式转换:把 Excel 里常见的 `3.2X109` 修成更规范的上标形式 `3.2×10⁹`。
`src/card.js`
备用文字卡片:海报生成失败时,机器人会退而求其次,发一段文字版汇总。
`src/snapshot.js`
记账小本本:记下已经处理过的文件,防止重复发送同一份汇总。
`data/`
自动生成的数据目录:运行记录和最近收到的文件备份都在这里。

!提醒:`data/` 文件夹里的运行记录,以及 `src/snapshot.js` 这个“记账小本本”,都是用来防止机器人重复处理同一份文件的。别手痒去删除或乱改,否则机器人可能会把已经汇总过的内容再发一遍。

认识了这些文件的分工,后面改配置、换海报样式或者查重复问题时,就不会进错门了。

11

PART

这套“聊天开发法”,换个功能也能照着用

回头来看,这个机器人从一句话想法到真正能用,其实就干了几件事。把它抽出来,就是一套可以复用的“聊天开发法”——不用先学会写代码,只要会提问、会验收,就能让 AI 陪你一步步把工具做出来。

下面我把整个过程拆成五步,再补上几个当初差点返工的设计点。你下次想做“每天自动汇总销售表”“群里发票自动归档”,或者其他类似的小工具,都可以直接套。

第一步,先把环境装上。

Node.js(让程序跑起来的环境)、Git(管代码版本的工具)、Kimi Code(AI 编程助手)准备好,后面才有地方写代码、有地方问问题。

第二步,和 AI 立规矩。

一次只说一件事;能先用本机工具解决的,就先不折腾服务器或第三方。规矩越早立清楚,后面返工越少。

第三步,把一句话想法聊成 SPEC.md。

不要你一次性说完,让 AI 按顺序一个个问:这个功能是什么?输入从哪来?怎么处理?输出到哪?边界情况怎么算?坏了怎么办?  

按这个顺序回答完,AI 会帮你整理成 `SPEC.md`,也就是项目的“需求说明书”。往后谁看都清楚,对需求也不会跑偏。

!这里的关键是“让 AI 按顺序问”,而不是你一口气全倒出来。顺序对了,SPEC 才不容易漏项。

第四步,AI 写码,你拿真实数据验收。

它写完,你就用真实表格跑一遍;哪里不对直接指出来,让它改,改到满意为止。别只看代码“长得对不对”,要跑起来看结果对不对。

第五步,边做边补 SPEC。

实现过程中一定会冒出一些当初没想到的坑,比如日期时区差了一天、文件里有两行表头、首次运行刷屏。这些不是 bug,是新的规则,发现了就回头补进 `SPEC.md`,下一次就不会再踩。


还有几个设计点,如果最开始不问清楚,后面准会返工:

• “当天 ∪ 新增”不是万能的。

  只按“当天日期”筛选,补传的历史数据永远报不出来。如果你的业务里经常有补录、补传,这个规则得单独处理,不然报表会一直缺数。

!别以为“按当天筛”就能覆盖所有该报的数据。补传的历史记录,必须另外建规则才能被识别。

• 首跑一定要防刷屏。

  第一次上传的文件如果带了前几个月的历史数据,不做“基线记账”,机器人会一次性把几百条记录都发出去,群聊或通知直接炸掉。

!首次运行时,一定要先记一笔“哪些已经报过了”,再决定新消息发什么。没基线,通知必刷屏。

• 本机跑只能用长连接。

  因为是在自己电脑上运行,没有公网 IP,也没法被外部主动访问,所以只能用“长连接”这种让机器人主动向平台保持连接的方式。换到服务器才能考虑 webhook。

!“长连接”先解释一下:你可以理解为机器人一直连着服务器,平台有消息就主动推给它;不是它坐在家里等别人来敲门。

• 用机器人,别用智能体。

  这个场景里的逻辑是死的:表格怎么读、怎么算、怎么发,规则固定。用“智能体”只会让流程又贵又慢,性价比很低。


把这些流程套到别的功能上,做法一模一样:建个文件夹当项目目录 → 打开 Kimi → 先立规矩 → 把需求聊到 SPEC → 验收迭代到能用。

你下次想做“每天自动汇总销售表”“群里发票自动归档”,按这个顺序来就行。

创作说明:本文由作者整理创作,AI 辅助完成资料检索与排版,内容已由作者复核。

我是学乐,分享能落地的方法和实践。

THANKS FOR READING

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 22:14:13 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/956481.html
  2. 运行时间 : 0.288748s [ 吞吐率:3.46req/s ] 内存消耗:4,798.06kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=f086737522fa4d2043bc9376b848b88a
  1. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/composer/autoload_static.php ( 6.05 KB )
  7. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/ralouphie/getallheaders/src/getallheaders.php ( 1.60 KB )
  10. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  11. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  12. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  13. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  14. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  15. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  16. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  17. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  18. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  19. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions_include.php ( 0.16 KB )
  21. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/guzzlehttp/guzzle/src/functions.php ( 5.54 KB )
  22. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  23. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  24. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  25. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/provider.php ( 0.19 KB )
  26. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  27. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  28. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  29. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/common.php ( 0.03 KB )
  30. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  32. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/alipay.php ( 3.59 KB )
  33. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  34. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/app.php ( 0.95 KB )
  35. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cache.php ( 0.78 KB )
  36. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/console.php ( 0.23 KB )
  37. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/cookie.php ( 0.56 KB )
  38. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/database.php ( 2.48 KB )
  39. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/filesystem.php ( 0.61 KB )
  40. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/lang.php ( 0.91 KB )
  41. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/log.php ( 1.35 KB )
  42. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/middleware.php ( 0.19 KB )
  43. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/route.php ( 1.89 KB )
  44. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/session.php ( 0.57 KB )
  45. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/trace.php ( 0.34 KB )
  46. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/config/view.php ( 0.82 KB )
  47. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/event.php ( 0.25 KB )
  48. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  49. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/service.php ( 0.13 KB )
  50. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/AppService.php ( 0.26 KB )
  51. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  52. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  53. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  54. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  55. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  56. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/services.php ( 0.14 KB )
  57. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  58. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  59. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  60. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  61. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  62. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  63. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  64. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  65. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  66. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  67. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  68. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  69. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  70. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  71. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  72. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  73. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  74. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  75. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  76. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  77. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  78. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  79. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  80. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  81. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  82. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  83. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  84. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  85. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  86. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  87. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/Request.php ( 0.09 KB )
  88. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  89. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/middleware.php ( 0.25 KB )
  90. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  91. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  92. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  93. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  94. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  95. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  96. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  97. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  98. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  99. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  100. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  101. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  102. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  103. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/route/app.php ( 4.22 KB )
  104. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  105. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  106. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Index.php ( 10.56 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001056s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001380s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000694s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000677s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001196s ]
  6. SELECT * FROM `set` [ RunTime:0.000574s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001422s ]
  8. SELECT * FROM `article` WHERE `id` = 956481 LIMIT 1 [ RunTime:0.002035s ]
  9. UPDATE `article` SET `lasttime` = 1787321653 WHERE `id` = 956481 [ RunTime:0.023191s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000721s ]
  11. SELECT * FROM `article` WHERE `id` < 956481 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001391s ]
  12. SELECT * FROM `article` WHERE `id` > 956481 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001094s ]
  13. SELECT * FROM `article` WHERE `id` < 956481 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001788s ]
  14. SELECT * FROM `article` WHERE `id` < 956481 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.023741s ]
  15. SELECT * FROM `article` WHERE `id` < 956481 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.035779s ]
0.292552s