乐于分享
好东西不私藏

AI Agent工具调用总翻车?90%的生产级Agent都栽在这4个隐藏陷阱里

AI Agent工具调用总翻车?90%的生产级Agent都栽在这4个隐藏陷阱里

你以为Agent只是"大模型+函数调用"?真正的生产级Agent工具调用链路,藏着无数让你深夜debug的坑。

一、背景:为什么Agent工具调用成了2026年最棘手的工程难题?

2026年,AI Agent已经从Demo走向生产。从客服自动化到DevOps助手,从数据分析到代码生成,企业纷纷把Agent搬上生产环境。

但现实是——90%的Agent在POC阶段表现惊艳,上线后却频繁翻车

原因很简单:POC阶段只验证了"能不能调通",而生产环境考验的是"能不能稳定地调对"。工具调用(Tool Calling)看似是大模型输出一段JSON、后端执行就完事,实则涉及参数校验、异常重试、并发控制、安全校验、幂等设计等一系列工程问题。

🔥 核心结论:Agent工具调用的本质不是"大模型调用函数",而是一个分布式任务编排系统

本文基于多个生产级Agent项目的实战经验,拆解工具调用链路中最致命的4个陷阱,并给出可直接落地的解决方案。

二、问题现象:生产环境中的4大翻车现场

翻车现场1:参数幻觉——大模型"编造"了不存在的参数

场景:Agent调用一个要求user_id为整数类型的API,大模型传了"user_id": "abc",直接导致下游服务500。

更糟糕的是,大模型有时会自信满满地编造参数名——比如API只需要start_timeend_time,它传了一个time_range,后端一脸懵。

⚠️ 风险点:大模型的"幻觉"问题在文本场景中已经广为人知,但在工具调用场景中同样严重,却经常被忽视。

翻车现场2:重试风暴——一次失败引发雪崩

场景:某个外部API超时,Agent触发重试。但由于没有退避策略,3秒内重试了8次,直接把下游服务打挂。更严重的是,重试过程中Agent的状态已经改变,导致后续逻辑全部错乱。

翻车现场3:并发竞态——多个工具调用互相踩踏

场景:Agent同时发起"查询库存"和"扣减库存"两个工具调用。查询还没返回,扣减已经执行,导致超卖。或者两个并行调用都读取了同一份数据,各自修改后写回,后写的覆盖先写的

翻车现场4:安全边界缺失——Agent成了内鬼

场景:Agent拥有数据库写权限,在一次异常对话中,大模型"理解错误",生成了一条DROP TABLE指令。由于没有安全校验机制,这条指令被直接执行。

三、深度分析:工具调用链路的底层原理拆解

要理解这些问题的本质,需要先理解Agent工具调用的完整链路:

用户输入 → 大模型推理 → 生成工具调用请求 → 参数校验 → 工具执行 → 结果返回 → 大模型推理 → ... → 最终回复

这个链路中存在3个关键的不确定性

不确定性1:大模型输出的结构性不确定

大模型本质上是概率模型,它的输出遵循概率分布,而非确定性逻辑。即使你定义了完美的Function Schema,大模型仍然可能:

  • 遗漏必填参数
  • 传入错误类型的参数
  • 编造不存在的参数名
  • 在嵌套对象中遗漏深层字段

核心原理:大模型的Function Calling能力本质上是"在约束条件下的序列生成",约束是通过loss function施加的,而非硬编码的校验逻辑。

不确定性2:工具执行的环境不确定

工具执行依赖的外部系统可能:

  • 超时、宕机、返回错误
  • 返回格式与预期不符
  • 因并发导致状态不一致
  • 因网络抖动导致重复执行

不确定性3:Agent状态与上下文的不确定

多轮对话中,Agent需要维护上下文状态。但大模型的上下文窗口有限,随着对话轮次增加,早期的工具调用结果可能被截断或"遗忘",导致后续决策基于不完整的信息。

四、解决方案:生产级工具调用4层防御体系

第一层:Schema硬校验——在工具执行前拦截非法参数

