摘要

Hermes Agent 的核心价值在于“长期运行、持续记忆、自主执行”。本文从自托管智能体架构、Web UI 技术实现、任务调度、技能系统与多模型接入角度,拆解 Hermes Web UI 如何把终端型 Agent 转化为可落地的生产力工具。


背景介绍:为什么需要“常驻型”AI Agent?

当前大多数 AI 工具仍以“会话”为中心:打开一次、输入上下文、完成任务、关闭会话。下次使用时,开发者往往需要重新说明项目结构、技术栈、编码规范、业务背景和历史决策。

这类交互模式适合临时问答,但并不适合持续性工程任务,例如:

  • 每天定时扫描仓库 Issue 并生成摘要;
  • 夜间执行竞品研究并推送结果;
  • 自动整理团队聊天记录;
  • 维护项目任务看板;
  • 基于历史上下文持续优化代码生成策略。

Hermes Agent 的定位正是解决这个问题:它是一个运行在自有服务器上的自主智能体,具备跨会话上下文保持能力、任务调度能力、技能积累能力和消息通道集成能力。换句话说,它不是一次性聊天机器人,而是一个“长期在线的工程助理”。

视频中提到,Hermes 与 OpenClaw、Claude Code、Codex CLI、OpenCode 等工具存在一定重叠,但 Hermes 的差异点在于:

  1. 自托管运行:对话、记忆、任务数据尽量保留在自己的服务器环境中;
  2. 长期记忆:不会每次会话重新开始;
  3. 自主技能生成:Hermes 可以把经验沉淀为技能;
  4. Python 原生生态:更容易接入数据分析、机器学习、自动化脚本;
  5. Web UI 补齐交互短板:让非终端场景也能高效使用 Agent。

核心原理:Hermes Web UI 到底解决了什么?

1. 从“控制室”到“驾驶舱”

Hermes 本身提供了官方 Dashboard,但更偏向管理后台,用于配置:

  • API Key;
  • Gateway 凭证;
  • 消息配对;
  • Cron 任务;
  • 系统状态;
  • Provider 配置。

它更像控制室,而不是日常对话的驾驶舱。开发者可以在那里配置系统,但不适合持续和 Agent 协作完成任务。

Hermes Web UI 的价值在于:把原本主要依赖命令行的 Agent 能力,以浏览器和移动端友好的方式暴露出来。对于不希望长期停留在 Shell 环境中的用户,这一点非常关键。


2. 技术架构:Python 后端 + Vanilla JavaScript 前端

根据字幕内容,Hermes Web UI 的实现非常克制:

  • 后端主要使用 Python;
  • 前端使用原生 JavaScript;
  • 无需复杂构建流程;
  • 无框架、无 Bundler;
  • 通过 Server-Sent Events 实现流式输出;
  • 会话和配置状态存储在 ~/.hermes/web-ui 目录下。

这种设计有几个明显优势:

架构简单

不依赖复杂前端工程链路,降低部署难度。对于自托管工具而言,少一个构建步骤就少一类生产环境问题。

流式响应友好

SSE(Server-Sent Events)非常适合大模型 Token 流式输出。相比 WebSocket,SSE 在单向服务端推送场景中更加轻量,浏览器原生支持,调试成本低。

状态外置

会话、设置、用户偏好保存在用户主目录下,而不是应用目录内。这意味着:

  • 应用重启不丢状态;
  • 升级代码不影响历史会话;
  • 容器化部署时更容易做 Volume 挂载;
  • 备份和迁移路径清晰。

3. 核心功能模块拆解

Hermes Web UI 不只是一个聊天界面,它把 Agent 能力拆成多个生产力模块。

Chat:多模型对话入口

底部模型选择器可以切换不同模型 Provider。例如通过 OpenAI 兼容接口选择不同大模型,并设置 reasoning effort 等参数。这样开发者可以根据任务类型选择模型:

  • 简单摘要任务:使用低成本模型;
  • 复杂代码规划:使用强推理模型;
  • 多语言写作:使用长上下文模型;
  • 数据分析:结合 Python 工具链执行。
