hermes中文绿皮书
注意:完整阅读hermes中文绿皮书,请跳转到最后。
目录
- 第一部分:启程(入门篇)
- Hermes Agent 全网最全面的中文手册
- Hermes Agent
- 快速开始
- 学习路径
- 安装
- Android / Termux
- Nix & NixOS 设置
- 在 Mac 上运行本地 LLM
- 第二部分:掌握(功能篇)
- 用 Cron 自动化任何事情
- 定时任务故障排除
- 教程:每日简报机器人
- 教程:团队 Telegram 助手
- 委托与并行工作
- 第三部分:进阶(开发者篇)
- 架构
- 上下文压缩与缓存
- 提示词组装
- 提供商运行时解析
- 工具运行时
- 网关内部机制
- Cron 内部机制
- 会话存储
- 轨迹格式
- ACP 内部机制
- 环境、基准测试和数据生成
- 添加平台适配器
- 添加提供商
- 添加工具
- 创建技能
- 构建 Hermes 插件
- 记忆提供商插件
- 扩展 CLI
- 第四部分:附录(参考篇)
- 更新和卸载
- 从 OpenClaw 迁移
- 将 Hermes 用作 Python 库
第一部分:启程(入门篇)
Hermes Agent 全网最全面的中文手册
目录
- Hermes Agent 全网最全面的中文手册
- 目录
- Hermes Agent
- 什么是 Hermes Agent?
- 快速链接
- 关键特性
- ACP 内部机制
- 启动流程
- 主要组件
- 事件桥接
- 权限桥接
- 工具渲染辅助函数
- 会话生命周期
- 取消
- 分支
- 模型提供商/认证行为
- 工作目录绑定
- 相同名称工具调用的重复
- 审批回调恢复
- 当前限制
- 相关文件
- 添加平台适配器
- 架构概述
- 逐步检查清单
-
- 平台枚举
-
- 适配器文件
-
- 网关配置
-
- 网关运行器
-
- 跨平台交付
-
- CLI 集成
-
- 工具
-
- 工具集
-
- 可选:平台提示
-
- 测试
-
- 文档
-
- 一致性审计
- 常见模式
- 长轮询适配器
- 回调/Webhook 适配器
- 令牌锁
- 参考实现
- 添加提供商
- 心理模型
- 首先选择实现路径
- 路径 A — 兼容 OpenAI 的提供商
- 路径 B — 原生提供商
- 文件清单
- 每个内置提供商必需
- 原生 / 非 OpenAI 提供商的附加要求
- 新的适配器文件
- 提示词缓存和特定于提供商的请求字段
- 兼容 OpenAI 的提供商清单
- 原生提供商清单
- 常见陷阱
- 实施时不错的搜索目标
- 添加工具
- 概述
- 关键规则
- 异步处理函数
- 需要 task_id 的处理函数
- 智能体循环拦截的工具
- 可选:设置向导集成
- 检查清单
- 概述
- 智能体循环内部机制
- 核心职责
- 两个入口点
- API 模式
- 回合生命周期
- 消息格式
- 消息交替规则
- 可中断的 API 调用
- 工具执行
- 顺序执行 vs 并发执行
- 执行流程
- Agent 级别工具
- 回调表面
- 预算和后备行为
- 迭代预算
- 后备模型
- 压缩和持久化
- 压缩触发时机
- 压缩期间发生的事情
- 会话持久化
- 关键源文件
- 相关文档
- 架构
- 系统概览
- 目录结构
- 数据流
- CLI 会话
- 消息网关 消息
- Cron 任务
- 推荐阅读顺序
- 主要子系统
- 智能体循环
- 提示词 系统
- 提供者解析
- 工具系统
- 会话持久化
- 消息网关
- 插件系统
- Cron
- ACP 集成
- RL / 环境 / 轨迹
- 设计原则
- 文件依赖链
- 上下文压缩与缓存
- 可插拔上下文引擎
- 双重压缩系统
-
- 网关会话卫生
-
- 代理 上下文Compressor
-
- 配置
- 参数详情
- 计算值
- 压缩算法
- 阶段 1:修剪旧工具结果
- 阶段 2:确定边界
- 阶段 3:生成结构化摘要
- 阶段 4:组装压缩消息
- 迭代重新压缩
- 压缩前后示例
- 压缩前
- 压缩后
- 提示缓存
- 策略:system_and_3
- 工作原理
- 缓存感知设计模式
- 启用提示缓存
- 上下文压力警告
- 上下文 Engine 插件
- 工作原理
- 目录结构
- 上下文Engine 抽象基类
- 您的引擎必须维护的类属性
- 可选方法
- 引擎工具
- 注册
- 通过目录
- 通过通用插件系统
- 生命周期
- 配置
- 测试
- See also
- 创建技能
- 应该是技能还是工具?
- 技能目录结构
- SKILL.md 格式
- 平台特定技能
- 条件技能激活
- 环境变量要求
- 安全加载设置
- 配置设置
- 凭据文件要求
- 技能指南
- 无外部依赖
- 渐进披露
- 包含辅助脚本
- 测试它
- 技能应该放在哪里?
- 发布技能
- 到 技能s Hub
- 到自定义仓库
- 安全扫描
- Cron 内部机制
- 关键文件
- 调度模型
- 作业存储
- 作业生命周期状态
- 向后兼容性
- 调度程序运行时
- 滴答周期
- 网关集成
- 全新会话隔离
- 基于技能的作业
- 基于脚本的作业
- 提供商恢复
- 传送模型
- 响应包装
- 会话隔离
- 递归保护
- 锁定
- CLI 接口
- 相关文档
- 环境、基准测试和数据生成
- 架构
- BaseEnv
- HermesAgentBaseEnv
- 具体环境
- 核心组件
- 智能体循环
- 工具上下文
- 工具调用解析器
- 可用的基准测试
- TerminalBench2
- TBLite
- YC-Bench
- 训练环境
- TerminalTestEnv
- HermesSweEnv
- 运行环境
- 两阶段操作
- 阶段 1:OpenAI 服务器
- 阶段 2:VLLM ManagedServer
- 创建环境
- 训练环境
- 仅评估基准测试
- 配置参考
- HermesAgentEnvConfig 字段
- YAML 配置
- 先决条件
- 适用于所有环境
- 适用于 Modal 沙盒基准测试
- 适用于 YC-Bench
- 适用于 RL 训练
- 目录结构
- 架构
- 扩展 CLI
- 扩展点
- 快速入门:包装器 CLI
- 钩子参考
- 布局图
- 提示
- 网关内部机制
- 关键文件
- 架构概览
- 消息流
- 会话密钥格式
- 两级消息保护
- 授权
- DM 配对流程
- 斜杠命令分发
- 运行中 Agent 保护
- 配置源
- 平台适配器
- Token 锁
- 传送路径
- 钩子
- 网关钩子事件
- 记忆提供商集成
- 记忆刷新生命周期
- 后台维护
- 进程管理
- 记忆提供商插件
- 目录结构
- Memory模型提供商 抽象基类
- 所需方法
- 核心生命周期
- 配置
- 可选钩子
- 配置模式
- 保存配置
- 插件入口点
- plugin.yaml
- 线程契约
- 配置文件隔离
- 测试
- 添加 CLI 命令
- 工作原理
- 示例
- 参考实现
- 带有 CLI 的目录结构
- 单一提供商规则
- 提示词组装
- 缓存的系统提示词层
- SOUL.md 在提示词中如何显示
- 上下文文件如何注入
- 上下文文件发现细节
- 仅 API 调用时层
- 记忆快照
- 上下文文件
- 技能索引
- 为什么提示词组装会这样划分
- 相关文档
- 提供商运行时解析
- 解析优先级
- 提供商
- 运行时解析的输出
- 为什么这很重要
- AI 消息网关
- 自定义的兼容 OpenAI
- 原生 Anthropic 路径
- OpenAI Codex 路径
- 辅助模型路由
- 后备模型
- 内部工作原理
- 什么不支持后备
- 测试覆盖率
- 相关文档
- 会话存储
- 架构概览
- SQLite 模式
- Sessions 表
- Messages 表
- FTS5 全文搜索
- 模式版本和迁移
- 写入竞争处理
- 常见操作
- 初始化
- 创建和管理会话
- 存储消息
- 检索消息
- 会话标题
- 全文搜索
- 基本搜索
- FTS5 查询语法
- 筛选搜索
- 搜索结果格式
- 会话血统
- 查询:查找会话血统
- 查询:带预览的最近会话
- 查询:令牌使用统计
- 导出和清理
- 数据库位置
- 工具运行时
- 工具注册模型
- 工具可用性检查
- 工具集解析
- 旧工具集名称
- 调度
- 调度流程
- 错误包装
- 代理循环工具
- 异步桥接
- DANGEROUS_PATTERNS 审批流程
- 终端/运行时环境
- 并发性
- 相关文档
- 轨迹格式
- 文件命名约定
- JSONL 条目格式
- CLI/交互式格式
- 批处理器格式
- 对话数组
- 完整示例
- 规范化规则
- 推理内容标记
- 工具调用规范化
- 工具响应规范化
- 系统消息
- 加载轨迹
- 加载用于 HuggingFace 数据集
- 控制轨迹保存
- 安装
- 快速安装
- Linux / macOS / WSL2
- Android / Termux
- 安装脚本的功能
- 安装后
- 前提条件
- 手动安装
- 手动安装快速参考
- 故障排除
- 快速安装
- 学习路径
- 如何使用此页面
- 按经验水平
- 按用例
- “我想要一个 CLI 编码助手”
- “我想要一个 Telegram/Discord 机器人”
- “我想要自动化任务”
- “我想要构建自定义工具/技能”
- “我想要训练模型”
- “我想将其用作 Python 库”
- 关键功能一览
- 接下来阅读什么
- Nix & NixOS 设置
- 前提条件
- 快速开始
- NixOS 模块
- 添加 Flake 输入
- 最小配置
- 验证它是否工作
- 选择部署模式
- 配置
- 声明式设置
- 应急方案:使用您自己的配置
- 自定义速查表
- 密钥管理
- sops-nix
- agenix
- OAuth / 认证种子
- 文档
- MCP 服务器
- Stdio 传输
- HTTP 传输
- 带有 OAuth 的 HTTP 传输
- 采样
- 托管模式
- 容器架构
- 什么在什么之间持久
- GC Root 保护
- 开发
- 开发 Shell
- direnv
- Flake 检查
- 选项参考
- 核心
- 配置
- 密钥和环境
- 文档
- MCP 服务器
- 服务行为
- 容器
- 目录布局
- 原生模式
- 容器模式
- 更新
- 故障排除
- 服务日志
- 容器检查
- 强制容器重建
- 验证密钥是否已加载
- GC Root 验证
- 常见问题
- 快速开始
-
- 安装 Hermes Agent
-
- 设置提供商
-
- 开始聊天
-
- 尝试关键功能
- 让它使用终端
- 使用斜杠命令
- 多行输入
- 中断 agent
- 恢复会话
-
- 进一步探索
- 设置沙盒终端
- 连接消息平台
- 添加语音模式
- 安排自动化任务
- 浏览和安装技能
- 通过 ACP 在编辑器中使用 Hermes
- 尝试 MCP 服务器
- 快速参考
- 下一步
-
- Android / Termux
- 已测试路径支持什么?
- 什么是已测试路径尚不支持的?
- 选项 1:一键安装程序
- 选项 2:手动安装
-
- 更新 Termux 并安装系统包
-
- 克隆 Hermes
-
- 创建虚拟环境
-
- 安装已测试的 Termux bundle
-
- 将 hermes 放入您的 Termux PATH
-
- 验证安装
-
- 启动 Hermes
-
- 推荐的后续设置
- 配置模型
- 稍后重新运行完整的交互式设置向导
- 稍后手动安装可选的 Node 依赖
- 故障排除
- 安装 .[all] 时显示 “No solution found”
- 安装 Python 包时构建失败
- 手机上的已知限制
- 更新和卸载
- 更新
- 更新期间会发生什么
- 建议的更新后验证
- 检查当前版本
- 从消息平台更新
- 手动更新
- 回滚说明
- Nix 用户说明
- 卸载
- 手动卸载
- 更新
- 用 Cron 自动化任何事情
- 模式 1:网站变更监控
- 模式 2:周报
- 模式 3:GitHub 仓库监视器
- 模式 4:数据收集管道
- 模式 5:多技能工作流
- 管理你的任务
- 传递目标
- 提示
- 构建 Hermes 插件
- 你在构建什么
- 你的插件的最终结构
- 插件还能做什么?
- 随附数据文件
- 捆绑技能
- 环境变量门控
- 条件工具可用性
- 注册多个钩子
- 钩子参考
- 注册 CLI 命令
- 通过 pip 分发
- 常见错误
- 定时任务故障排除
- 任务不触发
- 检查 1:验证任务存在且处于活跃状态
- 检查 2:确认计划表达式正确
- 检查 3:网关是否正在运行?
- 检查 4:检查系统时钟和时区
- 投递失败
- 检查 1:验证投递目标是否正确
- 检查 2:检查 [SILENT] 的使用
- 检查 3:平台令牌权限
- 检查 4:响应包装
- 技能加载失败
- 检查 1:验证技能已安装
- 检查 2:检查技能名称 vs 技能文件夹名称
- 检查 3:需要交互式工具的技能
- 检查 4:多技能排序
- 任务错误和失败
- 检查 1:查看最近的任务输出
- 检查 2:常见错误模式
- 检查 3:锁竞争
- 检查 4:jobs.json 的权限
- 性能问题
- 任务启动缓慢
- 太多重叠任务
- 大脚本输出
- 诊断命令
- 获取更多帮助
- 任务不触发
- 教程:每日简报机器人
- 我们要构建的内容
- 前提条件
- 黄金法则:自包含提示词
- 多话题简报
- 使用委托进行并行研究
- 仅工作日计划
- 每日两次简报
- 使用记忆添加个人上下文
- 列出所有计划任务
- 删除任务
- 检查 消息网关 状态
- 进一步探索
- 委托与并行工作
- 何时委托
- 模式:并行研究
- 模式:代码审查
- 模式:比较替代方案
- 模式:多文件重构
- 模式:先收集后分析
- 工具集选择
- 约束
- 技巧
- 在 Mac 上运行本地 LLM
- 选择模型
- 选项 A:llama.cpp
- 安装
- 下载模型
- 启动服务器
- 记忆受限系统的优化
- 测试
- 获取模型名称
- 选项 B:通过 omlx 使用 MLX
- 安装
- 下载模型
- 启动服务器
- 测试
- 列出可用模型
- 基准测试:llama.cpp vs MLX
- 结果
- 这意味着什么
- 您应该选择哪个?
- 连接到 Hermes
- 超时
- 从 OpenClaw 迁移
- 快速开始
- 选项
- 迁移什么
- 角色、记忆和指令
- 技能
- 模型和提供商配置
- 代理行为
- 会话重置策略
- MCP 服务器
- TTS
- 消息平台
- 其他配置
- 已归档
- API 密钥解析
- 支持的密钥目标
- SecretRef 处理
- 迁移后
- 故障排除
- “OpenClaw 目录未找到”
- “未找到提供商 API 密钥”
- 迁移后技能不出现
- TTS 语音未迁移
- 将 Hermes 用作 Python 库
- 安装
- 基本用法
- 完整对话控制
- 配置工具
- 多轮对话
- 保存轨迹
- 自定义系统提示词
- 批量处理
- 集成示例
- FastAPI 端点
- Discord 机器人
- CI/CD 流水线步骤
- 关键构造函数参数
- 重要说明
- 教程:团队 Telegram 助手
- 我们要构建的内容
- 前提条件
- 找到您的用户 ID
- 快速测试
- 生产环境:安装为服务
- 验证它正在运行
- 方法 A:静态白名单
- 方法 B:DM 配对
- 安全注意事项
- 设置主频道
- 配置工具进度显示
- 使用 SOUL.md 设置人格
- 添加项目上下文
- 每日站会摘要
- 服务器健康检查
- 管理定时任务
- 生产环境技巧
- 使用 Docker 确保安全
- 监控 消息网关
- 保持 Hermes 更新
- 日志位置
- 进一步探索
- 技巧与最佳实践
- 获得最佳结果
- 明确表达您的需求
- 提前提供上下文
- 使用上下文文件处理重复指令
- 让代理使用其工具
- 对复杂工作流使用技能
- CLI 高级用户技巧
- 多行输入
- 粘贴检测
- 中断和重定向
- 使用 -c 恢复会话
- 剪贴板图片粘贴
- 斜杠命令自动补全
- 上下文文件
- AGENTS.md:您项目的头脑
- SOUL.md:自定义人格
- .cursorrules 兼容性
- 发现机制
- 记忆与技能
- 记忆与技能:什么放哪里
- 何时创建技能
- 管理记忆容量
- 让代理记住
- 性能与成本
- 不要破坏提示词缓存
- 在达到限制前使用 /compress
- 并行工作委托
- 使用 execute_code 进行批量操作
- 选择正确的模型
- 消息平台技巧
- 设置主频道
- 使用 /title 整理会话
- DM 配对实现团队访问
- 工具进度显示模式
- 安全
- 对不受信任的代码使用 Docker
- 避免 Windows 编码陷阱
- 在选择"始终"之前仔细考虑
- 命令批准是您的安全网
- 对消息机器人使用白名单
- 获得最佳结果
- 在 Hermes 中使用 MCP
- 什么时候应该使用 MCP?
- 心理模型
- 示例:仅允许你想要的
- 示例:黑名单危险操作
- 示例:也禁用工具包装器
- 过滤实际上影响什么?
- 你可能看到的工具包装器
- 常见模式
- 模式 1:本地项目助手
- 模式 2:GitHub 分类助手
- 模式 3:内部 API 助手
- 模式 4:文档/知识服务器
- 教程:端到端过滤设置
- 阶段 1:添加带严格白名单的 GitHub MCP
- 阶段 2:仅在需要时扩展
- 阶段 3:添加具有不同策略的第二个服务器
- 安全使用建议
- 对危险系统首选允许列表
- 禁用未使用的工具
- 保持服务器范围狭窄
- 配置更改后重载
- 按症状排除故障
- 推荐的第一个 MCP 设置
- 相关文档
- 使用 SOUL.md 与 Hermes
- SOUL.md 的用途
- SOUL.md 不用于什么
- 它在哪里
- 首次运行行为
- Hermes 如何使用它
- 一个好的首次编辑
- 示例风格
-
- 务实的工程师
-
- 研究伙伴
-
- 老师/解释者
-
- 严格的审查者
-
- 什么造就一个强大的 SOUL.md?
- 建议的结构
- SOUL.md vs /personality
- SOUL.md vs AGENTS.md
- 放在 SOUL.md 中
- 放在 AGENTS.md 中
- 如何编辑它
- 一个实用的工作流
- 排除故障
- 我编辑了 SOUL.md 但 Hermes 听起来还是一样
- Hermes 忽略了我 SOUL.md 的部分
- 我的 SOUL.md 变得太特定于项目了
- 相关文档
- 使用 Hermes 语音模式
- 语音模式适合什么
- 选择你的语音模式设置
- CLI 麦克风 + 播放
- 消息平台
- 高级 ElevenLabs TTS
- 本地 NeuTTS
- 全部
- macOS
- Ubuntu / Debian
- 最简单/最便宜的设置
- 环境文件示例
- 模型提供商 推荐
- 如果你使用 hermes setup
- 用例 1:CLI 语音模式
- 打开它
- 录制流程
- 有用的命令
- 好的 CLI 工作流
- 调整 CLI 行为
- 静默阈值
- 静默持续时间
- 录制键
- 用例 2:Telegram 或 Discord 中的语音回复
- 启动 gateway
- 打开语音回复
- 模式
- 何时使用哪种模式
- 好的消息工作流
- 用例 3:Discord 语音频道
- 所需的 Discord 权限
- 加入和离开
- 加入时会发生什么
- Discord VC 使用的最佳实践
- 语音质量推荐
- 最佳质量设置
- 最佳速度/便利设置
- 最佳零成本设置
- 常见故障模式
- “找不到音频设备”
- “Bot 加入但听不到任何东西”
- “它转录但不说”
- “Whisper 输出垃圾”
- “它在 DM 中工作但不在服务器频道中”
- 建议的第一周设置
- 接下来去哪里阅读
- 使用技能
- 查找技能
- 搜索技能
- 技能中心
- 使用技能
- 渐进式披露
- 从中心安装
- 验证安装
- 配置技能设置
- 创建你自己的技能
-
- 创建目录
-
- 编写 SKILL.md
-
- 添加引用文件
-
- 测试它
-
- 按平台管理技能
- 技能 vs 记忆
- 技巧
- 查找技能
- 集成
- AI 提供商和路由
- 工具服务器
- Web 搜索后端
- 浏览器自动化
- 语音和 TTS 提供商
- IDE 和编辑器集成
- 程序化访问
- 记忆和个性化
- 消息平台
- 家庭自动化
- 插件
- 训练和评估
- AI 提供商
- 推理提供商
- Anthropic
- GitHub Copilot
- 一级中国 AI 提供商
- xAI 提示缓存
- Hugging Face 推理提供商
- 自定义和自托管 LLM 提供商
- 通用设置
- 使用 /model 切换模型
- Ollama — 本地模型,零配置
- vLLM — 高性能 GPU 推理
- SGLang — 使用 RadixAttention 的快速服务
- llama.cpp / llama-server — CPU 和 Metal 推理
- LM Studio — 带有本地模型的桌面应用
- WSL2 网络
- 本地模型故障排除
- LiteLLM 代理 — 多提供商网关
- ClawRouter — 成本优化路由
- 其他兼容提供商
- 上下文长度检测
- 命名自定义提供商
- 选择正确的设置
- 可选 API 密钥
- 自托管 Firecrawl
- OpenRouter 提供商路由
- 回退模型
- 智能模型路由
- 另请参阅
- 推理提供商
- CLI 命令参考
- 全局入口点
- 全局选项
- 顶级命令
- hermes chat
- hermes model
- hermes gateway
- hermes setup
- hermes whatsapp
- hermes login / hermes logout **
- hermes auth
- hermes status
- hermes cron
- hermes webhook
- hermes doctor
- hermes dump
- What it includes
- Example output
- When to use
- hermes logs
- Log files
- Options
- Examples
- Filtering
- Log rotation
- hermes config
- hermes pairing
- hermes skills
- hermes honcho
- hermes memory
- hermes acp
- hermes mcp
- hermes plugins
- hermes tools
- hermes sessions
- hermes insights
- hermes claw
- What gets migrated
- Examples
- hermes profile
- hermes completion
- Maintenance commands
- See also
- 全局入口点
- 环境变量
- LLM 提供商
- 提供商身份验证
- 工具 API
- 终端后端
- SSH 后端
- 容器资源
- 持久 Shell
- 消息传递
- Agent 行为
- Cron 调度程序
- 会话设置
- 上下文压缩
- 辅助任务覆盖
- 回退模型
- 提供商路由
- 常见问题和故障排除
- 常见问题
- Hermes 支持哪些 LLM 提供商?
- 它在 Windows 上工作吗?
- 它在 Android / Termux 上工作吗?
- 我的数据会被发送到任何地方吗?
- 我可以离线使用它/使用本地模型吗?
- 它花费多少?
- 多个人可以使用一个实例吗?
- 记忆和技能有什么区别?
- 我可以在自己的 Python 项目中使用它吗?
- 故障排除
- 安装问题
- 提供商和模型问题
- 终端问题
- 消息传递问题
- 性能问题
- MCP 问题
- 配置文件
- 配置文件与设置 HERMES_HOME 有何不同?
- 两个配置文件可以共享同一个 bot token 吗?
- 配置文件是否共享记忆或会话?
- 运行 hermes update 时会发生什么?
- 我可以将配置文件移动到不同的计算机吗?
- 我可以运行多少个配置文件?
- 工作流程和模式
- 为不同的任务使用不同的模型
- 在一个 WhatsApp 号码上运行多个代理
- 控制在 Telegram 中显示的内容
- 在 Telegram 上管理技能
- 共享线程会话
- 将 Hermes 导出到另一台计算机
- 安装后重新加载 shell 时权限被拒绝
- 首次代理运行出现错误 400
- 仍然卡住?
- 常见问题
- MCP 配置参考
- 根配置结构
- 服务器键
- tools 策略键
- 过滤语义
- 优先级
- 工具策略
- 禁用资源
- 禁用提示
- 感知能力的注册
- enabled: false
- 空结果行为
- 配置示例
- 安全的 GitHub 白名单
- Stripe 黑名单
- 仅资源的文档服务器
- 重新加载配置
- 工具命名
- 名称清理
- OAuth 2.1 认证
- 可选技能目录
- 自主 AI 代理
- 区块链
- 沟通
- 创意
- DevOps
- 电子邮件
- 健康
- MCP
- 迁移
- MLOps
- 生产力
- 研究
- 安全
- 配置文件命令参考
- hermes profile
- hermes profile list
- hermes profile use
- hermes profile create
- hermes profile delete
- hermes profile show
- hermes profile alias
- hermes profile rename
- hermes profile export
- hermes profile import
- hermes -p / hermes --profile
- hermes completion
- 另请参阅
- 内置技能目录
- apple
- autonomous-ai-agents
- data-science
- creative
- devops
- dogfood
- gaming
- github
- inference-sh
- leisure
- mcp
- media
- mlops
- mlops/cloud
- mlops/evaluation
- mlops/inference
- mlops/models
- mlops/research
- mlops/training
- mlops/vector-databases
- note-taking
- productivity
- research
- red-teaming
- smart-home
- social-media
- software-development
- 可选技能
- autonomous-ai-agents
- blockchain
- creative
- devops
- health
- mcp
- migration
- productivity
- research
- security
- Slash Commands Reference
- 交互式 CLI 斜杠命令
- 会话
- 配置
- 工具和技能
- 信息
- 退出
- 动态 CLI 斜杠命令
- 快捷命令
- 别名解析
- 消息传递斜杠命令
- 注意事项
- 交互式 CLI 斜杠命令
- 内置工具参考
- browser 工具集
- clarify 工具集
- code_execution 工具集
- cronjob 工具集
- delegation 工具集
- file 工具集
- homeassistant 工具集
- image_gen 工具集
- memory 工具集
- messaging 工具集
- moa 工具集
- rl 工具集
- session_search 工具集
- skills 工具集
- terminal 工具集
- todo 工具集
- vision 工具集
- web 工具集
- tts 工具集
- 工具集参考
- 工具集如何工作
- 配置工具集
- 按会话
- 按平台
- 交互式管理
- 核心工具集
- 复合工具集
- 平台工具集
- 动态工具集
- MCP 服务器工具集
- 插件工具集
- 自定义工具集
- 通配符
- 与 hermes tools 的关系
- 检查点和 /rollback
- 什么会触发检查点
- 快速参考
- 检查点如何工作
- 配置
- 列出会话
- 使用 /rollback diff 预览更改
- 使用 /rollback 恢复
- 单文件恢复
- 安全和性能保护
- 检查点存储位置
- 最佳实践
- CLI 界面
- 运行 CLI
- 界面布局
- 状态栏
- 会话恢复显示
- 快捷键
- 斜杠命令
- 快速命令
- 启动时预加载技能
- 技能斜杠命令
- 人格
- 多行输入
- 中断 Agent
- 忙碌输入模式
- 暂停到后台
- 工具进度显示
- 工具预览长度
- 会话管理
- 恢复会话
- 会话存储
- 上下文压缩
- 后台会话
- 工作原理
- 结果
- 用例
- 安静模式
- Configuration
- Directory Structure
- 管理配置
- 配置优先级
- 环境变量替换
- 终端后端配置
- 后端概述
- 本地后端
- Docker 后端
- SSH 后端
- Modal 后端
- Daytona 后端
- Singularity/Apptainer 后端
- 常见终端后端问题
- Docker 卷挂载
- Docker 凭证转发
- 可选:将启动目录挂载到 /workspace
- 持久 Shell
- 技能设置
- 内存配置
- 文件读取安全性
- Git Worktree 隔离
- 上下文压缩
- 完整参考
- 常见设置
- 三个旋钮如何交互
- 上下文引擎
- 迭代预算压力
- 流媒体超时
- 上下文压力警告
- 凭证池策略
- 辅助模型
- 通用配置模式
- 完整辅助配置参考
- 更改视觉模型
- 提供商选项
- 常见设置
- 环境变量
- 推理工作量
- 工具使用执行
- 它注入的内容
- 何时打开
- TTS 配置
- 显示设置
- 按平台进度覆盖
- 隐私
- 语音转文本
- 语音模式
- 流媒体
- CLI 流媒体
- 网关流媒体
- 群聊会话隔离
- 未授权 DM 行为
- 快速命令
- 人类延迟
- 代码执行
- 网络搜索后端
- 浏览器
- 时区
- Discord
- 安全
- 网站黑名单
- 智能批准
- 检查点
- 委托
- 澄清
- 上下文文件
- 工作目录
- Memory Configuration
- File Read Safety
- Git Worktree Isolation
- 上下文 Compression
- Full reference
- Common setups
- How the three knobs interact
- 上下文 Engine
- Iteration Budget Pressure
- Streaming Timeouts
- 上下文 Pressure Warnings
- Credential Pool Strategies
- Auxiliary Models
- The universal config pattern
- Full auxiliary config reference
- Changing the Vision Model
- 模型提供商 Options
- Common Setups
- Environment Variables
- Reasoning Effort
- Tool-Use Enforcement
- What it injects
- When to turn it on
- TTS Configuration
- Display Settings
- Per-platform progress overrides
- Privacy
- Speech-to-Text
- Voice Mode
- Streaming
- CLI Streaming
- 消息网关 Streaming
- Group Chat Session Isolation
- Unauthorized DM Behavior
- Quick Commands
- Human Delay
- Code Execution
- Web Search Backends
- Browser
- Timezone
- Discord
- Security
- Website Blocklist
- Smart Approvals
- Checkpoints
- Delegation
- Clarify
- 上下文 Files
- Working Directory
- Docker
- 快速开始
- 以网关模式运行
- 交互式运行
- 持久卷
- 环境变量转发
- Docker Compose 示例
- 资源限制
- Dockerfile 的作用
- 升级
- 技能和凭据文件
- 故障排除
- 容器立即退出
- “权限被拒绝” 错误
- 浏览器工具不工作
- 网关在网络问题后不重连
- 检查容器健康状况
- Git Worktrees
- 为什么将 Worktrees 与 Hermes 一起使用?
- 快速开始:创建 Worktree
- 并行运行多个代理
- 安全清理 Worktree
- 最佳实践
- 使用 hermes -w
- 综合运用
- 配置:运行多个代理
- 什么是配置?
- 快速开始
- 创建配置
- 空白配置
- 仅克隆配置
- 克隆一切
- 从特定配置克隆
- 使用配置
- 命令别名
- 粘性默认
- 知道您的位置
- 运行网关
- 不同的机器人令牌
- 安全:令牌锁
- 持久服务
- 配置配置
- 更新
- 管理配置
- 删除配置
- 命令补全
- 工作原理
- 安全
- 概述
- 危险命令审批
- 审批模式
- YOLO 模式
- 审批超时
- 什么会触发审批
- 审批流程
- 审批流程
- 永久白名单
- 用户授权
- 授权检查顺序
- 平台白名单
- 私信配对系统
- 容器隔离
- Docker 安全标志
- 资源限制
- 文件系统持久化
- 终端后端安全比较
- 环境变量传递 {#environment-variable-passthrough}
- 工作原理
- 凭据文件传递{#credential-file-passthrough}
- 每个沙箱过滤的内容
- 安全注意事项
- MCP 凭据处理
- 安全环境变量
- 凭据编辑
- 网站访问策略
- SSRF 保护
- Tirith 预执行安全扫描
- 上下文文件注入保护
- 生产部署最佳实践
- 网关部署清单
- 保护 API 密钥
- 网络隔离
- 会话
- 会话工作原理
- 会话来源
- CLI 会话恢复
- 继续上一个会话
- 按名称恢复
- 恢复特定会话
- 恢复时的对话概要
- 会话命名
- 自动生成的标题
- 手动设置标题
- 标题规则
- 压缩时的自动继承
- 消息平台上的 /title 命令
- 会话管理命令
- 列出会话
- 导出会话
- 删除会话
- 重命名会话
- 清理旧会话
- 会话统计
- 会话搜索工具
- 工作原理
- FTS5 查询语法
- 使用时机
- 各平台会话跟踪
- 网关会话
- 共享与隔离的群组会话
- 会话重置策略
- 存储位置
- 数据库模式
- 会话过期和清理
- 自动清理
- 手动清理
- 会话工作原理
- ACP 编辑器集成
- Hermes 在 ACP 模式下暴露的内容
- 安装
- 启动 ACP 服务器
- 编辑器设置
- VS Code
- Zed
- JetBrains
- 注册表清单
- 配置和凭据
- 会话行为
- 工作目录行为
- 批准
- 故障排除
- ACP 代理没有出现在编辑器中
- ACP 启动但立即出错
- 缺少凭据
- 另请参阅
- API 服务器
- 快速开始
-
- 启用 API 服务器
-
- 启动网关
-
- 连接前端
-
- 端点
- POST /v1/chat/completions
- POST /v1/responses
- GET /v1/responses/{id}
- DELETE /v1/responses/{id}
- GET /v1/models
- GET /health
- 系统提示处理
- 认证
- 配置
- 环境变量
- config.yaml
- 安全头
- CORS
- 兼容的前端
- 使用 Profiles 的多用户设置
- 限制
- 快速开始
- 批处理
- 概述
- 快速开始
- 数据集格式
- 配置选项
- 提供商路由
- 推理控制
- 高级选项
- 工具集分布
- 输出格式
- 轨迹格式
- 检查点
- 恢复如何工作
- 质量过滤
- 统计
- 使用场景
- 训练数据生成
- 模型评估
- 每提示容器镜像
- 浏览器自动化
- 概述
- 设置
- Browserbase 云端模式
- Browser Use 云端模式
- Firecrawl 云端模式
- Camofox 本地模式
- 通过 CDP 连接本地 Chrome
- 本地浏览器模式
- 可选环境变量
- 安装 agent-browser CLI
- 可用工具
- 实用示例
- 填写网页表单
- 研究动态内容
- 会话录制
- 隐身功能
- 会话管理
- 限制
- 代码执行
- 工作原理
- 何时使用此功能
- 实际示例
- 数据处理管道
- 多步骤网络研究
- 批量文件重构
- 构建和测试管道
- 资源限制
- 脚本内部工具调用如何工作
- 错误处理
- 安全性
- 技能环境变量传递
- execute_code vs terminal
- 平台支持
- 上下文文件
- 支持的上下文文件
- AGENTS.md
- 渐进式子目录发现
- AGENTS.md 示例
- SOUL.md
- .cursorrules
- 上下文文件如何加载
- 启动时
- 会话期间
- 安全:提示注入保护
- 大小限制
- 有效上下文文件的提示
- 每子目录上下文
- 上下文引用
- 支持的引用
- 使用示例
- CLI 标签补全
- 行范围
- 大小限制
- 安全
- 敏感路径阻止
- 路径遍历保护
- 二进制文件检测
- 平台可用性
- 与上下文压缩的交互
- 常见模式
- 错误处理
- 凭证池
- 工作原理
- 快速开始
- 交互式管理
- CLI命令
- 轮换策略
- 错误恢复
- 自定义端点池
- 自动发现
- 委托与子代理共享
- 线程安全
- 架构
- 存储
- 定时任务
- Cron 目前能做什么
- 创建定时任务
- 在聊天中使用 /cron
- 从独立 CLI
- 通过自然对话
- 技能支持的 Cron 任务
- 单个技能
- 多个技能
- 编辑任务
- 聊天
- 独立 CLI
- 生命周期操作
- 聊天
- 独立 CLI
- 工作原理
- 网关调度器行为
- 传递选项
- 响应包装
- 静默抑制
- 脚本超时
- 提供商恢复
- 调度格式
- 相对延迟
- 间隔
- Cron 表达式
- ISO 时间戳
- 重复行为
- 以编程方式管理任务
- 任务存储
- 自包含提示仍然很重要
- 安全性
- 子代理委托
- 单个任务
- 并行批次
- 子代理上下文如何工作
- 实际示例
- 并行研究
- 代码审查 + 修复
- 多文件重构
- 批次模式详情
- 模型覆盖
- 工具集选择提示
- 最大迭代次数
- 深度限制
- 关键属性
- 委托 vs execute_code
- 配置
- 备选提供商
- 主模型备选
- 配置
- 支持的提供商
- 自定义端点备选
- 何时触发备选
- 示例
- 备选在哪里工作
- 辅助任务备选
- 具有独立提供商解析的任务
- 自动检测链
- 配置辅助提供商
- 辅助任务的提供商选项
- 直接端点覆盖
- 上下文压缩备选
- 委托提供商覆盖
- 定时任务提供商
- 总结
- 主模型备选
- Honcho 记忆
- Honcho 带来的增强
- 设置
- 配置选项
- 工具
- CLI 命令
- 从 hermes honcho 迁移
- 完整文档
- 事件钩子
- 网关事件钩子
- 创建钩子
- 可用事件
- 示例
- 工作原理
- 插件钩子
- 快速参考
- 网关事件钩子
- Image Generation
- Setup
- Get a FAL API Key
- Configure the Key
- Install the Client Library
- How It Works
- Usage
- Parameters
- Aspect Ratios
- Automatic Upscaling
- Example 提示词s
- Debugging
- Safety Settings
- Platform Delivery
- Limitations
- Setup
- MCP
- MCP为您提供的功能
- 快速开始
- 两种MCP服务器
- Stdio服务器
- HTTP服务器
- 基本配置参考
- 常用键
- 最简stdio示例
- 最简HTTP示例
- Hermes如何注册MCP工具
- MCP实用工具
- 重要说明
- 每服务器过滤
- 完全禁用服务器
- 白名单服务器工具
- 黑名单服务器工具
- 优先级规则
- 过滤实用工具
- 完整示例
- 如果所有工具都被过滤掉会怎样?
- 运行时行为
- 发现时间
- 动态工具发现
- 重新加载
- 工具集
- 安全模型
- Stdio环境过滤
- 配置级暴露控制
- 示例用例
- 具有最小问题管理界面的GitHub服务器
- 移除危险操作的Stripe服务器
- 单项目根目录的文件系统服务器
- 故障排除
- MCP服务器未连接
- 工具未出现
- 为什么资源或提示实用工具没有出现?
- MCP采样支持
- 将Hermes作为MCP服务器运行
- 何时使用此功能
- 快速开始
- MCP客户端配置
- 可用工具
- 事件系统
- 工作原理
- 当前限制
- 相关文档
- 记忆提供商
- 快速开始
- 工作原理
- 可用提供商
- Honcho
- OpenViking
- Mem0
- Hindsight
- Holographic
- RetainDB
- ByteRover
- Supermemory
- 提供商对比
- 配置隔离
- 构建记忆提供商
- 持久化记忆
- 工作原理
- 记忆在系统提示中的呈现方式
- 记忆工具操作
- 子字符串匹配
- 两个目标解释
- 保存什么 vs 跳过什么
- 保存这些
- 跳过这些
- 容量管理
- 记忆已满时会发生什么
- 好的记忆条目的实际示例
- 重复预防
- 安全扫描
- 会话搜索
- session_search vs 记忆
- 配置
- 外部记忆提供程序
- 功能概述
- 核心
- 自动化
- 媒体和网页
- 集成
- 自定义
- 人格与 SOUL.md
- 现在 SOUL.md 如何工作
- 重要行为
- 为什么这样设计
- 在哪里编辑
- SOUL.md 中应该放什么
- 好的 SOUL.md 内容
- 示例
- Hermes 注入到提示中的内容
- 安全扫描
- SOUL.md vs AGENTS.md
- SOUL.md
- AGENTS.md
- SOUL.md vs /personality
- 内置人格
- 使用命令切换人格
- CLI
- 消息平台
- 配置中的自定义人格
- 推荐工作流
- 人格如何与完整提示交互
- 相关文档
- CLI 外观 vs 对话人格
- 现在 SOUL.md 如何工作
- 插件
- 快速概览
- 最小可用示例
- 插件能做什么
- 插件发现
- 可用钩子
- 插件类型
- 管理插件
- 交互式界面
- 禁用通用插件
- 注入消息
- 快速概览
- 提供商路由
- 配置
- 选项
- 实际示例
- 优化成本
- 优化速度
- 优化吞吐量
- 锁定特定提供商
- 避免特定提供商
- 带备选的首选顺序
- 工作原理
- 默认行为
- 强化学习训练
- 概述
- 要求
- 可用工具
- 工作流
-
- 发现环境
-
- 选择和配置
-
- 开始训练
-
- 监控进度
-
- 停止或获取结果
-
- 推理测试
- Tinker API 集成
- 架构图
- 创建自定义环境
- WandB 指标
- 日志文件
- 技能系统
- 使用技能
- 渐进式披露
- SKILL.md 格式
- 平台特定技能
- 条件激活
- 加载时的安全设置
- 技能配置设置
- 技能目录结构
- 外部技能目录
- 工作原理
- 示例
- 智能体管理的技能
- 智能体何时创建技能
- 操作
- 技能中心
- 常用命令
- 支持的中心来源
- 集成的中心和注册表
- 安全扫描和 --force
- 信任级别
- 更新生命周期
- 斜杠命令
- 皮肤与主题
- 切换皮肤
- 内置皮肤
- 可配置键的完整列表
- 颜色
- 旋转器
- 品牌
- 其他顶级键
- 自定义皮肤
- 完整自定义皮肤 YAML 模板
- 最小自定义皮肤示例
- Hermes Mod — 视觉皮肤编辑器
- 安装
- 使用方法
- 操作说明
- 工具与工具集
- 可用工具
- 使用工具集
- 终端后端
- 配置
- Docker 后端
- SSH 后端
- Singularity/Apptainer
- Modal
- 容器资源
- 容器安全
- 后台进程管理
- Sudo 支持
- 语音与文字转语音(Voice & TTS)
- 文字转语音
- 平台交付
- 配置
- Telegram 语音气泡与 ffmpeg
- 语音消息转录
- 配置
- 提供商详情
- 回泭行为
- 文字转语音
- 视觉与图像粘贴
- 工作原理
- 粘贴方法
- Ctrl+V / Cmd+V
- Alt+V
- Ctrl+V
- 平台兼容性
- 特定于平台的设置
- macOS
- Linux X11
- Linux Wayland
- WSL2
- SSH & 远程会话
- SSH 的解决方法
- 为什么终端不能粘贴图像
- 支持的模型
- 语音模式
- 前提条件
- 概览
- 要求
- Python 包
- 系统依赖
- API 密钥
- CLI 语音模式
- 快速开始
- 工作原理
- 静音检测
- 流式 TTS
- 幻觉过滤器
- 网关语音回复
- Discord:频道与私信
- 命令
- 模式
- 平台交付
- Discord 语音频道
- 设置
- 启动网关
- 命令
- 工作原理
- 文本频道集成
- 回声预防
- 访问控制
- 配置参考
- config.yaml
- 环境变量
- STT 提供商对比
- TTS 提供商对比
- 故障排除
- “未找到音频设备”
- 机器人在 Discord 服务器频道中不响应
- 机器人加入 VC 但听不到我
- 机器人听得到我但不回复
- 机器人在文本中回复但不在语音频道中
- Whisper 返回垃圾文本
- BlueBubbles
- 前提条件
- 设置
-
- 安装 BlueBubbles 服务器
-
- 获取你的服务器 URL 和密码
-
- 配置 Hermes
-
- 授权用户
-
- 启动网关
-
- 工作原理
- 环境变量
- 功能
- 文本消息
- 富媒体
- Tapback 反应
- 输入指示符
- 已读收据
- 聊天寻址
- 私有 API
- 故障排除
- “无法连接到服务器”
- 消息未到达
- “私有 API 帮助程序未连接”
- 钉钉
- Hermes 的行为表现
- 钉钉中的会话模型
- 前提条件
- 启动网关
- 故障排除
- 机器人不回复消息
- “dingtalk-stream 未安装” 错误
- “需要 DINGTALK_CLIENT_ID 和 DINGTALK_CLIENT_SECRET”
- 流断开 / 重连循环
- 机器人离线
- “无可用 session_webhook”
- 安全
- 备注
- Hermes 的行为表现
- Discord
- Hermes 的行为
- Discord 网关模型
- Discord 中的会话模型
- 中断和并发
- 所需权限
- 推荐的额外权限
- 权限整数
- 配置参考
- 环境变量
- 配置文件
- 交互式模型选择器
- 用于技能的本机斜杠命令
- 主频道
- 使用斜杠命令
- 手动配置
- 语音消息
- 故障排除
- 机器人在线但不回复消息
- 启动时出现"不允许的意图"错误
- 机器人看不到特定频道中的消息
- 403 禁止错误
- 机器人离线
- “用户不允许” / 机器人忽略您
- 同一频道中的人意外共享上下文
- 安全
- Hermes 的行为
- Email
- 前提条件
- Gmail 配置
- Outlook / Microsoft 365
- 其他提供商
- 手动配置
- 工作原理
- 接收消息
- 发送回复
- 文件附件
- 跳过附件
- 访问控制
- 故障排除
- 安全
- 环境变量参考
- 前提条件
- 飞书 / Lark
- Hermes 的行为表现
- 推荐:扫码创建
- 替代:手动设置
- 推荐:WebSocket 模式
- 可选:Webhook 模式
- 主场聊天
- 安全
- 用户白名单
- Webhook 加密密钥
- 验证令牌
- 群消息策略
- 用于 @mention 门控的机器人身份
- 交互式卡片操作
- 必需的飞书应用配置
- 媒体支持
- 入站
- 出站
- Markdown 渲染和 Post 回退
- ACK 表情反应
- 突发保护和批处理
- 文本批处理
- 媒体批处理
- 每聊天序列化
- 速率限制
- Webhook 异常跟踪
- WebSocket 调优
- 按群访问控制
- 去重
- 所有环境变量
- 故障排除
- 工具集
- Hermes 的行为表现
- Home Assistant
- 配置
-
- 创建长期访问令牌
-
- 配置环境变量
-
- 启动网关
-
- 可用工具
- 网关平台:实时事件
- 事件过滤
- 事件格式化
- 代理响应
- 连接管理
- 安全
- 示例自动化
- 早晨例程
- 安全检查
- 响应式自动化
- 配置
- 消息网关
- 平台对比
- 架构
- 快速设置
- 网关命令
- 聊天命令
- 会话管理
- 会话持久化
- 重置策略
- 安全
- DM 配对
- 中断代理
- 工具进度通知
- 后台会话
- 工作原理
- 后台进程通知
- 用例
- 服务管理
- Linux
- macOS
- 平台特定工具集
- 下一步
- Matrix
- Hermes 的行为表现
- Matrix 中的会话模型
- Mention 和线程配置
- 启动网关
- 端到端加密
- 前提条件
- 启用 E2EE
- 交叉签名验证
- 主场房间
- 使用斜杠命令
- 手动配置
- 故障排除
- 机器人不回复消息
- 启动时"认证失败" / “whoami 失败”
- “mautrix 未安装” 错误
- 加密错误 / “无法解密事件”
- 从之前带有 E2EE 的版本升级
- 同步问题 / 机器人落后
- 机器人离线
- “用户不允许” / 机器人忽略您
- 安全
- 备注
- Hermes 的行为表现
- Mattermost
- Hermes 的行为
- Mattermost 中的会话模型
- 启动网关
- 主频道
- 使用斜杠命令
- 手动配置
- 回复模式
- 提及行为
- 故障排除
- 机器人不响应消息
- 403 禁止错误
- WebSocket 断开/重连循环
- 启动时"认证失败"
- 机器人离线
- “用户不允许”/机器人忽略你
- 安全
- 注意事项
- Hermes 的行为
- Open WebUI
- 架构
- 快速配置
-
- 启用 API 服务器
-
- 启动 Hermes Agent 网关
-
- 启动 Open WebUI
-
- 打开界面
-
- Docker Compose 配置
- 通过管理界面配置
- Chat Completions 与 Responses
- 使用 Chat Completions
- 使用 Responses API
- 工作原理
- 配置参考
- Hermes Agent
- Open WebUI
- 故障排查
- 下拉框中没有模型
- 连接测试通过但模型未加载
- 响应耗时很长
- “Invalid API key” 错误
- 基于 Profiles 的多用户配置
-
- 创建 Profiles 并配置 API 服务器
-
- 启动各个网关
-
- 在 Open WebUI 中添加连接
-
- Linux Docker
- Signal
- 前提条件
- 安装 signal-cli
- 手动配置
- 访问控制
- 私信访问
- 群组访问
- 功能
- 附件
- 打字指示符
- 手机号码脱敏
- 给自己发消息
- 健康监控
- 故障排除
- 安全
- 环境变量参考
- 前提条件
- Slack
- 概述
- 机器人如何回复
- 配置选项
- 线程和回复行为
- 会话隔离
- 提及和触发行为
- 未授权用户处理
- 语音转录
- 完整示例
- 主频道
- 多工作区支持
- 配置
- OAuth 令牌文件
- 工作原理
- 语音消息
- 故障排除
- 快速检查清单
- 安全
- SMS
- 前提条件
- 交互式设置
- 手动设置
- 环境变量
- SMS 特定行为
- 安全
- Webhook 签名验证
- 用户白名单
- 故障排除
- 消息未到达
- 回复未发送
- Webhook 端口冲突
- 前提条件
- Telegram
- 如何关闭隐私模式
- 启动网关
- Webhook 模式
- 配置
- 云部署示例
- 主频道
- 语音消息
- 传入语音
- 传出语音
- 群组聊天使用
- 示例群组触发配置
- 关于 mention_patterns 的说明
- 私密聊天话题
- 用例
- 配置
- 工作原理
- 技能绑定
- 群组论坛话题技能绑定
- 用例
- 配置
- 工作原理
- 与 DM 话题的区别
- 最近的 Bot API 功能
- 交互式模型选择器
- Webhook 模式
- 配置
- DNS-over-HTTPS 备用 IP
- 工作原理
- 配置
- 代理支持
- 支持的变量
- 配置
- 消息反应
- 故障排除
- 执行批准
- 安全
- Webhooks
- 快速开始
- 设置
- 通过设置向导
- 通过环境变量
- 验证服务器
- 配置路由 {#configuring-routes}
- 路由属性
- 完整示例
- 提示词模板
- 论坛主题投递
- GitHub PR 审查
- GitLab Webhook 设置 {#gitlab-webhook-setup}
- 投递选项 {#delivery-options}
- 动态订阅 {#dynamic-subscriptions}
- 创建订阅
- 列出订阅
- 移除订阅
- 测试订阅
- 动态订阅的工作原理
- Agent 驱动的订阅
- 安全 {#security}
- HMAC 签名验证
- 密钥是必需的
- 速率限制
- 幂等性
- 请求体大小限制
- 提示词注入风险
- 故障排除 {#troubleshooting}
- Webhook 未到达
- 签名验证失败
- 事件被忽略
- Agent 没有响应
- 重复响应
- 环境变量 {#environment-variables}
- 企业微信回调
- 工作原理
- 前置条件
- 设置
-
- 在企业微信中创建自建应用
-
- 配置环境变量
-
- 启动网关
-
- 配置参考
- 多应用路由
- 访问控制
- 端点
- 加密
- 限制
- 企业微信
- 前提条件
- 配置
-
- 创建 AI 机器人
-
- 配置 Hermes
-
- 启动网关
-
- 功能
- 配置选项
- 访问策略
- 私信策略
- 群策略
- 按群发送者白名单
- 媒体支持
- 入站
- AES 加密媒体解密
- 出站
- 回复模式流式响应
- 连接和重连
- 连接生命周���
- 重连行为
- 去重
- 所有环境变量
- 故障排除
- 微信
- 前提条件
- 配置
-
- 运行设置向导
-
- 配置环境变量
-
- 启动网关
-
- 功能
- 配置选项
- 访问策略
- 私信策略
- 群策略
- 媒体支持
- 入站
- AES-128-ECB 加密 CDN
- 出站
- 上下文令牌持久化
- Markdown 格式化
- 消息分块
- 打字指示器
- 长轮询连接
- 工作原理
- 重试行为
- 去重
- 令牌锁
- 所有环境变量
- 故障排除
- WhatsApp
- 两种模式
- 前提条件
- 会话持久化
- 重新配对
- 语音消息
- 故障排除
- 安全
- G0DM0D3越狱技能
- 什么是 G0DM0D3?
- 三种攻击模式
- 自动越狱管道
- 自动越狱的工作流程
- 特定模型策略顺序
- Hermes 集成
- 临时系统提示词
- 预填充消息
- 两者结合使用
- 快速启动命令
- 测试结果
- 灰色地带查询
- 硬查询
- 关键发现
- 各模型说明
- 常见陷阱
- 技能内容
Hermes Agent
由 Nous Research 构建的自我改进型 AI 代理。唯一具有内置学习循环的代理 — 它从经验中创建技能、在使用中改进自己、推动自己保留知识,并在会话中建立对你越来越深入的了解。
开始使用 → 在 GitHub 上查看
什么是 Hermes Agent?
它不是绑定到 IDE 的编码副驾驶,也不是围绕单个 API 的聊天机器人包装器。它是一个自主代理,运行时间越长能力越强。它生活在任何你放置它的地方 — 5 美元的 VPS、GPU 集群或几乎免费闲置的无服务器基础设施(Daytona、Modal)。当你在自己的云 VM 上工作时通过 Telegram 与它对话,而你从未自己 SSH 进去。它不局限于你的笔记本电脑。
快速链接
关键特性
- 闭环学习循环 — 代理策划的记忆,带有周期性推动、自主技能创建、使用中技能自改进、跨会话 FTS5 召回与 LLM 总结,以及 Honcho 辩证用户建模
- 可运行在任何地方,不仅仅是您的笔记本电脑 — 6 个终端后端:本地、Docker、SSH、Daytona、Singularity、Modal。Daytona 和 Modal 提供无服务器持久性 — 您的环境在空闲时休眠,几乎不产生费用
- 生活在您所在的地方 — CLI、Telegram、Discord、Slack、WhatsApp、Signal、Matrix、Mattermost、Email、SMS、钉钉、飞书、企业微信、BlueBubbles、Home Assistant — 15+ 个平台来自一个网关
- 由模型训练者构建 — 由创建 Hermes、Nomos 和 Psyche 的实验室 Nous Research 创建。与 Nous Portal、OpenRouter、OpenAI 或任何端点配合使用
- 计划自动化 — 内置 cron 可投放到任何平台
- 委托和并行化 — 为并行工作流生成隔离子代理。通过 execute_code 的编程式工具调用将多步骤管道折叠为单个推理调用
- 开放标准技能 — 与 agentskills.io 兼容。技能可移植、可共享,并通过技能中心由社区贡献
- 完全网络控制 — 搜索、提取、浏览、图像生成、语音合成
- MCP 支持 — 连接到任何 MCP 服务器以扩展工具能力
- 研究就绪 — 批量处理、轨迹导出、使用 Atropos 的强化学习训练。由创建 Hermes、Nomos 和 Psyche 模型的实验室 Nous Research 构建
快速开始
本指南将带您完成安装 Hermes Agent、设置提供商并进行第一次对话。到最后,您将了解关键功能以及如何进一步探索。
安装 Hermes Agent
运行一键安装脚本:
## 学习路径
Hermes Agent 可以做很多事情 — CLI 助手、Telegram/Discord 机器人、任务自动化、强化学习训练等等。本页面帮助您根据自己的经验和想要完成的目标确定从哪里开始以及阅读什么。
:::tip 从这里开始
如果您还没有安装 Hermes Agent,请从[安装指南](/docs/getting-started/installation)开始,然后完成[快速开始](/docs/getting-started/quickstart)。下面的所有内容都假设您有一个正常工作的安装。
:::
#### 如何使用此页面
- **知道您的水平?** 跳转到[按经验水平](#按经验水平)并按照您的级别的阅读顺序进行。
- **有具体目标?** 跳转到[按用例](#按用例)并找到匹配的场景。
- **只是浏览?** 查看[关键功能一览](#关键功能一览)表格,快速了解 Hermes Agent 的所有功能。
#### 按经验水平
| 级别 | 目标 | 推荐阅读 | 时间预估 |
|---|---|---|---|
| **初级** | 启动并运行,进行基本对话,使用内置工具 | [安装](/docs/getting-started/installation) → [快速开始](/docs/getting-started/quickstart) → [CLI 使用](/docs/user-guide/cli) → [配置](/docs/user-guide/configuration) | 约 1 小时 |
| **中级** | 设置消息机器人,使用高级功能如记忆、cron 任务和技能 | [会话](/docs/user-guide/sessions) → [消息](/docs/user-guide/messaging) → [工具](/docs/user-guide/features/tools) → [技能](/docs/user-guide/features/skills) → [记忆](/docs/user-guide/features/memory) → [Cron](/docs/user-guide/features/cron) | 约 2-3 小时 |
| **高级** | 构建自定义工具,创建技能,使用 RL 训练模型,为项目做出贡献 | [架构](/docs/developer-guide/architecture) → [添加工具](/docs/developer-guide/adding-tools) → [创建技能](/docs/developer-guide/creating-skills) → [RL 训练](/docs/user-guide/features/rl-training) → [贡献](/docs/developer-guide/contributing) | 约 4-6 小时 |
#### 按用例
选择与您想要做的匹配的场景。每个场景都会按您应该阅读的顺序链接到相关文档。
##### "我想要一个 CLI 编码助手"
将 Hermes Agent 用作交互式终端助手来编写、审查和运行代码。
1. [安装](/docs/getting-started/installation)
2. [快速开始](/docs/getting-started/quickstart)
3. [CLI 使用](/docs/user-guide/cli)
4. [代码执行](/docs/user-guide/features/code-execution)
5. [上下文文件](/docs/user-guide/features/context-files)
6. [技巧和窍门](/docs/guides/tips)
:::tip
通过上下文文件直接将文件传入您的对话。Hermes Agent 可以在您的项目中读取、编辑和运行代码。
:::
##### "我想要一个 Telegram/Discord 机器人"
在您喜欢的消息平台上将 Hermes Agent 部署为机器人。
1. [安装](/docs/getting-started/installation)
2. [配置](/docs/user-guide/configuration)
3. [消息概述](/docs/user-guide/messaging)
4. [Telegram 设置](/docs/user-guide/messaging/telegram)
5. [Discord 设置](/docs/user-guide/messaging/discord)
6. [语音模式](/docs/user-guide/features/voice-mode)
7. [将语音模式与 Hermes 一起使用](/docs/guides/use-voice-mode-with-hermes)
8. [安全](/docs/user-guide/security)
完整项目示例,请参阅:
- [每日简报机器人](/docs/guides/daily-briefing-bot)
- [团队 Telegram 助手](/docs/guides/team-telegram-assistant)
##### "我想要自动化任务"
安排重复任务、运行批量作业或将 agent 操作链接在一起。
1. [快速开始](/docs/getting-started/quickstart)
2. [Cron 调度](/docs/user-guide/features/cron)
3. [批处理](/docs/user-guide/features/batch-processing)
4. [委托](/docs/user-guide/features/delegation)
5. [钩子](/docs/user-guide/features/hooks)
:::tip
Cron 任务让 Hermes Agent 按计划运行任务 — 每日摘要、定期检查、自动报告 — 您无需在场。
:::
##### "我想要构建自定义工具/技能"
用您自己的工具和可重用的技能包扩展 Hermes Agent。
1. [工具概述](/docs/user-guide/features/tools)
2. [技能概述](/docs/user-guide/features/skills)
3. [MCP(模型上下文协议)](/docs/user-guide/features/mcp)
4. [架构](/docs/developer-guide/architecture)
5. [添加工具](/docs/developer-guide/adding-tools)
6. [创建技能](/docs/developer-guide/creating-skills)
:::tip
工具是 agent 可以调用的单个函数。技能是打包在一起的工具、提示和配置的包。从工具开始,然后升级到技能。
:::
##### "我想要训练模型"
使用强化学习通过 Hermes Agent 内置的 RL 训练管道微调模型行为。
1. [快速开始](/docs/getting-started/quickstart)
2. [配置](/docs/user-guide/configuration)
3. [RL 训练](/docs/user-guide/features/rl-training)
4. [提供商路由](/docs/user-guide/features/provider-routing)
5. [架构](/docs/developer-guide/architecture)
:::tip
RL 训练在您已经了解 Hermes Agent 如何处理对话和工具调用的基础知识时效果最佳。如果您是新手,请先完成初级路径。
:::
##### "我想将其用作 Python 库"
以编程方式将 Hermes Agent 集成到您自己的 Python 应用程序中。
1. [安装](/docs/getting-started/installation)
2. [快速开始](/docs/getting-started/quickstart)
3. [Python 库指南](/docs/guides/python-library)
4. [架构](/docs/developer-guide/architecture)
5. [工具](/docs/user-guide/features/tools)
6. [会话](/docs/user-guide/sessions)
#### 关键功能一览
不确定有什么可用?以下是主要功能的快速目录:
| 功能 | 功能 | 链接 |
|---|---|---|
| **工具** | agent 可以调用的内置工具(文件 I/O、搜索、shell 等) | [工具](/docs/user-guide/features/tools) |
| **技能** | 添加新功能的可安装插件包 | [技能](/docs/user-guide/features/skills) |
| **记忆** | 跨会话的持久记忆 | [记忆](/docs/user-guide/features/memory) |
| **上下文文件** | 将文件和目录馈入对话 | [上下文文件](/docs/user-guide/features/context-files) |
| **MCP** | 通过模型上下文协议连接外部工具服务器 | [MCP](/docs/user-guide/features/mcp) |
| **Cron** | 安排重复的 agent 任务 | [Cron](/docs/user-guide/features/cron) |
| **委托** | 生成子代理进行并行工作 | [委托](/docs/user-guide/features/delegation) |
| **代码执行** | 在沙盒环境中运行代码 | [代码执行](/docs/user-guide/features/code-execution) |
| **浏览器** | 网页浏览和抓取 | [浏览器](/docs/user-guide/features/browser) |
| **钩子** | 事件驱动的回调和中间件 | [钩子](/docs/user-guide/features/hooks) |
| **批处理** | 批量处理多个输入 | [批处理](/docs/user-guide/features/batch-processing) |
| **RL 训练** | 使用强化学习微调模型 | [RL 训练](/docs/user-guide/features/rl-training) |
| **提供商路由** | 跨多个 LLM 提供商路由请求 | [提供商路由](/docs/user-guide/features/provider-routing) |
#### 接下来阅读什么
根据您现在在哪里:
- **刚完成安装?** → 前往[快速开始](/docs/getting-started/quickstart)进行第一次对话。
- **完成快速开始?** → 阅读[CLI 使用](/docs/user-guide/cli)和[配置](/docs/user-guide/configuration)来自定义您的设置。
- **对基础知识感到满意?** → 探索[工具](/docs/user-guide/features/tools)、[技能](/docs/user-guide/features/skills)和[记忆](/docs/user-guide/features/memory)以释放 agent 的全部力量。
- **为团队设置?** → 阅读[安全](/docs/user-guide/security)和[会话](/docs/user-guide/sessions)以了解访问控制和对话管理。
- **准备好构建?** → 跳转到[开发者指南](/docs/developer-guide/architecture)了解内部结构并开始做出贡献。
- **想要实际示例?** → 查看[指南](/docs/guides/tips)部分,了解实际项目和使用技巧。
:::tip
您不需要阅读所有内容。选择与您的目标匹配的路径,按顺序跟随链接,您很快就能变得高效。您可以随时回到此页面找到您的下一步。
:::
## 安装
使用一键安装脚本在两分钟内启动并运行 Hermes Agent,或按照手动步骤进行完整控制。
#### 快速安装##### Linux / macOS / WSL2
```bash
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
Android / Termux
Hermes 现在也提供了支持 Termux 的安装脚本:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
安装脚本会自动检测 Termux 并切换到已测试的 Android 安装流程:
- 使用 Termux 的 pkg 安装系统依赖(git、python、nodejs、ripgrep、ffmpeg、构建工具)
- 使用 python -m venv 创建虚拟环境
- 自动导出 ANDROID_API_LEVEL 用于 Android wheel 构建
- 使用 pip 安装精选的 .[termux] 扩展包
- 默认跳过未测试的浏览器 / WhatsApp 引导
如果需要完全显式的安装路径,请参阅专门的 Termux 指南。
Windows 原生版本不支持。请安装 WSL2 并在其中运行 Hermes Agent。上面的安装命令在 WSL2 内部可以正常工作。
安装脚本的功能
安装脚本会自动处理所有依赖项(Python、Node.js、ripgrep、ffmpeg)、仓库克隆、虚拟环境、全局 hermes 命令设置以及 LLM 提供商配置。完成后,您就可以开始聊天了。
安装后
重新加载 shell 并开始聊天:
source ~/.bashrc # 或者: source ~/.zshrc
hermes # 开始聊天!
之后如果需要重新配置个别设置,请使用专门的命令:
hermes model # 选择你的 LLM 提供商和模型
hermes tools # 配置哪些工具已启用
hermes gateway setup # 设置消息平台
hermes config set # 设置个别配置值
hermes setup # 或者运行完整设置向导来一次性配置所有内容
前提条件
唯一的前提条件是 Git。安装脚本会自动处理其他所有内容:
- uv(快速的 Python 包管理器)
- Python 3.11(通过 uv,无需 sudo)
- Node.js v22(用于浏览器自动化和 WhatsApp 桥接)
- ripgrep(快速文件搜索)
- ffmpeg(用于 TTS 的音频格式转换)
您不需要手动安装 Python、Node.js、ripgrep 或 ffmpeg。安装脚本会检测缺失的内容并为您安装。只需确保 git 可用(git --version)。
如果您使用 Nix(在 NixOS、macOS 或 Linux 上),有专门的安装路径,包括 Nix flake、声明式 NixOS 模块和可选的容器模式。请参阅 Nix & NixOS 设置 指南。
手动安装
如果您更愿意完全控制安装过程,请按照以下步骤操作。
步骤 1:克隆仓库
使用 --recurse-submodules 克隆以获取所需的子模块:
git clone --recurse-submodules https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
如果您已经不使用 --recurse-submodules 克隆了:
git submodule update --init --recursive
步骤 2:安装 uv 并创建虚拟环境
## Android / Termux
这是在 Android 手机上通过 [Termux](https://termux.dev/) 直接运行 Hermes Agent 的已测试路径。
它为您提供手机上可用的本地 CLI,外加目前已知可以在 Android 上正常安装的核心功能扩展。
#### 已测试路径支持什么?
已测试的 Termux bundle 会安装:
- Hermes CLI
- cron 支持
- PTY/后台终端支持
- MCP 支持
- Honcho 记忆支持
- ACP 支持
具体来说,它映射到:
```bash
python -m pip install -e '.[termux]' -c constraints-termux.txt
什么是已测试路径尚不支持的?
一些功能仍然需要桌面/服务器风格的依赖,这些依赖未在 Android 上发布,或者尚未在手机上验证:
- .[all] 目前在 Android 上不支持
- voice 扩展被 faster-whisper -> ctranslate2 阻塞,而 ctranslate2 未发布 Android wheels
- 自动浏览器 / Playwright 引导在 Termux 安装程序中被跳过
- Docker 终端隔离在 Termux 内不可用
这并不妨碍 Hermes 作为手机原生 CLI agent 良好运行——只是建议的移动端安装有意比桌面/服务器安装更受限。
选项 1:一键安装程序
Hermes 现在提供支持 Termux 的安装路径:
curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash
在 Termux 上,安装程序自动:
- 使用 pkg 安装系统包
- 使用 python -m venv 创建 venv
- 使用 pip 安装 .[termux]
- 将 hermes 链接到 $PREFIX/bin,使其保持在您的 Termux PATH 上
- 跳过未测试的浏览器 / WhatsApp 引导
如果您想要显式命令或需要调试失败的安装,请使用下面的手动路径。
选项 2:手动安装
更新 Termux 并安装系统包
pkg update
pkg install -y git python clang rust make pkg-config libffi openssl nodejs ripgrep ffmpeg
为什么需要这些包?
- python — 运行时 + venv 支持
- git — 克隆/更新仓库
- clang、rust、make、pkg-config、libffi、openssl — 需要在 Android 上构建一些 Python 依赖
- nodejs — 可选的 Node 运行时,用于已测试核心路径之外的实验
- ripgrep — 快速文件搜索
- ffmpeg — 媒体 / TTS 转换
克隆 Hermes
git clone --recurse-submodules https://github.com/NousResearch/hermes-agent.git
cd hermes-agent
如果您已经不使用子模块克隆:
git submodule update --init --recursive
创建虚拟环境
python -m venv venv
source venv/bin/activate
export ANDROID_API_LEVEL="$(getprop ro.build.version.sdk)"
python -m pip install --upgrade pip setuptools wheel
ANDROID_API_LEVEL 对于基于 Rust / maturin 的包(如 jiter)很重要。
安装已测试的 Termux bundle
python -m pip install -e '.[termux]' -c constraints-termux.txt
如果您只需要最小的核心 agent,这也有效:
python -m pip install -e '.' -c constraints-termux.txt
将 hermes 放入您的 Termux PATH
ln -sf "$PWD/venv/bin/hermes" "$PREFIX/bin/hermes"
$PREFIX/bin 已经在 Termux 的 PATH 上,因此这使得 hermes 命令在新 shell 中保持持久,无需每次重新激活 venv。
验证安装
hermes version
hermes doctor
启动 Hermes
hermes
推荐的后续设置
配置模型
hermes model
或将密钥直接设置在 ~/.hermes/.env 中。
稍后重新运行完整的交互式设置向导
hermes setup
稍后手动安装可选的 Node 依赖
已测试的 Termux 路径有意跳过 Node/浏览器引导。如果以后想进行实验:
npm install
将浏览器 / WhatsApp 工具视为实验性的,直至另有文档说明。
故障排除
安装 .[all] 时显示 “No solution found”
请改用已测试的 Termux bundle:
python -m pip install -e '.[termux]' -c constraints-termux.txt
目前的问题是 voice 扩展:
- voice 依赖 faster-whisper
- faster-whisper 依赖 ctranslate2
- ctranslate2 未发布 Android wheels
uv pip install 在 Android 上失败
请改用 stdlib venv + pip 的 Termux 路径:
python -m venv venv
source venv/bin/activate
export ANDROID_API_LEVEL="$(getprop ro.build.version.sdk)"
python -m pip install --upgrade pip setuptools wheel
python -m pip install -e '.[termux]' -c constraints-termux.txt
jiter / maturin 抱怨 ANDROID_API_LEVEL
在安装前显式设置 API 级别:
export ANDROID_API_LEVEL="$(getprop ro.build.version.sdk)"
python -m pip install -e '.[termux]' -c constraints-termux.txt
hermes doctor 说缺少 ripgrep 或 Node
使用 Termux 包安装它们:
pkg install ripgrep nodejs
安装 Python 包时构建失败
确保构建工具链已安装:
pkg install clang rust make pkg-config libffi openssl
然后重试:
python -m pip install -e '.[termux]' -c constraints-termux.txt
手机上的已知限制
- Docker 后端不可用
- 通过 faster-whisper 的本地语音转文字在已测试路径中不可用
- 浏览器自动化设置被安装程序有意跳过
- 一些可选扩展包可能有效,但目前只有 .[termux] 被记录为已测试的 Android bundle
如果您遇到新的 Android 特定问题,请打开 GitHub issue,包含:
- 您的 Android 版本
- termux-info
- python --version
- hermes doctor
- 确切的安装命令和完整错误输出
Nix & NixOS 设置
Hermes Agent 附带一个 Nix flake,提供三个级别的集成:
curl | bash 安装程序自行管理 Python、Node 和依赖项。Nix flake 取代了所有这些 — 每个 Python 依赖项都是通过 uv2nix 构建的 Nix derivation,运行时工具(Node.js、git、ripgrep、ffmpeg)被包装到二进制的 PATH 中。没有运行时 pip,没有 venv 激活,没有 npm install。
对于非 NixOS 用户,这仅更改安装步骤。之后的操作(hermes setup、hermes gateway install、配置编辑)与标准安装完全相同。
对于 NixOS 模块用户,整个生命周期完全不同:配置位于 configuration.nix 中,密钥通过 sops-nix/agenix 管理,服务是 systemd 单元,CLI 配置命令被阻止。您以管理任何其他 NixOS 服务相同的方式管理 hermes。
前提条件
- 启用 flakes 的 Nix — 推荐 Determinate Nix(默认启用 flakes)
- 您想使用的服务的 API 密钥(至少一个 OpenRouter 或 Anthropic 密钥)
快速开始
无需克隆。Nix 会获取、构建和运行一切:
## 在 Mac 上运行本地 LLM
本指南将引导您在 macOS 上运行具有 OpenAI 兼容 API 的本地 LLM 服务器。您获得完全隐私、零 API 成本,以及在 Apple Silicon 上令人惊讶的良好性能。
我们介绍两个后端:
| 后端 | 安装 | 擅长 | 格式 |
|---------|---------|---------|--------|
| **llama.cpp** | `brew install llama.cpp` | 首个 token 最快时间,量化的 KV 缓存,低记忆使用 | GGUF |
| **omlx** | [omlx.ai](https://omlx.ai) | token 生成最快,原生 Metal 优化 | MLX |
两者都暴露 OpenAI 兼容的 `/v1/chat/completions` 端点。Hermes 与任一者配合工作 — 只需将其指向 `http://localhost:8080` 或 `http://localhost:8000`。
#### 选择模型
对于入门,我们推荐 **Qwen3.5-9B** — 这是一个强大的推理模型,在 8GB+ 统一记忆中使用量化可以舒适地运行。
| 变体 | 磁盘大小 | 需要 RAM(128K 上下文)| 后端 |
|---------|-------------|---------------------------|---------|
| Qwen3.5-9B-Q4_K_M | 5.3 GB | ~10 GB 带量化 KV 缓存 | llama.cpp |
| Qwen3.5-9B-mlx-lm-mxfp4 | ~5 GB | ~12 GB | omlx |
**记忆经验法则:**模型大小 + KV 缓存。9B Q4 模型约 5GB。128K 上下文带 Q4 量化的 KV 缓存增加约 4-5GB。使用默认(f16)KV 缓存,会膨胀到约 16GB。llama.cpp 中的量化 KV 缓存标志是记忆受限系统的关键技巧。
对于更大的模型(27B、35B),您需要 32GB+ 统一记忆。9B 是 8-16GB 机器的最佳选择。
---
#### 选项 A:llama.cpp
llama.cpp 是最具可移植性的本地 LLM 运行时。在 macOS 上它开箱即用 Metal 进行 GPU 加速。
##### 安装
```bash
brew install llama.cpp
这为您提供全局的 llama-server 命令。
下载模型
您需要 GGUF 格式的模型。最简单的来源是通过 huggingface-cli 从 Hugging Face 获取:
brew install huggingface-cli
然后下载:
huggingface-cli download unsloth/Qwen3.5-9B-GGUF Qwen3.5-9B-Q4_K_M.gguf --local-dir ~/models
Hugging Face 上的某些模型需要身份验证。如果收到 401 或 404 错误,请先运行 huggingface-cli login。
启动服务器
llama-server -m ~/models/Qwen3.5-9B-Q4_K_M.gguf \
-ngl 99 \
-c 131072 \
-np 1 \
-fa on \
--cache-type-k q4_0 \
--cache-type-v q4_0 \
--host 0.0.0.0
以下是每个标志的作用:
当您看到以下内容时,服务器已准备就绪:
main: server is listening on http://0.0.0.0:8080
srv update_slots: all slots are idle
记忆受限系统的优化
--cache-type-k q4_0 --cache-type-v q4_0 标志是记忆受限系统最重要的优化。以下是在 128K 上下文的影响:
在 8GB Mac 上,使用 q4_0 KV 缓存并将上下文减少到 -c 32768(32K)。在 16GB 上,您可以舒适地使用 128K 上下文。在 32GB+,您可以运行更大的模型或多个并行槽。
如果您仍然记忆不足,首先减少上下文大小(-c),然后尝试更小的量化(Q3_K_M 而非 Q4_K_M)。
测试
curl -s http://localhost:8080/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3.5-9B-Q4_K_M.gguf",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 50
}' | jq .choices[0].message.content
获取模型名称
如果您忘记了模型名称,查询模型端点:
curl -s http://localhost:8080/v1/models | jq '.data[].id'
选项 B:通过 omlx 使用 MLX
omlx 是一个管理和服务 MLX 模型的 macOS 原生应用。MLX 是 Apple 自己的机器学习框架,针对 Apple Silicon 的统一记忆架构进行了专门优化。
安装
从 omlx.ai 下载并安装。它提供模型管理的 GUI 和内置服务器。
下载模型
使用 omlx 应用浏览和下载模型。搜索 Qwen3.5-9B-mlx-lm-mxfp4 并下载。模型本地存储(通常在 ~/.omlx/models/)。
启动服务器
omlx 默认在 http://127.0.0.1:8000 上服务模型。从应用 UI 启动服务,或使用命令行(如果可用)。
测试
curl -s http://127.0.0.1:8000/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"model": "Qwen3.5-9B-mlx-lm-mxfp4",
"messages": [{"role": "user", "content": "Hello!"}],
"max_tokens": 50
}' | jq .choices[0].message.content
列出可用模型
omlx 可以同时服务多个模型:
curl -s http://127.0.0.1:8000/v1/models | jq '.data[].id'
基准测试:llama.cpp vs MLX
两个后端在同一台机器上测试(Apple M5 Max,128GB 统一记忆),运行相同模型(Qwen3.5-9B)在可比较的量化级别(GGUF 的 Q4_K_M,MLX 的 mxfp4)。五个不同的提示词,各运行三次,后端按顺序测试以避免资源争用。
结果
这意味着什么
- llama.cpp 擅长提示词处理 — 它的闪速注意力 + 量化 KV 缓存管道在约 66ms 内获得第一个 token。如果您在构建感知响应性重要的交互式应用(聊天机器人、自动完成),这是一个有意义的优势。
- MLX 一旦开始生成 token 约快 37%。对于批处理工作流、长篇生成或任何总完成时间比初始延迟更重要的任务,MLX 更快完成。
- 两者都非常一致 — 运行之间的差异可忽略不计。您可以依赖这些数字。
您应该选择哪个?
连接到 Hermes
本地服务器运行后:
hermes model
选择自定义端点并按照提示操作。它会询问基础 URL 和模型名称 — 使用您上面设置的任一后端的值。
超时
Hermes 自动检测本地端点(localhost、LAN IP)并放宽其流式超时。大多数设置无需配置。
如果您仍然遇到超时错误(例如慢硬件上的非常大的上下文),您可以覆盖流式读取超时:
# 第二部分:掌握(功能篇)## 用 Cron 自动化任何事情
[每日简报 bot 教程](/docs/guides/daily-briefing-bot) 涵盖了基础知识。本指南更进一步——你可以为自己的工作流调整的五个真实自动化模式。
完整功能参考,请参阅[计划任务(Cron)](/docs/user-guide/features/cron)。
:::info 关键概念
Cron 任务在全新的 agent 会话中运行,没有当前聊天的记忆。提示必须**完全自包含**——包含 agent 需要知道的一切。
:::
---
#### 模式 1:网站变更监控
监视 URL 的变更,仅在有变化时通知你。
`script` 参数是这里的秘密武器。Python 脚本在每次执行前运行,其 stdout 成为 agent 的上下文。脚本处理机械工作(获取、diff);agent 处理推理(这个变化有趣吗?)。
创建监控脚本:
```bash
mkdir -p ~/.hermes/scripts
import hashlib, json, os, urllib.request
URL = "https://example.com/pricing"
STATE_FILE = os.path.expanduser("~/.hermes/scripts/.watch-site-state.json")
## 定时任务故障排除
当定时任务行为不符合预期时,请按顺序执行以下检查。大多数问题属于四类之一:时间、投递、权限或技能加载。
---
#### 任务不触发##### 检查 1:验证任务存在且处于活跃状态
```bash
hermes cron list
查找该任务并确认其状态为 [active](不是 [paused] 或 [completed])。如果显示 [completed],可能是重复次数已耗尽 — 请编辑任务以重置。
检查 2:确认计划表达式正确
格式错误的计划表达式会静默默认为一次性执行或被完全拒绝。请测试你的表达式:
如果任务触发一次后从列表中消失,则为一次性计划(30m、1d 或 ISO 时间戳)— 这是预期行为。
检查 3:网关是否正在运行?
定时任务由网关的后台计时器线程触发,每 60 秒触发一次。常规 CLI 聊天会话不会自动触发定时任务。
如果你期望任务自动触发,需要运行网关(hermes gateway 或 hermes serve)。对于一次性调试,你可以手动触发一次计时器:hermes cron tick。
检查 4:检查系统时钟和时区
任务使用本地时区。如果你的机器时钟错误或处于与预期不同的时区,任务将在错误的时间触发。请验证:
date
hermes cron list # 将 next_run 时间与本地时间对比
投递失败
检查 1:验证投递目标是否正确
投递目标区分大小写,需要正确配置平台。配置错误的目标会静默丢弃响应。
其他支持的平台包括 mattermost、homeassistant、dingtalk、feishu、wecom、weixin、bluebubbles 和 webhook。你也可以使用 platform:chat_id 语法(例如 telegram:-1001234567890)定位特定聊天。
如果投递失败,任务仍会运行 — 只是不会发送任何内容。请检查 hermes cron list 中的 last_error 字段(如果有)。
检查 2:检查 [SILENT] 的使用
如果你的定时任务没有输出或代理响应 [SILENT],投递会被抑制。这对于监控任务是故意设计的 — 但请确保你的提示词不会意外地抑制所有内容。
一个说"如果没有变化则响应 [SILENT]"的提示词也会静默吞掉非空响应。请检查你的条件逻辑。
检查 3:平台令牌权限
每个消息平台的机器人需要特定权限才能接收消息。如果投递静默失败:
- Telegram:机器人必须是目标群组/频道的管理员
- Discord:机器人必须有在目标频道发送的权限
- Slack:机器人必须添加到工作区并具有 chat:write 作用域
检查 4:响应包装
默认情况下,定时任务响应会带有页眉和页脚包装(config.yaml 中的 cron.wrap_response: true)。某些平台或集成可能处理不好。要禁用:
cron:wrap_response: false
技能加载失败
检查 1:验证技能已安装
hermes skills list
技能必须先安装才能附加到定时任务。如果某个技能缺失,请先使用 hermes skills install
检查 2:检查技能名称 vs 技能文件夹名称
技能名称区分大小写,必须与已安装技能的文件夹名称匹配。如果你的任务指定 ai-funding-daily-report 但技能文件夹是 ai-funding-daily-report,请从 hermes skills list 确认确切名称。
检查 3:需要交互式工具的技能
定时任务运行时,cronjob、messaging 和 clarify 工具集是禁用的。这可以防止递归创建定时任务、直接发送消息(投递由调度器处理)以及交互式提示。如果某个技能依赖这些工具集,它在定时任务上下文中将无法工作。
请检查技能的文档,确认它是否可以在非交互式(无头)模式下工作。
检查 4:多技能排序
使用多个技能时,它们按顺序加载。如果技能 A 依赖技能 B 的上下文,请确保 B 先加载:
/cron add "0 9 * * *" "..." --skill context-skill --skill target-skill
在此示例中,context-skill 在 target-skill 之前加载。
任务错误和失败
检查 1:查看最近的任务输出
如果任务运行并失败,你可能会在以下位置看到错误上下文:
- 任务投递到的聊天(如果投递成功)
- ~/.hermes/logs/agent.log 中的调度器消息(errors.log 为警告)
- 通过 hermes cron list 查看任务的 last_run 元数据
检查 2:常见错误模式
“No such file or directory”(脚本) script 路径必须是绝对路径(或相对于 Hermes 配置目录)。请验证:
ls ~/.hermes/scripts/your-script.py # 必须存在
hermes cron edit <job_id> --script ~/.hermes/scripts/your-script.py
“技能 not found”(任务执行时) 技能必须安装在运行调度器的机器上。如果你在机器之间移动,技能不会自动同步 — 请使用 hermes skills install
任务运行但不投递任何内容 可能是投递目标问题(参见上面的投递失败)或静默抑制的响应([SILENT])。
任务挂起或超时 调度器使用基于不活动的超时(默认 600 秒,可通过 HERMES_CRON_TIMEOUT 环境变量配置,0 为无限制)。代理只要积极调用工具就可以运行 — 计时器只在持续不活动后触发。长时间运行的任务应使用脚本处理数据收集,仅投递结果。
检查 3:锁竞争
调度器使用基于文件的锁定来防止重叠的计时器。如果两个网关实例正在运行(或 CLI 会话与网关冲突),任务可能会被延迟或跳过。
请杀死重复的网关进程:
ps aux | grep hermes
## 教程:每日简报机器人
在本教程中,您将构建一个个人简报机器人,每天早晨醒来,研究您关心的话题,总结发现,并将简洁的简报直接发送到您的 Telegram 或 Discord。
到最后,您将拥有一个完全自动化的工作流,结合**网页搜索**、**定时调度**、**委托**和**消息传递** — 无需编写代码。
#### 我们要构建的内容
流程如下:
1. **上午 8:00** — cron 调度器触发您的任务
2. **Hermes 启动**一个带有您提示词的全新代理会话
3. **网页搜索**获取您话题的最新新闻
4. **总结**将其精简为简洁的简报格式
5. **发送**将简报发送到您的 Telegram 或 Discord
整个过程无需动手。您只需在晨间阅读简报即可。
#### 前提条件
在开始之前,请确保您已安装:
- **Hermes Agent** — 参见[安装指南](/docs/getting-started/installation)
- **消息网关 运行中** — gateway 守护进程处理 cron 执行:
```bash
hermes gateway install # 安装为用户服务sudo hermes gateway install --system # Linux 服务器:启动时系统服务# 或
hermes gateway # 在前台运行
- Firecrawl API 密钥 — 在环境中设置 FIRECRAWL_API_KEY 用于网页搜索
- 消息平台已配置(推荐但可选)— 已设置主频道的 Telegram 或 Discord
您仍然可以使用 deliver: "local" 跟随本教程。简报将保存到 ~/.hermes/cron/output/,您可以随时阅读。
步骤 1:手动测试工作流
在自动化任何内容之前,让我们确保简报有效。开始一个聊天会话:
hermes
然后输入此提示词:
Search for the latest news about AI agents and open source LLMs.
Summarize the top 3 stories in a concise briefing format with links.
Hermes 将搜索网络,读取结果,并产生类似以下内容:
☀️ Your AI Briefing — March 8, 2026
1. Qwen 3 Released with 235B Parameters
Alibaba's latest open-weight model matches GPT-4.5 on several
benchmarks while remaining fully open source.
→ https://qwenlm.github.io/blog/qwen3/
2. LangChain Launches Agent Protocol Standard
A new open standard for agent-to-agent communication gains
adoption from 15 major frameworks in its first week.
→ https://blog.langchain.dev/agent-protocol/
3. EU AI Act Enforcement Begins for General-Purpose Models
The first compliance deadlines hit, with open source models
receiving exemptions under the 10M parameter threshold.
→ https://artificialintelligenceact.eu/updates/
---
3 stories • Sources searched: 8 • Generated by Hermes Agent
如果这有效,您就可以自动化它了。
尝试不同的提示词,直到获得您喜欢的输出。添加类似"使用 emoji 标题"或"每个摘要保持在 2 句话以内"的指令。您确定的任何内容都会进入 cron 任务。
步骤 2:创建 Cron 任务
现在让我们安排这每天早晨自动运行。您可以通过两种方式执行此操作。
选项 A:自然语言
直接告诉您想要的:
Every morning at 8am, search the web for the latest news about AI agents
and open source LLMs. Summarize the top 3 stories in a concise briefing
with links. Use a friendly, professional tone. Deliver to telegram.
Hermes 将使用统一的 cronjob 工具为您创建 cron 任务。
选项 B:CLI 斜杠命令
使用 /cron 命令获得更多控制:
/cron add "0 8 * * *" "Search the web for the latest news about AI agents and open source LLMs. Find at least 5 recent articles from the past 24 hours. Summarize the top 3 most important stories in a concise daily briefing format. For each story include: a clear headline, a 2-sentence summary, and the source URL. Use a friendly, professional tone. Format with emoji bullet points and end with a total story count."
黄金法则:自包含提示词
Cron 任务在完全新的会话中运行 — 没有之前对话的记忆,没有关于您"之前设置"的上下文。您的提示词必须包含代理完成任务所需的一切。
糟糕的提示词:
Do my usual morning briefing.
好的提示词:
Search the web for the latest news about AI agents and open source LLMs.
Find at least 5 recent articles from the past 24 hours. Summarize the
top 3 most important stories in a concise daily briefing format. For each
story include: a clear headline, a 2-sentence summary, and the source URL.
Use a friendly, professional tone. Format with emoji bullet points.
好的提示词具体说明搜索什么、多少文章、什么格式和什么语气。它在一个 shot 中包含代理需要的一切。
步骤 3:自定义简报
基本简报有效后,您可以发挥创意。
多话题简报
在一个简报中覆盖多个领域:
/cron add "0 8 * * *" "Create a morning briefing covering three topics. For each topic, search the web for recent news from the past 24 hours and summarize the top 2 stories with links.
Topics:
1. AI and machine learning — focus on open source models and agent frameworks
2. Cryptocurrency — focus on Bitcoin, Ethereum, and regulatory news
3. Space exploration — focus on SpaceX, NASA, and commercial space
Format as a clean briefing with section headers and emoji. End with today's date and a motivational quote."
使用委托进行并行研究
为了更快的简报,告诉 Herme 将每个话题委托给子代理:
/cron add "0 8 * * *" "Create a morning briefing by delegating research to sub-agents. Delegate three parallel tasks:
1. Delegate: Search for the top 2 AI/ML news stories from the past 24 hours with links
2. Delegate: Search for the top 2 cryptocurrency news stories from the past 24 hours with links
3. Delegate: Search for the top 2 space exploration news stories from the past 24 hours with links
Collect all results and combine them into a single clean briefing with section headers, emoji formatting, and source links. Add today's date as a header."
每个子代理独立并行搜索,然后主代理将一切整合为一个精炼的简报。参见委托文档了解更多此工作原理。
仅工作日计划
周末不需要简报?使用针对周一至周五的 cron 表达式:
/cron add "0 8 * * 1-5" "Search for the latest AI and tech news..."
每日两次简报
获取早晨概览和晚间摘要:
/cron add "0 8 * * *" "Morning briefing: search for AI news from the past 12 hours..."
/cron add "0 18 * * *" "Evening recap: search for AI news from the past 12 hours..."
使用记忆添加个人上下文
如果已启用记忆,您可以存储跨会话持久的偏好。但请记住 — cron 任务在新会话中运行,没有会话记忆。要添加个人上下文,直接将其烘焙到提示词中:
/cron add "0 8 * * *" "You are creating a briefing for a senior ML engineer who cares about: PyTorch ecosystem, transformer architectures, open-weight models, and AI regulation in the EU. Skip stories about product launches or funding rounds unless they involve open source.
Search for the latest news on these topics. Summarize the top 3 stories with links. Be concise and technical — this reader doesn't need basic explanations."
包括简报是为谁创建的详细信息会显著提高相关性。告诉代理您的角色、兴趣以及跳过什么。
步骤 4:管理您的任务
列出所有计划任务
在聊天中:
/cron list
或从终端:
hermes cron list
您将看到类似以下输出:
ID | Name | Schedule | Next Run | Deliver
------------|-------------------|-------------|--------------------|--------
a1b2c3d4 | Morning Briefing | 0 8 * * * | 2026-03-09 08:00 | telegram
e5f6g7h8 | Evening Recap | 0 18 * * * | 2026-03-08 18:00 | telegram
删除任务
在聊天中:
/cron remove a1b2c3d4
或对话式询问:
Remove my morning briefing cron job.
Hermes 将使用 cronjob(action="list") 找到它并使用 cronjob(action="remove") 删除它。
检查 消息网关 状态
确保调度器实际正在运行:
hermes cron status
如果 gateway 未运行,您的任务将不会执行。将其作为后台服务安装以提高可靠性:
hermes gateway install
## 教程:团队 Telegram 助手
本教程将引导您设置由 Hermes Agent 提供支持的 Telegram 机器人,您的多个团队成员可以使用。到最后,您的团队将拥有一个共享的 AI 助手,他们可以发送消息以获取代码、研究、系统管理等方面的帮助 — 通过每用户授权保护。
#### 我们要构建的内容
一个 Telegram 机器人,可以:
- **任何授权的团队成员**都可以 DM 寻求帮助 — 代码审查、研究、shell 命令、调试
- **在您的服务器上运行**,具有完整的工具访问权限 — 终端、文件编辑、网页搜索、代码执行
- **每用户会话** — 每个人获得自己的对话上下文
- **默认安全** — 只有批准的用户可以交互,有两种授权方法
- **定时任务** — 每日站会、健康检查和提醒发送到团队频道
---
#### 前提条件
在开始之前,请确保您拥有:
- **Hermes Agent** 安装在服务器或 VPS 上(不是在您的笔记本电脑上 — 机器人需要保持运行)。如果您还没有,请遵循[安装指南](/docs/getting-started/installation)。
- **您自己的 Telegram 账户**(机器人所有者)
- **已配置的 LLM 提供商** — 至少在 `~/.hermes/.env` 中设置 OpenAI、Anthropic 或其他受支持提供商的 API 密钥
步骤 1:创建 Telegram 机器人
每个 Telegram 机器人从 **@BotFather** 开始 — Telegram 官方机器人创建 bot。
1. **打开 Telegram** 并搜索 `@BotFather`,或前往 [t.me/BotFather](https://t.me/BotFather)
2. **发送 `/newbot`** — BotFather 会问您两件事:
- **显示名称** — 用户看到的名称(例如,`Team Hermes Assistant`)
- **用户名** — 必须以 `bot` 结尾(例如,`myteam_hermes_bot`)
3. **复制机器人令牌** — BotFather 回复类似:
Use this token to access the HTTP API: 7123456789:AAH1bGciOiJSUzI1NiIsInR5cCI6Ikp…
保存此令牌 — 您在下一步需要它。
4. **设置描述**(可选但推荐):
/setdescription
选择您的机器人,然后输入类似:
Team AI assistant powered by Hermes Agent. DM me for help with code, research, debugging, and more.
5. **设置机器人命令**(可选 — 给用户命令菜单):
/setcommands
选择您的机器人,然后粘贴:
new - Start a fresh conversation model - Show or change the AI model status - Show session info help - Show available commands stop - Stop the current task
:::warning
保持您的机器人令牌秘密。任何拥有令牌的人都可以控制机器人。如果泄露了,使用 BotFather 中的 `/revoke` 生成新令牌。
:::
---
步骤 2:配置 消息网关
您有两个选项:交互式设置向导(推荐)或手动配置。
选项 A:交互式设置
```bash
hermes gateway setup
这将带您通过箭头键选择完成一切。选择 Telegram,粘贴您的机器人令牌,并在提示时输入您的用户 ID。
选项 B:手动配置
将以下行添加到 ~/.hermes/.env:
## 委托与并行工作
Hermes 可以生成隔离的子代理来并行处理任务。每个子代理获得自己的对话、终端会话和工具集。只有最终摘要返回 — 中间工具调用永远不会进入你的上下文窗口。
完整功能参考,请参阅 [子代理委托](/docs/user-guide/features/delegation)。
---
#### 何时委托
**适合委托的好候选:**
- 重推理的子任务(调试、代码审查、研究综合)
- 会用中间数据淹没上下文的任务
- 并行独立工作流(同时研究 A 和 B)
- 需要新上下文的任务,你希望代理无偏见地处理
**使用其他方式:**
- 单一工具调用 → 直接使用工具
- 机械性的多步骤工作,步骤之间有逻辑 → `execute_code`
- 需要用户交互的任务 → 子代理不能使用 `clarify`
- 快速文件编辑 → 直接完成
---
#### 模式:并行研究
同时研究三个主题并获得结构化摘要:
并行研究这三个主题:
- 浏览器外的 WebAssembly 现状
- 2025 年 RISC-V 服务器芯片采用情况
- 实用量子计算应用
关注最近的发展和关键参与者。
在后台,Hermes 使用:
```python
delegate_task(tasks=[
{
"goal": "研究 2025 年浏览器外的 WebAssembly",
"context": "关注:运行时(Wasmtime、Wasmer)、云/边缘用例、WASI 进展",
"toolsets": ["web"]
},
{
"goal": "研究 RISC-V 服务器芯片采用情况",
"context": "关注:出货的服务器芯片、采用的云提供商、软件生态系统",
"toolsets": ["web"]
},
{
"goal": "研究实用量子计算应用",
"context": "关注:纠错突破、现实世界用例、主要公司",
"toolsets": ["web"]
}
])
三个并发运行。每个子代理独立搜索网络并返回摘要。然后父代理将它们综合成一个连贯的简报。
模式:代码审查
将安全审查委托给一个新上下文的子代理,让它不带偏见地处理代码:
审查 src/auth/ 中的认证模块的安全问题。
检查 SQL 注入、JWT 验证问题、密码处理和会话管理。发现并修复任何问题,然后运行测试。
关键在于 context 字段 — 它必须包含子代理需要的一切:
delegate_task(
goal="审查 src/auth/ 的安全问题并修复发现的问题",
context="""项目位于 /home/user/webapp。Python 3.11、Flask、PyJWT、bcrypt。
认证文件:src/auth/login.py、src/auth/jwt.py、src/auth/middleware.py
测试命令:pytest tests/auth/ -v
关注:SQL 注入、JWT 验证、密码哈希、会话管理。
修复发现的问题并验证测试通过。""",
toolsets=["terminal", "file"]
)
子代理对你的对话一无所知。它们完全从零开始。如果你委托"修复我们正在讨论的 bug",子代理根本不知道你说的什么 bug。始终明确传递文件路径、错误消息、项目结构和约束。
模式:比较替代方案
并行评估同一问题的多种方法,然后选择最佳:
我需要为 Django 应用添加全文搜索。并行评估三种方法:
1. PostgreSQL tsvector(内置)
2. 通过 django-elasticsearch-dsl 的 Elasticsearch
3. 通过 meilisearch-python 的 Meilisearch
每个:设置复杂性、查询能力、资源需求和维护开销。比较它们并推荐一个。
每个子代理独立研究一个选项。因为它们是隔离的,没有交叉污染 — 每个评估都基于其自身优点。父代理获得所有三个摘要并进行对比。
模式:多文件重构
将大型重构任务分配给并行子代理,每个处理代码库的不同部分:
delegate_task(tasks=[
{
"goal": "重构所有 API 端点处理器以使用新的响应格式",
"context": """项目位于 /home/user/api-server。
文件:src/handlers/users.py、src/handlers/auth.py、src/handlers/billing.py
旧格式:return {"data": result, "status": "ok"}
新格式:return APIResponse(data=result, status=200).to_dict()
导入:from src.responses import APIResponse
之后运行测试:pytest tests/handlers/ -v""",
"toolsets": ["terminal", "file"]
},
{
"goal": "更新所有客户端 SDK 方法以处理新的响应格式",
"context": """项目位于 /home/user/api-server。
文件:sdk/python/client.py、sdk/python/models.py
旧解析:result = response.json()["data"]
新解析:result = response.json()["data"](相同的键,但添加状态码检查)
还要更新 sdk/python/tests/test_client.py""",
"toolsets": ["terminal", "file"]
},
{
"goal": "更新 API 文档以反映新的响应格式",
"context": """项目位于 /home/user/api-server。
文档位置:docs/api/。格式:带代码示例的 Markdown。
将所有响应示例从旧格式更新为新格式。
在 docs/api/overview.md 添加'响应格式'部分说明模式。""",
"toolsets": ["terminal", "file"]
}
])
每个子代理获得自己的终端会话。它们可以在同一项目目录中工作而不互相干扰 — 只要它们编辑不同的文件。如果两个子代理可能修改同一文件,请在并行工作完成后自己处理该文件。
模式:先收集后分析
使用 execute_code 进行机械数据收集,然后将重推理的分析委托出去:
# 第三部分:进阶(开发者篇)## 架构
此页面是 Hermes Agent 内部结构的顶级地图。用它来熟悉代码库,然后深入阅读特定子系统的文档以了解实现细节。
#### 系统概览
```text
┌─────────────────────────────────────────────────────────────────────┐
│ 入口点 │
│ │
│ CLI (cli.py) 消息网关 (gateway/run.py) ACP (acp_adapter/) │
│ Batch Runner API Server Python Library │
└──────────┬──────────────┬───────────────────────┬───────────────────┘
│ │ │
▼ ▼ ▼
┌─────────────────────────────────────────────────────────────────────┐
│ AIAgent (run_agent.py) │
│ │
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
│ │ 提示词 │ │ 模型提供商 │ │ Tool │ │
│ │ Builder │ │ Resolution │ │ Dispatch │ │
│ │ (prompt_ │ │ (runtime_ │ │ (model_ │ │
│ │ builder.py) │ │ provider.py)│ │ tools.py) │ │
│ └──────┬───────┘ └──────┬───────┘ └──────┬───────┘ │
│ │ │ │ │
│ ┌──────┴───────┐ ┌──────┴───────┐ ┌──────┴───────┐ │
│ │ Compression │ │ 3 API Modes │ │ Tool Registry│ │
│ │ & Caching │ │ chat_compl. │ │ (registry.py)│ │
│ │ │ │ codex_resp. │ │ 48 tools │ │
│ │ │ │ anthropic │ │ 40 toolsets │ │
│ └──────────────┘ └──────────────┘ └──────────────┘ │
└─────────────────────────────────────────────────────────────────────┘
│ │
▼ ▼
┌───────────────────┐ ┌──────────────────────┐
│ Session Storage │ │ Tool Backends │
│ (SQLite + FTS5) │ │ Terminal (6 backends) │
│ hermes_state.py │ │ Browser (5 backends) │
│ gateway/session.py│ │ Web (4 backends) │
└───────────────────┘ │ MCP │
│ File, Vision, etc. │
└──────────────────────┘
目录结构
hermes-agent/
├── run_agent.py # AIAgent — 核心对话循环(约 9,200 行)
├── cli.py # HermesCLI — 交互式终端 UI(约 8,500 行)
├── model_tools.py # 工具发现、模式收集、分发
├── toolsets.py # 工具分组和平台预设
├── hermes_state.py # SQLite 会话/状态数据库,带 FTS5
├── hermes_constants.py # HERMES_HOME、profile 感知路径
├── batch_runner.py # 批量轨迹生成
│
├── agent/ # Agent 内部
│ ├── prompt_builder.py # 系统 prompt 组装
│ ├── context_engine.py # 上下文Engine ABC(可插拔)
│ ├── context_compressor.py # 默认引擎 — 有损摘要
│ ├── prompt_caching.py # Anthropic prompt 缓存
│ ├── auxiliary_client.py # 辅助 LLM,用于辅助任务(视觉、摘要)
│ ├── model_metadata.py # 模型上下文长度、token 估算
│ ├── models_dev.py # models.dev 注册集成
│ ├── anthropic_adapter.py # Anthropic Messages API 格式转换
│ ├── display.py # KawaiiSpinner、工具预览格式化
│ ├── skill_commands.py # 技能 斜杠命令
│ ├── memory_manager.py # 记忆管理器编排
│ ├── memory_provider.py # 记忆提供者 ABC
│ └── trajectory.py # 轨迹保存辅助函数
│
├── hermes_cli/ # CLI 子命令和配置
│ ├── main.py # 入口点 — 所有 `hermes` 子命令(约 5,500 行)
│ ├── config.py # DEFAULT_CONFIG、OPTIONAL_ENV_VARS、迁移
│ ├── commands.py # COMMAND_REGISTRY — 中心斜杠命令定义
│ ├── auth.py # PROVIDER_REGISTRY、凭证解析
│ ├── runtime_provider.py # 模型提供商 → api_mode + 凭证
│ ├── models.py # 模型目录、提供者模型列表
│ ├── model_switch.py # /model 命令逻辑(CLI + gateway 共享)
│ ├── setup.py # 交互式设置向导(约 3,100 行)
│ ├── skin_engine.py # CLI 主题引擎
│ ├── skills_config.py # hermes skills — 平台启用/禁用
│ ├── skills_hub.py # /skills 斜杠命令
│ ├── tools_config.py # hermes tools — 平台启用/禁用
│ ├── plugins.py # PluginManager — 发现、加载、钩子
│ ├── callbacks.py # 终端回调(clarify、sudo、approval)
│ └── gateway.py # hermes gateway 启动/停止
│
├── tools/ # 工具实现(每个工具一个文件)
│ ├── registry.py # 中心工具注册表
│ ├── approval.py # 危险命令检测
│ ├── terminal_tool.py # 终端编排
│ ├── process_registry.py # 后台进程管理
│ ├── file_tools.py # read_file、write_file、patch、search_files
│ ├── web_tools.py # web_search、web_extract
│ ├── browser_tool.py # 11 个浏览器自动化工具
│ ├── code_execution_tool.py # execute_code 沙箱
│ ├── delegate_tool.py # 子代理委托
│ ├── mcp_tool.py # MCP 客户端(约 2,200 行)
│ ├── credential_files.py # 基于文件的凭证传递
│ ├── env_passthrough.py # 沙箱环境变量传递
│ ├── ansi_strip.py # ANSI 转义剥离
│ └── environments/ # 终端后端(local、docker、ssh、modal、daytona、singularity)
│
├── gateway/ # 消息平台网关
│ ├── run.py # 消息网关Runner — 消息分发(约 7,500 行)
│ ├── session.py # SessionStore — 对话持久化
│ ├── delivery.py # 出站消息传递
│ ├── pairing.py # DM 配对授权
│ ├── hooks.py # 钩子发现和生命周期事件
│ ├── mirror.py # 跨会话消息镜像
│ ├── status.py # Token 锁、profile 作用域进程跟踪
│ ├── builtin_hooks/ # 始终注册的钩子
│ └── platforms/ # 15 个适配器:telegram、discord、slack、whatsapp、
│ # signal、matrix、mattermost、email、sms、
│ # dingtalk、feishu、wecom、weixin、bluebubbles、homeassistant、webhook
│
├── acp_adapter/ # ACP 服务器(VS Code / Zed / JetBrains)
├── cron/ # 调度器(jobs.py、scheduler.py)
├── plugins/memory/ # 记忆提供者插件
├── plugins/context_engine/ # 上下文引擎插件
├── environments/ # RL 训练环境(Atropos)
├── skills/ # 捆绑技能(始终可用)
├── optional-skills/ # 官方可选技能(明确安装)
├── website/ # Docusaurus 文档站点
└── tests/ # Pytest 套件(3,000+ 测试)
数据流
CLI 会话
用户输入 → HermesCLI.process_input()
→ AIAgent.run_conversation()
→ prompt_builder.build_system_prompt()
→ runtime_provider.resolve_runtime_provider()
→ API 调用(chat_completions / codex_responses / anthropic_messages)
→ tool_calls? → model_tools.handle_function_call() → 循环
→ 最终响应 → display → 保存到 SessionDB
消息网关 消息
平台事件 → Adapter.on_message() → MessageEvent
→ 消息网关Runner._handle_message()
→ 授权用户
→ 解析会话密钥
→ 使用会话历史创建 AIAgent
→ AIAgent.run_conversation()
→ 通过适配器传递响应
Cron 任务
调度器 tick → 从 jobs.json 加载到期任务
→ 创建新的 AIAgent(无历史)
→ 附加技能作为上下文注入
→ 运行任务 prompt
→ 传递响应到目标平台
→ 更新任务状态和 next_run
推荐阅读顺序
如果您是代码库新手:
- 本页 — 熟悉自己
- 智能体循环内部 — 了解 AIAgent 工作原理
- 提示词 组装 — 系统 prompt 构建
- 提供者运行时解析 — 如何选择提供者
- 添加提供者 — 添加新提供者的实用指南
- 工具运行时 — 工具注册表、分发、环境
- 会话存储 — SQLite 模式、FTS5、会话 lineage
- 消息网关 内部 — 消息平台网关
- 上下文压缩和 提示词 缓存 — 压缩和缓存
- ACP 内部 — IDE 集成
- 环境、基准和数据生成 — RL 训练
注意: 由于篇幅和内容限制,完整的内容请到粉丝群中获取,欢迎一起学习和交流。
继续阅读完整版
欢迎加入粉丝交流群
粉丝群超过200人时会自动加入新群!
附件:hermes_greenbook.pdf(application/pdf, 7768489 bytes, token:
Djl4bVS89ouXuox2JKgcPBrinZc)