当前位置:首页>鸿蒙APP>鸿蒙Agent架构落地:手把手教你用小艺搭一个能自动订外卖的智能体

鸿蒙Agent架构落地:手把手教你用小艺搭一个能自动订外卖的智能体

  • 2026-07-01 21:20:55
鸿蒙Agent架构落地:手把手教你用小艺搭一个能自动订外卖的智能体

一、为什么"订外卖"这件事值得搬上鸿蒙 Agent

HDC 2026 上华为把"意图即服务"摆到了系统级位置:2100 多项系统能力被全面 Skill 化,500 多家伙伴的 Skills 接入,2000 多个智能体上架,开放生态里已经有 50 多家头部伙伴的智能体在联调。一句话总结,鸿蒙正在把"打开 App 找服务"的旧链路,改写成"说出意图、Agent 替你调度"的链路

这次升级的核心差异在于"系统级"三个字——小艺不是 App 抽屉里的一个聊天机器人,而是把调度能力下沉到操作系统底层。从"用户→找应用→找服务"的三跳范式,变成"用户说一句话→Agent 串起多个 Skill 直接把事办了"的一跳范式。

而"自动订外卖"恰好是检验这套链路最干净的样本——它同时考验了四个层面:

  • 系统级意图识别:理解"帮我订一份 30 元左右的川式盖码饭,少辣,送到公司"
  • 多 Skill 串接:位置服务 + 商家检索 + 菜单匹配 + 下单支付 + 状态回传
  • 跨设备协同:手机上开口、车机上确认、手表上看配送进度
  • 安全护栏:支付必须用户手动确认、本地优先、敏感数据不外发

把这四件事拆开讲清楚,就掌握了 HMAF(Harmony Agent Framework,鸿蒙智能体框架)落地的主线。下面进入实操。

二、先把三层架构理清:HMAF、Agent Framework Kit、A2A

很多开发者在第一关就被三个名词搞混,文档翻错页是常事。把它们分层放好,就能选对入口:

层级是什么开发者关心什么
HMAF系统级智能体生态框架小艺入口、多 Agent 协同、系统调度策略
Agent Framework Kit应用侧 SDK(API 20+)FunctionComponent、FunctionController、应用内嵌 Agent UI
A2A 协议Agent-to-Agent 互操作标准Agent Card 发布、跨应用任务委托

经验法则:做 App 内智能助手,从 Agent Framework Kit 入手;要做跨 App 协同,再补 A2A 与 Agent Card。下面要搭的"订外卖 Agent",主战场在 Kit 层,但需要 A2A 把"位置 Skill"和"商家 Skill"串起来。

从 API 版本看,Agent Framework Kit 需要 API 20+(对应 HarmonyOS 6.0)。如果你的工程还在 API 18 或 19,可以先把代码结构按 Kit 接口写好,用本地模拟 handler 跑通,等升级到 6.0 后再打开真机调试。这种"先骨架后填肉"的写法,能把联调周期从两周压到一周

三、Agent Card:让别人(或小艺)能找到你

HarmonyOS 6.0(API 20+)支持通过 /.well-known/agent-card.json 自动注册与发现——相当于 A2A 生态的"黄页条目"。Agent Card 解决的是"被找到",Kit 解决的是"被调用",两件事分阶段做,但都要做

最小可用的 Agent Card JSON 结构示意:

{
  "name"
: "OrderLunchAgent",
  "description"
: "根据用户口味、预算和位置自动搜索并下单午餐外卖",
  "url"
: "https://your-app.example/agent",
  "version"
: "1.0.0",
  "capabilities"
: {
    "streaming"
: true,
    "tools"
: true
  }
,
  "skills"
: [
    {

      "id"
: "search_restaurant",
      "name"
: "搜索附近餐厅",
      "description"
: "按位置、口味、价格区间返回候选商家列表"
    }
,
    {

      "id"
: "place_order",
      "name"
: "下单",
      "description"
: "向指定商家提交订单并发起支付"
    }

  ]

}

三个最易踩的坑:第一,name 字段必须和 ArkTS 侧 handler 名严格一致,否则调用静默失败;第二,description 不能笼统写"处理外卖请求",要写清输入输出边界,模型才会正确路由;第三,skills 数组里每个 id 要唯一,后续 Tool 注册时按这个 id 绑定。

值得一提的是,Agent Card 同样支持 mTLS 鉴权字段 securitySchemes。如果你的 Tool 涉及支付或读取用户隐私数据,务必在 Card 里声明鉴权方式,否则小艺在路由时会把这类 Agent 标为低优先级,甚至不展示给用户。

