乐于分享
好东西不私藏

如何为 AI Agent 设计 CLI 工具

如何为 AI Agent 设计 CLI 工具

背景

传统 CLI 假设使用者是坐在终端前的人类——能按方向键、能读懂模糊提示、能从上下文推断下一步。但当 CLI 的调用者变成 AI Agent 时,这些隐式假设全部失效。Agent 不能处理交互式 prompt,不能从模糊错误中恢复,不能猜测未文档化的行为。

CLI 设计规范在当前节点的紧迫性由三个趋势驱动:

  1. Agent 调用取代人类调用成为主流场景 —— Claude Code、Codex CLI、Cursor 等 Agent 已常态化通过 CLI 与工具交互,CLI 不再是人类专属界面
  2. Skill/Plugin 生态爆发 —— Skill 本质上就是「CLI 工具 + Agent 使用说明」,CLI 质量直接决定 Agent 的能力天花板
  3. 传统 CLI 的隐式契约全面失效 —— TTY 检测、交互式 prompt、模糊错误信息在 Agent 语境下都是致命缺陷,必须显式化

从架构上看,CLI 工具是 Agent 的行动接口(Action Interface)。模型不直接执行工具,而是通过编排层(orchestration layer)发起调用请求。编排层负责:

  1. 参数验证:检查 flag 是否合法
  2. 权限门控:验证 Agent 是否有权执行该操作
  3. 执行与捕获:运行命令,捕获 stdout/stderr 和退出码
  4. 结果反馈:将结构化输出返回给模型用于下一步推理

一个设计良好的 CLI 让编排层的工作变得简单——输入通过 flag 传入,输出通过 JSON 返回,错误通过退出码和 stderr 报告。编排层不需要解析人类文本、处理交互式 prompt 或猜测命令是否成功。

┌─────────────┐     structured call      ┌──────────────┐│   LLM Model │ ──────────────────────── │ Orchestrator ││  (决策层)    │ ◄── structured result ── │  (编排层)     │└─────────────┘                          └──────┬───────┘                                                │                                    flags + stdin │ stdout + stderr + exit code                                                │                                         ┌──────▼───────┐                                         │   CLI Tool   │                                         │  (执行层)     │                                         └──────────────┘

设计原则

输入

1. 非交互优先

规则:所有必要输入必须能通过 flag、环境变量或 stdin 传入。交互式流程只作为人类 fallback。

Agent 无法处理运行中途弹出的交互式选择。如果命令执行到一半要求用户按方向键选择环境,Agent 会直接卡死。

# 反模式:阻塞 Agent$ mycli deploy? Which environment? (use arrow keys)# 正确:所有输入通过 flag 传入$ mycli deploy --env staging --tag v1.2.3

设计要点:

  • 支持 --stdin 从管道读取复杂输入(如 JSON 配置)
  • 检测 CI=true 或 NO_TTY 环境变量时自动禁用交互
  • 当 flag 缺失且非 TTY 环境时,CLI 应报错退出而非进入交互模式

2. 渐进发现

规则:不要一次性倾倒全部文档。让 Agent 按需逐层探索命令能力。

Agent 的上下文窗口有限。如果顶层 --help 输出 200 行文档,大部分内容会被浪费。正确的做法是分层暴露:

# 第一层:顶层命令列出子命令$ mycli --helpCommands:  deploy    Deploy application to target environment  build     Build container image  config    Manage configuration  status    Show deployment status# 第二层:子命令给出聚焦选项和示例$ mycli deploy --helpOptions:  --env     Target environment (staging, production)  --tag     Image tag (default: latest)  --force   Skip confirmation  --dry-run Preview changes without executingExamples:  mycli deploy --env staging  mycli deploy --env production --tag v1.2.3  mycli deploy --env staging --force

设计要点:

  • 示例比描述更重要——Agent 从示例中模式匹配调用方式
  • 考虑提供 mycli completion --shell agent 输出机器可读的命令树

3. 可预测的命令结构

