# Hermes-Java **Repository Path**: lc8026/hermes-java ## Basic Information - **Project Name**: Hermes-Java - **Description**: Hermes的Java版本 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2026-07-09 - **Last Updated**: 2026-08-08 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Hermes Agent Java

Java 17+ Spring Boot 3.3.6 MIT License 95% Complete

Gitee 仓库快速开始部署手册功能特性

--- ## 📖 项目简介 **Hermes Agent Java** 是 [Hermes Agent](https://github.com/NousResearch/hermes-agent) 的 Java 实现版本,基于 Spring Boot 3.x + Spring AI 构建,具备 ReAct 执行循环、分层记忆体系、技能自进化能力。 这是一个**自我改进的 AI Agent**,具有以下核心特性: - 🔄 **闭环学习** - 从经验中创建技能,在使用中改进,跨会话持久化 - 🧠 **五层记忆模型** - L1 短期工作记忆 → L2 Redis 缓存 → L3 ES 情景记忆 → L4 MySQL 持久化 → L5 程序性技能记忆 - 🎭 **人格系统** - 支持 SOUL.md 自定义人格,多人格切换 - 🌐 **跨平台连续性** - 用户在不同消息网关间切换不丢失上下文 - 🔌 **插件化架构** - Java SPI + 热加载外部 JAR - 🚀 **Spring Boot 原生** - 提供 Starter 一键集成到业务项目 --- ## ✨ 功能特性 ### 核心引擎 - ✅ ReAct 事件驱动编排引擎 - ✅ 五层记忆模型(短期工作/Redis/ES/MySQL/技能) - ✅ 技能自进化系统(任务完成后反思生成技能) - ✅ 工具注册/调度/安全守卫 - ✅ MCP 协议支持 ### LLM Provider(7 个) | Provider | 说明 | |---|---| | DashScope | 阿里通义千问 | | OpenAI Compatible | OpenAI 兼容端点 | | ZhiPu | 智谱 AI | | Ollama | 本地模型 | | **OpenRouter** | 200+ 模型聚合 | | **HuggingFace** | 开源模型推理 | | **Moonshot** | Kimi 全系列 | ### 消息网关(14 个) | 类别 | 支持平台 | |---|---| | 国际 IM | Telegram, Discord, Slack, **WhatsApp, Signal** | | 国内 IM | 钉钉, 飞书, 企业微信, 微信公众号 | | 其他 | Webhook, Email, **Home Assistant**, **ACP 协议** | ### 执行后端(5 个) | 类型 | 后端 | |---|---| | 本地 | Local 命令执行 | | 容器 | Docker 沙箱执行 | | 远程 | SSH 远程执行 | | **Serverless** | Modal, Daytona | ### 工具生态(26+ 个) - 📁 文件操作: ReadFile, WriteFile, SearchFiles, Grep - 🌐 网络工具: WebSearch, WebExtract, BrowserNavigate/Click/Screenshot - 💻 代码执行: Python, JavaScript, **Java** - 🖥️ 桌面控制: **Computer Use**(截图/点击/键盘/滚动) - 🎨 多媒体: ImageGeneration, **TTS, STT** - 🔧 系统工具: Terminal, Git, SqlQuery, Clipboard - 📊 知识管理: KnowledgeBase, Todo, DelegateTask, SessionSearch ### Agent 特性 - ✅ 人格系统(SOUL.md + personality 命令) - ✅ 上下文文件(AGENTS.md/MEMORY.md/USER.md) - ✅ RAG 知识库(ES + MySQL + 三级切分) - ✅ 跨平台对话连续性 - ✅ ACP 多 Agent 协作协议 - ✅ 轨迹压缩与训练数据导出 ### 可观测性 - ✅ Micrometer 指标监控 - ✅ AOP 自动拦截 - ✅ Actuator 健康检查 - ✅ Admin REST API ### UI 界面 - ✅ Web Dashboard(Vue 3 + Vite + Tailwind CSS) - ✅ CLI TUI(Spring Shell + 打字指示器 + 格式化输出) --- ## 🏗️ 技术架构 ``` ┌─────────────────────────────────────────────────────────────────┐ │ Hermes Agent Java │ ├─────────────────────────────────────────────────────────────────┤ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────────────┐ │ │ │ Web UI │ │ CLI TUI │ │ Gateway │ │ Admin REST API │ │ │ │ (Vue 3) │ │ (Shell) │ │ (14个) │ │ (Knife4j) │ │ │ └────┬─────┘ └────┬─────┘ └────┬─────┘ └────────┬─────────┘ │ │ │ │ │ │ │ │ └─────────────┴──────┬──────┴──────────────────┘ │ │ ▼ │ │ ┌─────────────────────────────────────────────────────────────┐│ │ │ AgentOrchestrator ││ │ │ (ReAct 编排引擎: Thought → Action → Observation 循环) ││ │ └──────────────────────────┬──────────────────────────────────┘│ │ ▼ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ LLM Service │ │ Tool System │ │ Memory Svc │ │ │ │ (7 Provider) │ │ (26+ Tools) │ │ (五层记忆) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ │ ▼ │ │ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │ │ │ RAG Service │ │ Skill System │ │ ACP Protocol │ │ │ │ (ES+MySQL) │ │ (自进化) │ │ (多Agent) │ │ │ └──────────────┘ └──────────────┘ └──────────────┘ │ ├─────────────────────────────────────────────────────────────────┤ │ 基础设施层 │ │ ┌────────┐ ┌────────┐ ┌──────────────┐ ┌────────────────────┐ │ │ │ MySQL │ │ Redis │ │ Elasticsearch│ │ Docker/Modal/SSH │ │ │ └────────┘ └────────┘ └──────────────┘ └────────────────────┘ │ └─────────────────────────────────────────────────────────────────┘ ``` --- ## 📦 模块结构 ``` hermes-agent-java/ ├── agent-common/ # 公共模块:实体、枚举、工具类 ├── agent-core/ # 核心模块:编排器、记忆、技能、工具、RAG ├── agent-executor/ # 执行模块:Local/Docker/SSH/Modal/Daytona ├── agent-gateway/ # 网关模块:14 个消息适配器 ├── agent-boot/ # 启动模块:Web 应用入口 ├── agent-cli/ # CLI 模块:命令行交互 ├── agent-web/ # 前端模块:Vue Dashboard └── hermes-agent-spring-boot-starter/ # Starter:一键集成 ``` --- ## 🚀 快速开始 ### 环境要求 | 依赖 | 版本 | |---|---| | JDK | 17+ | | Maven | 3.9+ | | MySQL | 8.0+ | | Redis | 7.0+ | | Elasticsearch | 8.x | | Node.js | 18+ (前端开发) | ### 1. 克隆项目 ```bash git clone https://gitee.com/lc8026/hermes-java.git cd hermes-java ``` ### 2. 编译项目 ```bash mvn clean install -DskipTests ``` ### 3. 启动后端 ```bash cd agent-boot mvn spring-boot:run ``` ### 4. 启动前端(可选) ```bash cd agent-web npm install npm run dev ``` 访问 `http://localhost:3000` 即可使用 Web Dashboard。 --- ## 📚 部署手册 ### 一、本地开发部署 #### 1. 数据库准备 ```sql -- 创建数据库 CREATE DATABASE hermes_agent CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 创建用户 CREATE USER 'hermes'@'localhost' IDENTIFIED BY 'hermes2024'; GRANT ALL PRIVILEGES ON hermes_agent.* TO 'hermes'@'localhost'; FLUSH PRIVILEGES; ``` 执行建表脚本: ```bash mysql -u hermes -p hermes_agent < agent-boot/src/main/resources/db/schema.sql ``` #### 2. Redis 配置 ```bash # 启动 Redis redis-server --requirepass hermes2024 --appendonly yes --maxmemory 256mb ``` #### 3. Elasticsearch 配置 ```bash # Docker 启动 ES docker run -d --name hermes-es \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e "ES_JAVA_OPTS=-Xms512m -Xmx512m" \ -e "xpack.security.enabled=false" \ docker.elastic.co/elasticsearch/elasticsearch:8.13.4 ``` #### 4. 配置文件 编辑 `agent-boot/src/main/resources/application.yml`: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/hermes_agent username: hermes password: hermes2024 data: redis: host: localhost port: 6379 password: hermes2024 elasticsearch: uris: http://localhost:9200 ai: dashscope: api-key: ${DASHSCOPE_API_KEY} hermes: admin: enabled: true ``` #### 5. 启动服务 ```bash # 方式一:Maven 启动 cd agent-boot mvn spring-boot:run # 方式二:JAR 启动 java -jar agent-boot/target/agent-boot-1.0.0-SNAPSHOT.jar # 方式三:CLI 模式 cd agent-cli mvn spring-boot:run ``` #### 6. 验证服务 ```bash # 健康检查 curl http://localhost:8080/actuator/health # API 文档 http://localhost:8080/doc.html ``` --- ### 二、Docker 部署 #### 1. 环境准备 ```bash # 克隆项目 git clone https://gitee.com/lc8026/hermes-java.git cd hermes-java # 复制环境变量模板 cp .env.example .env # 编辑 .env 填入 API Key vim .env ``` #### 2. 配置环境变量 `.env` 文件内容: ```bash # 数据库 MYSQL_ROOT_PASSWORD=hermes2024 MYSQL_DATABASE=hermes_agent MYSQL_USER=hermes MYSQL_PASSWORD=hermes2024 # Redis REDIS_PASSWORD=hermes2024 # LLM Provider(按需启用) DASHSCOPE_API_KEY=sk-xxx OPENROUTER_API_KEY=sk-or-xxx HUGGINGFACE_API_KEY=hf_xxx MOONSHOT_API_KEY=sk-xxx # 语音能力(可选) TTS_ENABLED=false TTS_API_URL=https://api.openai.com/v1/audio/speech TTS_API_KEY=sk-xxx STT_ENABLED=false STT_API_URL=https://api.openai.com/v1/audio/transcriptions STTS_API_KEY=sk-xxx # Serverless(可选) MODAL_ENABLED=false MODAL_API_KEY=ak-xxx DAYTONA_ENABLED=false DAYTONA_API_KEY=dp-xxx DAYTONA_WORKSPACE_ID=xxx # Admin ADMIN_API_KEY=hermes-admin-key-2024 ``` #### 3. 一键启动 ```bash # 构建并启动所有服务 docker compose up -d # 查看日志 docker compose logs -f app # 查看服务状态 docker compose ps ``` #### 4. 服务访问 | 服务 | 地址 | |---|---| | Agent API | http://localhost:8080 | | Admin API | http://localhost:8080/api/admin | | API 文档 | http://localhost:8080/doc.html | | MySQL | localhost:3306 | | Redis | localhost:6379 | | Elasticsearch | localhost:9200 | #### 5. 常用命令 ```bash # 停止服务 docker compose down # 重新构建 docker compose up -d --build # 查看特定服务日志 docker compose logs -f mysql docker compose logs -f redis # 进入容器 docker exec -it hermes-agent bash # 清理数据卷(慎用) docker compose down -v ``` --- ### 三、云端部署(生产环境) #### 方案一:云服务器部署 **推荐配置**: | 配置项 | 最低配置 | 推荐配置 | |---|---|---| | CPU | 2 核 | 4 核+ | | 内存 | 4 GB | 8 GB+ | | 磁盘 | 40 GB SSD | 100 GB SSD | | 带宽 | 2 Mbps | 5 Mbps+ | **部署步骤**: ```bash # 1. 安装 Docker curl -fsSL https://get.docker.com | sh systemctl enable docker --now # 2. 安装 Docker Compose curl -L "https://github.com/docker/compose/releases/download/v2.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose chmod +x /usr/local/bin/docker-compose # 3. 克隆项目 git clone https://gitee.com/lc8026/hermes-java.git cd hermes-java # 4. 配置环境变量 cp .env.example .env vim .env # 填入真实配置 # 5. 启动服务 docker compose up -d # 6. 配置防火墙(开放端口) firewall-cmd --permanent --add-port=8080/tcp firewall-cmd --reload ``` #### 方案二:Kubernetes 部署 **1. 创建命名空间** ```yaml # namespace.yaml apiVersion: v1 kind: Namespace metadata: name: hermes-agent ``` **2. 创建 Secret** ```yaml # secret.yaml apiVersion: v1 kind: Secret metadata: name: hermes-secret namespace: hermes-agent type: Opaque stringData: MYSQL_PASSWORD: "hermes2024" REDIS_PASSWORD: "hermes2024" DASHSCOPE_API_KEY: "sk-xxx" ADMIN_API_KEY: "hermes-admin-key-2024" ``` **3. 部署 MySQL** ```yaml # mysql.yaml apiVersion: apps/v1 kind: StatefulSet metadata: name: mysql namespace: hermes-agent spec: serviceName: mysql replicas: 1 selector: matchLabels: app: mysql template: metadata: labels: app: mysql spec: containers: - name: mysql image: mysql:8.0 env: - name: MYSQL_ROOT_PASSWORD valueFrom: secretKeyRef: name: hermes-secret key: MYSQL_PASSWORD - name: MYSQL_DATABASE value: "hermes_agent" ports: - containerPort: 3306 volumeMounts: - name: mysql-data mountPath: /var/lib/mysql volumeClaimTemplates: - metadata: name: mysql-data spec: accessModes: ["ReadWriteOnce"] resources: requests: storage: 10Gi --- apiVersion: v1 kind: Service metadata: name: mysql namespace: hermes-agent spec: ports: - port: 3306 selector: app: mysql ``` **4. 部署应用** ```yaml # app.yaml apiVersion: apps/v1 kind: Deployment metadata: name: hermes-agent namespace: hermes-agent spec: replicas: 2 selector: matchLabels: app: hermes-agent template: metadata: labels: app: hermes-agent spec: containers: - name: app image: hermes-agent:latest ports: - containerPort: 8080 env: - name: SPRING_DATASOURCE_URL value: "jdbc:mysql://mysql:3306/hermes_agent" - name: SPRING_DATASOURCE_PASSWORD valueFrom: secretKeyRef: name: hermes-secret key: MYSQL_PASSWORD - name: DASHSCOPE_API_KEY valueFrom: secretKeyRef: name: hermes-secret key: DASHSCOPE_API_KEY resources: requests: memory: "512Mi" cpu: "500m" limits: memory: "1Gi" cpu: "1000m" --- apiVersion: v1 kind: Service metadata: name: hermes-agent namespace: hermes-agent spec: type: LoadBalancer ports: - port: 80 targetPort: 8080 selector: app: hermes-agent ``` **5. 部署命令** ```bash kubectl apply -f namespace.yaml kubectl apply -f secret.yaml kubectl apply -f mysql.yaml kubectl apply -f app.yaml # 查看状态 kubectl get pods -n hermes-agent kubectl get svc -n hermes-agent ``` #### 方案三:云平台托管 **阿里云 ECS 部署**: 1. 购买 ECS 实例(推荐:2 核 4G,CentOS 7.9) 2. 安全组开放 8080 端口 3. SSH 登录实例 4. 执行 Docker 部署流程 **腾讯云轻量应用服务器**: ```bash # 使用 Docker 应用镜像 # 直接在控制台配置环境变量 ``` --- ## ⚙️ 配置说明 ### 核心配置项 | 配置项 | 说明 | 默认值 | |---|---|---| | `spring.ai.dashscope.api-key` | 通义千问 API Key | - | | `spring.ai.openrouter.api-key` | OpenRouter API Key | - | | `hermes.admin.enabled` | 启用 Admin API | true | | `hermes.admin.api-key` | Admin API 密钥 | - | | `hermes.personality.enabled` | 启用人格系统 | true | | `hermes.executor.type` | 执行后端类型 | LOCAL | ### 消息网关配置 ```yaml hermes: adapter: telegram: enabled: true bot-token: ${TELEGRAM_BOT_TOKEN} discord: enabled: false bot-token: ${DISCORD_BOT_TOKEN} whatsapp: enabled: false email: enabled: false ``` ### 执行器配置 ```yaml hermes: executor: type: LOCAL docker: enabled: true image: hermes-agent:latest modal: enabled: false api-key: ${MODAL_API_KEY} ``` --- ## 📖 API 文档 启动服务后访问:`http://localhost:8080/doc.html` ### 核心 API | 接口 | 方法 | 说明 | |---|---|---| | `/api/chat` | POST | 对话接口 | | `/api/admin/stats` | GET | 获取统计信息 | | `/api/admin/tools` | GET | 工具列表 | | `/api/admin/models` | GET | 模型列表 | | `/api/admin/sessions` | GET | 会话列表 | | `/api/rag/knowledge` | POST | 添加知识 | | `/api/rag/search` | GET | 搜索知识 | ### 对话示例 ```bash curl -X POST http://localhost:8080/api/chat \ -H "Content-Type: application/json" \ -d '{ "sessionId": null, "userId": "user-001", "message": "你好" }' ``` --- ## 🔧 开发指南 ### 新增工具 ```java @Component public class MyTool implements Tool { @Override public String getName() { return "my_tool"; } @Override public String getDescription() { return "My custom tool"; } @Override public ToolResult execute(ToolContext context) { // 实现逻辑 return ToolResult.success("Done"); } } ``` ### 新增 LLM Provider ```java @Component @ConditionalOnProperty(name = "spring.ai.my-provider.api-key") public class MyProvider extends AbstractOpenAICompatibleProvider { @Value("${spring.ai.my-provider.api-key}") private String apiKey; @Override public String getProviderId() { return "my-provider"; } @Override protected String getApiKey() { return apiKey; } } ``` ### 使用 Starter 集成 ```java @SpringBootApplication @EnableHermesAgent public class MyApp { @Autowired private HermesAgentTemplate agent; public void chat() { String response = agent.chat("你好"); } } ``` --- ## 📊 性能调优 ### JVM 参数 ```bash java -Xms512m -Xmx2048m \ -XX:+UseG1GC \ -XX:MaxGCPauseMillis=200 \ -XX:+HeapDumpOnOutOfMemoryError \ -jar agent-boot.jar ``` ### MySQL 调优 ```sql -- 连接数 SET GLOBAL max_connections = 500; -- 缓冲池 SET GLOBAL innodb_buffer_pool_size = 1073741824; -- 1GB ``` ### Redis 调优 ```bash redis-server \ --maxmemory 512mb \ --maxmemory-policy allkeys-lru \ --save 60 1000 ``` --- ## 🔒 安全建议 1. **修改默认密码** - 生产环境务必修改 MySQL/Redis/Admin 密码 2. **启用 HTTPS** - 使用 Nginx 反向代理配置 SSL 3. **限制 Admin 访问** - 仅允许内网访问 Admin API 4. **API Key 加密** - 使用 Jasypt 加密配置文件中的敏感信息 5. **定期备份** - MySQL 数据和 Redis 数据定期备份 --- ## 📝 更新日志 ### v1.0.0 (2024-07-14) **新增功能**: - ✅ 新增 3 个 LLM Provider(OpenRouter/HuggingFace/Moonshot) - ✅ 新增 4 个消息网关适配器(WhatsApp/Email/Signal/HomeAssistant) - ✅ 新增 TTS 语音合成和 STT 语音转录工具 - ✅ 新增 Serverless 执行后端(Modal/Daytona) - ✅ 实现人格系统(SOUL.md)和上下文文件系统 - ✅ 实现跨平台对话连续性和 ACP 协议 - ✅ 实现轨迹压缩与训练数据导出 - ✅ 新增 Web UI Dashboard(Vue + Vite) - ✅ 增强 CLI TUI(打字指示器/格式化输出) - ✅ 新增 Spring Boot Starter 模块 - ✅ 新增 RAG 知识库集成 - ✅ 新增 Micrometer 指标监控 **功能完成度**:~95% --- ## 🤝 贡献指南 欢迎提交 Issue 和 Pull Request! 1. Fork 项目 2. 创建分支 (`git checkout -b feature/AmazingFeature`) 3. 提交更改 (`git commit -m 'Add some AmazingFeature'`) 4. 推送分支 (`git push origin feature/AmazingFeature`) 5. 提交 Pull Request --- ## 📄 License [MIT License](LICENSE) --- ## 🙏 致谢 - [Hermes Agent](https://github.com/NousResearch/hermes-agent) - 官方 Python 版本 - [Spring Boot](https://spring.io/projects/spring-boot) - 基础框架 - [Spring AI](https://spring.io/projects/spring-ai) - AI 集成框架 ---

Made with ❤️ by Hermes Agent Team