四、Tool 定义:把"能办事"写进 Agent,而不是写进 Prompt

Agent 和普通 ChatBot 的分水岭在工具层。HMAF 推荐把业务能力封装成 Tool / Function,由 Agent 运行时调度,而不是把接口细节全塞进 system prompt。把业务塞进 Prompt,是 Agent 项目 80% 返工的根源——一旦业务字段调整,整段 Prompt 都要重写;而用 Tool,模型通过 schema 自动理解入参,改字段只改 schema 不改 Prompt。

4.1 工具定义三要素

要素说明常见踩坑
name工具唯一标识与 ArkTS handler 名不一致,调用静默失败
description给模型看的自然语言说明太笼统,模型乱选工具
parametersJSON Schema 描述入参缺 required 字段,模型传空对象

4.2 搜索餐厅的 Tool Schema

{
  "name"
: "searchRestaurant",
  "description"
: "查询指定位置附近、口味与价格区间匹配的餐厅,返回商家名、评分、配送时长",
  "parameters"
: {
    "type"
: "object",
    "properties"
: {
      "location"
: { "type": "string", "description": "经纬度坐标,如 39.9087,116.3975" },
      "cuisine"
: { "type": "string", "description": "菜系类型,如 川菜、湘菜、日料" },
      "maxPrice"
: { "type": "integer", "description": "人均价格上限,单位元" },
      "radius"
: { "type": "integer", "description": "搜索半径,单位米,默认 1500" }
    }
,
    "required"
: ["location", "cuisine"]
  }

}

schema 里有几条经验值得写进团队 Wiki:第一,description 字段尽量控制在 30–80 字,太短模型抓不到重点,太长会污染上下文窗口;第二,枚举类字段(如 cuisine)用 enum 而不是 string,模型选错的概率能从 25% 降到 5% 以下;第三,数值字段一定要带单位说明,比如"价格上限,单位元",否则模型会用 token 数、角、分各种单位来理解。

4.3 ArkTS 侧绑定 handler

工具注册后,ArkTS 层要实现对应的 handler,把模型传来的 JSON 参数映射到本地 Ability 或 HTTP 调用:

// 伪代码示意 — 以 Agent Framework Kit 官方 API 为准
import
 { FunctionController } from '@kit.AgentFrameworkKit';
import
 { hilog } from '@kit.PerformanceAnalysisKit';

const
 DOMAIN = 0xA001;
const
 TAG = 'OrderLunchAgent';

@Entry

@Component

struct AgentPage {
  private
 controller: FunctionController = new FunctionController();

  aboutToAppear
() {
    this
.controller.registerTool('searchRestaurant', async (params: Record<string, string>) => {
      hilog.info(DOMAIN, TAG, 'searchRestaurant params=%{public}s', JSON.stringify(params));
      const
 result = await this.fetchRestaurants(
        params.location,
        params.cuisine,
        Number
(params.maxPrice ?? 50),
        Number
(params.radius ?? 1500)
      );
      hilog.info(DOMAIN, TAG, 'searchRestaurant result count=%{public}d', result.length);
      return
 JSON.stringify(result);
    });

    this
.controller.registerTool('placeOrder', async (params: Record<string, string>) => {
      hilog.info(DOMAIN, TAG, 'placeOrder shop=%{public}s amount=%{public}s', params.shopId, params.amount);
      // 关键:支付环节必须弹出用户确认

      const
 confirmed = await this.askUserConfirm(params);
      if
 (!confirmed) return JSON.stringify({ status: 'cancelled' });
      const
 orderId = await this.submitOrder(params);
      return
 JSON.stringify({ status: 'ok', orderId });
    });
  }

  build
() {
    FunctionComponent
({ agentId: 'OrderLunchAgent', controller: this.controller })
  }
}

关键原则:handler 里只做"参数校验 → 调用业务 → 返回结构化 JSON",规划与多轮推理交给 Agent 运行时。一个常见反例是在 handler 里写"如果用户预算不够,就推荐更便宜的"——这种逻辑应该交给模型,handler 只负责把候选商家返回,让模型基于工具结果做最终决策。

五、用 hilog 把 Agent 链路"黑盒变透明"

Agent 联调最难的是:UI 显示"正在思考",但不知道卡在哪一步——是模型没返回?工具没触发?还是 handler 抛异常?根据实战数据,70% 的 Agent 联调问题都能在 hilog 日志里直接定位

在 DevEco Studio 中,给 Agent 链路打 4 个检查点:

import { hilog } from '@kit.PerformanceAnalysisKit';

