当前位置:首页>学习笔记>【学习笔记】Harness | 三千分影诀,SubAgents for Crisp Tasks —— -Claude-Code实战(5/13)

【学习笔记】Harness | 三千分影诀,SubAgents for Crisp Tasks —— -Claude-Code实战(5/13)

  • 2026-04-12 16:59:16
【学习笔记】Harness | 三千分影诀,SubAgents for Crisp Tasks —— -Claude-Code实战(5/13)

上一节课学习了让 Agent 做一个 【todo 清单】,从而让它能够更专注地干活。

但是当 Agent 连续干很多事的时候,messages 会越来越长。

一些对后续过程无价值的信息会一直夹在这中间,让后面的问题越来越难回答。

这节课就要解决这个问题,通过【SubAgents】把局部任务放进独立上下文里做,做完只把必要结果拉回到【ParentAgent】就行。

一句话:SubAgents for Crisp Tasks


01 理解几个简单的概念

1. ParentAgent

当前正在和用户对话,有主 messages 的这个 Agent

2. SubAgent

由 ParentAgent 临时派生出来,专门处理某个子任务的 Agent

3. 上下文隔离

- ParentAgent 有自己的 messages

- SubAgent 也有自己的 messages

- SubAgent 的中间过程不会自动写回 ParentAgent


02 核心逻辑

简单总结几个关键点:

1. ParentAgent 会将一些辅助任务交给一个初始状态为空的SubAgent,消息列表为[ ]。

2. SubAgent会执行所有繁琐的操作,然后只有最终的文本总结会返回给ParentAgent。

3. SubAgent的完整历史记录会被丢弃。

💡SubAgent 的核心,不是多一个角色,而是多一个干净上下文


03 实现关键点

1. 给 ParentAgent 一个 task 工具。

有了这个工具,ParentAgent 就可以把一些任务扔给 SubAgent,以一个独立上下文去干活。

{    "name": "task",    "description": "Run a subtask in a clean context and return a summary.",    "input_schema": {        "type": "object",        "properties": {            "prompt": {"type": "string"}        },        "required": ["prompt"]    }}

2. SubAgent使用自己独立的消息列表

💡这是隔离的关键,SubAgent从新的消息列表开始,不共享ParentAgent的

def run_subagent(prompt: str) -> str:    sub_messages = [{"role""user""content": prompt}]    ...

3. SubAgent只使用必要的工具

通常情况下,SubAgent不需要具备和ParentAgent完全一样的能力。

例如:只给它读文件、搜索、bash之类的基础工具;不给它继续派生SubAgent的能力,防止它无限递归

CHILD_TOOLS = [    {"name""bash""description""Run a shell command.", ...},    {"name""read_file""description""Read file contents.", ...},    {"name""write_file""description""Write content to file.", ...},    {"name""edit_file""description""Replace exact text in file.", ...},]

4. SubAgent只将结果返回给ParentAgent

不关心SubAgent的全部历史信息,只需要它干完活后返回一段总结就行

return {    "type""tool_result",    "tool_use_id": block.id,    "content": summary_text,}

04 实现逻辑(总结)

总的来说,就是两个步骤。

- Step1:给ParentAgent 配置一个 task 工具,不给 SubAgent配置

PARENT_TOOLS = CHILD_TOOLS + [    {"name""task",     "description""Spawn a subagent with fresh context.",     "input_schema": {         "type""object",         "properties": {"prompt": {"type""string"}},         "required": ["prompt"],     }},]

- Step2:SubAgent以messages=[ ]开始跑自己的循环,最后仅返回文本总结tool_result。

