hermes-agent/README_CN.md
2026-04-18 21:54:02 +08:00

14 KiB
Raw Blame History

Hermes Agent - 自进化 AI 代理

Hermes Agent

简介

Hermes Agent 是由 Nous Research 开发的自进化 AI 代理工具。它是唯一内置学习循环的代理系统——能够从经验中创建技能、在使用过程中改进技能、自主保留知识、搜索历史对话,并在多会话中建立对用户的深度理解模型。

你可以在 $5 VPS、GPU 集群或几乎无空闲成本的无服务器基础设施上运行它。它不局限于你的笔记本电脑——你可以在云端 VM 上运行它,同时通过 Telegram 与它对话。

核心特性

🔄 闭环学习系统

  • 自主技能创建:完成复杂任务后自动创建技能
  • 技能自改进:在使用过程中持续优化技能
  • 智能记忆管理:定期提示保存知识
  • 跨会话搜索FTS5 会话搜索 + LLM 摘要,实现跨会话回忆
  • 用户建模:兼容 Honcho 辩证用户建模
  • 开放标准:支持 agentskills.io 开放技能标准

💬 多平台支持

  • CLI 交互:完整的 TUI终端 UI支持多行编辑、斜杠命令自动补全、对话历史、中断重定向、流式工具输出
  • 消息平台Telegram、Discord、Slack、WhatsApp、Signal、Email、Home Assistant 等——所有平台共享同一网关进程
  • 语音支持:语音备忘录转录、跨平台对话连续性

定时自动化

  • 内置 Cron 调度器:支持任何平台的任务投递
  • 自然语言任务:每日报告、夜间备份、每周审计——全部用自然语言配置,无人值守运行

🤖 代理委派与并行

  • 子代理委派:生成独立的子代理处理并行工作流
  • RPC 脚本调用:编写通过 RPC 调用工具的 Python 脚本,将多步骤流水线压缩为零上下文成本的轮次

🌍 无处不在的运行环境

  • 六种终端后端本地、Docker、SSH、Daytona、Singularity、Modal
  • 无服务器持久化Daytona 和 Modal 提供无服务器持久化——代理环境在空闲时休眠,按需唤醒,会话间几乎无成本
  • 灵活部署:在 $5 VPS 或 GPU 集群上运行

🧪 研究就绪

  • 批量轨迹生成
  • Atropos RL 环境
  • 轨迹压缩:用于训练下一代工具调用模型

🔌 模型无关

支持任何你想用的模型:

使用 hermes model 切换模型——无需代码更改,无锁定。


安装指南

方式一:标准安装(网络畅通)

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

支持 Linux、macOS、WSL2 和 AndroidTermux

方式二:本地安装(适合中国用户或离线环境)

如果你在中国或网络环境无法访问 GitHub可以使用以下方法

步骤 1下载代码

  • 从 GitHub 下载 ZIP 或使用镜像站下载
  • 或使用 Git 镜像克隆

步骤 2使用本地安装模式

# 进入下载的代码目录
cd /path/to/hermes-agent

# 使用 --local 模式安装,指定已下载的目录
bash install.sh --local --dir /path/to/hermes-agent

安装选项说明:

选项 说明
--local 使用本地目录,跳过 git clone
--dir PATH 指定安装目录路径
--no-venv 不创建虚拟环境
--skip-setup 跳过交互式设置向导
--hermes-home PATH 指定数据目录(默认:~/.hermes

完整示例:

# 假设你已将代码下载到 /home/user/hermes-agent
cd /home/user/hermes-agent

# 使用本地目录安装
bash install.sh --local --dir /home/user/hermes-agent

# 或者跳过设置向导(适合自动化部署)
bash install.sh --local --dir /home/user/hermes-agent --skip-setup

方式三:开发者安装(已克隆仓库)

如果你是开发者,已经克隆了仓库:

cd hermes-agent
./setup-hermes.sh

Windows 用户

原生 Windows 不支持。请安装 WSL2 然后使用上述方式。


快速入门

安装后步骤

# 重新加载 shell 配置
source ~/.bashrc    # 或 source ~/.zshrc

# 开始对话
hermes

常用命令

命令 说明
hermes 启动交互式 CLI开始对话
hermes model 选择 LLM 提供商和模型
hermes tools 配置启用哪些工具
hermes config set 设置单个配置值
hermes gateway 启动消息网关Telegram、Discord 等)
hermes setup 运行完整设置向导(一次配置所有)
hermes update 更新到最新版本
hermes doctor 诊断任何问题

斜杠命令速查