正确做法:不要相信大模型的任何输出,所有参数必须经过严格的模式校验。

from pydantic import BaseModel, validator, Field
from typing import Optional
import json

class ToolCallRequest(BaseModel):
    tool_name: str
    arguments: dict
    
    @validator('tool_name')
    def validate_tool_name(cls, v):
        allowed_tools = ['get_user_info''query_order''create_task''update_config']
        if v not in allowed_tools:
            raise ValueError(f"Unknown tool: {v}. Allowed: {allowed_tools}")
        return v

class GetUserInfoArgs(BaseModel):
    user_id: int = Field(..., gt=0, description="用户ID,必须为正整数")
    include_deleted: bool = Field(default=False, description="是否包含已删除用户")
    
    @validator('user_id')
    def validate_user_id(cls, v):
        if v > 2147483647:
            raise ValueError("user_id exceeds int32 range")
        return v

def validate_tool_call(raw_response: dict) -> ToolCallRequest:
    """在工具执行前进行硬校验,拦截所有非法参数"""
    # Step 1: 基础结构校验
    if 'tool_name' not in raw_response or 'arguments' not in raw_response:
        raise ValueError("Invalid tool call structure")
    
    # Step 2: 工具名白名单校验
    tool_request = ToolCallRequest(**raw_response)
    
    # Step 3: 参数Schema校验(每个工具对应一个Pydantic模型)
    tool_schemas = {
        'get_user_info': GetUserInfoArgs,
        # ... 其他工具的Schema
    }
    
    schema_class = tool_schemas.get(tool_request.tool_name)
    if schema_class:
        schema_class(**tool_request.arguments)
    
    return tool_request

🔥 核心原则:Schema校验必须是硬拒绝(Hard Reject),即校验失败直接拒绝执行,绝不能"尝试修正后执行"。

第二层:智能重试与退避——让Agent优雅地处理失败

正确做法:实现分级重试策略,区分可重试错误和不可重试错误。

import asyncio
import random
from enum import Enum
from dataclasses import dataclass

class ErrorCategory(Enum):
    RETRYABLE = "retryable"      # 超时、限流、网络抖动
    NON_RETRYABLE = "non_retryable"  # 参数错误、权限不足
    UNKNOWN = "unknown"

@dataclass
class RetryConfig:
    max_retries: int = 3
    base_delay: float = 1.0
    max_delay: float = 30.0
    jitter: bool = True

def categorize_error(error: Exception) -> ErrorCategory:
    """将错误分类,决定是否可以重试"""
    retryable_errors = [
        TimeoutError, ConnectionError, 
        # 429 Too Many Requests, 503 Service Unavailable
    ]
    
    for err_type in retryable_errors:
        if isinstance(error, err_type):
            return ErrorCategory.RETRYABLE
    
    # 参数错误、业务逻辑错误不可重试
    if isinstance(error, (ValueError, PermissionError)):
        return ErrorCategory.NON_RETRYABLE
    
    return ErrorCategory.UNKNOWN

async def execute_with_retry(tool_func, args: dict, config: RetryConfig):
    """带退避策略的重试执行"""
    last_error = None
    
    for attempt in range(config.max_retries + 1):
        try:
            result = await tool_func(**args)
            return result
        except Exception as e:
            last_error = e
            category = categorize_error(e)
            
            if category == ErrorCategory.NON_RETRYABLE:
                # ⚠️ 不可重试错误:立即失败,返回给大模型修正
                return {
                    "status""failed",
                    "error"str(e),
                    "retryable"False,
                    "hint""参数校验失败,请检查参数后重新生成工具调用"
                }
            
            if attempt < config.max_retries:
                delay = min(
                    config.base_delay * (2 ** attempt),
                    config.max_delay
                )
                if config.jitter:
                    delay *= (0.5 + random.random())
                
                print(f"⚠️ Retry {attempt + 1}/{config.max_retries} after {delay:.1f}s: {e}")
                await asyncio.sleep(delay)
    
    return {
        "status""failed",
        "error"str(last_error),
        "retryable"True,
        "hint"f"工具执行连续失败{config.max_retries + 1}次,建议换一种方式完成任务"
    }

