乐于分享
好东西不私藏

用WorkBuddy做AI工具站加餐03:做工具提交入口

用WorkBuddy做AI工具站加餐03:做工具提交入口

大家好,我是宇哥,专注AI编程、智能体,解决小白AI编程问题。

前两篇加餐,我们已经做了两件事:

  • 加餐 01:做了一个本地转化事件看板;
  • 加餐 02:接了一个用户反馈表,但反馈只进入人工审核,不直接改工具库。

这一篇继续往前走:给 AI 工具站做一个工具提交入口

注意,今天不是做一个“别人一提交就自动上架”的入口。那样风险很高:官网可能填错,价格可能过期,分类可能不准,甚至会混进低质量工具。

我们这篇只做一个安全版本:

候选工具先提交到本地样例数据,再人工审核,通过后下一篇再同步到飞书表格审核区。

这篇你能做出什么

跟着做完,你会得到 5 类文件:

文件 作用
data/tool-submission-fields.json 定义工具提交表单需要哪些字段
public/tool-submit.html 本地可打开的工具提交入口页面
data/sample-tool-submissions.jsonl 5 条本地工具候选样例
reports/tool-submission-review.md 人工审核报告和边界说明
scripts/check-tool-submission.py 一键检查字段、样例、页面和合规边界

本篇完成后,下一篇可以直接复用 sample-tool-submissions.jsonl 里审核通过的候选,继续做“同步到飞书表格审核区”。

适合谁,不适合谁

适合:

  • 已经跟完 AI 工具站主线,想让站点有用户参与入口的人;
  • 想学习“AI 编程 + 人工审核边界”的小白;
  • 想把工具提交、反馈、审核这些运营动作做成可维护流程的人。

不适合:

  • 想让用户提交后立刻自动上架的人;
  • 想跳过审核,直接批量抓取或搬运工具数据的人;
  • 想采集登录后、付费墙、个人隐私或网站明确禁止采集内容的人。

WorkBuddy 在这里适合帮我们生成字段、页面和检查脚本;但它不应该替我们做最终判断。工具是否可信、价格是否准确、分类是否合适,仍然要人工复核。

准备环境

这篇继续使用本地文件,不需要数据库,也不需要后端。

你需要准备:

  • Python 3;
  • 一个可以打开本地 HTML 的浏览器;
  • 上一篇生成的反馈表文件;
  • WorkBuddy,或者你常用的 AI 编程助手。

本篇 demo 路径:

tutorials/workbuddy-tool-directory-extras/demo/extra-03/

上一篇输入文件:

tutorials/workbuddy-tool-directory-extras/demo/extra-02/data/feedback-fields.json
tutorials/workbuddy-tool-directory-extras/demo/extra-02/public/feedback-form.html
tutorials/workbuddy-tool-directory-extras/demo/extra-02/scripts/check-feedback-form.py

如果你没有跟上一篇,也可以先新建目录,再按本文代码直接生成本篇文件。

先看最终效果

最终页面是一个本地工具提交入口,包含 7 个字段:

  1. 工具名称;
  2. 工具官网;
  3. 建议分类;
  4. 适合场景;
  5. 价格线索;
  6. 补充说明;
  7. 确认人工审核。

核心边界只有一句话:

工具候选只能先进入人工审核,不能自动覆盖正式工具库。

第一步|新建本篇目录

在工作区里新建这一篇的 demo 目录:

cd /root/workspace/wechat-articles
mkdir -p tutorials/workbuddy-tool-directory-extras/demo/extra-03/{data,public,reports,scripts,prompts}

如果你不是在我的服务器上操作,把 /root/workspace/wechat-articles 换成你自己的项目根目录即可。

验收点:看到下面这些目录就算成功:

data/
public/
reports/
scripts/
prompts/

第二步|把任务交给 WorkBuddy

打开 WorkBuddy,新建一个任务,把下面这段提示词复制进去:

你是我的 AI 编程助手。请在 WorkBuddy AI 工具站加餐项目里做一个“工具提交入口”本地样例,承接上一篇用户反馈表。

