当前位置:首页>java>Trellis AI 编程实战指南

Trellis AI 编程实战指南

  • 2026-02-07 09:15:34
Trellis AI 编程实战指南

AI 的能力像藤蔓一样生长——充满活力但四处蔓延。Trellis 提供结构,引导它沿着规范的路径前进。


为什么你的 AI 助手总是写出不符合规范的代码?

如果你正在使用 Claude Code、Cursor 或其他 AI 编程工具,大概率遇到过这些问题:

痛点一:代码质量不稳定

今天 AI 写的代码完美遵循了你的项目规范,明天却又回到了"野生状态"。你告诉它"我们用 Zustand,不用 Redux",它可能记住了——但下次新会话又开始用 Redux。

痛点二:AI 容易"遗忘"规范

你精心编写的 CLAUDE.md、 .cursorrules、 AGENTS.md 看似有效,但在对话中段,AI 开始忘记这些规范。规范文件越长,AI 越容易"选择性失忆"。

痛点三:多人协作混乱

团队里每个人和 AI 的交互方式都不同,写出的代码风格迥异。A 同学的 AI 用了一套命名规范,B 同学的 AI 用了另一套。最终代码库变成了"百家争鸣"。

核心答案:因为规范只存在于"记忆"中,而非每次"注入"

这就是 Trellis 要解决的问题。


一、Trellis 是什么

Trellis 是 Claude Code 和 Cursor 的一站式 AI 开发框架,核心目标是让 AI 在每次对话中都能获得正确的上下文。

核心价值

功能
解决什么问题
自动注入
规范和工作流自动注入每次对话,写一次,永久生效
自更新规范库
最佳实践存在自更新的 spec 文件中,用得越多,AI 越懂你
并行会话
多个 Agent 同时工作,运行在各自独立的 Git Worktree
团队共享
一个开发者写好规范,整个团队的 AI 编码水平都会提高
会话持久化
工作记录持久化到仓库,AI 跨会话记住项目上下文

快速开始

  1. # 1. 全局安装
  2. npm install -@mindfoldhq/trellis@latest
  3. # 2. 在项目目录初始化
  4. trellis init -u your-name
  5. # 3. 启动 Claude Code,开始干活

二、设计理念:"注入而非记忆"

为什么"记忆"不可靠?

传统的 AI 编程工具依赖于 AI 的"记忆"——你告诉它规范,希望它一直记住。但这会导致上下文腐烂(Context Rot)

  • 分心(Distraction):无关信息干扰决策
  • 混淆(Confusion):信息相互矛盾
  • 冲突(Clash):新旧指令打架

"注入"的优势

Trellis 采用声明式设计,像 Kubernetes 一样工作:

  1. 传统方式:
  2. 用户告诉 AI 规范 AI 记住执行可能忘记
  3. Trellis方式:
  4. 规范存储在文件Hook自动注入 AI 带着完整上下文执行

核心哲学:不依赖 AI 的记忆,而是通过代码保证每次都注入正确的上下文。

用 K8s 的方式理解

如果你熟悉 Kubernetes,可以这样类比:

Kubernetes
Trellis
说明
YAML Manifest
Task 目录
声明期望状态
Controller
Dispatch
按阶段编排执行
Reconciliation Loop
Ralph Loop
验证未通过就继续循环
Pod/Container
Agent
实际执行单元
ConfigMap
JSONL + Hook
注入配置/上下文

两者的共同点:

  • 用户只声明"要什么",不操心"怎么做"
  • 系统持续调谐,直到实际状态符合期望
  • 出现偏差时自动修复

三、Hook 自动注入系统

Hook 是 Trellis 的核心机制,它在关键时刻自动注入上下文,确保 AI 总是在正确的语境中工作。

三个 Hook 各司其职

1. session-start.py:会话启动注入

触发时机:每次 Claude Code 会话启动时

注入内容

  1. # 1. 当前状态(动态)
  2. print("<current-state>")
  3. # 执行 get-context.sh 获取:开发者身份、Git 状态、当前任务、任务队列
  4. print("</current-state>")
  5. # 2. 工作流指南
  6. print("<workflow>")
  7. # 注入 .trellis/workflow.md
  8. print("</workflow>")
  9. # 3. 规范索引
  10. print("<guidelines>")
  11. # 注入 frontend/index.md, backend/index.md, guides/index.md
  12. print("</guidelines>")
  13. # 4. 会话指令
  14. print("<instructions>")
  15. # 注入 start.md 命令内容
  16. print("</instructions>")

设计要点

  • 多 Agent 脚本会设置 CLAUDE_NON_INTERACTIVE=1,跳过注入避免重复
  • 只注入索引文件,不注入全部规范,防止上下文过载