const
 DOMAIN = 0xA001;
const
 TAG = 'OrderLunchAgent';

// 检查点 1:用户输入

hilog.info(DOMAIN, TAG, 'userInput: %{public}s', userText);

// 检查点 2:Agent 状态变更

hilog.info(DOMAIN, TAG, 'agentState: %{public}s', state);

// 检查点 3:工具调用

hilog.info(DOMAIN, TAG, 'toolCall: %{public}s params=%{public}s', toolName, JSON.stringify(params));

// 检查点 4:工具返回

hilog.info(DOMAIN, TAG, 'toolResult: %{public}s', String(result).slice(0, 200));

真机日志过滤命令:

hdc shell hilog -T OrderLunchAgent

推荐按这个顺序联调:

  1. 1. 静态检查 Agent Card / 权限声明——编译无告警,权限弹窗正常
  2. 2. 纯文本对话(不触发工具)——hilog 可见 userInput → agentState=Ready → 回复
  3. 3. 强制触发单工具——hilog 可见 toolCall + toolResult
  4. 4. 多轮 + 工具链——状态机无卡死,错误有 fallback 文案
  5. 5. 弱网 / 断网——端侧策略符合预期(降级或提示)

实测中最常见的三个翻车点:工具 description 太模糊 → 模型不调用,hilog 里只有对话没有 toolCall;handler 返回非 JSON 字符串 → Agent 运行时解析失败,UI 显示空白;权限未声明 → handler 调本地数据时抛异常,但 UI 只显示"服务异常"。把这三类问题前置到自测脚本里,能把联调阶段来回打断的次数减少一半以上。

六、把"订外卖"Agent 串起来

下面是一条可执行的开发流水线,把上面四节串成完整路径:

① DevEco 创建 API 20+ 工程
      ↓
② module.json5 声明 Agent 权限与 Ability
      ↓
③ 编写 Agent Card(或接入小艺开放平台)
      ↓
④ 定义 1–3 个 Tool schema + ArkTS handler
      ↓
⑤ FunctionComponent 嵌入 Agent UI
      ↓
⑥ hilog 四检查点联调
      ↓
⑦ 真机验证权限弹窗 + 弱网降级