⚠️ 风险点:重试时必须考虑幂等性。非幂等操作(如创建订单)不能盲目重试,需要先查询是否已执行。

第三层:并发控制与安全沙箱——让Agent在笼子里干活

正确做法:对工具调用实施并发限制和安全沙箱。

import asyncio
from contextlib import asynccontextmanager

class ToolSandbox:
    """工具执行沙箱:控制并发、权限、资源"""
    
    def __init__(self, config):
        self.config = config
        # 信号量控制全局并发数
        self.semaphore = asyncio.Semaphore(config.max_concurrent_tools)
        # 工具级别的权限控制
        self.permissions = config.tool_permissions or {}
        # 危险工具的审批队列
        self.dangerous_tools = config.dangerous_tools or set()
    
    @asynccontextmanager
    async def execute_context(self, tool_name: str, user_context: dict):
        # Step 1: 权限检查
        user_role = user_context.get('role''viewer')
        allowed_roles = self.permissions.get(tool_name, ['viewer'])
        if user_role not in allowed_roles:
            raise PermissionError(
                f"用户角色 '{user_role}' 无权执行工具 '{tool_name}'"
            )
        
        # Step 2: 危险操作需要人工审批
        if tool_name in self.dangerous_tools:
            approved = await self.request_human_approval(tool_name, user_context)
            if not approved:
                raise PermissionError("危险操作已被人工拒绝")
        
        # Step 3: 并发控制
        async with self.semaphore:
            yield
    
    async def execute(self, tool_name: str, args: dict, user_context: dict):
        async with self.execute_context(tool_name, user_context):
            tool_func = self.get_tool_function(tool_name)
            return await tool_func(**args)
    
    async def request_human_approval(self, tool_name: str, context: dict) -> bool:
        """危险操作需要人工确认——发送审批消息,等待确认"""
        # 实际实现:发送飞书/钉钉审批消息,设置超时
        print(f"🔒 危险操作审批请求: {tool_name}")
        # 模拟审批流程(实际需要对接审批系统)
        return False  # 默认拒绝

# 配置示例
sandbox_config = {
    "max_concurrent_tools"5,
    "tool_permissions": {
        "get_user_info": ["viewer""editor""admin"],
        "create_task": ["editor""admin"],
        "delete_database": ["admin"],  # 仅管理员可执行
    },
    "dangerous_tools": {"delete_database""send_production_email"}
}

🔥 核心原则:Agent的工具权限应遵循最小权限原则,写操作必须可审计,危险操作必须可拦截。

第四层:幂等与状态管理——让Agent具备"记忆"能力

正确做法:为每个工具调用引入幂等键和状态追踪。

import hashlib
import json
import time
from typing import Optional

class ToolCallTracker:
    """工具调用追踪器:确保幂等性,追踪执行状态"""
    
    def __init__(self, storage_backend):
        self.storage = storage_backend
    
    def generate_idempotency_key(self, tool_name: str, args: dict) -> str:
        """生成幂等键:相同参数生成相同键"""
        content = f"{tool_name}:{json.dumps(args, sort_keys=True)}"
        return hashlib.sha256(content.encode()).hexdigest()[:16]
    
    async def execute_idempotent(
        self, 
        tool_name: str
        args: dict
        tool_func,
        ttl: int = 300  # 5分钟内相同调用视为重复
    
) -> dict:
        """幂等执行:相同参数在TTL内只执行一次"""
        key = self.generate_idempotency_key(tool_name, args)
        
        # 检查是否已有执行记录
        cached = await self.storage.get(f"tool_call:{key}")
        if cached:
            cached_time = cached.get('timestamp'0)
            if time.time() - cached_time < ttl:
                print(f"🔄 命中幂等缓存: {tool_name}")
                return cached['result']
        
        # 执行工具
        result = await tool_func(**args)
        
        # 缓存结果
        await self.storage.set(f"tool_call:{key}", {
            'result': result,
            'timestamp': time.time(),
            'tool_name': tool_name
        }, ex=ttl)
        
        return result
    
    async def get_conversation_tool_history(self, conversation_id: str) -> list:
        """获取对话的工具调用历史,用于状态追踪"""
        return await self.storage.lrange(f"conv_tools:{conversation_id}"0, -1)