def run_subagent(prompt: str) -> str:    sub_messages = [{"role""user""content": prompt}]    for _ in range(30):  # safety limit        response = client.messages.create(            model=MODEL, system=SUBAGENT_SYSTEM,            messages=sub_messages,            tools=CHILD_TOOLS, max_tokens=8000,        )        sub_messages.append({"role""assistant",                             "content": response.content})        if response.stop_reason != "tool_use":            break        results = []        for block in response.content:            if block.type == "tool_use":                handler = TOOL_HANDLERS.get(block.name)                output = handler(**block.input)                results.append({"type""tool_result",                    "tool_use_id": block.id,                    "content"str(output)[:50000]})        sub_messages.append({"role""user""content": results})    # Extract only the final text -- everything else is thrown away    return "".join(        b.text for b in response.content if hasattr(b, "text")    ) or "(no summary)"

05 项目示例中的逻辑

s04_subagent.py 展示了上下文隔离与SubAgent。

允许主Agent派生出一个拥有独立、干净对话历史的子Agent去处理具体任务,从而避免主对话上下文因冗长的工具调用记录而变得混乱。

01
从 Markdown 文档中解析 Agent 的配置
class AgentTemplate:    """从 Markdown 文件的 Frontmatter(元数据)中解析智能体配置"""    def __init__(self, path):        self.path = Path(path)        self.config = {}        self.system_prompt = ""        self._parse()    def _parse(self):        # 使用正则表达式拆分 YAML 配置部分和系统提示词正文        text = self.path.read_text()        match = re.match(r"^---\s*\n(.*?)\n---\s*\n(.*)", text, re.DOTALL)        if match:            # 解析配置项(如 name: coder)            for line in match.group(1).splitlines():                if ":" in line:                    k, _, v = line.partition(":")                    self.config[k.strip()] = v.strip()            self.system_prompt = match.group(2).strip()
02
为 Agent 定制工具集。注意不给SubAgent 派生任务的能力
# 子智能体可用的基础工具(Bash、读、写、改)CHILD_TOOLS = [    {"name""bash""description""Run a shell command.", ...},    {"name""read_file""description""Read file contents.", ...},    {"name""write_file""description""Write content to file.", ...},    {"name""edit_file""description""Replace exact text in file.", ...},]# 父智能体在子工具基础上增加一个 "task" 工具,用于指派任务PARENT_TOOLS = CHILD_TOOLS + [    {        "name""task"        "description""启动一个拥有独立上下文的子智能体。它共享文件系统,但不共享对话历史。",        "input_schema": {            "type""object",            "properties": {                "prompt": {"type""string"},                "description": {"type""string"}            },            "required": ["prompt"]        }    },]
03
SubAgent 运行逻辑。完全独立的对话列表,任务完成后返回最终总结
def run_subagent(prompt: str) -> str:    """    子智能体核心逻辑:    1. 开启全新的 sub_messages 列表,实现上下文隔离。    2. 在子循环中完成所有工具调用。    3. 只返回结果总结,不返回执行细节。    """    sub_messages = [{"role""user""content": prompt}]    for _ in range(30): # 设置最大思考步数防止死循环        response = client.messages.create(            model=MODEL, system=SUBAGENT_SYSTEM, messages=sub_messages,            tools=CHILD_TOOLS, max_tokens=8000,        )        sub_messages.append({"role""assistant""content": response.content})        if response.stop_reason != "tool_use":            break # 任务完成,退出子循环        # 执行子工具并反馈(过程记录在 sub_messages 中)        results = []        for block in response.content:            if block.type == "tool_use":                handler = TOOL_HANDLERS.get(block.name)                output = handler(**block.input)                results.append({"type""tool_result""tool_use_id": block.id"content"str(output)})        sub_messages.append({"role""user""content": results})    # 丢弃子对话详情,仅返回最终的文本描述    return "".join(b.text for b in response.content if hasattr(b, "text"))
04
ParentAgent 任务分发
def agent_loop(messages: list):    while True:        response = client.messages.create(            model=MODEL, system=SYSTEM, messages=messages,            tools=PARENT_TOOLS, max_tokens=8000,        )        messages.append({"role""assistant""content": response.content})        if response.stop_reason != "tool_use"return        results = []        for block in response.content:            if block.type == "tool_use":                # 检查是否为分派任务请求                if block.name == "task":                    desc = block.input.get("description""subtask")                    prompt = block.input.get("prompt""")                    print(f"> task ({desc}): {prompt[:80]}")                    # 调用子智能体并获取“汇报”                    output = run_subagent(prompt)                else:                    # 调用普通工具(如 bash)                    handler = TOOL_HANDLERS.get(block.name)                    output = handler(**block.input)                print(f"  {str(output)[:200]}")                results.append({"type""tool_result""tool_use_id": block.id"content"str(output)})        messages.append({"role""user""content": results})
05
主交互逻辑及安全限制
def safe_path(p: str) -> Path:    """路径安全卫士:防止子智能体通过 ../../ 访问敏感系统文件"""    path = (WORKDIR / p).resolve()    if not path.is_relative_to(WORKDIR):        raise ValueError(f"Path escapes workspace: {p}")    return pathif __name__ == "__main__":    history = []    while True:        # 启动主 CLI,用户在此处输入最高指令        try:            query = input("\033[36ms04 >> \033[0m")        except (EOFError, KeyboardInterrupt):            break        if query.strip().lower() in ("q""exit"""):            break        history.append({"role""user""content": query})        agent_loop(history) # 进入父循环,父循环可能进一步调用 run_subagent        # 打印父智能体给出的最终答案        response_content = history[-1]["content"]        for block in response_content:            if isinstance(response_content, list):            for block in response_content:                if hasattr(block, "text"):                    print(block.text)        print()