输入参考:
- tutorials/workbuddy-tool-directory-extras/demo/extra-02/data/feedback-fields.json
- tutorials/workbuddy-tool-directory-extras/demo/extra-02/public/feedback-form.html
- tutorials/workbuddy-tool-directory-extras/demo/extra-02/scripts/check-feedback-form.py

请输出:
1. data/tool-submission-fields.json:工具提交字段定义,包含字段名、类型、必填、边界和审核状态。
2. public/tool-submit.html:一个可以本地打开的工具提交入口页面。
3. data/sample-tool-submissions.jsonl:5 条本地工具候选样例,每条包含 review_status。
4. reports/tool-submission-review.md:人工审核报告,说明哪些信息必须复核。
5. scripts/check-tool-submission.py:检查字段、页面、样例数据、报告和合规边界。

限制:
- 只做本地样例,不接真实后端。
- 不收集个人联系方式。
- 工具候选只能先进入人工审核,不能自动写回正式工具库。
- 不写真实密钥,不写外部引导内容。

这段提示词的重点不是“生成页面”,而是要求 WorkBuddy 同时生成:字段、页面、样例、报告、检查脚本。

如果你只让它生成 HTML,后面很容易变成一个漂亮但不可维护的表单。

验收点:WorkBuddy 的输出里应该明确出现这 5 个文件名,而不是只给你一段页面代码。

第三步|生成字段定义

工具提交入口最重要的是字段设计。复制下面内容,保存为:

tutorials/workbuddy-tool-directory-extras/demo/extra-03/data/tool-submission-fields.json
{
  "form_id": "workbuddy-tool-submission-local-v1",
  "title": "WorkBuddy AI 工具站工具提交入口",
  "source_page": "public/tool-submit.html",
  "storage": "local_demo_only",
  "privacy_boundary": "只用于本地样例,不接真实后端,不收集个人联系方式,不自动写回正式工具库。",
  "reuse_from_extra_02": {
    "feedback_form_id": "workbuddy-tool-feedback-local-v1",
    "review_statuses": ["new", "needs_check", "accepted", "rejected"]
  },
  "fields": [
    {"name": "tool_name", "label": "工具名称", "type": "text", "required": true, "min_length": 2, "max_length": 60},
    {"name": "tool_url", "label": "工具官网", "type": "url", "required": true, "must_start_with": ["https://"]},
    {"name": "category", "label": "建议分类", "type": "select", "required": true, "options": ["AI 编程", "浏览器自动化", "内容生产", "知识库", "效率工具"]},
    {"name": "use_case", "label": "适合场景", "type": "textarea", "required": true, "min_length": 12, "max_length": 240},
    {"name": "pricing_hint", "label": "价格线索", "type": "select", "required": true, "options": ["免费", "免费试用", "付费订阅", "开源自部署", "待人工复核"]},
    {"name": "submitter_note", "label": "补充说明", "type": "textarea", "required": false, "max_length": 240},
    {"name": "confirm_review", "label": "我知道提交后需要人工审核", "type": "boolean", "required": true, "default": false}
  ],
  "review_statuses": ["new", "needs_check", "accepted", "rejected"],
  "next_step": "extra-04 可以把 accepted 的工具候选同步到飞书表格审核区。"
}

这里我特意把 pricing_hint 命名为“价格线索”,不是“价格结论”。

因为工具价格很容易变,用户提交的信息只能当线索。正式入库前,必须人工复核。

验收点:这个 JSON 里应该有 7 个字段,并且 storage 必须是 local_demo_only

第四步|生成 5 条本地工具候选

新建文件:

tutorials/workbuddy-tool-directory-extras/demo/extra-03/data/sample-tool-submissions.jsonl

每一行是一条候选工具,注意是 JSONL,不是普通 JSON 数组:

{"id":"sub-001","tool_name":"Stagehand","tool_url":"https://www.stagehand.dev/","category":"浏览器自动化","use_case":"适合做浏览器 Agent 的网页操作和页面理解示例。","pricing_hint":"开源自部署","submitter_note":"需要人工确认当前开源协议和文档入口。","confirm_review":true,"review_status":"needs_check","source":"local_demo_only"}
{"id":"sub-002","tool_name":"LiteLLM","tool_url":"https://www.litellm.ai/","category":"AI 编程","use_case":"适合把多个模型 API 统一成一个调用入口,方便工具站后续做模型适配。","pricing_hint":"开源自部署","submitter_note":"需要复核是否归到开发工具分类。","confirm_review":true,"review_status":"new","source":"local_demo_only"}
{"id":"sub-003","tool_name":"Firecrawl","tool_url":"https://www.firecrawl.dev/","category":"内容生产","use_case":"适合把网页整理成 Markdown,给资料库或内容助手使用。","pricing_hint":"免费试用","submitter_note":"需要人工复核免费额度是否变化。","confirm_review":true,"review_status":"needs_check","source":"local_demo_only"}
{"id":"sub-004","tool_name":"Open WebUI","tool_url":"https://openwebui.com/","category":"知识库","use_case":"适合做本地模型聊天和知识库入口,适合后续知识库季复用。","pricing_hint":"开源自部署","submitter_note":"需要确认部署门槛。","confirm_review":true,"review_status":"new","source":"local_demo_only"}
{"id":"sub-005","tool_name":"Excalidraw","tool_url":"https://excalidraw.com/","category":"效率工具","use_case":"适合快速画产品草图、流程图和教程结构图。","pricing_hint":"免费","submitter_note":"这条可作为非 AI 但高频效率工具候选。","confirm_review":true,"review_status":"accepted","source":"local_demo_only"}

这里有 3 个小设计:

  • 所有链接都用 https://
  • 每条都有 review_status
  • 只有 1 条是 accepted,方便下一篇演示“只同步审核通过项”。

验收点:这个文件应该有 5 行,每一行都能被 Python 当成 JSON 解析。

第五步|生成本地提交页面

新建文件:

tutorials/workbuddy-tool-directory-extras/demo/extra-03/public/tool-submit.html

为了文章不太长,这里只放页面骨架。你可以让 WorkBuddy 根据字段 JSON 生成更完整的样式。

<!doctype html>
<html lang="zh-CN">
<head>
  <meta charset="utf-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1" />
  <title>WorkBuddy AI 工具站工具提交入口</title>
</head>
<body>
  <h1>WorkBuddy AI 工具站工具提交入口</h1>
  <p>本地样例:候选工具先进入人工审核,不自动写回正式工具库。</p>

  <form>
    <label>工具名称 *</label>
    <input placeholder="例如 Stagehand" />

    <label>工具官网 *</label>
    <input placeholder="https://example.com" />

    <label>建议分类 *</label>
    <select>
      <option>AI 编程</option>
      <option>浏览器自动化</option>
      <option>内容生产</option>
      <option>知识库</option>
      <option>效率工具</option>
    </select>

    <label>适合场景 *</label>
    <textarea placeholder="用一句话说清它能帮读者解决什么问题。"></textarea>

    <label>价格线索 *</label>
    <select>
      <option>免费</option>
      <option>免费试用</option>
      <option>付费订阅</option>
      <option>开源自部署</option>
      <option>待人工复核</option>
    </select>

    <label>补充说明</label>
    <textarea placeholder="填写需要人工复核的点。"></textarea>

    <label>
      <input type="checkbox" /> 我知道提交后需要人工审核,不会直接进入正式工具库
    </label>

    <button type="button">生成本地候选提交</button>
  </form>
</body>
</html>

验收点:浏览器打开这个 HTML,应该能看到完整表单,并且页面里明确写着“人工审核”。

第六步|写人工审核报告

新建文件:

tutorials/workbuddy-tool-directory-extras/demo/extra-03/reports/tool-submission-review.md

核心内容可以先这样写:

# WorkBuddy 工具提交入口审核报告

## 本地样例数据

- 字段定义:data/tool-submission-fields.json
- 提交入口:public/tool-submit.html
- 样例候选:data/sample-tool-submissions.jsonl
- 样例候选条数:5
- 待复核:2
- 可进入下一步审核区:1

## 人工审核流程

