乐于分享
好东西不私藏

OpenClaw高级技巧:自定义技能开发与插件生态

OpenClaw高级技巧:自定义技能开发与插件生态

从使用者到创造者:掌握OpenClaw技能开发,打造专属AI助手生态

在前两篇文章中,我们学习了OpenClaw的基础使用和AI工作流构建。今天,让我们深入OpenClaw的核心——自定义技能开发,探索如何从使用者转变为创造者,打造属于你自己的AI助手生态!

🎯 为什么要学习技能开发?

开发者视角的价值

  1. 解决特定需求:通用技能无法满足所有场景
  2. 提升效率:定制化工具更贴合工作流
  3. 创造价值:可以分享和复用技能
  4. 技术成长:掌握AI应用开发的核心技能

商业价值

  • 🏢 企业定制:开发符合企业流程的专用技能
  • 🛍️ 产品集成:将AI能力集成到现有产品
  • 📈 服务扩展:提供基于OpenClaw的增值服务
  • 🤝 生态贡献:参与开源社区,建立技术影响力

📚 技能开发基础

1. 技能结构解析

一个标准的OpenClaw技能包含以下部分:

skill-name/
├── SKILL.md          # 技能说明文档
├── config.json       # 配置文件(可选)
├── scripts/          # 执行脚本
│   ├── main.py       # 主逻辑
│   └── utils.py      # 工具函数
├── references/       # 参考文档
└── tests/           # 测试文件

2. SKILL.md 规范

这是技能的核心文档,必须包含:

---
name: skill-name
description: 技能描述
---

# 技能名称

## 何时使用
- 场景1:当用户需要...
- 场景2:当用户要求...

## 工作流
1. 第一步:...
2. 第二步:...
3. 第三步:...

## 配置说明
- 参数1:说明
- 参数2:说明

## 示例
```bash
# 使用示例

注意事项

  • 限制1:...
  • 限制2:...
## 🚀 实战:创建你的第一个技能

### 案例:天气查询技能

#### 步骤1:创建技能目录结构
```bash
mkdir -p weather-skill/{scripts,references}
cd weather-skill

步骤2:编写SKILL.md

---
name: weather-skill
description: 查询指定城市的天气信息
---

# 天气查询技能

## 何时使用
- 当用户询问某个城市的天气时
- 当用户需要出行天气建议时

## 工作流
1. 解析用户输入,提取城市名称
2. 调用天气API获取数据
3. 格式化返回结果
4. 提供出行建议

## 配置说明
- API_KEY:天气API密钥(可选)
- DEFAULT_CITY:默认城市(可选)

## 示例
```bash
# 查询北京天气
weather 北京

# 查询上海天气(带建议)
weather 上海 --advice

注意事项

  • 需要网络连接
  • API可能有调用频率限制
#### 步骤3:编写主脚本
```python
# scripts/main.py
import sys
import requests
import json

def get_weather(city, api_key=None):
    """获取城市天气"""
    # 这里使用公开的天气API示例
    url = f"https://wttr.in/{city}?format=j1"

    try:
        response = requests.get(url, timeout=10)
        data = response.json()

        # 解析天气数据
        current = data['current_condition'][0]
        weather_info = {
            'city': city,
            'temperature': current['temp_C'],
            'condition': current['weatherDesc'][0]['value'],
            'humidity': current['humidity'],
            'wind_speed': current['windspeedKmph']
        }

        return weather_info
    except Exception as e:
        return {'error': str(e)}

def format_output(weather_info, include_advice=False):
    """格式化输出"""
    if 'error' in weather_info:
        return f"❌ 获取天气失败: {weather_info['error']}"

    output = [
        f"🌤️  {weather_info['city']} 天气报告",
        f"🌡️  温度: {weather_info['temperature']}°C",
        f"☁️  天气: {weather_info['condition']}",
        f"💧 湿度: {weather_info['humidity']}%",
        f"💨 风速: {weather_info['wind_speed']} km/h"
    ]

    if include_advice:
        advice = generate_advice(weather_info)
        output.append(f"\n💡 出行建议: {advice}")

    return "\n".join(output)

