当前位置:首页>学习笔记>�� AI Agent 学习笔记(Week3中)CLI工具调用实践&与MCP的对比

�� AI Agent 学习笔记(Week3中)CLI工具调用实践&与MCP的对比

  • 2026-04-25 12:33:17
�� AI Agent 学习笔记(Week3中)CLI工具调用实践&与MCP的对比

AI Agent 时代的命令行工具新思考


1. CLI 简介

什么是 CLI?

CLI(Command-Line Interface,命令行接口)是一种通过文本命令与计算机交互的方式。用户输入指令,程序解析并执行,返回结果。

2. 为什么 CLI 突然"火"了?

2.1 AI Agent 的核心能力:调用工具

AI Agent 不能只"说话",必须能执行动作。工具是 Agent 能力的延伸。

~/ai-agent
传统 AI:理解 → 回复
Agent AI:理解 → 规划 → 调用工具 → 执行 → 反馈

2.2 CLI 是最优的工具接口

CLI 的优势:

1. 零部署 — 无需运行服务,直接命令行调用
2. 自描述--help 让 AI 知道能做什么
3. JSON 输出 — 机器可解析的结构化数据
4. 幂等性 — 同样输入,产出一样(确定性)
5. Unix 哲学 — 一个命令做一件事

2.3 典型场景

~/ai-agent
# AI 理解到需要计算
用户:帮我算 2 的 10 次方
Agent → 调用 CLI → mycli calc "2 ** 10" → 返回 1024

# AI 理解到需要搜索文件
用户:在项目里找所有包含 TODO 的文件
Agent → 调用 CLI → mycli search . -k "TODO" --json → 返回文件列表

# AI 理解到需要系统信息
Agent 需要知道当前环境 → 调用 CLI → mycli sysinfo --json

3. 项目结构

~/ai-agent
/Users/kirito/repos/ai-agent/cli/
├── python-demo/          # Python 版 (mycli)
│   ├── mycli/
│   │   ├── __init__.py
│   │   ├── main.py        # 入口 + 命令注册
│   │   ├── utils.py       # 统一输出格式化
│   │   └── commands/
│   │       ├── __init__.py
│   │       ├── calc.py    # 数学计算
│   │       ├── search.py  # 文件搜索
│   │       └── sysinfo.py # 系统信息
│   └── pyproject.toml
│
└── go-demo/              # Go 版 (gocli)
    ├── main.go           # 入口 + 命令注册
    ├── output/
    │   └── output.go     # 统一输出格式化
    ├── calc/
    │   └── calc.go       # 数学计算 + 递归下降解析器
    ├── search/
    │   └── search.go     # 文件搜索
    ├── sysinfo/
    │   └── sysinfo.go    # 系统信息
    └── go.mod

4. Python 版:mycli

4.1 技术栈

组件 选型 说明
CLI 框架 Click Python 最流行的 CLI 框架
输出美化 Rich 彩色输出、表格、面板
解析器 AST (内置) Python 内置的 AST 模块

4.2 核心代码架构

main.py — 命令注册

~/ai-agent
@click.group()
def cli():
    """mycli - Agent-Friendly CLI Tool"""
    pass

cli.add_command(calc)   # 注册 calc 子命令
cli.add_command(search) # 注册 search 子命令
cli.add_command(sysinfo) # 注册 sysinfo 子命令

utils.py — 统一输出格式

~/ai-agent
def make_success(data: Any, **meta) -> dict:
    """构建成功响应"""
    return {"success": True, "data": data, **meta}

def make_error(message: str, **meta) -> dict:
    """构建错误响应"""
    return {"success": False, "error": message, **meta}

def output_result(data: dict, json_output: bool, rich_formatter=None):
    """根据 --json 标志决定输出格式"""
    if json_output:
        click.echo(json.dumps(data, ensure_ascii=False, indent=2))
    else:
        rich_formatter(data) if rich_formatter else click.echo(data)

calc.py — 安全数学计算(核心)

~/ai-agent
# 使用 Python 内置 AST 模块做安全求值
tree = ast.parse(expression, mode="eval")  # 解析为 AST

def _eval_node(node):
    if isinstance(node, ast.Constant):
        return node.value
    elif isinstance(node, ast.BinOp):
        left = _eval_node(node.left)
        right = _eval_node(node.right)
        return OPERATORS[type(node.op)](left, right)  # 白名单操作符
    elif isinstance(node, ast.Call):
        # 只允许白名单函数
        if node.func.id not in SAFE_FUNCTIONS:
            raise ValueError(f"Unsupported: {node.func.id}")
        return SAFE_FUNCTIONS[node.func.id](*args)

4.3 启动方法

