当前位置:首页>python>科大讯飞AstronClaw发布后:Python实战从零构建AI Agent系统

科大讯飞AstronClaw发布后:Python实战从零构建AI Agent系统

  • 2026-06-24 14:30:03
科大讯飞AstronClaw发布后:Python实战从零构建AI Agent系统

 科大讯飞AstronClaw发布后:Python实战从零构建AI Agent系统

 文 | 程飞  |  2026年4月16日


 科大讯飞4月15日发布了AstronClaw智能体矩阵,整个科技圈都在讨论"AI Agent时代真的来了"这件事。我没打算凑这个热闹,我想做的是一件事:把它拆成代码,然后看看能不能自己动手复现一个简化版的框架。

 这篇文章分两部分:第一部分,我会拆解一个最小化的AI Agent系统应该包含哪些核心模块;第二部分,我会用Python写出这些模块的代码,可以直接跑。不会写大模型底层,不会搞黑科技,就是工程化地解决实际问题。

 一、最小化AI Agent系统 = 四个模块的循环

 先说清楚一个核心概念:什么是AI Agent?拆到最底层,它就是四件事的循环:感知(Perceive)、规划(Plan)、行动(Act)、记忆(Memory)。科大讯飞的AstronClaw也好,OpenAI的Operator也好,本质上都是这四个模块的不同实现。

 感知模块负责接收输入——用户的语音、文本、传感器数据,诸如此类。规划模块负责拆解任务——用户说"帮我分析这家公司值不值得投资",规划模块要把它拆解成"查财报、读新闻、跑量化模型、出结论"这几个步骤。行动模块负责调用工具——调用搜索API、运行Python脚本、查数据库,诸如此类。记忆模块负责存储上下文——历史对话、用户偏好、任务进度,都存在这里。

 科大讯飞的Claw框架,本质上就是把这四个模块标准化了,然后开放API让开发者接入自己的工具和场景。理解了这个,你就理解了为什么SkillHub开源是这次发布最有战略价值的部分。

 二、实战:从零构建一个股票分析Agent

 理论说完了,上代码。这个场景我选的是"股票分析Agent"——用户给一个股票代码,Agent自动调用多个工具收集信息,然后综合分析给出一个结论。完全用Python实现,不依赖任何商业Agent框架。

 2.1 基础框架结构

import json
import time
from typing import List, Dict, Any, Optional
from dataclasses import dataclass, field
from enum import Enum

class TaskStatus(Enum):
    PENDING = "pending"
    RUNNING = "running"
    COMPLETED = "completed"
    FAILED = "failed"

@dataclass
class Message:
    role: str  # "user" / "assistant" / "system"
    content: str
    timestamp: float = field(default_factory=time.time)

@dataclass
class Tool:
    name: str
    description: str
    input_schema: Dict[str, Any]
    function: callable  # 实际执行函数

 这几行代码定义了整个Agent系统的核心数据结构。Message是消息单元,Tool是工具定义,TaskStatus是任务状态枚举。没有任何花哨的东西,就是为了类型安全和代码可读性。

 2.2 记忆模块实现

class Memory:
    """记忆模块:管理对话历史和任务上下文"""

    def __init__(self, max_history: int = 100):
        self.messages: List[Message] = []
        self.max_history = max_history
        self.context: Dict[str, Any] = {}  # 跨对话的持久上下文
        self.task_history: List[Dict] = []  # 历史任务记录

    def add_message(self, role: str, content: str):
        self.messages.append(Message(role=role, content=content))
        # 防止内存溢出,只保留最近N条
        if len(self.messages) > self.max_history:
            self.messages = self.messages[-self.max_history:]

    def get_context_window(self, window_size: int = 20) -> List[Message]:
        """获取最近N条消息,用于送入大模型"""
        return self.messages[-window_size:]

    def store_fact(self, key: str, value: Any):
        self.context[key] = value

    def get_fact(self, key: str, default: Any = None) -> Any:
        return self.context.get(key, default)

 记忆模块是整个系统里被很多人低估的组件。实际上,Agent的"智能"程度,很大程度上取决于记忆模块的设计——上下文窗口多大、历史信息怎么压缩、哪些信息值得长期存储。这些选择直接影响Agent的表现。我这里用的是一个简化版本,但思路是通用的。

 2.3 工具注册与调用