2. inject-subagent-context.py:子 Agent 上下文注入

触发时机: PreToolUse - 在 Task 工具调用前

核心设计

  1. # Dispatch 只发送简单命令
  2. # Hook 负责注入所有上下文
  3. # 子 Agent 带着完整信息自主工作
  4. # 1. 读取 .trellis/.current-task 定位任务目录
  5. task_dir = get_current_task(repo_root)
  6. # 2. 根据 Agent 类型读取对应的 JSONL 文件
  7. if subagent_type =="implement":
  8.     context = get_implement_context(repo_root, task_dir)
  9. # 注入 implement.jsonl + prd.md + info.md
  10. elif subagent_type =="check":
  11.     context = get_check_context(repo_root, task_dir)
  12. # 注入 check.jsonl + prd.md
  13. # 3. 构建完整的 prompt
  14. new_prompt = build_prompt(original_prompt, context)

各 Agent 注入内容对比

Agent
注入内容
目的
Implement
implement.jsonl
 中的规范 + prd.md + info.md
理解需求,按规范实现
Check
check.jsonl
 中的规范 + prd.md
检查代码是否符合规范
Check(finish 标记)
finish-work.md
 + prd.md(轻量)
提交前最终验证
Debug
debug.jsonl
 中的规范 + 错误信息
深度分析和修复
Research
项目结构 + 可选 research.jsonl
搜索代码和文档

3. JSONL 文件格式

JSONL 文件定义了每个 Agent 需要读取的文件:

  1. {"file":".trellis/spec/backend/index.md","reason":"后端开发规范"}
  2. {"file":"src/api/auth.ts","reason":"现有认证模式参考"}
  3. {"file":"src/middleware/","type":"directory","reason":"中间件模式参考"}

追溯价值

  • 记录了每个任务用了哪些规范
  • 出问题时可以追溯是否缺少必要的规范引用
  • 规范本身是否不够清晰

四、多 Agent 协作架构

Trellis 定义了 6 个专业 Agent,各司其职:

Agent 职责详解

Agent
职责
关键约束
Plan
评估需求有效性、配置任务目录
可以拒绝不清晰的需求
Research
搜索代码和文档,纯研究不修改
禁止建议、批评、修改
Dispatch
纯调度器,按阶段调用子 Agent
不读取规范(Hook 自动注入)
Implement
按规范实现功能
禁止 git commit
Check
检查代码并自行修复
受 Ralph Loop 控制
Debug
深度分析和修复问题
仅在 Check 无法修复时调用

Dispatch 的设计哲学

Dispatch Agent 是纯调度器,它只负责调用子 Agent,不读取任何规范:

  1. # Dispatch Agent 只做这些事:
  2. 1.读取.trellis/.current-task 定位任务目录
  3. 2.读取 task.json  next_action 数组
  4. 3.按阶段顺序调用子Agent
  5. 4.处理超时和失败
  6. # Hook 负责注入所有上下文
  7. # 行为由代码控制,而非 prompt

这种设计的好处:

  • 调度逻辑简单明确,不会出错
  • 上下文注入由代码保证,不依赖 AI 的"记忆"
  • 每个 Agent 专注于自己的任务

五、Ralph Loop 质量控制

Ralph Loop 是 Trellis 的质量门禁,它拦截 Check Agent 的停止请求,确保代码真正通过了验证。

工作原理

两种验证模式

模式 1:程序化验证(推荐)

在 worktree.yaml 配置 verify 命令:

  1. verify:
  2. - pnpm lint
  3. - pnpm typecheck

Ralph Loop 执行这些命令,全部通过才放行。这种方式:

  • 不依赖 AI 输出,由程序强制验证
  • 更可靠,lint 通过就是通过

模式 2:完成标记验证(回退方案)

从 check.jsonl 的 reason 字段生成完成标记:

  1. {"file":"...","reason":"TypeCheck"} TYPECHECK_FINISH
  2. {"file":"...","reason":"Lint"} LINT_FINISH

Check Agent 必须实际执行检查并输出对应标记。Ralph Loop 检查所有标记是否都在 Agent 输出中。

阻止消息示例

当验证失败时,Ralph Loop 会返回清晰的提示:

  1. Iteration2/5.Missing completion markers: LINT_FINISH, TYPECHECK_FINISH.
  2. IMPORTANT:You must ACTUALLY run the checks,not just output the markers.
  3. -Did you run lint?What was the output?
  4. -Did you run typecheck?What was the output?
  5. -Did they actually passwith zero errors?
  6. Only output a marker (e.g., LINT_FINISH) AFTER:
  7. 1.You have executed the corresponding command
  8. 2.The command completed with zero errors
  9. 3.You have shown the command output in your response