def generate_advice(weather_info):
    """生成出行建议"""
    temp = int(weather_info['temperature'])
    condition = weather_info['condition'].lower()

    if temp < 0:
        return "天气寒冷,请注意保暖,穿厚外套"
    elif temp < 10:
        return "天气较冷,建议穿外套"
    elif temp < 25:
        return "天气舒适,适合户外活动"
    else:
        return "天气炎热,注意防暑降温"

    if 'rain' in condition:
        return "有雨,请带伞"
    elif 'snow' in condition:
        return "下雪,注意防滑"

    return "天气适宜,出行愉快"

if __name__ == "__main__":
    # 解析命令行参数
    if len(sys.argv) < 2:
        print("用法: python main.py <城市> [--advice]")
        sys.exit(1)

    city = sys.argv[1]
    include_advice = '--advice' in sys.argv

    weather = get_weather(city)
    result = format_output(weather, include_advice)
    print(result)

步骤4:测试技能

# 测试基本功能
python scripts/main.py 北京

# 测试带建议的功能
python scripts/main.py 上海 --advice

⚙️ 高级技能开发技巧

1. 参数解析与验证

import argparse

def parse_args():
    parser = argparse.ArgumentParser(description='天气查询技能')
    parser.add_argument('city', help='城市名称')
    parser.add_argument('--advice', action='store_true', help='包含出行建议')
    parser.add_argument('--api-key', help='API密钥')
    parser.add_argument('--format', choices=['text', 'json', 'html'],
                       default='text', help='输出格式')
    return parser.parse_args()

2. 错误处理与重试

import time
from functools import wraps

def retry(max_attempts=3, delay=1):
    """重试装饰器"""
    def decorator(func):
        @wraps(func)
        def wrapper(*args, **kwargs):
            for attempt in range(max_attempts):
                try:
                    return func(*args, **kwargs)
                except Exception as e:
                    if attempt == max_attempts - 1:
                        raise
                    time.sleep(delay)
            return None
        return wrapper
    return decorator

@retry(max_attempts=3, delay=2)
def call_external_api(url):
    """调用外部API(带重试)"""
    response = requests.get(url, timeout=10)
    response.raise_for_status()
    return response.json()

3. 缓存机制

import hashlib
import pickle
from datetime import datetime, timedelta

class Cache:
    def __init__(self, ttl_minutes=30):
        self.cache = {}
        self.ttl = timedelta(minutes=ttl_minutes)

    def get_key(self, *args, **kwargs):
        """生成缓存键"""
        data = str(args) + str(sorted(kwargs.items()))
        return hashlib.md5(data.encode()).hexdigest()

    def get(self, key):
        """获取缓存"""
        if key in self.cache:
            value, timestamp = self.cache[key]
            if datetime.now() - timestamp < self.ttl:
                return value
        return None

    def set(self, key, value):
        """设置缓存"""
        self.cache[key] = (value, datetime.now())

4. 异步处理

import asyncio
import aiohttp

async def fetch_multiple_cities(cities):
    """异步获取多个城市天气"""
    async with aiohttp.ClientSession() as session:
        tasks = []
        for city in cities:
            task = fetch_city_weather(session, city)
            tasks.append(task)

        results = await asyncio.gather(*tasks, return_exceptions=True)
        return results

async def fetch_city_weather(session, city):
    """获取单个城市天气"""
    url = f"https://wttr.in/{city}?format=j1"
    async with session.get(url) as response:
        data = await response.json()
        return process_weather_data(data, city)

🔌 插件系统深入

OpenClaw插件架构

用户请求 → OpenClaw网关 → 插件路由器 → 技能执行器 → 结果返回
                ↓
          插件管理器
                ↓
        技能注册与发现

插件注册机制

# 插件注册示例
from openclaw.plugin import register_skill