class ToolRegistry:
    """工具注册中心:管理所有可用工具"""

    def __init__(self):
        self.tools: Dict[str, Tool] = {}

    def register(self, name: str, description: str,
                input_schema: Dict[str, Any],
                function: callable):
        self.tools[name] = Tool(
            name=name,
            description=description,
            input_schema=input_schema,
            function=function
        )

    def execute(self, tool_name: str, **kwargs) -> Any:
        if tool_name not in self.tools:
            raise ValueError(f"Tool {tool_name} not found")
        tool = self.tools[tool_name]
        try:
            result = tool.function(**kwargs)
            return result
        except Exception as e:
            return {"error": str(e)}

    def list_tools(self) -> List[Dict]:
        return [
            {"name": t.name, "description": t.description,
              "input_schema": t.input_schema}
            for t in self.tools.values()
        ]

 ToolRegistry是工具层的核心抽象。任何外部能力——搜索API、数据库查询、Python脚本执行——只要包装成Tool注册进来,Agent就能调用。这就是为什么科大讯飞的SkillHub能接入那么多第三方技能——本质上是统一了工具的注册和调用协议。

 2.4 股票分析工具集:接入akshare获取实时数据

# 工具1:获取股票实时行情
def get_stock_quote(stock_code: str) -> Dict:
    """获取股票实时报价(示例用akshare)"""
    import akshare as ak
    try:
        # 获取单只股票实时数据
        df = ak.stock_zh_a_spot_em()
        row = df[df['代码'] == stock_code]
        if row.empty:
            return {"error": f"Stock {stock_code} not found"}
        data = row.iloc[0].to_dict()
        return {
            "code": stock_code,
            "name": data.get("名称", ""),
            "price": data.get("最新价", 0),
            "change_pct": data.get("涨跌幅", 0),
            "volume": data.get("成交量", 0),
            "turnover": data.get("成交额", 0)
        }
    except Exception as e:
        return {"error": str(e)}

# 工具2:获取股票历史K线数据
def get_stock_history(stock_code: str, period: str = "daily",
                           adjust: str = "qfq") -> Dict:
    """获取股票历史K线数据"""
    import akshare as ak
    try:
        df = ak.stock_zh_a_hist(
            symbol=stock_code,
            period=period,
            adjust=adjust,
            start_date="20260101",
            end_date="20260416",
            limit=30  # 最近30个交易日
        )
        # 计算简单技术指标
        df["MA5"] = df["收盘"].rolling(5).mean()
        df["MA20"] = df["收盘"].rolling(20).mean()
        return {
            "code": stock_code,
            "latest_price": df["收盘"].iloc[-1],
            "MA5": round(df["MA5"].iloc[-1], 2),
            "MA20": round(df["MA20"].iloc[-1], 2),
            "volume_ratio": round(
                df["成交量"].iloc[-1] / df["成交量"].rolling(20).mean().iloc[-1], 2
            )
        }
    except Exception as e:
        return {"error": str(e)}

 这两个工具是股票分析Agent的数据来源。get_stock_quote获取实时行情,get_stock_history获取历史数据并计算均线和量比。接入akshare,不需要任何收费数据接口,直接能跑。这是做量化最基础的技能,我强烈建议每个人都熟悉一下akshare的文档。

 2.5 Agent主循环:规划+执行+反思

class StockAnalysisAgent:
    """股票分析Agent:整合感知、规划、行动、记忆"""

    def __init__(self, llm_client, tools: ToolRegistry):
        self.llm = llm_client  # 接入任意LLM API
        self.tools = tools
        self.memory = Memory()

    def think(self, user_input: str) -> str:
        """Agent核心:思考-规划-执行循环"""
        # Step 1: 将用户输入存入记忆
        self.memory.add_message("user", user_input)

        # Step 2: 构建系统提示词(含工具描述)
        tool_descs = "\n".join([
            f"- {t['name']}: {t['description']}"
            for t in self.tools.list_tools()
        ])
        system_prompt = f"""
    你是一个股票分析助手。
    用户提出股票相关问题,你可以调用以下工具:
    {tool_descs}
    每次只调用一个工具。如果需要多个工具,按顺序逐一调用。
    """

        # Step 3: 与LLM对话直到任务完成
        MAX_ITERATIONS = 5
        for _ in range(MAX_ITERATIONS):
            # 构建消息历史
            messages = [
                {"role": "system", "content": system_prompt},
                *[{"role": m.role, "content": m.content}
                  for m in self.memory.get_context_window()]
            ]
            response = self.llm.chat(messages)

            # 解析LLM响应:判断是最终回答还是调用工具
            if response.is_final_answer:
                self.memory.add_message("assistant", response.content)
                return response.content
            else:
                # 执行工具调用
                tool_name = response.tool_to_call
                tool_result = self.tools.execute(**response.tool_args)
                self.memory.add_message("assistant",
                     f"[调用工具: {tool_name}]\n结果: {tool_result}")

        return "任务超时,未能在规定步数内完成。"

 这个Agent主循环的核心逻辑,是一个"思考-执行-反思"的循环:LLM决定是否调用工具,如果调用就执行并把结果放回上下文,然后继续问LLM要不要继续调用,直到LLM认为任务完成。这个循环就是AstronClaw、Operator、Claude的Computer Use等所有Agent框架的共同本质——差异只在细节。

 三、实际运行:分析一只股票

 框架搭好了,怎么用?简单演示一下完整流程。