~/ai-agent
cd /Users/kirito/repos/ai-agent/cli/python-demo

# 开发模式安装(可编辑)
pip install -e .

# 验证安装
mycli --version

原理:pyproject.toml 中的 entry points

~/ai-agent
[project.scripts]
mycli = "mycli.main:cli"

安装后,setuptools 会在 bin 目录创建 mycli 可执行文件。

4.4 使用方法

~/ai-agent
# 查看帮助
mycli --help
mycli calc --help

# 数学计算
mycli calc "2 ** 10"           # 1024
mycli calc "sqrt(144) + pi"    # 15.141593
mycli calc --json "log10(1000)" # JSON 输出

# 文件搜索
mycli search . -p "*.py"                  # 按模式
mycli search . -k "TODO"                   # 按关键词
mycli search . -p "*.py" -k "class" --json # 组合 + JSON

# 系统信息
mycli sysinfo                     # 全部信息
mycli sysinfo --section python    # 只看 Python
mycli sysinfo --json              # JSON 输出

JSON 输出示例

~/ai-agent
{
  "success": true,
  "data": {
    "expression": "2 ** 10",
    "result": 1024
  },
  "command": "calc"
}

5. Go 版:gocli

5.1 技术栈

组件 选型 说明
CLI 框架 Cobra Go 最流行的 CLI 框架
输出美化 fatih/color 轻量级彩色输出
解析器 手写递归下降 从头实现 token + parser

5.2 核心代码架构

main.go — 命令注册

~/ai-agent
func init() {
    rootCmd.AddCommand(calc.Cmd)    // 注册 calc
    rootCmd.AddCommand(search.Cmd) // 注册 search
    rootCmd.AddCommand(sysinfo.Cmd) // 注册 sysinfo
}

output/output.go — 统一输出格式

~/ai-agent
type Result struct {
    Success bool        `json:"success"`
    Data    interface{} `json:"data,omitempty"`
    Error   string      `json:"error,omitempty"`
    Command string      `json:"command,omitempty"`
}

func MakeSuccess(data interface{}, command string) Result {
    return Result{Success: true, Data: data, Command: command}
}

func MakeError(message string, command string) Result {
    return Result{Success: false, Error: message, Command: command}
}

calc/calc.go — 递归下降解析器(核心)

Go 没有内置 AST,需要手写 tokenizer + parser:

~/ai-agent
表达式: sqrt(144) + pi

Step 1: Tokenizer(分词)
[Ident("sqrt"), LParen, Number("144"), RParen, Operator("+"), Ident("pi")]

Step 2: Parser(递归下降)
parseExpression()
  └─ parseAddSub()
      ├─ parseMulDiv()
      │   └─ parsePower()
      │       └─ parseUnary()
      │           └─ parsePrimary()
      │               └─ parseFunctionOrConst() → sqrt(144) → 12.0
      ├─ Operator("+")
      └─ parsePrimary() → parseFunctionOrConst() → pi → 3.14159...

结果: 12.0 + 3.14159... = 15.14159...

关键代码结构:

~/ai-agent
type token struct {
    typ tokenType  // NUMBER, OPERATOR, IDENT, LPAREN, RPAREN...
    val string
}

type parser struct {
    tokens []token
    pos    int
}

// 递归下降语法分析
func (p *parser) parseExpression() (float64, error) {
    return p.parseAddSub()
}

func (p *parser) parseAddSub() (float64, error) {
    left, _ := p.parseMulDiv()
    for p.peek().typ == tokenOperator && (p.peek().val == "+" || p.peek().val == "-") {
        op := p.next()
        right, _ := p.parseMulDiv()
        left = applyOp(op.val, left, right)
    }
    return left, nil
}

5.3 启动方法

~/ai-agent
cd /Users/kirito/repos/ai-agent/cli/go-demo

# 构建(如果还没有二进制文件)
go build -o gocli .

# 直接运行
./gocli --help
./gocli --version

优势:单二进制文件,无依赖
- Python 版需要 Python 环境
- Go 版编译后是纯机器码,直接运行

5.4 使用方法

~/ai-agent
# 数学计算
./gocli calc "2 ** 10" --json
./gocli calc "sqrt(144) + pi" --json
./gocli calc "log10(1000)" --precision 4

# 文件搜索
./gocli search . -p "*.go"
./gocli search . -k "TODO" --json
./gocli search . -p "*.go" -k "func" --json

# 系统信息
./gocli sysinfo
./gocli sysinfo --section go --json
./gocli sysinfo --json

JSON 输出示例