1. 先打开 tool_url,确认官网能访问且不是明显错误页面。
2. 再检查 category 和 use_
case 是否匹配,不匹配就标记 needs_check。
3. 对 pricing_
hint 只当线索,不当最终价格结论。
4. 只有 review_status = accepted 的候选,才允许进入下一篇飞书表格审核区。
5. 即使进入审核区,也仍然不能自动覆盖正式工具库。

## 边界

- 本篇只做本地样例,不接真实后端。
- 不保存个人联系方式。
- 不自动更新正式工具数据。
- 官网、价格、分类和适用场景都需要人工复核。

验收点:报告里必须同时出现“待复核”“可进入下一步审核区”和“不自动更新正式工具数据”。

第七步|写检查脚本

新建文件:

tutorials/workbuddy-tool-directory-extras/demo/extra-03/scripts/check-tool-submission.py

检查脚本至少要验证 6 件事:

from pathlib import Path
import json
import sys

ROOT = Path('/root/workspace/wechat-articles')
DEMO = ROOT / 'tutorials/workbuddy-tool-directory-extras/demo/extra-03'

fields = json.loads((DEMO / 'data/tool-submission-fields.json').read_text(encoding='utf-8'))
samples = [json.loads(line) for line in (DEMO / 'data/sample-tool-submissions.jsonl').read_text(encoding='utf-8').splitlines() if line.strip()]
html = (DEMO / 'public/tool-submit.html').read_text(encoding='utf-8')
report = (DEMO / 'reports/tool-submission-review.md').read_text(encoding='utf-8')