@register_skill(
    name="weather",
    description="查询天气信息",
    version="1.0.0",
    author="Your Name"
)
class WeatherSkill:
    def __init__(self, config):
        self.config = config
        self.api_key = config.get('api_key')

    async def execute(self, context):
        """执行技能"""
        city = context.get('city')
        result = await self.get_weather(city)
        return self.format_result(result)

    async def get_weather(self, city):
        # 获取天气逻辑
        pass

技能发现与加载

import importlib
import pkgutil
from pathlib import Path

def discover_skills(skills_dir):
    """发现技能目录中的所有技能"""
    skills = {}

    for skill_dir in Path(skills_dir).iterdir():
        if skill_dir.is_dir() and (skill_dir / "SKILL.md").exists():
            skill_name = skill_dir.name
            try:
                # 动态加载技能模块
                module_path = f"skills.{skill_name}.main"
                module = importlib.import_module(module_path)
                skills[skill_name] = module
            except ImportError as e:
                print(f"无法加载技能 {skill_name}: {e}")

    return skills

🎨 技能UI集成

1. 命令行界面(CLI)

import click

@click.group()
def cli():
    """OpenClaw技能管理CLI"""
    pass

@cli.command()
@click.argument('city')
@click.option('--advice', is_flag=True, help='包含出行建议')
def weather(city, advice):
    """查询城市天气"""
    result = get_weather_with_advice(city, advice)
    click.echo(result)

@cli.command()
def list_skills():
    """列出所有可用技能"""
    skills = discover_skills('./skills')
    for name, module in skills.items():
        click.echo(f"• {name}: {module.__doc__ or '无描述'}")

if __name__ == '__main__':
    cli()

2. Web界面集成

from flask import Flask, request, jsonify

app = Flask(__name__)

@app.route('/api/skills/weather', methods=['POST'])
def weather_api():
    """天气查询API"""
    data = request.json
    city = data.get('city', '北京')

    weather_info = get_weather(city)
    return jsonify({
        'success': 'error' not in weather_info,
        'data': weather_info
    })

@app.route('/api/skills', methods=['GET'])
def list_skills_api():
    """列出技能API"""
    skills = discover_skills('./skills')
    return jsonify({
        'skills': list(skills.keys()),
        'count': len(skills)
    })

3. 聊天机器人集成

from telegram import Update
from telegram.ext import Application, CommandHandler, ContextTypes

async def weather_command(update: Update, context: ContextTypes.DEFAULT_TYPE):
    """Telegram天气命令"""
    if not context.args:
        await update.message.reply_text("请指定城市,例如:/weather 北京")
        return

    city = ' '.join(context.args)
    weather_info = get_weather(city)

    if 'error' in weather_info:
        await update.message.reply_text(f"获取天气失败: {weather_info['error']}")
    else:
        message = format_weather_message(weather_info)
        await update.message.reply_text(message)

def setup_telegram_bot():
    """设置Telegram机器人"""
    application = Application.builder().token("YOUR_BOT_TOKEN").build()

    # 注册技能命令
    application.add_handler(CommandHandler("weather", weather_command))

    return application

📦 技能打包与分发

1. 创建技能包

# 创建技能包结构
weather-skill-package/
├── setup.py
├── README.md
├── skill/
│   ├── __init__.py
│   ├── main.py
│   └── utils.py
└── requirements.txt

2. setup.py配置

from setuptools import setup, find_packages

setup(
    name="openclaw-weather-skill",
    version="1.0.0",
    description="OpenClaw天气查询技能",
    author="Your Name",
    packages=find_packages(),
    install_requires=[
        'requests>=2.25.0',
        'click>=8.0.0',
    ],
    entry_points={
        'openclaw.skills': [
            'weather = skill.main:WeatherSkill',
        ],
    },
    classifiers=[
        'Development Status :: 4 - Beta',
        'Intended Audience :: Developers',
        'Topic :: Software Development :: Libraries',
    ],
)

3. 发布到技能市场

# 构建包
python setup.py sdist bdist_wheel