Tasks:计划任务管理

任务面板用于创建和执行计划任务。不过需要注意:如果是单容器安装,Web UI 中可以手动创建和运行任务,但真正让定时任务自动触发,需要 Hermes Gateway Daemon 在 Web UI 外部运行。

这点非常重要,否则开发者可能会误以为任务没有生效。

Kanban:Agent 驱动的轻量项目看板

Hermes Web UI 提供类似 Kanban 的任务流转能力,例如:

  • Triage;
  • To Do;
  • Ready;
  • Running;
  • Done。

任务可以设置优先级、分配状态,并由 Dispatcher 分发给 Agent 执行。这使得 Hermes 不再只是“问答工具”,而是具备轻量项目执行能力。

Skills:可持续积累的技能系统

技能系统是 Hermes 的核心竞争力之一。Agent 可以把已经学会的操作保存为技能,并按照类别管理。开发者也可以手动开启或关闭某个技能。

例如:

  • 代码委托;
  • 图表生成;
  • 消息发送;
  • 笔记管理;
  • 内容生成;
  • 数据处理脚本。

这类似于为 Agent 建立一组可复用的操作模块,使其能力随着使用时间逐步增强。

Memory:可编辑的长期记忆

长期记忆包括用户画像、笔记和 Agent 核心设定。如果 Agent 记错了信息,用户可以直接在 Web UI 中修改。这一点对企业和个人工作流都很关键,因为长期记忆必须可控、可审计、可修正。

Insights & Logs:可观测性能力

Hermes Web UI 提供 CPU、内存、磁盘、会话数、消息数、Token 数和预估成本等指标。同时日志面板支持按严重程度筛选,能够清晰暴露模型 Provider 异常、余额不足、服务不可用等问题。

对于一个常驻型 Agent,可观测性不是锦上添花,而是生产环境必需能力。


技术资源与工具选型

在多模型 Agent 系统中,模型 Provider 的稳定性、接口一致性和模型更新速度会直接影响开发体验。我的 AI 开发环境中通常会接入薛定猫AI(xuedingmao.com),原因主要是它采用 OpenAI 兼容模式,能够以统一的 base_url + api_key + model 方式调用不同模型。

它的技术价值主要体现在:

  • 聚合 500+ 主流大模型,包括 GPT-5.4、Claude 4.6、Gemini 3.1 Pro 等;
  • 新模型实时首发,便于第一时间验证前沿模型 API 能力;
  • 统一接入接口,降低多模型集成复杂度;
  • 对 Agent、批处理、自动化任务等场景较友好。

下面示例使用 claude-opus-4-6。该模型属于强推理、高质量代码生成和长文本理解能力突出的模型,适合复杂规划、工程分析、代码审查和 Agent 执行链路中的关键决策节点。


实战演示:用 Python 构建一个 Hermes 风格的定时研究任务

下面代码演示一个简化版“夜间研究任务”:调用 OpenAI 兼容接口,让模型生成技术调研摘要,并保存为本地 Markdown 文件。该代码可以作为 Hermes 任务、Cron Job 或自定义 Dispatcher 的基础模板。

安装依赖

pip install openai python-dotenv

.env 配置

XDM_API_KEY=你的薛定猫AI_API_KEY

Python 完整代码

import os
from datetime import datetime
from pathlib import Path
from typing import List

from dotenv import load_dotenv
from openai import OpenAI