# 初始化Agent
tools = ToolRegistry()
tools.register(
    "get_quote",
    "获取股票实时报价数据,包括最新价、涨跌幅、成交量",
    {"stock_code": "str"},
    get_stock_quote
)
tools.register(
    "get_history",
    "获取股票历史K线数据,计算均线和量比指标",
    {"stock_code": "str", "period": "str"},
    get_stock_history
)

# 假设有一个LLM客户端(支持OpenAI兼容API)
llm = OpenAICompatibleClient(api_key="your-key", base_url="...")
agent = StockAnalysisAgent(llm, tools)

# 运行分析
user_question = "帮我分析一下科大讯飞的股票,值得关注吗?"
answer = agent.think(user_question)
print(answer)

 运行这个脚本,Agent会自动完成以下步骤:先用get_quote获取科大讯飞的实时行情,再用get_history获取历史K线数据,然后综合这些数据给出分析结论。整个过程不需要人工干预,用户只需要问问题,Agent自动完成剩余的工作。

 四、Agent系统工程化的几个关键坑

 写了这么多,我踩过的坑还是要说两句,不然你们照着我的代码抄过去会遇到一堆莫名其妙的问题。

 第一个坑:工具描述的清晰度直接决定Agent表现。大模型调用工具的能力,取决于工具描述是否准确和完整。我见过太多人的工具描述写得像产品文档,LLM根本看不懂要传什么参数。工具描述要写成"输入什么,得到什么",越具体越好。

 第二个坑:循环终止条件要设好。我上面写的MAX_ITERATIONS=5是一个保守值,但实际项目里要根据任务复杂度调整。无限制的循环会让Agent一直调用工具不返回,如果你的场景涉及付费API调用,烧钱速度会超出你的预期。

 第三个坑:记忆模块的上下文窗口管理。上下文窗口不是越大越好,太大的上下文会增加推理成本和延迟,而且大模型对中间信息的注意力会稀释。我通常会根据任务类型预设窗口大小——简单查询用5-10条,复杂分析用20-30条,再大就需要做信息摘要压缩了。

 第四个坑:错误处理要健壮。工具执行失败是常态——API超时、网络波动、数据源异常——Agent不能因为一个工具失败就崩溃退出。我上面的execute方法用try-except包装了所有工具调用,工具失败时会返回错误对象而不是抛异常,这是基本的工程素养。

 五、这个框架与AstronClaw的差距在哪里

 写完这个最小化版本,我知道你们想问的问题:这个玩具能跟科大讯飞的AstronClaw比吗?差距在哪里?

 差距很大,但方向是对的。科大讯飞的AstronClaw至少在以下三个方面比我的玩具版本强得多:多模态感知能力(语音+视觉+文本融合)、场景化微调的大模型(不是通用GPT,而是专门优化过的场景模型)、以及大规模用户数据反馈的迭代优化。这些东西需要大量研发投入,不是一两个人的代码能解决的。

 但我的玩具版本有一个AstronClaw没有的优势:完全可控、可定制、可审计。整个代码都在你手里,数据流向完全透明,你不需要依赖任何第三方平台。对于机构投资者和量化团队来说,这种可控性是商业产品替代不了的。


 说实话

 我自己现在每天的量化研究工作流,已经大量引入了这类自建的Agent系统。数据清洗、因子挖掘、回测结果分析、研报摘要——这些过去需要我手工做的重复性工作,现在大部分都交给Agent处理了。我的感受是:不要等商业产品成熟,现在就开始用Python搭建自己的Agent系统,一边用一边迭代,一边踩坑一边优化。这个过程本身,就是最好的学习。


 免责声明:本文代码仅供学习研究使用,不构成任何投资建议。量化策略存在风险,历史表现不代表未来收益。股市有风险,投资需谨慎。

最新文章

随机文章

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