规则:命令遵循统一的 resource + verb 模式,让 Agent 能从已知命令推断未知命令。

如果 Agent 学会了 mycli service list,它应该能推断出 mycli deploy listmycli config list 也存在。一致的命名模式降低 Agent 的探索成本。

# 统一的 resource-verb 模式mycli service listmycli service get <id>mycli service create --name <name>mycli service delete <id> --yesmycli deploy listmycli deploy get <id>mycli deploy create --env <env> --tag <tag>mycli deploy rollback <id> --yes

设计要点:

  • 选择一种模式并全局一致:noun verb 或 verb noun
  • 全局 flag 位置一致(如 --json--verbose 始终可用)
  • 避免同义词混用(不要一处用 remove 另一处用 delete

输出

4. 结构化输出

规则:成功输出应包含机器可提取的关键数据。支持 --json 切换。

Agent 需要从命令输出中提取信息用于后续步骤。纯人类友好的文本(带 emoji、颜色码、进度条)对 Agent 是噪音。

# 人类友好输出(默认)$ mycli deploy --env staging --tag v1.2.3✓ Deployed v1.2.3 to staging# Agent 友好输出$ mycli deploy --env staging --tag v1.2.3 --json{"status""success","environment""staging","tag""v1.2.3","url""https://staging.myapp.com","deploy_id""dep_abc123","duration_seconds": 34}

设计要点:

  • 即使是默认文本输出,也应包含关键 ID 和 URL 等可 grep 的字段
  • 避免在输出中混入 ANSI 颜色码(通过 --no-color / NO_COLOR 环境变量禁用)
  • 列表类命令支持 --output table--json--output csv

5. 可操作错误

规则:错误信息必须告诉 Agent 下一步该做什么,而不只是说哪里出了问题。

Agent 擅长自我修正,但前提是错误信息给出了足够的修正线索。

# 反模式:模糊错误$ mycli deploy --env stagingError: deployment failed# 正确:给出修正路径$ mycli deploy --env stagingError: No image tag specified.  Usage: mycli deploy --env staging --tag <image-tag>  Available tags: mycli build list --output tags  Latest tag: v1.2.3

设计要点:

  • 使用非零退出码区分错误类型(1=用户错误,2=系统错误,3=权限错误)
  • 错误输出到 stderr,正常结果输出到 stdout
# JSON 格式的错误输出$ mycli deploy --env staging --json{"status""error","code""MISSING_TAG","message""No image tag specified","suggestion""mycli deploy --env staging --tag <image-tag>","related_commands": ["mycli build list --output tags"],"retryable"false}

retryable 字段让 Agent 区分瞬态错误(网络超时、限流)和永久错误(参数缺失、权限不足),从而决定是重试还是换策略。

执行

6. 幂等与可重试

规则:同一命令执行两次应产生相同结果,不应制造重复副作用。

Agent 会因为网络超时、上下文丢失或任务重试而重复执行命令。如果 deploy 执行两次创建了两个部署,Agent 无法安全地重试任何操作。

# 首次执行$ mycli deploy --env staging --tag v1.2.3deployed v1.2.3 to staging (deploy_id: dep_abc123)# 重复执行:返回已有结果而非创建重复$ mycli deploy --env staging --tag v1.2.3already deployed v1.2.3 to staging (deploy_id: dep_abc123, no-op)

设计要点:

  • 对于天然非幂等操作(如发送消息),在文档中明确标注
  • 提供 status 或 get 子命令让 Agent 先检查状态再决定是否执行

7. 安全预演

规则:破坏性操作必须支持 --dry-run 预览和 --yes 确认跳过。

Agent 应该能在不产生副作用的情况下验证操作计划,然后再决定是否执行。

# 预览模式:展示将要发生什么$ mycli deploy --env production --tag v1.2.3 --dry-runWould deploy v1.2.3 to production:  - Stop 3 running instances  - Pull image registry.io/app:v1.2.3  - Start 3 new instances  - Run health checksNo changes made.# 确认执行$ mycli deploy --env production --tag v1.2.3 --yesDeployed v1.2.3 to production (deploy_id: dep_xyz789)

设计要点:

  • dry-run 输出应与实际执行输出结构一致,方便 Agent 对比验证

进阶设计

以上 7 条核心原则确保单条命令可被 Agent 稳定调用。以下模式在此基础上叠加,覆盖跨命令组合、版本演进、长时间运行和权限管控等更复杂的场景。

组合性

Agent 以管道思维工作——把多个命令串联起来完成复杂任务。CLI 应支持命令间的数据流动。

# 从上游命令获取输入mycli deploy --env staging --tag $(mycli build --output tag-only)# 通过 stdin 传入复杂配置cat config.json | mycli config import --stdin# 列表输出可被下游消费mycli service list --json | jq '.[] | select(.status == "unhealthy") | .id'

设计要点:

  • 提供 --output tag-only 或 --output id-only 等精简输出模式
  • 支持 --stdin 从管道读取输入
  • 列表命令的 JSON 输出应是数组,方便 jq 处理
  • 单条记录命令的输出应是对象
  • $() 嵌套存在命令输出注入风险,优先使用 --stdin + 管道传递复杂数据

版本与兼容性

Agent 的 skill 文件和 workflow 可能锁定特定的命令格式。CLI 的输出格式变更会破坏 Agent 的解析逻辑。

设计要点:

  • 使用语义化版本号,输出格式变更视为 breaking change
  • 提供 --api-version flag 或 MYCLI_API_VERSION 环境变量
  • 废弃字段先标记 deprecated,至少保留一个主版本周期
  • mycli version --json 返回版本信息供 Agent 检测兼容性

超时与取消

Agent 需要知道命令是否会长时间运行,以及如何安全取消。

设计要点:

  • 长时间操作支持 --timeout flag
  • 超时后返回明确的超时错误码(而非静默挂起)
  • 异步操作返回 job ID,提供 mycli job status <id> 查询进度
  • 支持 mycli job cancel <id> 安全取消
# 异步操作模式$ mycli deploy --env production --tag v2.0.0 --asyncJob started: job_abc123Check status: mycli job status job_abc123$ mycli job status job_abc123 --json{"job_id""job_abc123","status""running","progress""pulling image (2/4 steps)","started_at""2026-05-08T10:30:00Z","estimated_completion""2026-05-08T10:32:00Z"}

权限与作用域

Agent 的操作应受到明确的权限边界约束。CLI 应让权限模型对 Agent 透明。

设计要点:

  • 权限不足时返回明确错误和所需权限名称
  • 提供 mycli auth whoami 查看当前身份和权限
  • 支持 --scope 或 --as 限制操作范围
  • 敏感操作的审计日志应包含调用者身份
$ mycli service delete prod-db --yesError: Permission denied.  Required: service:delete on resource prod-db  Current permissions: service:read, service:list  Request access: mycli auth request-permission service:delete

Agent-Friendly CLI 设计规范

可直接嵌入 Agent 系统规则(如 AGENTS.md)或作为 Code Review 标准。MUST = 必须,SHOULD = 应该,MAY = 可选。

### 1. 调用规范[MUST] 所有必要参数通过 `--flag` 或环境变量传入,禁止运行时交互式 prompt[MUST] 未提供必要参数时输出错误并以非零退出码退出;不降级为交互模式[SHOULD] 检测到非 TTY 环境(`$CI``!isatty()`)时自动禁用交互,不得挂起等待[SHOULD] 提供 `--stdin` 或 `--file` 读取复杂输入(JSON / YAML)[MUST] 全局 flag 命名前后一致(禁止 `--env` 和 `--environment` 混用)[MUST] 命令遵循统一的 verb-noun 或 noun-verb 模式;禁止同义词混用(remove / delete)### 2. 输出规范[MUST] 提供 `--json` 输出模式[MUST] `--json` 输出必须包含 `status` 字段(`"success"` / `"error"`[SHOULD] `--json` 输出包含关键 ID、URL、耗时等可程序消费的字段[MUST] 数据输出到 stdout;日志、进度、诊断输出到 stderr[SHOULD] 支持 `--verbose` / `--debug` 输出中间步骤和调用链信息(通过 stderr,不污染 stdout 可解析数据)[SHOULD] 支持 `NO_COLOR` 或 `--no-color`;默认不在 stdout 输出 ANSI 颜色码[SHOULD] 列表类命令的 `--json` 输出为 JSON 数组[MAY] 列表类命令额外支持 `--output table` / `--output csv`### 3. 错误规范[MUST] 错误信息包含三个部分:问题描述 + 正确用法示例 + 获取缺失信息的命令[MUST] 使用非零退出码区分错误类型(建议:1=参数/用户错误、2=系统/运行时错误、3=权限不足)[MUST] `--json` 模式下错误也输出结构化 JSON(含 `code``message``suggestion``retryable` 字段)[MUST] `retryable` 字段告知调用方可否重试:`false` 表示参数缺失等永久错误;`true` 表示网络超时等瞬态错误### 4. 安全与幂等[MUST] 破坏性操作必须提供 `--dry-run`[MUST] 破坏性操作默认要求确认;提供 `--yes` 跳过确认[SHOULD] 创建/部署类命令支持幂等键或基于参数去重;重复调用返回已有结果,标注 `"created": false`[SHOULD] 长时间操作支持 `--timeout <seconds>`;超时后明确返回错误,不静默挂起[SHOULD] 权限不足时在错误信息中输出所需权限名称和当前权限列表### 5. 可发现性[MUST] 顶层 `--help` 只列子命令名称和一句话描述;不展开参数[MUST] 每个子命令 `--help` 末尾包含 `Examples:` 段[SHOULD] 顶层的每条子命令描述长度不超过 60 字符[SHOULD] 提供 `version` 子命令,且支持 `--json` 组合输出结构化版本信息[MAY] 提供 `completion --shell agent` 输出机器可读的命令树### 6. 兼容性[MUST] 使用语义化版本号(SemVer)[SHOULD] `--json` 输出格式变更视为 breaking change(MAJOR 升级)[SHOULD] 废弃字段先标记 `deprecated`,至少保留一个主版本周期[SHOULD] 支持 `--api-version` 或 `$MYCLI_API_VERSION` 锁定接口版本

参考来源

  • https://x.com/i/article/2036387800119975936 - Eric Zakariasson, "Building CLIs for agents" (2026-03)
  • https://x.com/vasuman/status/2011923440769659132 - @vasuman, "AI Agents 101" (2026-01)
  • https://x.com/i/article/2042922188924424198 - @garrytan, "Thin Harness, Fat Skills" (2026-04)
  • https://github.com/EveryInc/compound-engineering-plugin - Compound Engineering Plugin
基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-05-28 22:00:33 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/679439.html
  2. 运行时间 : 0.188438s [ 吞吐率:5.31req/s ] 内存消耗:4,707.15kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=ed3a0cae415430fc0cb703a2af05ecff
  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.000718s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000680s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000320s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000252s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000486s ]
  6. SELECT * FROM `set` [ RunTime:0.000208s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000542s ]
  8. SELECT * FROM `article` WHERE `id` = 679439 LIMIT 1 [ RunTime:0.000440s ]
  9. UPDATE `article` SET `lasttime` = 1779976833 WHERE `id` = 679439 [ RunTime:0.004093s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000372s ]
  11. SELECT * FROM `article` WHERE `id` < 679439 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000549s ]
  12. SELECT * FROM `article` WHERE `id` > 679439 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000547s ]
  13. SELECT * FROM `article` WHERE `id` < 679439 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.000738s ]
  14. SELECT * FROM `article` WHERE `id` < 679439 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000850s ]
  15. SELECT * FROM `article` WHERE `id` < 679439 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.000788s ]
0.192407s