class ResearchAgent:
    """
    一个简化版研究型 Agent:
    1. 使用 OpenAI 兼容接口调用大模型;
    2. 支持输入多个研究主题;
    3. 自动生成 Markdown 报告;
    4. 可集成到 Cron、Hermes Task 或其他调度系统中。
    """

    def __init__(
        self,
        api_key: str,
        base_url: str = "https://xuedingmao.com/v1",
        model: str = "claude-opus-4-6",
        output_dir: str = "./research_reports",
    ):
        self.client = OpenAI(
            api_key=api_key,
            base_url=base_url,
        )
        self.model = model
        self.output_dir = Path(output_dir)
        self.output_dir.mkdir(parents=True, exist_ok=True)

    def build_prompt(self, topics: List[str]) -> str:
        topic_text = "\n".join([f"- {topic}" for topic in topics])

        return f"""
你是一名资深 AI 技术研究员,请围绕以下主题生成一份技术调研报告:

{topic_text}

报告要求:
1. 使用中文输出;
2. 结构包含:技术背景、核心原理、工程落地方式、风险与注意事项;
3. 内容面向开发者,避免泛泛而谈;
4. 如果涉及 Agent、RAG、模型 API、任务调度,请给出工程化建议;
5. 输出 Markdown 格式。
"""

    def run(self, topics: List[str]) -> str:
        prompt = self.build_prompt(topics)

        response = self.client.chat.completions.create(
            model=self.model,
            messages=[
                {
                    "role": "system",
                    "content": "你擅长 AI Agent、LLM API、Python 工程化与自动化任务设计。",
                },
                {
                    "role": "user",
                    "content": prompt,
                },
            ],
            temperature=0.3,
            stream=False,
        )

        content = response.choices[0].message.content
        return content

    def save_report(self, content: str) -> Path:
        now = datetime.now().strftime("%Y%m%d_%H%M%S")
        report_path = self.output_dir / f"ai_research_{now}.md"

        header = f"""# AI 技术调研报告

生成时间:{datetime.now().strftime("%Y-%m-%d %H:%M:%S")}  
模型:{self.model}

---

"""

        report_path.write_text(header + content, encoding="utf-8")
        return report_path


def main():
    load_dotenv()

    api_key = os.getenv("XDM_API_KEY")
    if not api_key:
        raise RuntimeError("请先在 .env 文件中配置 XDM_API_KEY")

    agent = ResearchAgent(api_key=api_key)

    topics = [
        "Hermes Agent 的长期记忆机制",
        "Server-Sent Events 在大模型流式输出中的应用",
        "自托管 AI Agent 的安全边界与任务调度实践",
    ]

    report = agent.run(topics)
    output_path = agent.save_report(report)

    print(f"研究报告已生成:{output_path}")


if __name__ == "__main__":
    main()

如果需要将其放入 Linux Cron 中,可以增加如下任务:

0 2 * * * cd /opt/ai-agent && /usr/bin/python3 research_agent.py >> agent.log 2>&1

这表示每天凌晨 2 点执行一次研究任务,并把日志写入 agent.log


注意事项:自托管 Agent 的工程边界

1. 任务调度需要独立 Daemon

仅有 Web UI 不代表定时任务会自动运行。若要让任务按计划触发,需要确认 Hermes Gateway Daemon 或外部调度器处于运行状态。

2. 长期记忆必须可审计

Agent 会不断积累上下文,但记忆并不总是正确。建议定期检查用户画像、项目约定和技能内容,避免错误信息持续影响后续任务。

3. Provider 异常要有可观测性

模型服务可能出现额度不足、限流、连接失败等情况。日志、健康检查、失败重试和备用模型策略都应纳入工程设计。

4. 自托管不等于天然安全

即使数据运行在自有服务器,也要关注:

  • API Key 权限隔离;
  • Web UI 访问控制;
  • 任务执行沙箱;
  • 技能来源审查;
  • 外部消息通道鉴权;
  • 文件系统读写边界。

5. 不要把 Agent 当作完全自治系统

Hermes 适合处理半自动化工作流,但关键动作仍应保留人工确认,例如发送外部邮件、执行生产数据库变更、发布代码、删除文件等。


总结

Hermes Agent Web UI 的价值并不只是“给终端工具套一层界面”,而是把一个长期在线、自托管、具备记忆和任务调度能力的 Agent,转化为更接近日常工作流的工程工具。

它适合独立开发者、小团队、AI 自动化爱好者,以及希望把对话、记忆和任务数据保留在自有环境中的用户。结合统一模型接口、Cron/Gateway 调度、技能系统和可观测性能力,Hermes 可以成为一个持续进化的个人或团队 AI 操作层。

#AI #大模型 #Python #机器学习 #技术实战

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