五、代码/配置示例:完整的工具调用管线

以下是将上述4层防御整合为一个完整的工具调用管线:

class ProductionToolPipeline:
    """生产级工具调用管线"""
    
    def __init__(self, config):
        self.validator = ToolValidator(config.schemas)
        self.retryer = RetryExecutor(config.retry)
        self.sandbox = ToolSandbox(config.sandbox)
        self.tracker = ToolCallTracker(config.storage)
        self.logger = ToolCallLogger(config.logging)
    
    async def execute_tool_call(
        self, 
        raw_response: dict
        user_context: dict,
        conversation_id: str
    
) -> dict:
        """完整的工具调用处理流程"""
        
        call_id = generate_uuid()
        
        try:
            # Layer 1: Schema硬校验
            validated = self.validator.validate(raw_response)
            self.logger.log_validation(call_id, validated)
            
            # Layer 2: 幂等检查(针对写操作)
            if self.is_write_operation(validated.tool_name):
                result = await self.tracker.execute_idempotent(
                    validated.tool_name, 
                    validated.arguments,
                    lambda **args: self.sandbox.execute(
                        validated.tool_name, args, user_context
                    )
                )
            else:
                # Layer 3: 带退避的重试 + 安全沙箱
                result = await self.retryer.execute_with_retry(
                    lambdaself.sandbox.execute(
                        validated.tool_name, validated.arguments, user_context
                    ),
                    config=RetryConfig(max_retries=3)
                )
            
            # 记录调用历史
            await self.logger.log_success(call_id, result, conversation_id)
            
            return {
                "status""success",
                "result": result,
                "call_id": call_id
            }
            
        except Exception as e:
            error_response = self.handle_error(e, call_id, validated)
            await self.logger.log_failure(call_id, e, conversation_id)
            
            # 返回结构化错误信息给大模型,帮助它修正
            return {
                "status""failed",
                "error": error_response,
                "call_id": call_id,
                "hint"self.generate_correction_hint(e, validated)
            }
    
    def generate_correction_hint(self, error: Exception, validated) -> str:
        """为大模型生成修正提示"""
        if isinstance(error, ValueError):
            return f"参数校验失败:{error}。请检查 {validated.tool_name} 的参数Schema后重新调用。"
        elif isinstance(error, TimeoutError):
            return f"工具 {validated.tool_name} 执行超时。请考虑换一种方式完成任务。"
        elif isinstance(error, PermissionError):
            return f"权限不足:{error}。请向用户请求授权或换一个工具。"
        else:
            return f"工具执行失败:{error}。请分析错误原因后重试。"

六、架构思考:从工具调用到Agent工程化的认知升维

🔥 核心结论:Agent工具调用的本质是一个分布式任务编排系统,而非简单的"函数调用"。

可复用的架构原则

  1. 不信任原则:永远不要信任大模型的输出,所有外部调用必须经过校验层
  2. 防御性编程:假设每个工具调用都可能失败,设计好降级路径
  3. 最小权限:Agent的工具权限应严格遵循最小权限原则,按需授权
  4. 可观测性:每个工具调用都应有完整的日志、指标、链路追踪
  5. 人机协同:危险操作必须设计人工审批环节,不能全自动

架构演进方向

Phase 1: 原型期
  大模型 + 简单函数调用 → 快速验证
  
Phase 2: 工程化
  Schema校验 + 重试退避 + 权限控制 → 稳定上线
  
Phase 3: 平台化
  工具注册中心 + 执行沙箱 + 可观测平台 → 规模化部署
  