安全机制

  • 最大迭代次数:5 次,防止无限循环和成本失控
  • 超时重置:30 分钟超时自动重置状态
  • 跳过 finish 阶段:finish 阶段已经在 check 阶段验证过,无需再次验证

六、会话持久化

Trellis 通过 Journal 系统记录工作历史,让 AI 能够跨会话记住项目上下文。

Journal 系统

  1. .trellis/workspace/{developer}/
  2. ├── index.md           # 个人会话索引(自动更新)
  3. ├── journal-1.md# 会话记录(最多 2000 行)
  4. ├── journal-2.md# 自动创建新文件
  5. └──.agents/
  6. └── registry.json  # 运行中的 Agent 注册表

会话记录格式

  1. ## Session N: 实现用户认证功能
  2. **Date**:2026-01-29
  3. **Task**: user-auth
  4. ### Summary
  5. 实现了基于 JWT 的用户认证系统...
  6. ### Main Changes
  7. - src/api/auth.ts:新增登录接口
  8. - src/middleware/auth.ts:认证中间件
  9. ### Git Commits
  10. - feat(auth): add JWT authentication
  11. - fix(auth): handle token expiration
  12. ### Testing
  13. -单元测试通过
  14. -手动测试登录流程
  15. ### Status
  16. 已完成
  17. ### Next Steps
  18. -添加刷新 token 机制

Session ID 机制

用于恢复中断的会话:

  1. # 1. Agent 启动时生成 UUID
  2. echo "a1b2c3d4-e5f6-7890-abcd-ef1234567890">.session-id
  3. # 2. 注册到 registry.json
  4. {
  5. "agents":[{
  6. "id":"user-auth",
  7. "worktree_path":"/path/to/worktree",
  8. "pid":12345,
  9. "started_at":"2026-01-29T10:00:00+00:00",
  10. "task_dir":".trellis/tasks/01-29-user-auth"
  11. }]
  12. }
  13. # 3. 恢复会话
  14. claude --resume a1b2c3d4-e5f6-7890-abcd-ef1234567890

七、实战工作流

/trellis:start 流程

/trellis:parallel 多 Agent 流水线