# 发布到PyPI
twine upload dist/*

# 或发布到私有仓库
twine upload --repository-url https://your-private-repo.com dist/*

🔧 调试与测试

1. 单元测试

import unittest
from skill.main import get_weather, format_output

class TestWeatherSkill(unittest.TestCase):
    def test_get_weather_success(self):
        """测试成功获取天气"""
        result = get_weather('北京')
        self.assertIn('temperature', result)
        self.assertIn('condition', result)

    def test_format_output(self):
        """测试格式化输出"""
        test_data = {
            'city': '测试城市',
            'temperature': '20',
            'condition': '晴朗',
            'humidity': '50',
            'wind_speed': '10'
        }

        output = format_output(test_data)
        self.assertIn('测试城市', output)
        self.assertIn('20°C', output)

    def test_error_handling(self):
        """测试错误处理"""
        result = get_weather('不存在的城市')
        self.assertIn('error', result)

if __name__ == '__main__':
    unittest.main()

2. 集成测试

import pytest
from openclaw.testing import SkillTestClient

@pytest.fixture
def weather_skill():
    """创建天气技能实例"""
    from skill.main import WeatherSkill
    return WeatherSkill(config={'api_key': 'test_key'})

def test_weather_skill_execution(weather_skill):
    """测试技能执行"""
    context = {'city': '北京'}
    result = weather_skill.execute(context)

    assert 'temperature' in result
    assert 'condition' in result
    assert result['city'] == '北京'

def test_weather_skill_with_advice(weather_skill):
    """测试带建议的技能执行"""
    context = {'city': '北京', 'advice': True}
    result = weather_skill.execute(context)

    assert 'advice' in result
    assert isinstance(result['advice'], str)

3. 性能测试

import time
import statistics

def benchmark_skill(skill_func, iterations=100):
    """性能基准测试"""
    times = []

    for i in range(iterations):
        start = time.time()
        skill_func()
        end = time.time()
        times.append(end - start)

    return {
        'min': min(times),
        'max': max(times),
        'mean': statistics.mean(times),
        'median': statistics.median(times),
        'p95': statistics.quantiles(times, n=20)[18]  # 95th percentile
    }

# 运行性能测试
results = benchmark_weather_skill(lambda: get_weather('北京'))
print(f"性能指标: {results}")

🌐 技能生态建设

1. 技能分类标准

categories:
  productivity:    # 生产力工具
    - task-management
    - note-taking
    - calendar
  communication:   # 通信工具
    - email
    - messaging
    - video-call
  development:     # 开发工具
    - code-review
    - deployment
    - monitoring
  entertainment:   # 娱乐工具
    - music
    - games
    - news
  utilities:       # 实用工具
    - weather
    - translation
    - calculator

2. 技能质量评估

建立技能质量评分体系:

评估维度 权重 评估标准
功能完整性 30% 功能是否完整,边界情况处理
代码质量 25% 代码规范、注释、测试覆盖率
文档质量 20% 文档完整性、示例、更新频率
用户体验 15% 易用性、错误提示、响应速度
社区活跃度 10% Issue响应、PR合并、版本更新

3. 技能商店建设

class SkillStore:
    def __init__(self):
        self.skills = {}
        self.categories = {}
        self.ratings = {}

    def register_skill(self, skill_metadata):
        """注册技能到商店"""
        skill_id = skill_metadata['id']
        self.skills[skill_id] = skill_metadata

        # 分类管理
        for category in skill_metadata.get('categories', []):
            if category not in self.categories:
                self.categories[category] = []
            self.categories[category].append(skill_id)

    def search_skills(self, query, category=None):
        """搜索技能"""
        results = []

        for skill_id, skill in self.skills.items():
            # 匹配查询
            matches_query = (
                query.lower() in skill['name'].lower() or
                query.lower() in skill['description'].lower() or
                any(query.lower() in tag.lower() for tag in skill.get('tags', []))
            )

            # 匹配分类
            matches_category = (
                category is None or
                category in skill.get('categories', [])
            )

            if matches_query and matches_category:
                results.append(skill)

        # 排序:评分高的在前
        results.sort(key=lambda x: self.ratings.get(x['id'], 0), reverse=True)
        return results

    def rate_skill(self, skill_id, rating, feedback=None):
        """为技能评分"""
        if skill_id not in self.ratings:
            self.ratings[skill_id] = []

        self.ratings[skill_id].append({
            'rating': rating,
            'feedback': feedback,
            'timestamp': datetime.now()
        })

🚀 实战项目:构建完整技能生态

项目目标

创建一个完整的OpenClaw技能开发、测试、发布、管理平台。

技术栈

  • 后端:FastAPI + PostgreSQL + Redis
  • 前端:Vue.js + Element Plus
  • 部署:Docker + Kubernetes
  • 监控:Prometheus + Grafana

核心功能模块

graph TB
    A[技能开发者] --> B[技能开发平台]
    B --> C[技能测试环境]
    C --> D[技能发布系统]
    D --> E[技能商店]
    E --> F[技能使用者]
    F --> G[使用反馈]
    G --> H[技能优化]
    H --> B

    I[管理员] --> J[审核系统]
    J --> K[质量监控]
    K --> L[安全扫描]
    L --> M[版本管理]

实施步骤

  1. 第一阶段:基础平台搭建(2-4周)
  2. 用户系统
  3. 技能上传和存储
  4. 基础测试环境

  5. 第二阶段:核心功能开发(4-6周)

  6. 技能执行引擎
  7. 测试框架
  8. 基础商店功能

  9. 第三阶段:高级功能(6-8周)

  10. 技能市场
  11. 自动化测试
  12. 性能监控
  13. 安全扫描

  14. 第四阶段:生态建设(持续)

  15. 社区建设
  16. 合作伙伴
  17. 商业化探索

📈 商业化路径

1. 免费增值模式

  • 基础功能免费:技能开发、测试、基础发布
  • 高级功能收费:高级测试、性能优化、优先审核
  • 企业版:私有部署、定制开发、技术支持

2. 技能市场分成

  • 开发者免费发布技能
  • 平台收取交易佣金(10-20%)
  • 提供推广和营销服务

3. 技术服务

  • 技能定制开发
  • 技术咨询和培训
  • 系统集成服务

4. 数据服务

  • 技能使用数据分析
  • 市场趋势报告
  • 开发者洞察报告

🎯 成功案例参考

案例1:企业内部技能平台

公司:某科技公司(500人规模)
需求:统一AI助手平台,集成内部系统
解决方案
- 基于OpenClaw搭建私有技能平台
- 开发10+个内部专用技能
- 集成CRM、ERP、OA系统
效果
- 员工效率提升30%
- 开发成本降低60%
- 系统维护工作量减少50%

案例2:教育机构技能生态

机构:某在线教育平台
需求:AI助教系统,个性化学习
解决方案
- 开发学习辅助技能(作业批改、知识点讲解)
- 构建学生画像技能
- 创建个性化推荐技能
效果
- 学生满意度提升40%
- 教师工作量减少35%
- 课程完成率提高25%

案例3:开发者社区平台

社区:某技术开发者社区
需求:技能分享和协作平台
解决方案
- 建立开源技能仓库
- 创建技能协作开发工具
- 举办技能开发大赛
效果
- 收集200+个开源技能
- 活跃开发者5000+
- 技能下载量超过10万次

💡 创新方向

1. AI辅助技能开发

  • 代码生成:根据需求描述自动生成技能代码
  • 测试生成:自动生成测试用例
  • 文档生成:自动生成技能文档
  • 优化建议:提供代码优化建议

2. 技能组合与编排

  • 可视化编排:拖拽式技能工作流设计
  • 智能组合:AI推荐最佳技能组合
  • 自动优化:根据使用数据自动优化工作流

3. 跨平台技能

  • 一次开发,多平台运行
  • 自动适配不同消息平台
  • 统一技能管理界面

4. 技能安全与合规

  • 自动安全扫描
  • 合规性检查
  • 数据隐私保护
  • 访问控制管理

🚨 挑战与应对

技术挑战

  1. 技能兼容性:不同版本OpenClaw的兼容问题
  2. 解决方案:版本管理、向后兼容、迁移工具

  3. 性能优化:大量技能同时运行的性能问题

  4. 解决方案:资源隔离、异步处理、缓存优化

  5. 安全性:恶意技能的安全风险

  6. 解决方案:沙箱环境、权限控制、安全审计

运营挑战

  1. 技能质量参差不齐
  2. 解决方案:质量评估体系、审核机制、用户评价

  3. 开发者生态建设

  4. 解决方案:开发者激励、技术支持、社区建设

  5. 商业化平衡

  6. 解决方案:合理的收费模式、免费增值策略

📚 学习资源推荐

官方资源

  • 📖 OpenClaw官方文档:https://docs.openclaw.ai
  • 💻 GitHub仓库:https://github.com/openclaw/openclaw
  • 💬 Discord社区:https://discord.com/invite/clawd

学习路径

  1. 入门阶段(1-2周)
  2. OpenClaw基础使用
  3. 现有技能的使用和配置

  4. 进阶阶段(2-4周)

  5. 技能开发基础
  6. API集成和数据处理

  7. 高级阶段(4-8周)

  8. 复杂技能开发
  9. 性能优化和安全
  10. 技能生态建设

实践项目

  1. 个人项目:开发一个实用的个人技能
  2. 团队项目:协作开发一个复杂技能
  3. 开源贡献:为现有技能提交改进
  4. 生态建设:参与技能商店或工具开发

🎉 开始你的技能开发之旅

从今天开始,你不再只是OpenClaw的使用者,更是创造者。技能开发不仅是一项技术能力,更是创造价值、解决问题、连接生态的重要途径。

立即行动步骤:

  1. 选择一个简单需求:从解决一个小问题开始
  2. 学习技能开发基础:掌握SKILL.md规范和基本结构
  3. 开发第一个技能:按照教程完成天气查询技能
  4. 测试和优化:确保技能稳定可靠
  5. 分享和反馈:在社区分享你的成果

长期发展建议:

  1. 持续学习:关注OpenClaw和AI技术发展
  2. 参与社区:在开源社区中学习和贡献
  3. 建立作品集:积累有影响力的技能项目
  4. 探索商业化:将技能开发转化为商业机会

记住,最好的学习方式是实践。不要担心技能不够完美,重要的是开始行动,在过程中不断学习和改进。

现在就开始,用代码创造价值,用技能改变世界!


系列文章回顾:
1. 🦞 OpenClaw新手指南:让你的聊天应用秒变智能助手
2. 🔧 实战教程:用OpenClaw打造你的个人AI工作流
3. 🛠️ OpenClaw高级技巧:自定义技能开发与插件生态

下期预告:我们将探讨OpenClaw在企业级应用中的实践案例。

作者:OpenClaw技能开发专家 | 编辑:公众号小助手
发布日期:2026年3月19日
标签:#OpenClaw #技能开发 #AI插件 #开源生态 #开发者工具

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-03-21 11:08:51 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/479806.html
  2. 运行时间 : 0.113400s [ 吞吐率:8.82req/s ] 内存消耗:4,849.86kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=a0be8ecc1d42d428773ae9b8417e5c15
  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 ( 3.94 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.68 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.30 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.80 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000578s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000976s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000362s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000308s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000476s ]
  6. SELECT * FROM `set` [ RunTime:0.000201s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000540s ]
  8. SELECT * FROM `article` WHERE `id` = 479806 LIMIT 1 [ RunTime:0.004312s ]
  9. UPDATE `article` SET `lasttime` = 1774062531 WHERE `id` = 479806 [ RunTime:0.021987s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000357s ]
  11. SELECT * FROM `article` WHERE `id` < 479806 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.002247s ]
  12. SELECT * FROM `article` WHERE `id` > 479806 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000417s ]
  13. SELECT * FROM `article` WHERE `id` < 479806 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001552s ]
  14. SELECT * FROM `article` WHERE `id` < 479806 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001071s ]
  15. SELECT * FROM `article` WHERE `id` < 479806 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000813s ]
0.115077s