~/ai-agent
{
  "success": true,
  "data": {
    "system": {
      "os": "darwin",
      "machine": "amd64",
      "hostname": "KiritodeMacBook-Pro.local"
    },
    "go": {
      "version": "go1.26.1",
      "num_cpu": 16
    },
    "environment": {
      "cwd": "/Users/kirito/repos/ai-agent",
      "home": "/Users/kirito"
    },
    "timestamp": "2026-04-24T20:36:28+08:00"
  },
  "command": "sysinfo"
}

7 CLI与MCP对比

7.1 什么是 MCP?

MCP(Model Context Protocol,模型上下文协议)是 Anthropic 提出的 AI 与工具连接的标准化协议

7.2 CLI vs MCP 对比

维度 CLI MCP
连接方式 subprocess 调用 持久化网络/进程连接
标准化 无标准,各自实现 Anthropic 统一协议
适用场景 简单独立工具 复杂、需要状态的系统
部署复杂度 低(无依赖) 中(需要 MCP Server)
AI 理解成本 低(--help 自描述) 中(需要 MCP SDK)
状态管理 无状态(每次独立) 有状态(可保持连接)
实时性 低(每次 fork 进程) 高(持久连接)

7.3 使用场景对比

CLI 适用场景:

~/ai-agent
✅ 计算器(mycli calc)
✅ 文件搜索(mycli search)
✅ 系统信息查询
✅ 一次性任务
✅ 工具链简单、无状态

MCP 适用场景:

~/ai-agent
✅ 数据库查询(保持连接状态)
✅ 实时文件监控
✅ 需要事务的操作
✅ 多步骤、需要上下文的操作
✅ 复杂系统集成(如 ERP、CRM)

7.4 架构示意图

7.5 总结

CLI MCP
定位 工具调用 协议标准
复杂度 简单 中等
灵活性 高(任何语言) 中(需要 MCP SDK)
适用性 独立工具、简单任务 复杂系统、需要状态
发展趋势 成熟稳定 快速发展

结论: CLI 和 MCP 不是替代关系,是互补的。

  • 简单工具 → CLI(你的 mycli/gocli)
  • 复杂系统集成 → MCP
  • 实际项目中 → 根据场景选择,或混合使用

7.6 "CLI 取代 MCP" — 这个说法到底对不对?

营销号的误导

最近 AI 圈冒出很多逆天营销号,标题一个比一个夸张:"MCP 已死,CLI 才是未来!"——说实话,这种标题党害人不浅。

因为这两者根本不是一个维度的东西

MCP 是规定怎么连接的协议,CLI 是跑工具的环境。我完全可以在 CLI 里调用 MCP,MCP 也完全可以在各种不同平台运行使用。冲突吗?不冲突。

这句话的正确理解方式

硬说 "CLI 取代 MCP" 本身就有问题。正确表述应该是:

"在 AI 生产环境下,优先用 CLI 工具调用取代 MCP 协议调用。"

本质上讨论的是"调用方式"的问题,而不是谁替代谁

以目前来看,接下来的图景大概是这样:

本地开发环境 → CLI + Skills,轻量、快速、上下文干净。

云端生产环境 → MCP + Skills,标准化、跨平台、认证完备。

简单场景 → 直连 API,别瞎折腾。

所以,MCP 并没有死。至于上下文膨胀的问题,官方也已经在着手解决了。

它当然并非万能方案,但它正在成为云端 Agent 的标准化接入层。

核心就一句话:因地制宜,因材施教,合适的就是最好的


8. 附录:Agent 调用示例

Python 调用 mycli

~/ai-agent
import subprocess
import json

def call_mycli(command: str, args: list[str]) -> dict:
    """调用 mycli 并解析 JSON 输出"""
    result = subprocess.run(
        ["mycli", command, "--json"] + args,
        capture_output=True, text=True
    )
    if result.returncode == 0:
        return json.loads(result.stdout)
    else:
        return {"success": False, "error": result.stderr}

# 使用示例
result = call_mycli("calc", ["2 ** 10"])
print(result["data"]["result"])  # 1024

Go 调用 gocli

~/ai-agent
package main

import (
    "encoding/json"
    "os/exec"
)

func callGocli(command string, args ...string) (map[string]interface{}, error) {
    cmd := exec.Command("./gocli", append([]string{command, "--json"}, args...)...)
    output, err := cmd.Output()
    if err != nil {
        return nil, err
    }
    var result map[string]interface{}
    json.Unmarshal(output, &result)
    return result, nil
}

func main() {
    result, _ := callGocli("calc", "2 ** 10")
    data := result["data"].(map[string]interface{})
    println(data["result"].(float64)) // 1024
}

10. 参考资料

  • Click 文档
  • Cobra 文档
  • MCP 协议介绍

文档生成时间:2026-04-24

最新文章

随机文章

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