部署Hermes-Agent和SenseNova-Skills

一、部署Hermes

1、拉取镜像并进行基础配置。

sudo docker pull nousresearch/hermes-agent:latest

mkdir -p ~/.hermes

#首次可选默认值。后面可以多次执行,重新配置模型、技能、机器人等。 sudo docker run
-it --rm -v ~/.hermes:/opt/data nousresearch/hermes-agent:latest setup

2、配置用户和密钥。

sudo docker run --rm -it nousresearch/hermes-agent python3 -c "from plugins.dashboard_auth.basic import hash_password; print(hash_password('admin123'))"

生成hash值后,复制这一段:scrypt$16384$8$1$cPg8V1rWeWrYQc/gzi/3Zw==$k2xxM2EeE7HO35NR3A+dA/Es1cWm6MCuZY7kmgz9dj8=

 打开~/.hermes/config.yaml,配置用户和密码。 

sudo vi ~/.hermes/config.yaml

 图片

3、新建docker-compose.yml

services:
  gateway:
    image: nousresearch/hermes-agent:latest
    container_name: hermes
    restart: unless-stopped
    command: gateway run
    user: "10000:0"
    ports:
      - "8642:8642"
    volumes:
      - ~/.hermes:/opt/data
    deploy:
      resources:
        limits:
          memory: 4G
          cpus: "2.0"

  dashboard:
    image: nousresearch/hermes-agent:latest
    container_name: hermes-dashboard
    restart: unless-stopped
    command: dashboard --host 0.0.0.0
    user: "10000:0"
    ports:
      - "9119:9119"
    volumes:
      - ~/.hermes:/opt/data  
    environment:
      - GATEWAY_HEALTH_URL=http://192.168.10.24:8642
    depends_on:
      - gateway
    deploy:
      resources:
        limits:
          memory: 512M
          cpus: "0.5"

4、启动容器

sudo docker-compose up -d

5、浏览器访问: http://ip:9119 。账户:admin 密码:admin123

图片

 

 二、安装SenseNova-Skills

1、自动安装。在对话框里输入:请从 https://github.com/OpenSenseNova/SenseNova-Skills 安装 SenseNova-Skills 到你的技能目录。

图片

 

 2、如果自动安装不成功,可选择手动安装。

git clone https://github.com/OpenSenseNova/SenseNova-Skills.git

cp -r SenseNova-Skills/skills/* ~/.hermes/skills/

 三、创建机器人入口。进入hermes容器后,设置网关,然后按提示一步一步扫码配对。

docker exec -it hermes bash

hermes gateway setup         #设置网关
hermes gateway status #查看网关状态

hermes pairing list #查看配对情况

 

图片

 

四、开启API Server并实现调用

1、修改.hermes/.env文件,在末尾增加以下内容,然后重启容器。

API_SERVER_ENABLED=true
API_SERVER_KEY=68u5m3lXuf2cJCUk84UPqdzeGZtYhXHR
API_SERVER_MODEL_NAME=hermes-agent
API_SERVER_HOST=0.0.0.0

2、调用测试代码,以python为例。

import requests
import json

# ============ 配置 ============
API_BASE_URL = "http://192.168.10.24:8642/v1"  # Hermes API Server 地址
API_KEY = "68u5m3lXuf2cJCUk84UPqdzeGZtYhXHR"


# ============ 流式调用 ============
def chat_completion_stream():
    """流式调用 - 实时接收增量响应"""
    url = f"{API_BASE_URL}/chat/completions"

    headers = {
        "Authorization": f"Bearer {API_KEY}",
        "Content-Type": "application/json",
    }

    payload = {
        "model": "hermes-agent",
        "messages": [
            {"role": "system", "content": "你是一个数据分析师。"},
            {"role": "user", "content": "从/opt/data/workspace目录中读取'部门日志报表.xlsx'和'模板.docx'文件,分析日志报告分析,仿照模板,写一份新的工作总结。"}
        ],
        "stream": True,  # 启用流式传输[reference:3]
    }

    # 分析时间可能很长,等待时间最长为1天(86400秒)
    response = requests.post(url, headers=headers, json=payload, stream=True, timeout=86400)

    if response.status_code == 200:
        print("=== 流式响应 ===")
        for line in response.iter_lines():
            if line:
                # 移除 "data: " 前缀
                line_str = line.decode("utf-8")
                if line_str.startswith("data: "):
                    data_str = line_str[6:]
                    if data_str == "[DONE]":
                        break
                    try:
                        chunk = json.loads(data_str)
                        # 提取增量内容
                        delta = chunk.get("choices", [{}])[0].get("delta", {})
                        content = delta.get("content", "")
                        if content:
                            print(content, end="", flush=True)
                    except json.JSONDecodeError:
                        pass
        print("\n")  # 换行
    else:
        print(f"请求失败: {response.status_code}")
        print(response.text)


# ============ 主程序 ============
if __name__ == "__main__":
    # 运行示例
    chat_completion_stream()
    print("\n" + "=" * 50 + "\n")

 

posted @ 2026-06-24 16:38  松山居士  阅读(12)  评论(0)    收藏  举报