06 运行测试

我们测试一下

1. 先进入 learn-claude-code 项目目录

cd learn-claude-code
2. 在终端执行代码:
python agents/s04_subagent.py
3. 测试一下,让它【使用子任务的方式去查找该项目用的什么测试框架

这里红线标注的地方可以清楚地看到,调用了【task 工具】分配任务。

结合 agent_loop() 中的代码打印逻辑,也证明确实是调用了 task 工具,测试很成功。

if block.name == "task":    desc = block.input.get("description""subtask")    prompt = block.input.get("prompt""")    print(f"> task ({desc}): {prompt[:80]}")    # 调用子智能体并获取“汇报”    output = run_subagent(prompt)

在这一节课中,我们学习了如何派生一个带有全新 messages=[ ] 的一次性子Agent,干完活后仅向父Agent返回摘要,丢弃中间过程

总结一下,我们学会了👇

通过隔离次要任务来保持上下文的整洁

SubAgents for Crisp Tasks

现在请思考一个问题:Agent 本身携带的知识该如何处理?我们不可能把模型永远都用不到的知识也加进来塞满提示词吧,我们只需要给模型加载要用的知识就够了。

怎么按需加载知识呢?

这个问题我们将在下一节【s05 - Skills】进行探讨,学习如何按需加载知识 Skill。

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-04-12 20:33:28 HTTP/2.0 GET : https://67808.cn/a/480337.html
  2. 运行时间 : 0.230161s [ 吞吐率:4.34req/s ] 内存消耗:4,615.67kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=b5b7478be6c3466562a2a67f68aa4c66
  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.000905s ] mysql:host=127.0.0.1;port=3306;dbname=no_67808;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.001552s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.002468s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.002364s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.001597s ]
  6. SELECT * FROM `set` [ RunTime:0.002194s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.001493s ]
  8. SELECT * FROM `article` WHERE `id` = 480337 LIMIT 1 [ RunTime:0.003514s ]
  9. UPDATE `article` SET `lasttime` = 1775997208 WHERE `id` = 480337 [ RunTime:0.008037s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 65 LIMIT 1 [ RunTime:0.000739s ]
  11. SELECT * FROM `article` WHERE `id` < 480337 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.001756s ]
  12. SELECT * FROM `article` WHERE `id` > 480337 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001031s ]
  13. SELECT * FROM `article` WHERE `id` < 480337 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.010101s ]
  14. SELECT * FROM `article` WHERE `id` < 480337 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002420s ]
  15. SELECT * FROM `article` WHERE `id` < 480337 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002068s ]
0.231765s