无论是 CLI 还是消息平台,以下斜杠命令都可用:

命令 说明
/new/reset 开始新对话
/model [provider:model] 切换模型
/personality [name] 设置个性
/retry, /undo 重试或撤销上一轮
/compress, /usage, /insights 压缩上下文、查看使用情况、洞察
/skills/<skill-name> 浏览技能
/stop 中断当前工作(消息平台)
/platforms 平台特定状态CLI
/status, /sethome 状态、设置主目录(消息平台)

项目架构

项目结构

hermes-agent/
├── run_agent.py              # AIAgent 类 — 核心对话循环
├── model_tools.py            # 工具编排discover_builtin_tools(), handle_function_call()
├── toolsets.py               # 工具集定义_HERMES_CORE_TOOLS 列表
├── cli.py                    # HermesCLI 类 — 交互式 CLI 编排器
├── hermes_state.py           # SessionDB — SQLite 会话存储FTS5 搜索)
├── agent/                    # 代理内部模块
│   ├── prompt_builder.py     # 系统提示词构建
│   ├── context_compressor.py # 自动上下文压缩
│   ├── prompt_caching.py     # Anthropic 提示词缓存
│   ├── auxiliary_client.py   # 辅助 LLM 客户端(视觉、摘要)
│   ├── model_metadata.py     # 模型上下文长度、token 估算
│   ├── display.py            # KawaiiSpinner、工具预览格式化
│   └── skill_commands.py     # 技能斜杠命令CLI/网关共享)
├── hermes_cli/               # CLI 子命令和设置
│   ├── main.py               # 入口点 — 所有 `hermes` 子命令
│   ├── config.py             # DEFAULT_CONFIG、OPTIONAL_ENV_VARS、迁移
│   ├── commands.py           # 斜杠命令定义 + SlashCommandCompleter
│   ├── setup.py              # 交互式设置向导
│   ├── skin_engine.py        # 皮肤/主题引擎 — CLI 视觉定制
│   ├── skills_config.py      # `hermes skills` — 按平台启用/禁用技能
│   ├── tools_config.py       # `hermes tools` — 按平台启用/禁用工具
│   └── auth.py               # 提供商凭证解析
├── tools/                    # 工具实现(每个工具一个文件)
│   ├── registry.py           # 中央工具注册表schema、handler、dispatch
│   ├── terminal_tool.py      # 终端编排
│   ├── file_tools.py         # 文件读写/搜索/补丁
│   ├── web_tools.py          # Web 搜索/提取Parallel + Firecrawl
│   ├── browser_tool.py       # 浏览器自动化
│   ├── mcp_tool.py           # MCP 客户端(约 1050 行)
│   └── environments/         # 终端后端local、docker、ssh、modal、daytona、singularity
├── gateway/                  # 消息平台网关
│   ├── run.py                # 主循环、斜杠命令、消息分发
│   ├── session.py            # SessionStore — 对话持久化
│   └── platforms/            # 适配器telegram、discord、slack、whatsapp、homeassistant、signal、qqbot
├── ui-tui/                   # InkReact终端 UI — `hermes --tui`
│   ├── src/entry.tsx         # TTY 入口 + render()
│   ├── src/app.tsx           # 主状态机和 UI
│   └── src/components/       # Ink 组件品牌、Markdown、提示、选择器等
├── tui_gateway/              # TUI 的 Python JSON-RPC 后端
│   ├── entry.py              # stdio 入口点
│   ├── server.py             # RPC 处理器和会话逻辑
│   └── slash_worker.py       # 斜杠命令的持久 HermesCLI 子进程
├── acp_adapter/              # ACP 服务器VS Code / Zed / JetBrains 集成)
├── cron/                     # 调度器jobs.py、scheduler.py
├── tests/                    # Pytest 测试套件(约 3000 个测试)
└── batch_runner.py           # 并行批量处理

核心架构

文件依赖链

tools/registry.py  (无依赖 — 被所有工具文件导入)
       ↑