完整的并行开发流程:

  1. 用户:/trellis:parallel
  2. 用户:实现用户注册功能,包括邮箱验证
  3. ┌─────────────────────────────────────────┐
  4. Plan阶段(主仓库)
  5. ├─────────────────────────────────────────┤
  6. 1. plan.sh 启动PlanAgent
  7. 2.PlanAgent评估需求
  8. 3.调用ResearchAgent分析代码库
  9. 4.创建任务目录:
  10. - task.json(元数据)
  11. - prd.md(需求文档)
  12. - implement.jsonl / check.jsonl       
  13. └─────────────────────────────────────────┘
  14. ┌─────────────────────────────────────────┐
  15. Worktree创建
  16. ├─────────────────────────────────────────┤
  17. 1. start.sh 创建GitWorktree
  18. 2.复制环境文件(worktree.yaml  copy
  19. 3.运行初始化命令(post_create
  20. 4.启动DispatchAgent
  21. └─────────────────────────────────────────┘
  22. ┌─────────────────────────────────────────┐
  23. ImplementCheckFinishCreate-PR  
  24. ├─────────────────────────────────────────┤
  25. Hook自动注入上下文
  26. RalphLoop控制Check质量
  27. 最终创建Draft PR                        
  28. └─────────────────────────────────────────┘
  29. 用户:/trellis:record-session(记录会话)

/trellis:record-session 会话记录

  1. # 1. 获取当前上下文
  2. ./get-context.sh
  3. # 2. 记录会话
  4. ./add-session.sh --title "实现用户认证"--commit "abc123"
  5. # 3. 自动追加到 journal-N.md
  6. # 4. 自动更新 index.md
  7. # 5. 如果任务完成,归档到 archive/

八、并行开发 - Worktree 隔离

Git Worktree 架构

每个任务在独立的 Git Worktree 中工作,物理隔离:

  1. project/# 主仓库
  2. ├──.trellis/
  3. └── tasks/
  4. └──01-29-user-auth/# 任务目录
  5. ../trellis-worktrees/# Worktree 目录
  6. ├── feature/user-auth/# 任务 A 的 Worktree
  7. ├── feature/payment/# 任务 B 的 Worktree
  8. └── feature/dashboard/# 任务 C 的 Worktree

worktree.yaml 配置

  1. # Worktree 存储目录(相对于项目根目录)
  2. worktree_dir:../trellis-worktrees
  3. # 需要复制到 Worktree 的文件
  4. copy:
  5. -.env
  6. -.trellis/.developer
  7. # Worktree 创建后运行的初始化命令
  8. post_create:
  9. - pnpm install --frozen-lockfile
  10. # Check Agent 结束前必须通过的验证命令
  11. verify:
  12. - pnpm lint
  13. - pnpm typecheck

Agent Registry

追踪运行中的 Agent:

  1. {
  2. "agents":[
  3. {
  4. "id":"user-auth",
  5. "worktree_path":"/path/to/worktree/feature/user-auth",
  6. "pid":12345,
  7. "started_at":"2026-01-29T10:00:00+00:00",
  8. "task_dir":".trellis/tasks/01-29-user-auth"
  9. }
  10. ]
  11. }

查看状态:

  1. # 查看所有任务状态
  2. ./status.sh
  3. # 查看详细信息
  4. ./status.sh --detail
  5. # 监控模式
  6. ./status.sh --watch

九、最佳实践 - Spec 库配置

目录结构

  1. .trellis/spec/
  2. ├── backend/# 后端开发规范
  3. ├── index.md             # 后端规范入口
  4. ├── directory-structure.md
  5. ├── database-guidelines.md
  6. ├── error-handling.md
  7. ├── quality-guidelines.md
  8. └── logging-guidelines.md
  9. ├── frontend/# 前端开发规范
  10. ├── index.md             # 前端规范入口
  11. ├── component-guidelines.md
  12. ├── hook-guidelines.md
  13. ├── state-management.md
  14. └── type-safety.md
  15. └── guides/# 思考指南
  16. ├── index.md
  17. ├── cross-layer-thinking-guide.md
  18. └── code-reuse-thinking-guide.md

规范文件模板

一个好的规范文件应该包含:

  1. # 组件设计规范
  2. ## 概述
  3. 简要描述这个规范的目的和适用范围。
  4. ## 规则
  5. ### 1. 命名规范
  6. -组件使用PascalCase
  7. -文件名使用 kebab-case
  8. ### 2. 结构规范
  9. -Props接口定义在组件文件顶部
  10. -使用函数式组件+Hooks
  11. ## 代码示例

tsx // 正确示例 interface ButtonProps { label: string; onClick: () => void; }

export const Button = ({ label, onClick }: ButtonProps) => { return{label}; };

  1. ## 常见错误
  2. ### 错误 1:使用 any 类型

tsx // ❌ 错误 const Button = (props: any) => { ... }

// ✅ 正确 const Button = (props: ButtonProps) => { ... }

  1. ## DO / DON'T
  2. | DO | DON'T |
  3. |----|-------|
  4. | 使用 TypeScript Props 接口 | 使用 any 类型 |
  5. | 函数式组件 | class 组件 |

Thinking Guides

Thinking Guides 帮助发现"没想到的问题"——大多数 bug 来自思考不周全,而非技能不足。

触发时机

指南
触发条件
cross-layer-thinking-guide.md
功能涉及 3+ 层、数据格式在层间变化
code-reuse-thinking-guide.md
类似代码已存在、同一模式重复 3+ 次

核心理念:30 分钟的思考可以节省 3 小时的调试。

规范沉淀循环

  1. AI 按规范执行发现问题更新.trellis/spec/下次执行更好规范越用越好

用 /trellis:break-loop 命令可以进行深度 bug 分析,跳出"修复 bug → 忘记 → 后续又写出同样 bug"的循环,并将经验记录到 Thinking Guides 中。


十、总结

Trellis 的核心设计思想可以总结为:

声明式而非命令式

  1. 传统方式:一步步指挥 AI 干活
  2. Trellis:声明期望状态,系统自动调谐

注入而非记忆

  1. 传统方式:告诉 AI 规范,希望它记住
  2. TrellisHook自动注入,代码保证

程序化质量控制

  1. 传统方式:"请检查代码质量" AI "检查过了"
  2. TrellisRalphLoop执行 lint 通过才放行

物理隔离并行

  1. 传统方式:多任务在同一目录,互相干扰
  2. TrellisGitWorktree隔离,物理分离

附录:命令速览

命令
作用
/trellis:start
初始化会话,加载项目上下文
/trellis:parallel
启动多 Agent 并行流水线(Claude Code 专有)
/trellis:before-frontend-dev
开发前加载前端规范
/trellis:before-backend-dev
开发前加载后端规范
/trellis:check-frontend
检查前端代码
/trellis:check-backend
检查后端代码
/trellis:check-cross-layer
跨层检查
/trellis:finish-work
提交前完整性检查
/trellis:record-session
记录会话进度
/trellis:break-loop
深度 bug 分析

更多资源

  • 完整技术文档
  • 用 K8s 理解 Trellis
  • 上下文开销分析
  • GitHub 仓库
  • Discord 社区

最新文章

随机文章

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