乐于分享
好东西不私藏

【终端AI编程智能体】7. 工具系统与安全架构设计

【终端AI编程智能体】7. 工具系统与安全架构设计

引言

AI编程代理的能力很大程度上取决于其能够使用的工具集。同时,强大的工具能力也带来了安全风险。OPENDEV通过精心设计的工具系统和五层深度防御安全架构,在提供丰富功能的同时确保系统的安全性。本文将深入探讨工具注册机制、MCP协议集成以及多层安全防护的实现细节。

工具系统架构

工具注册表(Tool Registry)

核心作用

工具注册表是工具执行层的核心,负责管理所有可用工具的定义、验证和分派。

主要功能

  • 工具注册:注册新工具及其处理程序
  • 工具发现:动态发现和加载工具
  • 工具验证:验证工具调用的参数和权限
  • 工具分派:将工具调用分派到相应的处理程序

工具定义结构

{    "name": "read_file",    "description": "读取文件内容",    "parameters": {        "type": "object",        "properties": {            "file_path": {                "type": "string",                "description": "文件路径"            }        },        "required": ["file_path"]    },    "handler": read_file_handler}

工具类型与分类

1. 文件操作工具

核心工具

  • read_file:读取文件内容
  • write_file:写入文件内容
  • edit_file:编辑文件(基于diff)
  • list_directory:列出目录内容
  • delete_file:删除文件
  • copy_file:复制文件
  • move_file:移动文件

安全考虑

  • 路径验证:防止路径遍历攻击
  • 权限检查:确保有读写权限
  • 备份机制:重要操作前备份

2. Shell执行工具

核心工具

  • execute_shell:执行shell命令
  • execute_background:后台执行命令
  • kill_process:终止进程

安全考虑

  • 命令白名单/黑名单
  • 危险命令检测
  • 超时控制
  • 输出截断

3. Web交互工具

核心工具

  • web_fetch:获取网页内容
  • web_search:搜索网络
  • web_download:下载文件

安全考虑

  • URL验证
  • 内容过滤
  • 大小限制

4. 代码分析工具

核心工具

  • grep_search:文本搜索
  • semantic_search:语义搜索
  • lsp_analysis:LSP代码分析
  • ast_parse:AST解析

优势

  • 理解代码语义
  • 精确定位代码
  • 跨语言支持

5. 用户交互工具

核心工具

  • ask_user:询问用户
  • present_plan:展示计划
  • update_todo:更新待办事项

目的

  • 获取用户输入
  • 确认关键操作
  • 跟踪任务进度

6. 子代理工具

核心工具

  • spawn_subagent:生成子代理
  • use_skill:使用技能

用途

  • 委托专门任务
  • 并行处理
  • 技能复用

MCP协议集成

什么是MCP?

MCP(Model Context Protocol)是一个标准化的协议,用于AI模型与外部工具和数据源的交互。它提供了一种统一的方式来发现、描述和调用工具。

MCP的优势

  • 标准化:
  • 统一的工具描述格式
  • 标准的调用协议
  • 跨平台兼容
  • 可扩展性:
  • 轻松添加新工具
  • 无需修改核心代码
  • 社区驱动的工具生态
  • 延迟发现:
  • 按需加载工具
  • 减少启动开销
  • 优化上下文使用

MCP工具发现流程

  • 服务器连接:
  • 连接到MCP服务器
  • 查询可用工具列表
  • 工具注册:
  • 解析工具描述
  • 注册到工具注册表
  • 更新代理的工具模式
  • 延迟加载:
  • 工具描述在首次使用时加载
  • 避免启动时的开销
  • 按需初始化

MCP工具示例

{  "name": "database_query",  "description": "执行数据库查询",  "inputSchema": {    "type": "object",    "properties": {      "query": {        "type": "string",        "description": "SQL查询语句"      },      "database": {        "type": "string",        "description": "数据库名称"      }    },    "required": ["query", "database"]  }}

批量并行执行