Phase 4: 自治化
  自动工具发现 + 动态权限调整 + 自我修复 → 自适应Agent

七、总结

  1. 参数幻觉是第一大杀手:Schema硬校验是Agent工具调用的第一道防线,必须硬拒绝非法参数
  2. 重试不是银弹:必须区分可重试/不可重试错误,非幂等操作不能盲目重试
  3. 并发是隐形炸弹:多工具并行调用时必须考虑竞态条件,用信号量控制并发度
  4. 安全是底线:Agent的工具权限必须最小化,危险操作必须可审计、可拦截
  5. 幂等是稳定性基石:每个写操作都应有幂等键,确保重复调用不会产生副作用

八、Checklist

带走自查,逐项确认你的Agent工具调用链路是否安全:

  • 所有工具的参数是否都有Schema校验?(硬拒绝模式)
  • 工具名是否有白名单限制?(防止调用未授权工具)
  • 重试策略是否区分了可重试/不可重试错误?
  • 重试是否有退避策略和最大重试次数限制?
  • 写操作是否实现了幂等性保护?
  • 并发工具调用是否有竞态保护?(锁/信号量/乐观锁)
  • 工具权限是否遵循最小权限原则?
  • 危险操作是否有人工审批环节?
  • 所有工具调用是否有完整的日志和链路追踪?
  • 工具执行失败时,是否有结构化的错误信息返回给大模型?
  • 是否有工具调用的超时控制?(防止无限等待)
  • 是否有工具调用的熔断机制?(防止级联故障)

九、金句

🔥 "Agent工具调用的本质不是函数调用,而是分布式任务编排——你把它当Demo写,它就当生产环境崩。"

🔥 "永远不要信任大模型的输出,就像永远不要信任用户的输入一样——校验、校验、再校验。"

🔥 "一个没有沙箱的Agent,就像一个没有刹车的赛车——跑得越快,翻得越惨。"


【今日技术雷达总结】

2026年,AI Agent正从"能聊天"走向"能干活"。工具调用作为Agent与外部世界交互的核心通道,其工程化水平直接决定了Agent的生产可用性。随着MCP(Model Context Protocol)等标准化协议的普及,工具调用的标准化程度将大幅提升,但安全性、可靠性、可观测性仍然是工程化落地的核心挑战。未来一年,Agent工具调用将向着"自动发现、自动校验、自动修复"的自治化方向演进。

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-08-07 23:10:36 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/826655.html
  2. 运行时间 : 0.100423s [ 吞吐率:9.96req/s ] 内存消耗:4,657.14kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=9272c0a8393d1b9275d53af8186a1f3a
  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 ( 9.87 KB )
  108. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/BaseController.php ( 2.05 KB )
  109. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  110. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  111. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  112. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  113. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  114. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  115. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  116. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  117. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  118. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  119. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  120. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  121. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  122. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  123. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  124. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  125. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  126. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  127. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  128. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  129. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  130. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  131. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  132. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  133. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  134. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  135. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/app/controller/Es.php ( 3.11 KB )
  136. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  137. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  138. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  139. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  140. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  141. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  142. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  143. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  144. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/runtime/temp/c935550e3e8a3a4c27dd94e439343fdf.php ( 31.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000502s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000674s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000291s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000897s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000734s ]
  6. SELECT * FROM `set` [ RunTime:0.000224s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000731s ]
  8. SELECT * FROM `article` WHERE `id` = 826655 LIMIT 1 [ RunTime:0.000506s ]
  9. UPDATE `article` SET `lasttime` = 1786115436 WHERE `id` = 826655 [ RunTime:0.004877s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000464s ]
  11. SELECT * FROM `article` WHERE `id` < 826655 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000546s ]
  12. SELECT * FROM `article` WHERE `id` > 826655 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000423s ]
  13. SELECT * FROM `article` WHERE `id` < 826655 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000620s ]
  14. SELECT * FROM `article` WHERE `id` < 826655 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000879s ]
  15. SELECT * FROM `article` WHERE `id` < 826655 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.009002s ]
0.102050s