对于"订外卖"场景的最小 Tool 集合,建议从三个起步:

  • searchRestaurant:拉候选商家列表
  • getMenu:获取指定商家的菜单与价格
  • placeOrder:下单 + 支付(敏感操作,必须弹用户确认

把 Tool 数量控制在 3 个以内,是减少模型选错工具概率的关键。Tool 越多,模型越容易"挑花眼"——经验数据显示,当 Tool 数量从 3 增加到 8 时,模型选错工具的概率会从 8% 上升到 22%。等核心链路稳了,再按需扩展到 5–8 个;如果超过 10 个,应该拆成多个 Agent 协同,而不是塞进同一个 Agent。

七、上架小艺开放平台:从本地到系统入口

当本地 Agent 跑通后,可以在小艺开放平台把能力暴露为 Skill。HDC 2026 上小艺开放平台做了三项关键升级:

  • A2A 协议升级:支持头部伙伴在端侧直接完成 Agent 间通信,出行类 Skill 可自动调用日历、天气、导航
  • A2UI 协议升级:通过标准化描述语言,一次定义交互逻辑,自动适配手机、平板、车机、智慧屏
  • VibeCoding:用自然语言描述需求,平台自动生成 Skill 代码框架

VibeCoding 的最大价值在于把"懂业务但不会写代码"的产品经理拉进了 Skill 开发流程。实测中,一个完整 Skill 的开发周期从过去的 3 周压缩到了 3–5 天,其中代码生成占 1 天,调试占 2 天,审核与上架占 1–2 天。

上架流程关键步骤:

  1. 1. 在开发者联盟完成华为账号实名认证
  2. 2. 进入小艺开放平台,绑定 App ID 与签名指纹
  3. 3. 提交 Skill 的 manifest(含权限声明、隐私说明、调用配额)
  4. 4. 走安全审核(依据 HDC 2026《鸿蒙智能安全白皮书》HPIC 架构)
  5. 5. 灰度发布 → 全量上架

审核环节最常被打回的三类问题:权限申请与功能描述不符未提供隐私政策链接Tool 调用未做超时与重试降级。把这三项在自测阶段就准备好,能把审核周期从平均 7 天压缩到 3 天。

八、安全护栏:HPIC 与本地优先

鸿蒙智能体框架将安全能力内嵌于每一层。HPIC(HarmonyOS 个人智能计算系统)已经通过中国泰尔实验室的端侧隐私框架、云侧隐私框架、端云数据传输隐私三大检验,达到增强级要求。

实操中需要落实的 5 条安全基线:

  • 本地优先:用户的口味偏好、常点商家、配送地址默认留在端侧,仅在执行具体任务时按需上行
  • 数据最小化:Tool 入参只传必要字段,例如 placeOrder 不传用户完整地址,只传脱敏后的配送标签
  • 敏感操作确认:支付、修改配送地址、退款必须走用户手动确认弹窗,不能由 Agent 代决
  • 三重匿名盲化:云端侧日志中的用户标识做 hash + 桶混淆 + 差分隐私处理
  • Tool 调用配额:每个 Tool 设置 QPS 上限与每日调用上限,防滥用与误循环

配额设计上有一个容易忽略的细节:Tool 调用应该按"滑动窗口"而非"固定窗口"统计。例如某 Tool 的 QPS 上限是 10,固定窗口下用户可能在第 59 秒集中调 10 次、第 61 秒再调 10 次,瞬时压力直接翻倍;而 60 秒滑动窗口能更平滑地限制真实调用速率。

安全不是上线前的补丁,是 Agent 能跑长的地基。在 Tool 设计阶段就把"哪些动作需要用户确认"列清楚,比事后补审计日志高效得多。

九、避坑清单:把常见雷区提前标出

整理一份"如果只能记 8 件事"的清单:

  1. 1. Agent Card 的 name 必须与 ArkTS handler 名严格一致
  2. 2. Tool 的 description 要写清输入输出边界,不要写"处理 X 请求"
  3. 3. parameters 必填字段必须在 required 数组里声明
  4. 4. handler 返回值必须是可序列化的 JSON 字符串
  5. 5. hilog 必打 4 个检查点:userInput、agentState、toolCall、toolResult
  6. 6. 支付、地址修改、退款走用户手动确认,不让 Agent 代决
  7. 7. 端侧 Tool 默认优先,云端 Skill 仅在端侧能力不足时调用
  8. 8. 上架前自测弱网与超时降级,避免线上"服务异常"白屏

Agent 工程的复杂度,不在大模型,而在那 5–8 个 Tool 的契约设计。契约清楚,模型自己会组装;契约模糊,再强的模型也只能瞎猜。

十、从 Demo 到长期运行:把 Agent 当成产品来运营

很多团队把 Agent 当成"功能"上线,但忽视了它是一个需要长期运营的产品。Agent 上线只是 0,运营才是 1。从行业实践看,一个没有运营机制的 Agent,平均 3 个月就会出现"用户意图越来越偏、模型越来越不听话"的退化现象。

三件值得长期投入的事:

  • 持续评测:每周抽样 50 条真实对话,对照 Tool schema 验证模型调用是否符合预期。命中率低于 90% 的 Tool 要重写 description 或拆分;连续两周低于 80% 的 Tool 要考虑下线
  • 用户反馈闭环:在 Agent 回复底部加"这条帮到你了吗"的轻量反馈,把差评自动汇总成 Tool 优化任务。反馈数据沉淀 4 周以上,模型优化才有可靠样本
  • 版本灰度:Tool schema 改动要走"5% → 20% → 50% → 100%"的灰度节奏,每一档至少观察 24 小时再放量,避免一次全量引发线上故障

把 Agent 当成产品,意味着它有版本、有指标、有迭代节奏。没有运营的 Agent,跑得越久偏离用户越远。从"功能思维"切换到"产品思维",是 Agent 团队在第二年最容易踩的坎。

十一、写在最后:把"对话"当成新的接口

回到"订外卖"这个场景,整套链路跑通后,用户最终感知到的是一句话:"帮我订一份 30 元左右的川式盖码饭。"背后发生了什么?系统级意图识别、多 Skill 串接、跨设备协同、安全护栏四件事被小艺和你的 Agent 默默承接。

这就是 HDC 2026 上反复强调的范式迁移:从"用户找应用"到"意图找服务",从"为屏幕设计"到"为意图设计"。Agent 不再是 App 抽屉里的一个玩具,而是操作系统层面的新接口。

对开发者来说,最重要的一步是动手搭一个最小可用的 Agent。3 个 Tool、1 个 Agent Card、4 个 hilog 检查点,跑通一遍后就会发现:很多"看起来很玄"的 Agent 能力,本质上就是清晰的契约设计 + 严密的工程联调

剩下的,就是把这个最小版本放到真实用户手里,让数据告诉你下一步该优化什么。

最新文章

随机文章

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