tools/*.py  (每个在导入时调用 registry.register())
       ↑
model_tools.py  (导入 tools/registry + 触发工具发现)
       ↑
run_agent.py, cli.py, batch_runner.py, environments/

AIAgent 核心循环

核心循环在 run_conversation() 中,完全同步:

while api_call_count < self.max_iterations and self.iteration_budget.remaining > 0:
    response = client.chat.completions.create(model=model, messages=messages, tools=tool_schemas)
    if response.tool_calls:
        for tool_call in response.tool_calls:
            result = handle_function_call(tool_call.name, tool_call.args, task_id)
            messages.append(tool_result_message(result))
        api_call_count += 1
    else:
        return response.content

消息遵循 OpenAI 格式:{"role": "system/user/assistant/tool", ...}。推理内容存储在 assistant_msg["reasoning"] 中。

CLI 架构

  • Rich 用于横幅/面板,prompt_toolkit 用于带自动补全的输入
  • KawaiiSpinner (agent/display.py) — API 调用期间的动画表情,工具结果的 活动馈送
  • load_cli_config() 合并硬编码默认值 + 用户配置 YAML
  • 皮肤引擎 (hermes_cli/skin_engine.py) — 数据驱动的 CLI 主题化
  • process_command() 根据从中央注册表 resolve_command() 解析的规范名称调度

学习路径

新手入门

  1. 安装并运行

    • 按照安装指南完成安装
    • 运行 hermes setup 配置 API 密钥
    • 输入 hermes 开始第一次对话
  2. 理解基本概念

    • 阅读 AGENTS.md 了解项目结构
    • 查看 run_agent.py 理解核心循环
    • 了解工具系统如何工作
  3. 尝试常用功能

    • 使用文件工具读取和编辑文件
    • 尝试终端工具执行命令
    • 体验技能系统

进阶学习

  1. 工具开发

    • 学习 tools/registry.py 的注册机制
    • 参考现有工具(如 tools/file_tools.py
    • 理解工具集toolsets的概念
  2. 技能系统

    • 了解技能如何存储在 ~/.hermes/skills/
    • 学习如何创建和使用技能
    • 理解技能与工具的区别
  3. 消息网关

    • 配置 Telegram/Discord 机器人
    • 理解网关架构
    • 学习平台适配器开发

高级开发

  1. 核心修改

    • 修改 run_agent.py 的对话循环
    • 扩展 model_tools.py 的工具编排
    • 自定义提示词构建器
  2. 插件开发

    • 学习内存插件系统(plugins/memory/
    • 理解 MCP 集成
    • 开发自定义工具集
  3. 研究与训练

    • 使用 environments/ 进行 RL 训练
    • 轨迹压缩与模型训练
    • 批量轨迹生成

配置说明

配置文件位置

文件 路径 说明
主配置 ~/.hermes/config.yaml 所有设置
API 密钥 ~/.hermes/.env 环境变量和密钥
个性定义 ~/.hermes/SOUL.md 代理个性和语气
技能目录 ~/.hermes/skills/ 用户技能存储

常用配置项

# ~/.hermes/config.yaml 示例

model:
  provider: openrouter
  name: anthropic/claude-opus-4.6

display:
  skin: default           # default, ares, mono, slate
  tool_progress: true

tools:
  enabled:
    - terminal
    - file
    - web

环境变量

~/.hermes/.env 中配置:

# LLM 提供商
OPENROUTER_API_KEY=your-key
ANTHROPIC_API_KEY=your-key
OPENAI_API_KEY=your-key

# 消息平台
TELEGRAM_BOT_TOKEN=your-token
DISCORD_BOT_TOKEN=your-token
SLACK_BOT_TOKEN=your-token

# 其他
NOUS_PORTAL_API_KEY=your-key

常见问题

Q: 在中国无法访问 GitHub 怎么办?

A: 使用 --local 安装模式:

  1. 通过镜像站或其他方式下载代码
  2. 运行:bash install.sh --local --dir /path/to/downloaded/hermes-agent

Q: 支持哪些模型?

A: 支持任何兼容 OpenAI API 的模型提供商,包括:

  • OpenRouter200+ 模型)
  • Anthropic
  • OpenAI
  • Nous Portal
  • 国内模型Kimi、智谱、MiniMax 等,通过 OpenRouter 或自定义端点)

Q: 如何切换模型?

A: 使用:

hermes model                    # 交互式选择
hermes model openrouter/anthropic/claude-opus-4.6   # 直接指定

Q: 如何在服务器上后台运行?

A: 使用网关服务:

hermes gateway install   # 安装为 systemd 服务
hermes gateway start     # 启动服务

或手动后台运行:

nohup hermes gateway > ~/.hermes/logs/gateway.log 2>&1 &

Q: 技能和工具有什么区别?

A:

  • 工具 (Tools): 由代码实现的底层能力文件操作、终端、Web 搜索等40+ 内置工具
  • 技能 (Skills): 由代理从经验中学习或用户创建的高层流程,使用 Markdown 格式定义,可共享和改进

相关链接


许可证

MIT 许可证 — 详见 LICENSE

Nous Research 开发。