并行执行的优势

  • 性能提升:
  • 同时执行多个独立操作
  • 减少总执行时间
  • 提高效率
  • 资源优化:
  • 充分利用系统资源
  • 减少等待时间
  • 提高吞吐量

并行执行策略

独立工具调用

  • 当多个工具调用相互独立时
  • 使用线程池并行执行
  • 收集所有结果后返回

依赖工具调用

  • 当工具调用有依赖关系时
  • 按依赖顺序执行
  • 确保正确性

示例

# 并行读取多个文件results = parallel_execute([    ("read_file", {"file_path": "file1.py"}),    ("read_file", {"file_path": "file2.py"}),    ("read_file", {"file_path": "file3.py"})])

五层安全架构

为什么需要多层安全?

风险分析

AI代理可以执行任意shell命令、覆盖文件、生成持久进程,单一安全机制不足以应对所有风险:

  • 模型推理错误:模型可能产生危险的想法
  • 工具调用错误:工具参数可能不正确
  • 权限滥用:代理可能超越其权限范围
  • 意外操作:用户可能误操作
  • 系统漏洞:软件可能存在漏洞

深度防御原则

每层独立防护,没有单点故障,即使一层失效,其他层仍能提供保护。

第一层:提示级护栏(Prompt-Level Guardrails)

作用范围:模型推理层面

核心内容

1. 安全策略

  • 定义代理行为的边界和约束
  • 明确禁止的操作
  • 必须遵守的规则

示例

你是一个AI编程助手。你必须遵守以下安全规则:1. 不要删除用户未明确授权的文件2. 不要执行可能损坏系统的命令3. 在修改重要文件前先备份4. 不要访问敏感信息(密码、密钥等)

2. 行动安全

  • 防止危险操作的指导原则
  • 操作前的检查清单
  • 错误处理策略

3. 读前编辑

  • 确保在修改前先读取文件
  • 理解现有代码结构
  • 避免意外覆盖

4. Git工作流

  • 版本控制的最佳实践
  • 提交前的检查
  • 分支管理策略

5. 错误恢复

  • 处理失败情况的策略
  • 回滚机制
  • 重试策略

实现方式

通过在系统提示中嵌入明确的安全指导,从源头引导模型的推理方向。

第二层:架构级工具限制(Schema-Level Tool Restrictions)

作用范围:工具架构层面

核心机制

1. 计划模式白名单

在计划模式下,只允许使用只读工具:

PLAN_MODE_WHITELIST = [    "read_file",    "list_directory",    "grep_search",    "semantic_search",    "lsp_analysis",    "ask_user"]

2. 每子代理allowed_tools

为每个子代理定义允许使用的工具列表:

code_explorer_subagent = {    "name": "code_explorer",    "allowed_tools": [        "read_file",        "grep_search",        "list_directory"    ],    # 不能使用write_file, execute_shell等}

3. MCP发现门控

控制外部工具的发现和加载:

MCP_DISCOVERY_CONFIG = {    "allowed_servers": ["filesystem", "database"],    "blocked_tools": ["execute_shell", "delete_file"],    "require_approval": ["network_access"]}

设计思想

通过在工具架构层面进行限制,即使模型想要调用某个工具,如果该工具不在允许列表中,系统也会拒绝执行。

第三层:运行时批准系统(Runtime Approval System)

作用范围:执行时交互层面

批准级别

1. 手动(Manual)

  • 所有操作都需要用户确认
  • 最安全,但效率最低
  • 适用于高风险环境

2. 半自动(Semi-Auto)

  • 危险操作需要确认
  • 安全操作自动执行
  • 平衡安全和效率

3. 自动(Auto)

  • 所有操作自动执行
  • 效率最高,风险最大
  • 仅限受信任环境

规则类型

1. 模式规则

基于操作模式的批准规则

PATTERN_RULES = {    "delete_*": "manual",  # 所有删除操作需要手动批准    "execute_shell": "semi-auto",  # Shell执行需要半自动批准    "read_*": "auto"  # 读取操作自动执行}

2. 命令规则

针对特定命令的批准规则

COMMAND_RULES = {    "rm -rf /": "deny",  # 拒绝危险命令    "git push --force": "manual",  # 强制推送需要手动批准    "npm install": "auto"  # 安装依赖自动执行}

3. 前缀规则

基于命令前缀的批准规则

PREFIX_RULES = {    "sudo": "manual",  # sudo命令需要手动批准    "curl": "semi-auto",  # 网络请求需要半自动批准    "python": "auto"  # Python命令自动执行}

4. 危险规则

识别危险操作的规则

DANGEROUS_RULES = [    "删除系统文件",    "修改系统配置",    "访问敏感目录",    "执行网络操作"]

持久权限

用户批准的权限可以被持久化,避免重复询问相同操作:

PERSISTENT_PERMISSIONS = {    "delete_temp_files": True,  # 允许删除临时文件    "execute_npm_commands": True,  # 允许执行npm命令    "modify_config_files": False  # 不允许修改配置文件}

第四层:工具级验证(Tool-Level Validation)

作用范围:工具执行层面

验证机制

1. DANGEROUS_PATTERNS黑名单

识别并阻止已知的危险模式:

DANGEROUS_PATTERNS = [    r"rm\s+-rf\s+/",  # 删除根目录    r"sudo\s+rm",  # sudo删除    r">\s*/dev/sd",  # 写入磁盘设备    r"chmod\s+777",  # 危险权限设置    r"curl.*|\s*bash",  # 远程执行脚本    r"eval\s*\(",  # 动态代码执行]

2. 陈旧读取检测

检测文件是否在读取后被修改:

def check_stale_read(file_path, read_time):    """检查文件是否在读取后被修改"""    current_mtime = os.path.getmtime(file_path)    if current_mtime > read_time:        raise StaleReadError(            f"文件 {file_path} 在读取后被修改,请重新读取"        )

3. 输出截断

限制工具输出长度,防止上下文溢出:

MAX_OUTPUT_LENGTH = 10000  # 最大输出长度def truncate_output(output):    """截断工具输出"""    if len(output) > MAX_OUTPUT_LENGTH:        return output[:MAX_OUTPUT_LENGTH] + "\n... [输出已截断]"    return output

4. 超时控制

为工具执行设置时间限制:

DEFAULT_TIMEOUT = 30  # 默认超时时间(秒)def execute_with_timeout(command, timeout=DEFAULT_TIMEOUT):    """带超时的执行"""    try:        result = subprocess.run(            command,            timeout=timeout,            capture_output=True        )        return result    except subprocess.TimeoutExpired:        raise TimeoutError(f"命令执行超时({timeout}秒)")

实现细节

在工具执行前进行参数验证,在执行后进行结果检查,确保工具调用的安全性。

第五层:生命周期钩子(Lifecycle Hooks)

作用范围:用户自定义层面

钩子类型

1. 工具前阻塞

在工具执行前触发,可以阻止执行:

def pre_tool_hook(tool_name, arguments):    """工具执行前的钩子"""    if tool_name == "execute_shell":        if "dangerous_command" in arguments["command"]:            return {                "block": True,                "reason": "检测到危险命令"            }    return {"block": False}

2. 参数变异

修改工具调用的参数:

def argument_mutation_hook(tool_name, arguments):    """参数变异钩子"""    if tool_name == "write_file":        # 自动添加备份        arguments["backup"] = True    return arguments

3. JSON stdin协议

通过标准输入传递配置:

# 钩子配置文件{    "hooks": [        {            "event": "pre_tool",            "tool": "execute_shell",            "script": "/path/to/safety_check.py",            "exit_code": 2  # 退出码2表示阻止执行        }    ]}

应用场景

  • 自定义安全检查:用户可以编写自定义的安全检查脚本
  • 审计日志:记录所有工具调用
  • 自动修复:在执行前自动修复问题
  • 集成外部系统:与CI/CD、监控系统等集成

安全架构的实际应用

场景一:删除文件操作

操作流程

  • 第一层:提示中包含"不要删除未授权文件"的指导
  • 第二层:如果是计划模式,删除工具不可用
  • 第三层:运行时批准系统要求用户确认
  • 第四层:检查是否匹配危险模式(如rm -rf /
  • 第五层:用户自定义钩子可以添加额外检查

防护效果

即使模型想要删除文件,多层防护确保操作安全。

场景二:执行Shell命令

操作流程

  • 第一层:提示中包含安全执行命令的指导
  • 第二层:子代理可能没有执行Shell的权限
  • 第三层:根据命令类型决定批准级别
  • 第四层:检查危险命令模式,设置超时
  • 第五层:用户自定义钩子可以记录或阻止

防护效果

危险命令被阻止,常规命令需要适当批准。

场景三:访问敏感文件

操作流程

  • 第一层:提示中禁止访问敏感信息
  • 第二层:可能没有读取敏感目录的权限
  • 第三层:访问敏感文件需要手动批准
  • 第四层:检测敏感文件路径模式
  • 第五层:用户自定义钩子可以加密或脱敏

防护效果

敏感信息得到保护,访问需要明确授权。

安全架构的优势

1. 深度防御

优势

  • 没有单点故障
  • 多层独立防护
  • 即使一层失效,其他层仍能保护

2. 渐进式安全

优势

  • 从源头(提示)到执行(钩子)的全面防护
  • 不同层面处理不同类型的风险
  • 灵活的安全策略

3. 可配置性

优势

  • 用户可以根据需求调整安全级别
  • 支持不同的使用场景
  • 平衡安全和效率

4. 可扩展性

优势

  • 可以添加新的安全层
  • 支持自定义钩子
  • 适应新的威胁

总结

工具系统与安全架构设计是OPENDEV系统的核心组成部分。通过精心设计的工具注册表、MCP协议集成和批量并行执行机制,系统提供了强大的工具能力。同时,五层深度防御安全架构确保了这些能力的安全使用。

工具系统的模块化设计、MCP的标准化协议、批量并行执行的性能优化,使得OPENDEV能够高效地处理各种编程任务。五层安全架构从提示级护栏到生命周期钩子,提供了全方位的安全保护,确保AI代理在提供强大功能的同时不会造成安全风险。

这些设计不仅解决了实际的安全问题,也体现了"深度防御"、"渐进式安全"、"可配置性"和"可扩展性"等设计原则。随着AI技术的不断发展,工具系统和安全架构将继续演进,为AI编程代理提供更强大、更安全的能力。

参考论文《Building Effective AI Coding Agents for the Terminal:Scaffolding, Harness, Context Engineering, and Lessons Learned》

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-06-28 15:29:52 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/809898.html
  2. 运行时间 : 0.245011s [ 吞吐率:4.08req/s ] 内存消耗:4,812.69kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=5f6914a456dd357eeadb9ef0513c48f7
  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.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.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.50 KB )
  145. /yingpanguazai/ssd/ssd1/www/wwww.yeyulingfeng.com/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.001087s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001543s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000731s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000645s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001294s ]
  6. SELECT * FROM `set` [ RunTime:0.000510s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001396s ]
  8. SELECT * FROM `article` WHERE `id` = 809898 LIMIT 1 [ RunTime:0.004009s ]
  9. UPDATE `article` SET `lasttime` = 1782631792 WHERE `id` = 809898 [ RunTime:0.027457s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000666s ]
  11. SELECT * FROM `article` WHERE `id` < 809898 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001128s ]
  12. SELECT * FROM `article` WHERE `id` > 809898 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001113s ]
  13. SELECT * FROM `article` WHERE `id` < 809898 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002462s ]
  14. SELECT * FROM `article` WHERE `id` < 809898 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.001684s ]
  15. SELECT * FROM `article` WHERE `id` < 809898 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.003434s ]
0.249109s