required_fields = {'tool_name','tool_url','category','use_case','pricing_hint','submitter_note','confirm_review'}
field_names = {item.get('name'for item in fields.get('fields', [])}
if field_names != required_fields:
    print('失败 字段定义不完整')
    sys.exit(1)

if fields.get('storage') != 'local_demo_only':
    print('失败 storage 必须标记为 local_demo_only')
    sys.exit(1)

if len(samples) != 5:
    print('失败 样例候选应为 5 条')
    sys.exit(1)

accepted = 0
needs_check = 0
for row in samples:
    if row.get('source') != 'local_demo_only':
        print('失败 样例候选 source 必须是 local_demo_only')
        sys.exit(1)
    if not row.get('tool_url''').startswith('https://'):
        print('失败 工具官网必须是 https 链接')
        sys.exit(1)
    if row.get('confirm_review'is not True:
        print('失败 样例候选必须确认人工审核')
        sys.exit(1)
    accepted += row.get('review_status') == 'accepted'
    needs_check += row.get('review_status') == 'needs_check'

for needle in ['WorkBuddy AI 工具站工具提交入口''本地样例''正式工具库']:
    if needle not in html:
        print('失败 HTML 提交入口缺少:' + needle)
        sys.exit(1)

for needle in ['字段明细''人工审核流程''本地候选清单''下一篇输入']:
    if needle not in report:
        print('失败 审核报告缺少:' + needle)
        sys.exit(1)

print(f'通过 字段定义检查通过:{len(field_names)} 个字段')
print(f'通过 样例候选检查通过:{len(samples)} 条')
print(f'通过 审核分布:待复核 {needs_check} 条,可进入下一步 {accepted} 条')
print('通过 WorkBuddy 工具提交入口检查全部通过')

实际项目里,我还加了对上一课输入、页面边界和敏感内容的检查。文章里放的是简化版,完整脚本见本篇 demo 目录。

第八步|运行真实验证

进入本篇 demo 目录:

cd /root/workspace/wechat-articles/tutorials/workbuddy-tool-directory-extras/demo/extra-03
python3 scripts/create-extra-03-demo.py && python3 scripts/check-tool-submission.py

我这次实际运行结果如下:

WorkBuddy 工具提交入口本地样例生成完成
字段数: 7
样例候选: 5
待复核: 2
可进入下一步审核区: 1
提交入口:public/tool-submit.html
审核报告:reports/tool-submission-review.md
通过 上一篇输入检查通过,已复用反馈字段和表单检查思路
通过 字段定义检查通过,工具提交字段 7 个,审核状态 4 个
通过 样例候选检查通过,候选 5 条,全部为本地样例和 https 链接
通过 审核分布检查通过,待复核 2 条,可进入下一步审核区 1 条
通过 HTML 提交入口检查通过,包含本地样例和先审核再入库边界
通过 Markdown 审核报告检查通过,包含字段、流程、候选清单和下一篇输入
通过 未发现夸张宣传、外部联系引导或真实密钥
通过 WorkBuddy 工具提交入口检查全部通过

看到最后一行 通过 WorkBuddy 工具提交入口检查全部通过,说明本篇 demo 可以继续往下用了。

常见报错和排查

1. JSONL 解析失败

常见原因:你把 5 条样例包成了一个 JSON 数组。

JSONL 的规则是:一行一条 JSON。不要在最外层加 []

2. 检查脚本提示官网必须是 https

说明某条 tool_url 不是 https:// 开头。

工具提交入口不应该收各种奇怪链接。第一版先收紧规则,后面真要支持更多来源,也要单独写清楚边界。

3. 页面做出来了,但没有审核状态

这说明 WorkBuddy 只完成了表单,没有完成运营流程。

你要回到提示词里补一句:每条候选必须包含 review_status,并且只有 accepted 才允许进入下一步审核区。

4. 页面看起来能用,是不是就可以上线?

还不行。

这篇只有本地样例,没有后端、没有权限、没有提交频率限制、没有人工审核后台。真实上线前至少还要补:后端接口、数据校验、日志、审核后台和异常处理。

完整代码 / 配置汇总

本篇完整 demo 已经生成在:

/root/workspace/wechat-articles/tutorials/workbuddy-tool-directory-extras/demo/extra-03/

最重要的验证命令是:

cd /root/workspace/wechat-articles/tutorials/workbuddy-tool-directory-extras/demo/extra-03
python3 scripts/create-extra-03-demo.py && python3 scripts/check-tool-submission.py

如果你在自己的电脑上跟做,只要把脚本里的项目根目录改成你的路径即可。

这一篇你学会了什么

这一篇我们没有急着接真实后端,而是先用 WorkBuddy 做了一个安全的工具提交入口:

  • 用 JSON 定义提交字段;
  • 用 HTML 做本地页面;
  • 用 JSONL 保存工具候选;
  • 用 Markdown 写人工审核报告;
  • 用 Python 检查字段、样例、页面和边界。

真正重要的是这条线:

用户提交不是入库结果,只是进入审核流程的开始。

这就是工具站运营能力和普通表单页面的区别。

下一篇预告

下一篇继续做:

用WorkBuddy做AI工具站加餐04:把站点数据同步到飞书表格

我们会复用这篇的:

data/sample-tool-submissions.jsonl
reports/tool-submission-review.md
scripts/check-tool-submission.py

目标是把 review_status = accepted 的候选同步到飞书表格审核区,继续保持“先审核、后入库”的边界。

资料来源

  • 本篇 demo 由本地脚本真实生成并验证;
  • 输入参考:加餐 02 的 feedback-fields.jsonfeedback-form.htmlcheck-feedback-form.py
  • 工具候选数据为本地教程样例,只用于演示字段、审核状态和数据流转,不代表正式推荐或实时价格信息。
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-21 08:02:40 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/954315.html
  2. 运行时间 : 0.264530s [ 吞吐率:3.78req/s ] 内存消耗:4,693.15kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=1c71128ef143480d9ad873fb3fa81619
  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.001169s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001917s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000769s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000932s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001567s ]
  6. SELECT * FROM `set` [ RunTime:0.000617s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001596s ]
  8. SELECT * FROM `article` WHERE `id` = 954315 LIMIT 1 [ RunTime:0.001532s ]
  9. UPDATE `article` SET `lasttime` = 1787270560 WHERE `id` = 954315 [ RunTime:0.002360s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000686s ]
  11. SELECT * FROM `article` WHERE `id` < 954315 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001416s ]
  12. SELECT * FROM `article` WHERE `id` > 954315 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.010483s ]
  13. SELECT * FROM `article` WHERE `id` < 954315 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.026024s ]
  14. SELECT * FROM `article` WHERE `id` < 954315 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.008932s ]
  15. SELECT * FROM `article` WHERE `id` < 954315 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.022462s ]
0.268421s