本手册共 32 章,分为基础、工具、高级、企业、部署五大模块。每章开头有分类色标,便于快速定位。
本合并版将《HERMES Agent 操作手册》与《HERMES Agent 高级专题手册》整合为单一文件,第 29-32 章为高级专题的完整详细内容(含图示化排查树、性能调优决策指南、多Agent团队协作工作流、云端部署全方案)。
HERMES Agent 是由 Nous Research 开发的开源 AI Agent 框架。它不仅仅是聊天机器人——它是一个能自主使用工具、执行命令、操作桌面、调度任务的智能体系统。HERMES 的设计理念是"Agent 优先"——让 AI 不仅能思考,更能行动。
与传统的 AI 聊天工具不同,HERMES 能主动调用各种工具来完成任务:执行终端的Shell命令、读写编辑文件、上网搜索信息、操控浏览器、甚至直接操作你的电脑桌面。这使得它从一个"问答助手"升级为一个真正的"数字员工"。
HERMES 的工作流程:你发送任务 → 大模型分析意图 → 自动选择并调用工具 → 处理结果 → 回复你。整个过程是循环的,直到任务完成。
| 组件 | 功能 | 技术实现 |
|---|---|---|
| 推理引擎(Agent Core) | 接收用户输入、调用LLM、解析响应、决定下一步 | Python asyncio 事件循环 |
| 工具调度器(Tool Router) | 根据LLM选择的工具名,路由到对应的工具实现 | 工具注册表 + 反射调用 |
| 上下文管理器(Context Manager) | 维护多轮对话历史、窗口滑动、摘要压缩 | 环形缓冲区 + 自动摘要 |
| 记忆系统(Memory) | 跨会话持久化存储用户信息 | SQLite + 向量检索(可选) |
| 网关(Gateway) | 多平台消息收发、Webhook、会话路由 | FastAPI + WebSocket |
| 技能引擎(Skills Engine) | 加载、匹配、执行Skill | SKILL.md 解析 + prompt注入 |
| 模式 | 启动命令 | 适用场景 | 特点 |
|---|---|---|---|
| 交互式(Interactive) | hermes start | 个人日常使用、调试 | 终端对话,所见即所得 |
| 守护模式(Daemon) | hermes start --daemon | 后台长时间运行 | 关闭终端仍运行 |
| 网关模式(Gateway) | hermes start --gateway | 接入IM平台(飞书/微信) | 手机端可访问 |
| 能力 | 普通 Chat | HERMES Agent |
|---|---|---|
| 对话问答 | ✅ | ✅ 增强版 |
| 执行Shell命令 | ❌ | ✅ 自动调用终端工具 |
| 读写编辑文件 | ❌ | ✅ 文件工具 |
| 上网搜索 | 部分支持 | ✅ 调用 web_search |
| 操作桌面软件 | ❌ | ✅ Computer Use |
| 定时任务 | ❌ | ✅ Cron 调度 |
| 跨会话记忆 | 有限 | ✅ 持久记忆系统 |
| 多平台接入 | 仅网页/App | ✅ 飞书/微信/Telegram |
| 项目 | 要求 | 说明 |
|---|---|---|
| Python | 3.10 或更高版本 | 推荐 3.11+,3.12/3.13 也兼容 |
| 操作系统 | Windows 10/11、macOS、Linux | 全平台支持 |
| 网络 | 能访问 AI 模型 API | DeepSeek / OpenAI / Anthropic 等 |
| 可选 | Git | 用于克隆项目仓库 |
| 可选 | NVIDIA GPU | 本地运行模型需要(Ollama) |
# 激活环境后,运行
hermes --version
# 如果能显示版本号(如 v0.17.0),说明安装成功
# 如果报 "command not found",说明虚拟环境没激活
| 问题 | 原因 | 解决方法 |
|---|---|---|
| 'uv' 不是内部或外部命令 | uv 未安装或不在 PATH | 重新运行安装命令,重启终端 |
| 'pip' 不是内部或外部命令 | Python 未勾选 Add to PATH | 重新安装 Python,勾选 Add to PATH |
| 执行策略禁止运行脚本 | PowerShell 默认 Restricted | 运行 Set-ExecutionPolicy -Scope Process -ExecutionPolicy Bypass |
| Microsoft Visual C++ 14.0 错误 | 缺少 C++ 构建工具 | 下载安装 Visual C++ Build Tools |
| pip install 超时 | 网络慢或被墙 | 加 -i https://pypi.tuna.tsinghua.edu.cn/simple |
# macOS
brew install python3 uv git
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
uv venv .venv
source .venv/bin/activate
uv pip install -e .
# Ubuntu/Debian
sudo apt update && sudo apt install -y python3 python3-pip git
pip3 install uv
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
uv venv .venv
source .venv/bin/activate
uv pip install -e .
docker pull nousresearch/hermes-agent
docker run -it --rm \
-v ~/.hermes:/root/.hermes \
nousresearch/hermes-agent
# 创建配置目录
mkdir -p ~/.hermes
# 配置 API Key(编辑 ~/.hermes/.env)
echo "DEEPSEEK_API_KEY=sk-..." > ~/.hermes/.env
hermes-agent/
├── .venv/ # 虚拟环境(Python 依赖)
├── src/hermes/ # 核心源代码
│ ├── agent/ # Agent 核心逻辑:推理循环、函数调用
│ ├── tools/ # 内置工具实现:terminal/file/browser 等
│ ├── gateway/ # 网关模块:飞书、微信、Telegram
│ └── config/ # 配置管理:加载、验证、保存
├── config.yaml # 默认配置文件
├── .env.example # 环境变量模板
├── pyproject.toml # 项目元数据(依赖声明)
├── README.md # 项目说明文档
└── LICENSE # 开源许可证
~/.hermes/
├── config.yaml # 用户配置文件(模型、工具、网关设置)
├── .env # 环境变量(API Key、Secret 等敏感信息)
├── memory.db # 记忆数据库(SQLite,自动维护)
├── sessions/ # 会话历史记录
│ ├── session_001.db
│ └── session_002.db
├── skills/ # 自定义技能(SKILL.md 格式)
│ ├── my-skill/
│ └── stock-briefing/
├── plugins/ # 自定义插件
│ ├── enabled/
│ └── available/
├── cron/ # 定时任务配置
├── knowledge/ # 知识库文档(RAG 用)
└── logs/ # 运行日志
└── hermes.log
| 文件 | 用途 | 是否必须 | 注意事项 |
|---|---|---|---|
| config.yaml | 主配置:模型、提供商、工具、网关等全部设置 | ✅ 是 | 引用的 .env 变量用 ${KEY} 语法 |
| .env | API Key、Secret 等敏感信息 | ✅ 是 | 不要提交到 Git!加入 .gitignore |
| memory.db | 自动保存的持久记忆,跨会话可用 | 自动创建 | 备份可保留跨会话记忆 |
| sessions.db | 会话历史,用于回顾之前对话 | 自动创建 | 可配置保留天数 |
| logs/hermes.log | 运行日志,用于调试排错 | 自动创建 | hermes logs --tail 30 查看 |
src/hermes/
├── agent/ # Agent 核心逻辑
│ ├── core.py # 主循环:接收→推理→工具→回复
│ ├── tool_router.py # 工具路由和调度
│ ├── context.py # 上下文管理(滑动窗口)
│ └── session.py # 会话生命周期管理
├── tools/ # 工具实现(每个工具一个模块)
│ ├── terminal.py # Shell 命令执行
│ ├── file_ops.py # 文件读写搜索编辑
│ ├── web_search.py # 互联网搜索
│ ├── browser.py # 浏览器自动化
│ └── computer_use.py # 桌面操控(cua-driver)
├── gateway/ # 网关实现
│ ├── server.py # FastAPI HTTP 服务
│ ├── feishu.py # 飞书平台适配
│ ├── weixin.py # 微信平台适配
│ └── webhook.py # Webhook 路由
├── memory/ # 记忆系统
│ ├── store.py # 记忆存储(SQLite)
│ └── vector.py # 向量检索(可选)
├── skills/ # 技能引擎
│ ├── loader.py # SKILL.md 解析加载
│ └── matcher.py # 技能匹配和注入
├── config/ # 配置管理
│ ├── loader.py # 配置加载和验证
│ └── schema.py # 配置数据结构
└── cli/ # 命令行入口
├── main.py # hermes 主命令
└── commands.py # 子命令实现
| 字段路径 | 类型 | 说明 | 默认值 |
|---|---|---|---|
| provider.name | string | 提供商名称 | deepseek |
| provider.api_base | string | API 请求地址 | https://api.deepseek.com |
| provider.api_key | string | API Key(引用 .env) | ${DEEPSEEK_API_KEY} |
| model.name | string | 模型名称 | deepseek-v4-flash |
| model.temperature | float | 创意度 0-1 | 0.7 |
| model.max_tokens | int | 最大输出 Token 数 | 4096 |
| model.stream | bool | 是否流式输出 | true |
| gateway.enabled | bool | 是否启用网关 | false |
| gateway.port | int | 网关监听端口 | 8080 |
| session.max_history | int | 保留的对话轮数 | 50 |
# ~/.hermes/config.yaml
# ===== 提供商配置 =====
provider:
name: deepseek # 提供商名称
api_base: https://api.deepseek.com # API 地址
api_key: ${DEEPSEEK_API_KEY} # 引用 .env 中的变量
# ===== 模型配置 =====
model:
name: deepseek-v4-flash # 模型名称
temperature: 0.7 # 创意度 0-1(0=精确, 1=创意)
max_tokens: 4096 # 最大输出长度
stream: true # 流式输出(推荐开启)
# ===== 工具配置 =====
tools:
enabled:
- terminal
- file
- web_search
- browser
- computer_use
# ===== 网关配置 =====
gateway:
enabled: true
port: 8080
platforms:
- feishu
- weixin
# ===== 系统配置 =====
system_prompt: | # 可选:系统提示词
你是一个有用的助手。
回复要简洁准确。
session:
max_history: 50 # 保留最近会话轮数
# ~/.hermes/.env (不要提交到 Git!加入 .gitignore)
# ===== 必需配置(至少填一个) =====
DEEPSEEK_API_KEY=sk-......n
# ===== 网关配置(按需) =====
FEISHU_APP_ID=cli_...
FEISHU_APP_SECRET=...
# WEIXIN_APP_ID=wx_...
# WEIXIN_APP_SECRET=...3>🛠️ 常用配置修改速查
需求 配置项 示例值 生效方式
换模型 model.name deepseek-chat / gpt-4o / claude-sonnet-4 重启生效
开网关 gateway.enabled true 重启生效
提速 model.stream true 重启生效
省成本 model.max_tokens 2048 重启生效
更精确 model.temperature 0.1 重启生效
更多创意 model.temperature 0.9 重启生效
⚙️ 通过对话修改配置
# HERMES 运行中也可以改配置
你:帮我切换到 gpt-4o 模型
你:打开网关
你:把 max_tokens 改成 2048
你:帮我看看当前的配置
你:帮我创建一个新 Profile 叫 work
📋 多提供商配置参考
# DeepSeek(推荐,性价比最高)
provider:
name: deepseek
api_base: https://api.deepseek.com
api_key: ${DEEPSEEK_API_KEY}
# OpenAI
provider:
name: openai
api_base: https://api.openai.com/v1
api_key: ${OPENAI_API_KEY}
# Anthropic Claude
provider:
name: anthropic
api_base: https://api.anthropic.com/v1
api_key: ${ANTHROPIC_API_KEY}
# 本地 Ollama
provider:
name: ollama
api_base: http://localhost:11434/v1
api_key: ollama # Ollama 不需要真实 Key
# 自定义第三方
provider:
name: custom
api_base: https://your-gateway.com/v1
api_key: ${CUSTOM_API_KEY}
🛠️ 命令行操作配置
# 查看完整配置
hermes config get
# 查看特定配置项
hermes config get model.name
hermes config get provider.api_base
# 修改配置项
hermes config set model.name gpt-4o
hermes config set model.temperature 0.3
# 重置配置(谨慎使用)
hermes config reset
💡 配置生效规则:修改 config.yaml 后需要 hermes stop && hermes start 重启。运行时通过对话切换模型不需要重启。
⚠️ 常见错误:如果修改配置后报错,检查 YAML 缩进是否正确(不要用 Tab,用 2 空格)。.env 文件中的 Key 不要加引号。
HERMES 支持所有兼容 OpenAI API 格式的提供商。以下为经过测试的主流选择:
| 提供商 | 推荐模型 | 特点 | 适合场景 |
|---|---|---|---|
| DeepSeek | deepseek-v4-flash | 性价比极高,速度快,中文好 ⭐ | 日常对话、数据分析、文件处理 |
| OpenAI | gpt-4o / gpt-4o-mini | 生态最成熟,多模态 | 图片分析、复杂推理 |
| Anthropic | claude-sonnet-4 | 代码能力强,推理准确 | 编程、代码审查、复杂逻辑 |
| 本地 Ollama | qwen2.5:7b | 免费离线,隐私安全 | 简单问答、格式转换、离线场景 |
| 自定义 | 任意兼容 API | 支持第三方聚合平台 | 按需选择 |
# config.yaml 配置示例
provider:
name: deepseek
api_base: https://api.deepseek.com
api_key: ${DEEPSEEK_API_KEY}
# 对话中切换(无需重启)
你:切换到 claude-sonnet-4
你:换 gpt-4o 做这个任务
你:用本地模型 qwen2.5
你:帮我切回 flash 模型
任意兼容 OpenAI 格式的 API 都可使用,只需配置 api_base 和 api_key:
provider:
name: custom
api_base: https://your-api.com/v1
api_key: ${CUSTOM_API_KEY}
| 模型 | 首字延迟 | 1000 tokens | 上下文窗口 | 费用(每百万 token) | 推荐用途 |
|---|---|---|---|---|---|
| DeepSeek V4 Flash | ~0.3s | ~1.5s | 64K | ¥1 / ¥2 | 日常 ⭐ |
| DeepSeek Chat | ~1.2s | ~5s | 128K | ¥5 / ¥15 | 复杂分析 |
| GPT-4o | ~0.5s | ~2s | 128K | $2.5 / $10 | 多模态 |
| GPT-4o Mini | ~0.3s | ~1s | 128K | $0.15 / $0.6 | 低成本 |
| Claude Sonnet 4 | ~1s | ~3s | 200K | $3 / $15 | 编程 ⭐ |
| Qwen2.5 7B(本地) | ~8s GPU | ~30s | 32K | 免费 | 离线任务 |
# 日常:用 Flash 快速处理
你:帮我整理桌面文件
# 遇到复杂任务时临时切换
你:切换到 claude-sonnet-4
你:帮我 review 这段代码,找出所有潜在 bug
# 分析完切回来
你:切回 flash
# 需要看图时
你:用 gpt-4o 分析这张图片的内容
# 简单任务用本地(省钱)
你:用本地模型帮我格式化这段 JSON
# 1. 激活虚拟环境
.venv/Scripts/activate
# 2. 配置 API Key
# 编辑 ~/.hermes/.env,填入你的 API Key
# 3. 启动 HERMES(终端交互模式)
hermes start
# 看到以下提示表示启动成功:
# 🟢 HERMES Agent 已启动
# 输入你的问题开始对话...
启动后输入你的问题或任务,HERMES 会自动分析并执行:
你:你好,你是谁?
你:帮我查一下当前时间
你:列出当前目录的文件
你:搜索一下今天的 AI 新闻
你:帮我创建一个 hello.py 文件,内容打印 "Hello World"
你:看看我的电脑还剩多少硬盘空间
你:把桌面上的图片文件夹整理一下
| 命令 | 用途 | 示例 |
|---|---|---|
| hermes start | 启动交互模式 | hermes start |
| hermes start --gateway | 启动并开启网关 | hermes start --gateway |
| hermes stop | 停止 HERMES | hermes stop |
| hermes new | 开启新会话 | hermes new |
| hermes status | 查看运行状态 | hermes status |
| hermes config set | 修改配置 | hermes config set model.name gpt-4o |
| hermes logs --tail 30 | 查看最近日志 | hermes logs --tail 30 |
# 文件处理
你:把桌面上所有的 .log 文件合并成一个,按时间排序
你:把这个文件夹里的所有图片批量压缩到 80% 质量
你:把 data.csv 转成 Excel 格式,保留所有列
# 信息查询
你:查一下今天的天气 + 我的日程 + 股票行情,汇总成晨报
你:搜索"Python 异步编程 最佳实践",总结成 5 个要点
# 开发辅助
你:帮我创建一个 Flask 项目骨架,包含 README
你:git status 看一下变更,帮我生成 commit message
你:运行测试,如果有失败的帮我分析原因
# 系统管理
你:看看磁盘还剩多少空间,列出最大的 5 个文件
你:检查一下 CPU 和内存使用情况
你:帮我清理一下系统临时文件
| 命令 | 用途 | 示例 |
|---|---|---|
| hermes --profile work start | 使用指定配置启动 | hermes --profile work start |
| hermes start --port 8081 | 指定端口启动 | hermes start --port 8081 |
| hermes start --gateway | 启动并开启网关 | hermes start --gateway |
| hermes start --daemon | 后台守护模式启动 | hermes start --daemon --gateway |
| hermes logs --follow | 持续跟踪日志 | hermes logs -f |
| hermes plugins list | 查看插件列表 | hermes plugins list |
| hermes config reset | 重置所有配置 | hermes config reset |
| 问题 | 原因 | 解决 |
|---|---|---|
| 启动后没反应 | API Key 没配置或无效 | 检查 ~/.hermes/.env |
| 回复很慢 | 网络问题或模型太大 | 换 Flash 模型,检查网络 |
| 工具调用失败 | 路径不对或权限不足 | 用英文路径,管理员模式 |
终端工具(terminal)允许 HERMES 在后台执行 Shell 命令,是最核心的工具之一——几乎所有与系统的交互都通过它。HERMES 可执行的命令取决于当前系统环境(Windows 上是 git-bash,Linux/macOS 上是原生 shell)。
命令执行并等待结果返回,适合大部分场景。参数 time out 控制最长等待时间,workdir 指定工作目录:
# 基本使用
terminal(command="ls -la")
terminal(command="python script.py", timeout=300)
terminal(command="npm install", workdir="/project")
# 管道和链式命令
terminal(command="cat log.txt | grep ERROR | tail -20")
terminal(command="python -c "import json; print(json.dumps({'a':1}))"")
# 环境变量
terminal(command="echo $HOME")
terminal(command="export MY_VAR=test && echo $MY_VAR")
长时间运行的任务可在后台执行,不阻塞对话。配合 notify_on_complete 可在完成时收到通知:
# 后台运行服务器(不阻塞对话)
terminal(command="python server.py", background=true)
# 带通知的后台任务(完成时自动通知)
terminal(command="pytest tests/", background=true, notify_on_complete=true)
# 后台运行并监控输出
terminal(command="tail -f log.txt", background=true)
后台启动的进程可以用 process 工具管理:
| 操作 | 说明 | 使用场景 |
|---|---|---|
| process(action="list") | 列出所有后台进程 | 查看正在运行的任务 |
| process(action="poll", session_id="xxx") | 查看进程状态和新输出 | 检查长时间任务进度 |
| process(action="wait", session_id="xxx") | 阻塞等待进程完成 | 需要结果时等待 |
| process(action="kill", session_id="xxx") | 强制终止进程 | 任务卡死或超时 |
| process(action="log", session_id="xxx") | 查看完整输出日志 | 审查所有输出内容 |
| process(action="close", session_id="xxx") | 关闭 stdin 发送 EOF | 结束等待输入的进程 |
| process(action="submit", session_id="xxx", data="y") | 向进程发送输入 | 回答交互式提示 |
文件工具让 HERMES 能读、写、搜索、编辑文件——这是代码开发、文档处理、配置管理的核心手段。所有文件操作都会自动处理编码,支持 UTF-8、GBK 等常见格式。
# 读取整个文件(自动分页,每页最多 500 行)
read_file(path="main.py")
# 读取指定行范围
read_file(path="main.py", offset=10, limit=50)
# 读取大文件指定区域
read_file(path="huge_log.txt", offset=1, limit=200)
# 文件路径支持绝对和相对路径
read_file(path="/home/user/config.yaml")
read_file(path="./src/main.py")
# 创建新文件或覆盖已有文件
write_file(path="hello.py", content="print('Hello')")
# 自动创建父目录
write_file(path="src/utils/helper.py", content="def help(): pass")
# 写入 HTML / JSON / YAML 等
write_file(path="report.html", content="报告
")
# 搜索文件内容(支持正则)
search_files(pattern="def main", path=".", file_glob="*.py")
# 搜索文件名
search_files(target="files", pattern="*.html", path="./src")
# 限制搜索范围
search_files(pattern="TODO", path="./src", file_glob="*.py", limit=10)
# 按修改时间排序的文件列表
search_files(target="files", pattern="*", path="./logs")
# 查找并替换(比 sed 更智能,自动处理缩进和编码)
patch(path="config.yaml",
old_string="model: deepseek-chat",
new_string="model: deepseek-v4-flash")
# 替换所有匹配(replace_all=true)
patch(path="data.txt",
old_string="old_value",
new_string="new_value",
replace_all=true)
# 删除匹配行(new_string 传空字符串)
patch(path="config.yaml",
old_string="# TODO: remove this",
new_string="")
# 批量重命名
你:把 src/ 目录下所有 ".js" 文件重命名为 ".ts"
# 批量替换内容
你:在 project/ 目录下所有 Python 文件中,把 "old_func" 替换成 "new_func"
# 批量转换格式
你:把 data/ 目录下所有 .csv 文件转成 .json 格式
你:把这个文件夹里所有 .md 文件合并成一个 README_ALL.md
# 批量压缩图片
你:把 images/ 目录里所有 .jpg 压缩到 70% 质量
| 编码 | 常见场景 | 处理方式 |
|---|---|---|
| UTF-8 | 现代文件、代码、Markdown | 自动检测,推荐使用 |
| GBK / GB2312 | 中文 Windows 旧文件、CSV 导出 | HERMES 自动识别处理 |
| ISO-8859-1 | 西欧语言旧文件 | 可指定编码读取 |
| UTF-16 | 某些 Windows 系统文件 | 需要终端工具转换 |
# 编码转换示例
你:把这个 GBK 编码的 CSV 转成 UTF-8
你:用 Python 把这个文件从 GB2312 转成 UTF-8
你:检查这个文件的编码格式
网络工具让 HERMES 能搜索互联网、获取网页内容、调用外部 API,是获取实时信息的关键通道。结合终端工具的 curl,可以实现任意的 HTTP 请求。
# 搜索互联网信息
web_search(query="2026年7月 AI 行业新闻")
web_search(query="Python 异步编程最佳实践")
# 获取网页内容
web_extract(url="https://example.com")
# 获取 JSON 数据
web_extract(url="https://api.github.com/repos/NousResearch/hermes-agent")
# GET 请求
curl -s "https://api.example.com/data"
# POST 请求 + JSON
curl -s -X POST "https://api.example.com/submit" \
-H "Content-Type: application/json" \
-d '{"key":"value"}'
# 带认证的请求
curl -s -H "Authorization: Bearer YOUR_TOKEN" \
"https://api.example.com/protected"
# 获取响应头
curl -s -I "https://api.example.com"
| 用途 | API 地址 |
|---|---|
| 查本机公网 IP | https://httpbin.org/ip |
| 查天气(城市) | https://wttr.in/Beijing?format=3 |
| 查汇率 | https://api.exchangerate-api.com/v4/latest/USD |
| GitHub 仓库信息 | https://api.github.com/repos/用户名/仓库名 |
| 生成 UUID | https://httpbin.org/uuid |
| 世界时间 | https://worldtimeapi.org/api/timezone/Asia/Shanghai |
| 认证方式 | curl 示例 | 适用场景 | |
|---|---|---|---|
| Bearer Token | -H "Authorization: Bearer ***rk | OpenAI / DeepSeek / 多数 REST API | |
| API Key (Header) | -H "X-API-Key: ***e>API Key (Query) | "https://api.com/data?key=*** Query Parameters | 部分公开 API |
| Basic Auth | -u "username:password" | 旧系统、内部工具 | |
| Cookie | -H "Cookie: session=*** POST 表单登录后可获得 |
# JSON 响应解析
curl -s "https://api.example.com/data" | python -c "import sys,json; d=json.load(sys.stdin); print(d['key'])"
# 保存 API 响应到文件
curl -s "https://api.example.com/data" > response.json
# 连续 API 调用(管道)
curl -s "https://api.example.com/items" | python -c "
import sys, json
items = json.load(sys.stdin)
for item in items[:5]:
print(f'{item["id"]}: {item["name"]}')"
# 带重试的请求
for i in 1 2 3; do curl -s "https://api.example.com" && break; sleep 2; done
# A 股大盘指数
curl -s "http://qt.gtimg.cn/q=sh000001,sz399001,sz399006"
# 板块涨跌排行
curl -s "http://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=10&po=1&np=1&fid=f3&fs=m:90+t:2"
# 个股实时行情
curl -s "http://qt.gtimg.cn/q=sh600519,sz000858"
浏览器工具让 HERMES 能打开网页、点击按钮、填写表单、截图分析——适合需要与网页交互的场景,如登录后台、提交表单、抓取动态内容、视觉验证等。
| 操作 | 说明 | 使用场景 |
|---|---|---|
| 导航 | browser_navigate(url) | 打开网页、初始化浏览器 |
| 截图分析 | browser_vision(question) | 查看页面视觉效果、分析布局 |
| 点击元素 | browser_click(ref) | 点击链接、按钮、复选框(按 ref ID) |
| 输入文字 | browser_type(ref, text) | 填写搜索框、表单输入 |
| 滚动页面 | browser_scroll(direction) | 查看页面下方内容 |
| 获取内容 | browser_snapshot(full=true) | 获取页面完整文本(无障碍树) |
| 控制台 | browser_console() | 获取 JS 错误 / 执行 JS 代码 |
| 后退 | browser_back() | 返回上一页 |
| 场景 | 推荐工具 | 原因 |
|---|---|---|
| 获取 JSON 数据 | curl | 更快,结果更干净,无需渲染 |
| 获取纯文本页面 | curl 或 web_extract | 直接返回内容,无需等待渲染 |
| 需要登录的页面 | 浏览器 | 可以自动填表单、处理 Cookie |
| 动态 JS 渲染页面 | 浏览器 | 支持 JavaScript 执行 |
| 截图验证UI效果 | 浏览器 | 浏览器截图可查看视觉呈现 |
| 调用 API 接口 | curl | 更轻量,支持所有 HTTP 方法 |
Computer Use 基于 cua-driver,让 HERMES 能直接操控你的电脑桌面——移动鼠标、点击按钮、输入文字、滚动页面,就像真人一样操作 GUI 应用。所有操作在后台运行,不会抢夺你的鼠标和键盘焦点。
| 场景 | 操作步骤 |
|---|---|
| 打开特定软件 | capture() 找桌面 → click 开始菜单 → type "软件名" → click 图标 |
| 在 Chrome 中搜索 | 打开 Chrome → click 地址栏 → type 关键词 → 回车 |
| 复制文件到其他位置 | 打开文件管理器 → 右键文件 → 选择复制 → 粘贴到目标 |
| 截取软件界面 | 打开目标软件 → capture() 截图分析 |
| 保存网页为 PDF | 浏览器中 Ctrl+P → 选择另存为 PDF → 保存 |
| 调整系统设置 | 打开设置 → 找到目标设置项 → 修改 → 确认 |
| 安装软件 | 下载安装包 → 双击运行 → 点击 Next 完成安装 |
Skill 是 HERMES 的可复用知识包——包含特定任务的完整步骤、命令和提示词。一次学会,永久复用。你把一个流程教会 HERMES 后,保存为 Skill,以后一句话就能重复执行。
# 方法1:完成任务后保存
你:帮我把近期的账单整理成表格,保存在桌面
...(HERMES 执行完成)...
你:把这个流程保存为 Skill,取名 bill-sort
# 方法2:直接描述步骤
你:帮我创建一个 Skill 叫 morning-check,内容如下:
1. 查天气
2. 查今日日程
3. 查股票行情
4. 整理成晨报发给我
# 方法3:记住数据源
你:记住以下数据源作为 stock-check 技能
- 大盘指数:qt.gtimg.cn/q=sh000001,sz399001,sz399006
# 查看所有技能
skill_view()
# 使用技能
你:用 stock-check 技能查一下今天行情
# 查看特定技能内容
你:查看 stock-check 技能的内容
# 删除技能
你:删除 stock-check 技能
# 手动编辑 Skill 文件
# 在 ~/.hermes/skills/stock-check/SKILL.md 中直接修改
# ~/.hermes/skills/stock-check/SKILL.md
---
name: stock-check
description: 查询A股行情并生成简报
category: finance
version: 1.0
triggers:
- 查股票
- 查行情
---
# 股票行情查询技能
## 数据源
- 大盘指数:qt.gtimg.cn/q=sh000001,sz399001,sz399006
- 板块排行:push2.eastmoney.com/api/qt/clist/get
## 流程
1. 获取三大指数数据
2. 获取板块涨跌排行
3. 生成格式化的行情简报
4. 输出给用户
~/.hermes/skills/
├── stock-check/ # 技能目录(名称匹配)
│ ├── SKILL.md # 技能描述文件(YAML frontmatter + Markdown)
│ ├── references/ # 参考文件(数据字典、API文档)
│ ├── templates/ # 模板文件(输出格式模板)
│ └── scripts/ # 辅助脚本(Python、Shell)
├── bill-sort/
│ └── SKILL.md
├── morning-check/
│ ├── SKILL.md
│ └── templates/
│ └── briefing.md
└── code-review/
└── SKILL.md
插件是 HERMES 的扩展机制,可以为 HERMES 添加新功能、新工具、新集成。插件比 Skill 更底层——Skill 是"教 HERMES 怎么做",插件是"给 HERMES 新能力"。插件可以添加全新的工具类型、连接外部服务、扩展数据源。
| 特性 | Skill | 插件 |
|---|---|---|
| 本质 | 使用说明(提示词+步骤) | 代码扩展(新功能) |
| 能做什么 | 教 HERMES 用现有工具完成任务 | 给 HERMES 添加全新工具 |
| 技术门槛 | 低——对话即可创建 | 高——需要编程能力 |
| 共享方式 | 复制 SKILL.md 文件 | GitHub 仓库安装 |
# 从 GitHub 安装
hermes plugins install https://github.com/user/hermes-plugin-xxx
# 从本地目录安装
hermes plugins install /path/to/plugin
# 查看已安装插件
hermes plugins list
# 启用/禁用插件
hermes plugins enable xxx
hermes plugins disable xxx
# 卸载插件
hermes plugins uninstall xxx
~/.hermes/plugins/
├── enabled/ # 已启用的插件
│ └── image-gen/ # 图片生成插件
│ ├── plugin.yaml # 插件配置(名称、描述、版本)
│ ├── main.py # 插件代码(工具实现)
│ └── requirements.txt # 额外依赖(可选)
└── available/ # 安装但未启用的插件
└── my-plugin/
# plugin.yaml
name: hello-world
description: 一个简单的示例插件
version: 1.0.0
author: you
tools:
- name: say_hello
description: 向用户问好
# main.py —— 插件实际代码
from hermes.tools import BaseTool
class SayHelloTool(BaseTool):
"""向用户问好的工具"""
name = "say_hello"
description = "向指定用户问好"
def run(self, name: str) -> str:
return f"你好,{name}!欢迎使用 HERMES 插件!"
| 来源 | 命令 | 说明 |
|---|---|---|
| GitHub 仓库 | hermes plugins install https://github.com/user/plugin | 从远程仓库安装 |
| 本地目录 | hermes plugins install /path/to/plugin | 从本地目录安装 |
| 手动安装 | 复制到 ~/.hermes/plugins/available/ | 手动放置插件 |
Cron 让 HERMES 按计划自动执行任务——日报、数据抓取、监控告警、定期备份、定时通知等,完全无人值守。配合网关使用,即使你不在电脑前,Cron 任务也能通过飞书/微信把结果推送给你。
cronjob(action="create",
name="每日晨报",
schedule="0 8 * * 1-5", # 工作日早8点
prompt="搜索今日AI新闻并生成摘要发给我",
deliver="origin")
# 更完整的任务示例
cronjob(action="create",
name="股票盘后分析",
schedule="0 15 * * 1-5", # 工作日下午3点
prompt="1. 获取今日三大指数数据
2. 分析涨幅前5和跌幅前5的板块
3. 生成收盘简报
4. 发送到飞书",
deliver="feishu:oc_your_chat_id")
| 示例 | 含义 |
|---|---|
| 0 9 * * * | 每天早上9点 |
| 0 9 * * 1-5 | 工作日(周一至五)上午9点 |
| */30 * * * * | 每30分钟一次 |
| 0 0 1 * * | 每月1日零点 |
| 0 */2 * * * | 每2小时一次 |
| every 30m | 每30分钟(简化写法) |
| every 2h | 每2小时(简化写法) |
# 查看所有定时任务
cronjob(action="list")
# 暂停任务(不删除)
cronjob(action="pause", job_id="xxx")
# 恢复暂停的任务
cronjob(action="resume", job_id="xxx")
# 删除任务
cronjob(action="remove", job_id="xxx")
# 立即手动运行(用于测试)
cronjob(action="run", job_id="xxx")
# 更新任务
cronjob(action="update", job_id="xxx",
schedule="0 10 * * *")
| 参数 | 类型 | 说明 | 是否必填 |
|---|---|---|---|
| name | string | 任务名称,用于标识和管理 | 推荐 |
| schedule | string | 调度表达式(cron 或简化写法) | ✅ 是 |
| prompt | string | 任务提示词(自包含,完整描述) | ✅ 是 |
| deliver | string | 结果投递地址 | 可选 |
| skills | array | 任务执行前加载的 Skill 列表 | 可选 |
| model | object | 任务使用的模型(provider + model) | 可选 |
| script | string | 直接运行脚本(绕过 LLM) | 可选 |
| context_from | array | 依赖的其他 Cron 任务 ID | 可选 |
# 任务A:采集数据
cronjob(action="create",
name="采集股票数据",
schedule="0 15 * * 1-5",
prompt="获取今日A股行情数据,保存到文件")
# 任务B:分析数据(依赖任务A的结果)
cronjob(action="create",
name="分析股票数据",
schedule="5 15 * * 1-5", # 比A晚5分钟
prompt="分析上一步采集的股票数据,生成分析报告",
context_from=["任务A的job_id"]) # 注入A的结果
# 不需要 LLM 的纯脚本任务
cronjob(action="create",
name="磁盘监控",
schedule="*/30 * * * *",
script="/path/to/check_disk.sh", # 直接运行脚本
no_agent=true) # 跳过 LLM,脚本 stdout 直接投递
# 空输出 = 静默(只输出非空时才发消息)
# 非常适合:监控、健康检查、阈值告警
使用 delegate_task,HERMES 能同时执行多个独立任务——每个子任务有自己独立的上下文环境和工具集,互不干扰,最终结果统一汇总给你。这就像同时派三个助手分头工作,然后汇总结果。
# 方式1:直接对话(推荐)
你:帮我同时做三件事
1. 搜索今天 AI 行业新闻
2. 查看我的日程安排
3. 检查项目 A 的代码是否有错误
# 方式2:指定工具集
你:帮我同时做:
- 用浏览器打开 news.ycombinator.com
- 用终端检查磁盘空间
- 阅读我的日程文件
子任务在后台独立运行,不阻塞当前对话。你可以在子任务执行的同时继续做其他事,子任务的结果会自动返回。
# HERMES 内部实际调用的方式
delegate_task(tasks=[
{goal: "搜索今天AI行业新闻", toolsets: ["web"]},
{goal: "查看日程文件 ~/schedule.md", toolsets: ["file"]},
{goal: "检查项目A代码是否有语法错误", toolsets: ["terminal", "file"]}
])
# 每个子任务独立运行,结果自动返回
| 角色 | 可用的工具 | 说明 |
|---|---|---|
| leaf(叶子) | terminal、file、web、browser 等基本工具 | 只能执行任务,不能分配子任务 |
| orchestrator(编排者) | leaf 工具 + delegate_task | 可继续拆分任务给更多子 Agent |
网关(Gateway)是 HERMES 的消息桥梁——让你通过飞书、微信、Telegram 等即时通讯软件与 HERMES 对话,而不只是在终端使用。开启了网关,你可以在手机上给 HERMES 发消息,就像跟一个同事聊天一样方便。
# 启动时带网关(推荐)
hermes start --gateway
# 后台守护模式运行
hermes start --daemon --gateway
# 查看网关状态
hermes gateway status
# 测试网关是否正常运行
curl http://localhost:8080/health
# config.yaml 网关配置
gateway:
enabled: true
port: 8080 # 网关监听端口
platforms:
- feishu # 飞书
- weixin # 微信(如已配置)
# .env 中的平台配置
FEISHU_APP_ID=cli_xxxxxxxxxxxx
FEISHU_APP_SECRET=xxxxxx
FEISHU_VERIFICATION_TOKEN=xxxxx
# WEIXIN_APP_ID=wx_xxxxx
# WEIXIN_APP_SECRET=xxxxx
# .env 中的平台配置
# 飞书
FEISHU_APP_ID=cli_a7xxxxxxxxxxxx
FEISHU_APP_SECRET=*** 微信
WEIXIN_APP_ID=wx_xxxxxxxxxxxx
WEIXIN_APP_SECRET=*** Telegram
TELEGRAM_BOT_TOKEN=123456:ABC-*** 网关健康检查
curl http://localhost:8080/health
# 返回 {"status":"ok","platforms":["feishu","weixin"]}
# 查看具体平台连接状态
curl http://localhost:8080/status
记忆系统是 HERMES 区别于普通 AI Chat 的关键特性——它能跨会话记住信息。你告诉它的偏好、环境配置、工作流知识,在下次对话或下下次对话中仍然有效,不需要重复说明。
# 主动保存(推荐显式告知)
你:记住我的工作目录是 D:/Projects
你:记住我喜欢用 Markdown 格式回复
你:记住我的 API Key 在 .env 文件里
你:记住这个数据源:qt.gtimg.cn 可以查股票行情
# 查看已记住的信息
你:你记得哪些关于我的信息?
你:记忆里有什么重要内容?
# 修改记忆
你:把我的工作目录改到 E:/Work
# 删除记忆
你:忘掉刚才那个 API 地址
~/.hermes/
├── memory.db # 记忆数据库(SQLite,自动维护)
├── memory/ # 用户信息目录(手工编辑可用)
| 信息类型 | 示例 | 保存时机 |
|---|---|---|
| 用户偏好 | "我喜欢用表格"、"用 Markdown 回复" | 主动告知时 |
| 环境配置 | "我的项目在 D:/Projects"、"Python 版本是 3.11" | 对话中提到时 |
| 数据源 | API 地址、查询语句、文件路径 | 明确要求记住时 |
| 工作流知识 | 处理流程、工具偏好、输出格式偏好 | 重复使用时 |
| 身份信息 | 用户名、角色、公司名 | 自我介绍时 |
# 查看所有记忆
你:你记得哪些关于我的信息?
你:我的记忆里有什么内容?
你:查一下你记住的数据源
# 更新记忆
你:忘掉之前的工作目录
你:把工作目录改成 E:/Projects
# 批量清理
你:帮我清理所有过时的记忆
你:重新帮我整理一下记忆内容
Profile 是 HERMES 的多配置方案——你可以为不同使用场景准备独立的配置文件、技能包、记忆库和环境变量。工作用一套配置,个人用另一套,互不干扰,切换只需要一个参数。
# 启动时指定 Profile
hermes --profile work start
hermes --profile personal start
# 查看当前使用哪个 Profile
hermes config get profile
# 创建新 Profile
mkdir -p ~/.hermes/profiles/myprofile
# 在目录中创建独立的 config.yaml 和 .env
~/.hermes/profiles/
├── default/ # 默认配置(不指定 profile 时使用)
│ ├── config.yaml
│ ├── .env
│ ├── skills/
│ └── memory.db
├── work/ # 工作 Profile
│ ├── config.yaml # 独立的模型/工具配置
│ ├── .env # 公司的 API Key
│ ├── skills/ # 工作相关的 Skills
│ │ ├── code-review/
│ │ └── daily-report/
│ └── memory.db # 独立的记忆库
├── personal/ # 个人 Profile
│ ├── config.yaml
│ ├── .env # 个人的 API Key
│ ├── skills/
│ │ ├── stock-check/
│ │ └── study-helper/
│ └── memory.db
└── dev/ # 开发 Profile
├── config.yaml
├── .env
└── skills/
# 方式1:手动创建目录
mkdir -p ~/.hermes/profiles/work
# 复制默认配置作为起点
cp ~/.hermes/config.yaml ~/.hermes/profiles/work/
# 创建独立的 .env
touch ~/.hermes/profiles/work/.env
# 方式2:让 HERMES 帮你创建
你:帮我创建一个新的 Profile 叫 work
你:创建开发用的 Profile 叫 dev
# 启动时指定 Profile
hermes --profile work start --gateway
hermes --profile dev start
| 特性 | Profile | 多实例 |
|---|---|---|
| 同时运行 | 一次只能用一个 | 可同时运行多个 |
| 端口 | 相同端口 | 每个实例不同端口 |
| 记忆隔离 | ✅ 独立记忆库 | ✅ 完全隔离 |
| 配置隔离 | ✅ 独立配置 | ✅ 完全独立 |
| 资源占用 | 一份 | 多份(各占内存) |
| 适合场景 | 工作/个人切换 | 多角色同时在线 |
守护模式(Daemon)让 HERMES 在后台持续运行——即使关闭了终端窗口或 SSH 连接断开,HERMES 仍在工作。配合网关(Gateway),你可以随时通过飞书/微信给后台的 HERMES 发消息。
# 最简单的启动方式
hermes start --daemon --gateway
# 指定 Profile 启动
hermes --profile work start --daemon --gateway
# 指定端口(避免冲突)
hermes start --daemon --gateway --port 8081
# 创建 start_hermes.bat,放到「启动」文件夹
@echo off
cd /d D:\hermes-agent
call .venv\Scripts\activate
hermes start --daemon --gateway
# 或创建 VBS 脚本(无窗口后台运行)
' start_hermes.vbs
CreateObject("WScript.Shell").Run "cmd /c D:\hermes-agent\start_hermes.bat", 0, False
| 操作 | 命令 |
|---|---|
| 查看运行状态 | hermes status |
| 查看最近日志 | hermes logs --tail 50 |
| 持续跟踪日志 | hermes logs --follow |
| 停止守护进程 | hermes stop |
| 重启 | hermes stop && hermes start --daemon --gateway |
# 使用 NSSM(Non-Sucking Service Manager)注册为 Windows 服务
# 1. 下载 nssm.exe https://nssm.cc/download
# 2. 注册服务
nssm install HermesAgent
# 在弹出的界面中配置:
# Application Path: C:\path o\.venv\Scripts\hermes.exe
# Arguments: start --daemon --gateway
# Startup directory: C:\path o\hermes-agent
# 3. 启动服务
nssm start HermesAgent
# 4. 查看状态
nssm status HermesAgent
# 5. 设置开机自启(默认已开启)
nssm set HermesAgent Start SERVICE_AUTO_START
| 阶段 | 操作 | 命令 |
|---|---|---|
| 启动 | 启动后台守护 | hermes start --daemon --gateway |
| 检查 | 确认运行中 | hermes status |
| 监控 | 跟踪日志 | hermes logs --follow |
| 更新 | 升级后重启 | hermes stop && git pull && pip install -e . && hermes start --daemon |
| 停止 | 安全关闭 | hermes stop |
| 命令 | 用途 | 示例 |
|---|---|---|
| hermes logs --tail 30 | 查看最近 30 行日志 | 快速定位最新错误 |
| hermes logs | grep error | 过滤错误信息 | 找出所有 ERROR |
| hermes logs -f | 持续跟踪日志输出 | 实时监控运行状态 |
| hermes status | 查看运行状态 | 是否在运行 |
| hermes config get | 查看当前配置 | 检查配置是否正确 |
| hermes config reset | 重置配置到默认 | 配置乱了时恢复 |
| 问题 | 原因 | 解决 |
|---|---|---|
| command not found | 虚拟环境未激活 | 运行 .venv\Scripts\activate |
| ModuleNotFoundError | 依赖未安装 | 运行 pip install -e . |
| Port already in use | 端口被其它进程占用 | hermes stop 或指定其他端口 |
| Connection refused | API 地址/Key 配置错误 | 检查 config.yaml 和 .env |
| 启动后无响应 | API Key 无效或网络不通 | 检查 .env 中的 Key,测试网络连通性 |
| 工具调用超时 | 命令执行时间过长 | 增加 timeout 参数 |
| 中文乱码 | 编码问题 | 终端设为 UTF-8,使用英文路径 |
| 命令 | 检查内容 | 正常结果 |
|---|---|---|
| ping api.deepseek.com | 基础网络连通性 | 有响应时间 |
| curl -v https://api.deepseek.com | HTTPS 连接全过程 | TLS 握手成功,HTTP 响应 |
| nslookup api.deepseek.com | DNS 解析 | 返回 IP 地址 |
| curl -s -o /dev/null -w "%{time_total}s" https://api.deepseek.com | 响应总耗时 | > 5s 说明网络慢 |
| curl -s https://httpbin.org/ip | 本机公网 IP | 返回 IP 地址 |
| 项目 | 建议 | 风险等级 |
|---|---|---|
| API Key 管理 | 放在 .env,使用环境变量引用 ${KEY} | 🔴 高 |
| Git 提交 | .env、memory.db、*.log、*.db 加入 .gitignore | 🔴 高 |
| 网关端口 | 不要暴露到公网,用防火墙限制访问 IP | 🟡 中 |
| HTTPS 加密 | 生产环境务必配置 HTTPS(见第 32 章) | 🟡 中 |
| 定期轮换 | 每季度更换一次 API Key,不要长期使用同一个 | 🟢 建议 |
| 权限最小化 | 只给 HERMES 需要的最小权限 | 🟢 建议 |
# 必加项(防止密钥和数据库泄露)
.env
*.db
*.log
__pycache__/
.venv/
# 建议添加
config.yaml # 如果包含敏感信息
*.key
.secrets
credentials*
token*
secret*
# HERMES 特定
~/.hermes/
hermes.log
.cache/
*.pid
| 攻击面 | 风险 | 防范措施 |
|---|---|---|
| API Key 泄露 | 他人使用你的 Key 调用付费 API | .env 不外泄,季度轮换,用量监控 |
| 网关暴露 | 公网可访问网关端口 | 防火墙限制 IP,配置 HTTPS 和认证 |
| Computer Use 滥用 | Agent 误操作系统文件 | 不授予管理员权限,HERMES 会自动询问确认 |
| 记忆数据泄露 | 敏感信息长期留在记忆中 | 定期清理,不存密码,使用 Profile 隔离 |
| 插件安全 | 第三方插件可能有恶意代码 | 审查插件源码后再安装,限制权限 |
| 日志泄露 | 日志中可能包含敏感信息 | 日志不提交 Git,定期轮转清理 |
好的提示词(Prompt)能让 HERMES 的输出质量提升数倍。以下是经过验证的核心原则——理解这些,你的 HERMES 使用体验会有质的飞跃。
# 结构化的提示词
你:[角色]作为数据分析师,
[任务]分析下面这份销售数据,
[格式]用表格展示:月份、销售额、增长率,
[约束]只输出表格,不要其他文字,
[数据]2024年Q1:1月100万、2月120万、3月150万
# 效果:HERMES 会严格按照你的四段式指令执行
在 config.yaml 中设置 system_prompt,让 HERMES 始终保持特定风格和行为模式:
# config.yaml
system_prompt: |
你是一个专业的 Python 开发助手。
回复要简洁,代码要有注释。
先解释思路,再给代码。
不要使用 "首先/然后/最后" 等过渡词。
如果问题不明确,先问清楚再回答。
# 第1轮:提出任务
你:帮我分析这份服务器日志
# 第2轮:补充要求
你:只看 ERROR 和 WARN 级别
你:按时间排序显示
你:把重复的错误去重
# 第3轮:调整输出
你:改成表格,加一列"出现次数"
你:导出为 CSV 文件保存到桌面
给 HERMES 提供输入输出示例,能显著提升特定任务的准确性:
你:我需要把产品名称转成标准格式,示例如下:
输入:"苹果 iPhone 15 Pro Max 256GB 深黑色"
输出:iPhone 15 Pro Max / 256GB / 深黑
输入:"华为 Mate60 Pro 512GB 雅丹黑"
输出:Mate60 Pro / 512GB / 雅丹黑
现在帮我转换:
输入:"三星 Galaxy S24 Ultra 1TB 钛灰"
让 HERMES 展示推理过程可以提高复杂任务的准确率:
你:一步一步思考,然后回答:
公司A 的营收是 1000万,成本是 600万
公司B 的营收是 800万,成本是 500万
问:哪家公司的利润率更高?
请先列出计算过程,再给出答案
# 不同的角色设定适合不同的任务类型
你:你是一个资深 Python 架构师,帮我 review 这段代码
你:你是一个金融分析师,分析这个股票的技术面
你:你是一个资深编辑,帮我润色这篇文章
你:你是一个系统管理员,帮我诊断服务器问题
你:你是一个法律顾问,帮我审查这份合同的条款
工作流是一系列有序步骤的组合——将多个工具调用和判断逻辑串联起来完成一个复杂任务。HERMES 会自动规划执行路径并逐步完成,你只需要描述想要的结果。
| 方式 | 说明 | 适合场景 |
|---|---|---|
| 对话式 | 直接描述步骤,HERMES 自动执行 | 一次性或临时任务 |
| Cron 定时 | 设定 schedule,自动执行 | 每日/每周定期任务 |
| Skill 封装 | 保存为 Skill 可随时复用 | 高频执行的标准化流程 |
# 第1步:在工作流运行之前先准备好
你:帮我设计一个每日数据报告工作流
# 第2步:描述工作流步骤
1. 每天早上8点从数据库拉取昨日销售数据
2. 计算关键指标(日活用户、收入、转化率)
3. 与上周同期对比,标注涨跌
4. 生成简洁的 HTML 报告
5. 发送到飞书团队群
# 第3步:保存为 Skill
你:把这个工作流存为 Skill 叫 daily-report
# 之后只需说:用 daily-report 技能跑今天的报告
你:帮我设计一个带条件判断的工作流
每天早上8点:
1. 获取服务器状态(CPU、内存、磁盘)
2. 判断状态:
- 如果所有指标正常 → 记录日志,不通知
- 如果 CPU > 80% → 发送告警到飞书
- 如果磁盘 > 90% → 发告警并建议清理
- 如果有任何指标异常 → 生成状态报告
3. 保存状态快照到文件
| 模式 | 结构 | 适用场景 |
|---|---|---|
| 流水线 | A → B → C → D | 数据处理、报告生成 |
| 分支 | 条件判断 → A 或 B | 监控告警、分类处理 |
| 并行 | A + B + C → 汇总 | 多源数据采集 |
| 循环 | A → 判断 → 继续/停止 | 批量处理所有文件 |
| 重试 | A → 失败 → 等待 → 重试 A | 网络请求、API调用 |
知识库是 HERMES 的外部知识来源——把你公司的产品文档、技术手册、操作规范放进去,HERMES 在回答时会先检索相关知识再生成回答(RAG:检索增强生成)。这意味着 HERMES 可以回答它训练数据中不存在的特定领域问题。
~/.hermes/knowledge/
├── 产品手册/
│ ├── 功能介绍.md
│ ├── 版本更新.md
│ └── FAQ.md
├── 技术文档/
│ ├── API参考.md
│ ├── 部署指南.md
│ └── 数据库设计.md
├── 培训资料/
│ ├── 新手教程.md
│ └── 最佳实践.md
└── 公司规范/
├── 代码规范.md
└── 安全制度.md
# 添加文档到知识库
你:把这份产品文档加到知识库
你:把这个 FAQ 文件导入知识库
# 基于知识库提问
你:根据产品手册,介绍一下核心功能
你:查一下我们的 API 限流规则是什么
你:根据部署指南,新服务器需要装哪些依赖
# 更新知识库
你:把新的 API 文档替换旧的版本
| 格式 | 说明 | 推荐用途 |
|---|---|---|
| .md(Markdown) | 纯文本标记语言 | 文档、手册、规范 ⭐推荐 |
| .txt | 纯文本 | 简单笔记、日志 |
| .json / .yaml | 结构化数据 | 配置参考、数据字典 |
| .csv | 表格数据 | FAQ 列表、参数对照表 |
# 推荐结构
~/.hermes/knowledge/
├── 产品手册/
│ ├── 01-产品概述.md
│ ├── 02-功能说明.md
│ ├── 03-版本更新日志.md
│ └── FAQ.md
├── 技术文档/
│ ├── API参考.md
│ ├── 部署指南.md
│ ├── 数据库设计.md
│ └── 架构说明.md
├── 培训资料/
│ ├── 新手教程.md
│ └── 最佳实践.md
└── 公司规范/
├── 代码规范.md
├── 安全制度.md
└── 流程规范.md
从顶部开始,根据你的情况跟着箭头走。每一步都有对应的解决方案和具体命令。
如果上面的排查树没命中你的问题,按以下顺序检查:
| 日志关键词 | 可能原因 | 解决方案 |
|---|---|---|
| ConnectionError / Timeout | 网络不通或 API 超时 | 检查网络、换代理、加超时时间 |
| 401 Unauthorized | API Key 无效 | 重新生成 Key,检查 .env |
| ModuleNotFoundError | 依赖缺失 | 重新安装 uv pip install -e . |
| FileNotFoundError | 文件路径错误 | 检查路径拼写和权限 |
| Permission denied | 权限不足 | Windows 用管理员,Linux 加 sudo |
| Address already in use | 端口被占用 | 换端口或杀掉占用进程 |
| JSONDecodeError | API 返回非 JSON | 检查 API 地址是否正确 |
| 方法 | 效果 | 操作 | 适用场景 |
|---|---|---|---|
| 换更快的模型 | 提升 2-5 倍 | deepseek-chat → deepseek-v4-flash | 所有场景 |
| 降低 max_tokens | 提升 10-30% | config 里设 max_tokens: 2048 | 短回复任务 |
| 降低 temperature | 略微提升 | temperature: 0.1 | 精确任务 |
| 启用流式输出 | 首字快 3 倍 | stream: true | 所有场景 ⭐推荐 |
| 本地用小模型 | 提升 3-5 倍 | qwen2.5:7b → qwen2.5:3b 或 phi-3 | 本地推理 |
| 减少上下文轮数 | 提升 10-20% | hermes new 定期清空 | 长会话 |
| 场景 | 显存占用 | 建议 |
|---|---|---|
| 纯云端模型 | 0 MB | 不需要独立显卡 |
| 本地 7B 模型(FP16) | ~6 GB | 加 --lowvram 降到 ~4 GB |
| 本地 13B 模型 | ~10 GB | 需要 12 GB+ 显存 |
| 本地 7B 模型(4bit 量化) | ~4 GB | 推荐——几乎无质量损失 |
| ComfyUI SDXL | ~4-6 GB | 加 --lowvram 运行 |
| ComfyUI + 本地模型同时 | ~10 GB+ | 不建议同时运行 |
| 策略 | 节省 | 操作方法 | 年省估算 |
|---|---|---|---|
| 日常用便宜的模型 | 50-80% | Flash / Mini 替代旗舰模型 | 数千元 |
| 压缩提示词 | 20-40% | system_prompt 精简到 200 字以内 | 数百元 |
| 缓存常见回答 | 30-60% | 常见问答设为 Skill,避免重复调用 | 数百元 |
| 减少上下文长度 | 10-30% | 定期 hermes new,不要一个会话用太久 | 数百元 |
| 用本地模型做简单任务 | 100% | 简单问答、格式转换用 Ollama 本地跑 | 完全免费 |
# 测试 API 响应速度
curl -s -o /dev/null -w "总耗时: %{time_total}s
连接: %{time_connect}s
首字: %{time_starttransfer}s
" \
https://api.deepseek.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer *** \
-d '{"model":"deepseek-v4-flash","messages":[{"role":"user","content":"你好"}],"stream":false,"max_tokens":10}'
# 测试令牌生成速度(多次取平均)
for i in 1 2 3; do
curl -s ... -o /dev/null -w "%{time_total}s\n"
done
| 场景 | 推荐模型 | 温度 | max_tokens |
|---|---|---|---|
| 日常问答 | DeepSeek V4 Flash | 0.7 | 1024 |
| 代码生成 | Claude Sonnet 4 | 0.2 | 4096 |
| 数据分析 | DeepSeek Chat | 0.3 | 4096 |
| 创意写作 | GPT-4o | 0.9 | 2048 |
| 翻译 | GPT-4o Mini | 0.3 | 2048 |
| 简单格式转换 | 本地 Qwen2.5 | 0.1 | 512 |
多 Agent 协作的核心思想是分工合作——一个主 Agent 负责任务拆解和结果汇总,多个子 Agent 并行执行独立任务,大幅提升效率。
在同一个 HERMES 实例里,你可以同时派出多个子任务并行工作——每个子任务有自己独立的上下文和工具集:
# 同时做三件事,互不干扰
你:帮我同时做以下三件事:
1. 搜索今天AI行业新闻
2. 查看我的日程安排
3. 检查项目A的代码是否有错误
# HERMES 内部会这样调度(你不需要手动写这个)
delegate_task(tasks=[
{goal: "搜索今天AI行业新闻", toolsets: ["web"]},
{goal: "查看日程文件 ~/schedule.md", toolsets: ["file"]},
{goal: "检查项目A代码是否有语法错误", toolsets: ["terminal"]}
])
# 每个子任务独立运行,结果自动返回
| 参数 | 说明 | 示例 |
|---|---|---|
| goal | 任务目标(必填) | "搜索今天AI新闻" |
| context | 背景信息 | "我关注大模型和机器人领域" |
| toolsets | 可用工具集 | ["web"]、["terminal","file"] |
你可以同时运行多个 HERMES 实例,每个干不同的活,通过不同端口访问:
# 终端1:启动实例A(用默认配置,做日常问答)
hermes start --port 8081
# 终端2:启动实例B(用工作配置,做代码审查)
hermes --profile work start --port 8082
# 终端3:启动实例C(用网关,接飞书消息)
hermes start --gateway --port 8083
把 HERMES 的知识库放在共享目录,团队成员可以共用同一套配置和知识:
# 推荐目录结构
共享盘:/HERMES_知识库/
├── config.yaml ← 团队统一配置
├── .env ← 共享 API Key(需权限管理)
├── skills/ ← 团队共享技能
│ ├── 客服流程/
│ └── 代码规范/
├── knowledge/ ← 团队知识文档
│ ├── 产品手册/
│ ├── 技术文档/
│ └── 培训资料/
└── cron/ ← 共享定时任务
| 角色 | HERMES 任务 | 频率 |
|---|---|---|
| 项目经理 | 汇总各成员周报 → 生成项目周报 → 发到团队群 | 每周五 |
| 开发人员 | 代码审查 → 运行测试 → 自动部署到测试环境 | 每次提交 |
| 运营人员 | 监控业务数据 → 生成运营报表 → 异常自动告警 | 每日 |
| 客服主管 | 分析客服对话记录 → 提取常见问题 → 更新知识库 | 每周 |
# 示例:团队周报汇总 Cron 工作流
cronjob(
action="create",
name="团队周报汇总",
schedule="0 17 * * 5", # 每周五下午5点
prompt="
1. 查看团队共享目录中的周报文件
2. 提取每个人的核心工作内容
3. 按项目分类汇总进度
4. 标注风险和阻碍项
5. 生成格式化的团队周报
6. 发送到飞书团队群",
deliver="feishu:oc_team_group"
)
| 模式 | 工作方式 | 适用场景 |
|---|---|---|
| 扇出(Fan-out) | 主 Agent 分发 → 子 Agent 并行执行 → 汇总结果 | 多数据源查询、并行处理 |
| 管道(Pipeline) | Agent A → Agent B → Agent C 串行传递 | 数据处理链条(提取→转换→加载) |
| 竞争(Competitive) | 多个 Agent 做同一任务,选最优结果 | 关键决策、代码审查 |
| 监督(Supervisor) | 主 Agent 监控子 Agent,处理异常 | 长时间运行的批量任务 |
你:帮我做一个市场调研,同时查以下信息:
1. 搜索"2026年 AI 行业市场规模预测"
2. 搜索"主要 AI 公司最新财报"
3. 搜索"AI 行业政策变化"
汇总成一份市场调研报告,包含数据来源
HERMES 不仅是个人的效率工具,更是企业的数字化员工。它可以 7x24 小时不间断工作,处理重复性、流程化的任务,让团队成员专注于更有创造性的工作。
| 建设项 | 建议方案 |
|---|---|
| 部署方式 | 云服务器(2核4GB)+ 网关,7x24 运行 |
| 团队接入 | 通过飞书/微信机器人,全员可用 |
| 配置管理 | 不同部门用不同 Profile 隔离 |
| 知识共享 | 统一的产品文档、FAQ、技术手册放在共享知识库 |
| 权限控制 | 管理员统一管理 API Key,定期轮换 |
| 成本管理 | 日常用 Flash 模型,复杂任务用高级模型 |
| 阶段 | 时间 | 目标 |
|---|---|---|
| 第一阶段:试点 | 第1-2周 | 部署 HERMES,接入飞书,跑通日报功能 |
| 第二阶段:扩展 | 第3-4周 | 添加知识库,接入更多数据源,创建常用 Skill |
| 第三阶段:集成 | 第2-3月 | 与内部系统集成,建立自动化工作流体系 |
| 第四阶段:优化 | 第3月+ | 根据反馈优化提示词,迭代工作流,推动全员使用 |
| 场景 | 传统方式 | 用 HERMES | 节省时间 |
|---|---|---|---|
| 写周报 | 30 分钟手动整理邮件和文档 | 自动汇总各渠道数据生成周报 | 80% |
| 查数据 | 登录后台系统 → 导出 → Excel 分析 | 一句话:查一下昨天的销售额 | 90% |
| 代码审查 | 逐行阅读代码→记录问题→写报告 | 自动扫描输出审查报告 | 70% |
| 客户回复 | 手动打字回复每一条客户消息 | AI 生成回复草案,人工确认发出 | 60% |
| 邮件处理 | 逐一阅读→分类→回复 | 自动分类、总结、生成回复建议 | 70% |
| 会议纪要 | 边听边记→整理→分发给参会人 | 自动整理会议记录和待办事项 | 75% |
| 任务类型 | 人工耗时 | HERMES 耗时 | 提升倍数 |
|---|---|---|---|
| 写周报 | 30 分钟 | 1-2 分钟 | 15-30x |
| 查数据+分析 | 20 分钟 | 30 秒 | 40x |
| 代码审查(1000行) | 45 分钟 | 3-5 分钟 | 9-15x |
| 翻译文档(5000字) | 2 小时 | 5 分钟 | 24x |
| 生成报表 | 1 小时 | 2-3 分钟 | 20-30x |
| 批量文件处理(100个) | 30 分钟 | 10 秒 - 1 分钟 | 30-180x |
# 保存为 Skill 后每周自动执行
你:帮我生成这周的管理周报
1. 查看本周的团队 Git 提交记录
2. 汇总每个人的核心工作内容
3. 统计本周完成的项目里程碑
4. 标记延期或有风险的任务
5. 对比上周数据,标注变化
6. 生成格式化的周报文档
7. 发送到管理团队群
HERMES 对个人来说是一个全能数字助手——学习、工作、理财、创作,几乎无所不能。以下是你日常可以派上用场的场景:
| 时间 | 任务 | 命令示例 |
|---|---|---|
| 🌅 7:30 | 晨间简报 | 查天气、日程、新闻,汇总发我手机 |
| 💼 9:00 | 工作准备 | 查看项目进度、待办事项、邮件整理 |
| 📝 10:00 | 文档撰写 | 帮我起草方案/周报/邮件,润色文字 |
| 💻 14:00 | 代码开发 | 调试 Bug、代码审查、API 集成辅助 |
| 📊 16:00 | 数据分析 | 分析今日数据、生成报表、输出结论 |
| 📋 17:30 | 日终总结 | 整理今日完成事项,生成明日计划 |
| 🌙 21:00 | 个人学习 | 总结今天的文章、翻译外语、解释概念 |
你:帮我整理桌面文件,按类型分到不同文件夹
你:把这个网页内容总结成 3 个要点
你:把这张图片从 PNG 转成 JPG,压缩到 500KB 以内
你:帮我搜索一下今天重要的 AI 行业新闻
你:把这个 Excel 里前 10 行提取出来做成 Markdown 表格
你:把这篇文章翻译成英文,保留原格式
你:帮我列出下周需要完成的所有任务
你:分析一下这个月的支出,哪些类别超预算了
你:帮我比较这三款产品的优缺点,用表格展示
从头搭建一个每日股市简报机器人——每天早上8点,HERMES 自动查A股行情、分析板块涨跌、生成精美报告并准时发到你微信/飞书。全程约 20 分钟,零代码基础也能完成。
先让 HERMES 记住我们需要的数据源地址:
你:记住以下数据源,用于股票查询:
1. 大盘指数行情(上证、深证、创业板)
http://qt.gtimg.cn/q=sh000001,sz399001,sz399006
2. 板块涨跌排行
http://push2.eastmoney.com/api/qt/clist/get
3. 个股实时行情
http://qt.gtimg.cn/q=代码(如 sh600519)
每天8点执行以下工作流,生成股市简报并发给我:
📊 数据获取
1. 获取三大指数行情:
curl -s "http://qt.gtimg.cn/q=sh000001,sz399001,sz399006"
提取:名称、最新价、涨跌额、涨跌幅(%)
2. 获取板块涨跌排行:
curl -s "http://push2.eastmoney.com/api/qt/clist/get?pn=1&pz=10&po=1&np=1&fid=f3&fs=m:90+t:2"
提取涨幅前5和跌幅前5的板块
📋 生成简报(格式如下)
┌─────────────────────┐
│ 📊 今日股市简报 │
│ 2026-07-21 │
└─────────────────────┘
📈 大盘表现
上证指数:xxxx (+x.xx%) 成交额:xxx亿
深证成指:xxxx (+x.xx%) 成交额:xxx亿
创业板指:xxxx (+x.xx%)
🏆 领涨板块 Top 5
1. xxx (+x.xx%)
2. xxx (+x.xx%)
📉 领跌板块 Top 5
1. xxx (-x.xx%)
2. xxx (-x.xx%)
💡 简评:一句话总结今日市场情绪
4. 把完整简报发送给我
你:帮我把上面的完整流程设成每天早上8点的定时任务
cronjob(action="create",
name="每日股市简报",
schedule="0 8 * * 1-5", # 工作日早8点(周一到周五)
prompt="(把上面的完整提示词贴在这里)",
deliver="origin")
# 也可以直接对 HERMES 说
你:创建一个定时任务,每天早上8点(工作日)查股市发简报给我
# 创建完任务后先手动测试一下
你:运行一下每日股市简报任务
# 查看执行结果
你:简报收到了吗?内容对不对?
# 如果数据格式不对
你:提取数据时注意只取涨跌幅百分比,不要其他符号
# 如果 API 返回空
你:先用 curl 测试一下数据源能不能正常返回
curl -s "http://qt.gtimg.cn/q=sh000001,sz399001,sz399006"
# 建议在简报中包含数据质量检查
你:在生成简报前先验证:
1. 三大指数的数据不能为空
2. 涨跌幅数值应在合理范围内(-10% ~ +10%)
3. 板块数据至少返回 5 条以上
4. 如果数据异常,标记出来并重试一次
# 测试通过后保存
你:把股票数据源和完整的简报流程存为 Skill,取名 "stock-briefing"
# 以后只需要一句话
你:用 stock-briefing 技能查今天行情
# 或者
你:用 stock-briefing 技能跑一次简报发我手机上
# 如果想在手机上收简报,启动网关
hermes start --gateway
# 在 Cron 任务中修改 deliver 地址
deliver="origin" # 发到当前对话
deliver="all" # 发到所有已连接平台
把 HERMES 部署到云服务器,让你拥有一个7x24 小时在线的 AI 助手。你不需要一直开着电脑,团队也能共享使用。
| 方案 | 优点 | 缺点 | 费用 |
|---|---|---|---|
| A:云服务器 | 稳定、7x24、公网固定 | 月费 50-100 元 | 50-100 元/月 |
| B:frp 穿透 | 本地机器、无月费 | 需公网服务器、本地不能关机 | 穿透服务器约 30 元/月 |
| C:Cloudflare Tunnel | 免费、安全 | 国外节点、可能延迟高 | 免费 |
推荐配置:2核4GB,40GB SSD,CentOS/Ubuntu 22.04。国内厂商:阿里云、腾讯云、华为云(约 50-100 元/月)。如果预算充足,4核8GB 体验更好。
# 用 SSH 连接
ssh root@你的服务器IP
# 安装基础环境
apt update && apt install -y python3 python3-pip git curl
pip3 install uv
# 克隆并安装
cd ~
git clone https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
python3 -m venv .venv
.venv/bin/pip install -e .
# 创建配置目录
mkdir -p ~/.hermes
# 上传本地的配置文件和 .env
# 可以用 scp 从本地传到服务器:
# scp ~/.hermes/config.yaml root@服务器IP:~/.hermes/
# scp ~/.hermes/.env root@服务器IP:~/.hermes/
# 创建 systemd 服务文件
sudo tee /etc/systemd/system/hermes.service << 'EOF'
[Unit]
Description=HERMES Agent
After=network.target
Wants=network-online.target
[Service]
Type=simple
User=root
WorkingDirectory=/root/hermes-agent
ExecStart=/root/hermes-agent/.venv/bin/hermes start --daemon --gateway
Restart=always
RestartSec=10
StandardOutput=append:/root/hermes-agent/hermes.log
StandardError=append:/root/hermes-agent/hermes.log
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动
sudo systemctl daemon-reload
sudo systemctl enable hermes
sudo systemctl start hermes
# 查看状态
sudo systemctl status hermes
# 查看日志
sudo journalctl -u hermes -f
# 用 Caddy 自动配置 HTTPS(免费证书,自动续期)
sudo apt install -y debian-keyring debian-archive-keyring
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update && sudo apt install caddy
# 配置 Caddyfile
sudo tee /etc/caddy/Caddyfile << 'EOF'
你的域名.com {
reverse_proxy localhost:8080
}
EOF
sudo systemctl restart caddy
如果你用自己的电脑跑 HERMES,但需要公网访问(如飞书回调),用 frp 穿透:
# 需要:一台有公网IP的服务器(最低配) + frp
# 服务端(公网服务器)frps.ini
[common]
bind_port = 7000
vhost_http_port = 8080
# 客户端(你的电脑)frpc.ini
[common]
server_addr = 你的服务器IP
server_port = 7000
[web]
type = http
local_port = 8080
custom_domains = 你的域名.com
# 不需要公网服务器,Cloudflare 免费做穿透
# 1. 在 Cloudflare 控制台创建 Tunnel
# 2. 在本地安装 cloudflared
# macOS: brew install cloudflared
# Windows: winget install cloudflare.cloudflared
# 3. 登录并运行
cloudflared tunnel login
cloudflared tunnel create hermes-tunnel
cloudflared tunnel route dns hermes-tunnel hermes.yourdomain.com
cloudflared tunnel run hermes-tunnel
# docker-compose.yml
version: '3'
services:
hermes:
image: nousresearch/hermes-agent:latest
container_name: hermes
restart: always
ports:
- "8080:8080"
volumes:
- ./config:/root/.hermes
- ./data:/root/hermes-agent/data
environment:
- TZ=Asia/Shanghai
command: hermes start --daemon --gateway
# 1. 进程监控(systemd 自带)
systemctl is-active hermes
# 2. 健康检查端点
curl -f http://localhost:8080/health || echo "HERMES 宕机!"
# 3. 资源监控
htop # 实时资源
journalctl -u hermes --since "1 hour ago" | grep -i error # 错误检查
# 4. 日志轮转(避免磁盘占满)
sudo tee /etc/logrotate.d/hermes << 'EOF'
/root/hermes-agent/hermes.log {
daily
rotate 7
compress
missingok
notifempty
}
EOF
| 周期 | 操作 | 命令 |
|---|---|---|
| 每日 | 检查是否在线 | systemctl is-active hermes |
| 每周 | 检查异常日志 | journalctl -u hermes --since "7 days ago" | grep -i error |
| 每月 | 更新版本 | git pull && .venv/bin/pip install -e . && systemctl restart hermes |
| 每季 | 更换 API Key | 更新 .env 文件,检查磁盘 df -h |
| 问题 | 解决 |
|---|---|
| systemd 启动失败 | journalctl -u hermes -n 30 看具体错误 |
| 端口被占用 | netstat -tlnp | grep 8080 找出占用进程 |
| 内存不足(OOM) | 加 Swap:fallocate -l 4G /swapfile && chmod 600 /swapfile && mkswap /swapfile && swapon /swapfile |
| HTTPS 证书失效 | sudo systemctl restart caddy 自动续期 |
| 飞书回调收不到 | 检查防火墙:ufw allow 8080 或云平台安全组规则 |
| 磁盘快满了 | journalctl --vacuum-size=500M 清理系统日志 |
🤖 HERMES Agent 完全操作手册 · 32章完整版(含高级专题详细内容)
由《HERMES Agent 操作手册》与《HERMES Agent 高级专题手册》合并而成
Toobey Network Technology · 2026-07-21