部署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")

浙公网安备 33010602011771号