Skip to content

Hermes 运维笔记

基于 WSL 生产环境实际运行经验 最新更新: 2026-06-08


核心结论

  1. systemd 自启是稳定运行的基石,否则 WSL 重启必漏 cron
  2. MCP 服务器是核心基础设施,出问题先查进程是否存活
  3. cron script 只能用 .py,这是硬约束
  4. 三平台中只有飞书支持群聊,QQ/微信只能私聊

一、环境速览

项目详情
运行环境WSL Ubuntu(NAT 模式)
配置路径~/.hermes/config.yaml
环境变量~/.hermes/.env
日志目录~/.hermes/logs/
当前模型deepseek-v4-pro
当前 Gateway PID158(systemd 管理)

二、Gateway 管理

服务状态

bash
systemctl status hermes.service
# Active: active (running)
# Main PID: 158
# Tasks: 108
# Memory: ~983MB

服务配置

/etc/systemd/system/hermes.service
  → enabled(WSL 重启自动拉起)
  → Restart=on-failure

关键日志

日志文件内容大小
gateway.log平台连接/消息路由/cron 触发~150KB
agent.logLLM 调用/工具执行/会话~3.8MB
errors.log错误栈+429/401 等 API 错误~1.9MB
mcp-stderr.logMCP 服务器 stderr需定期清理
gateway-exit-diag.log启动/退出诊断(JSON)~16KB
update.log版本更新日志-

手动重启

bash
systemctl restart hermes.service
# 或 wsl 内: hermes gateway

三、MCP 服务器管理

当前运行的 MCP(6个)

服务器命令用途
filesystemnpx @modelcontextprotocol/server-filesystem /root /tmp文件操作
memorynpx @modelcontextprotocol/server-memory知识图谱记忆
puppeteernpx @modelcontextprotocol/server-puppeteer浏览器自动化
sqliteuvx mcp-server-sqliteSQLite 数据操作
timeuvx mcp-server-time时间转换/时区
rss-feedsnpx rss-feeds-mcpRSS 订阅管理

排查流程

MCP 工具报错
→ 查进程: ps aux | grep mcp
→ 查 stderr: tail ~/.hermes/logs/mcp-stderr.log
→ 查 config: grep -A10 'server_name' ~/.hermes/config.yaml

历史教训

  • free-web-search MCP 一直装不上(ModuleNotFoundError),已从配置删除
  • Puppeteer 偶尔连接失败,通常重试后自动恢复
  • MCP stderr 日志不会自动清理,手动 truncate --size=0

四、平台接入状态

平台状态群聊说明
QQ Bot生成式 markdown Bot 不能进群
飞书WebSocket 长连接,bot 名"自用"
微信iLink Bot 身份不能进微信群

QQ Bot 配置

  • App ID: 1903242713
  • 用户 OpenID: 5376F30176A62CF4505BD3C099FC35B9
  • dm_policy: open, group_policy: open(虽配但无效)
  • markdown_support: true

飞书配置

  • App ID: cli_a925c130d6791bc9
  • 用户: 龍傑
  • 模式: WebSocket 长连接

微信配置

  • 账号: 034e336c(iLink bot)
  • Home channel: o9cq800FohdS_Lq2R8qws8kxHMYg@im.wechat

五、Cron 定时任务

硬约束

script 字段只能用 .py 文件!

原因:Hermes 内部用 sys.executable(Python 解释器)执行所有 cron script,.sh 会被当成 Python 代码执行导致 SyntaxError。

当前任务

任务脚本计划状态
📕 小红书AI日报random_delay_publish.py19:00⏸️ 暂停
📰 每日时政新闻politics-news-search.py23:00
🤖 每日AI新闻ai-news-search.py23:00
🎉 每日趣味新闻fun-news-search.py23:00

Cron 脚本 Python 环境

由 Hermes venv 的 Python 执行:

/root/.hermes/hermes-agent/venv/bin/python3 (3.11.15)

装依赖的正确方式:

bash
/root/.hermes/hermes-agent/venv/bin/python3 -m ensurepip --upgrade
/root/.hermes/hermes-agent/venv/bin/pip3 install <package>

❌ 不要用 pip --target,会导致 C 扩展(如 lxml)安装不完整。

自愈机制

每次会话开始时,检查 cron 漏跑情况并自动补跑。


六、联网与代理

网络拓扑

Windows 主机 (WLAN: 10.129.37.118)
  ├── Clash 代理: 127.0.0.1:7890
  └── WSL (NAT 模式)
        ├── 网关: 172.21.112.1(动态获取)
        └── 代理: http://172.21.112.1:7890

代理自动配置

~/.bashrc 末尾动态代理脚本:

bash
HOST_IP=$(ip route show default | awk '/default/ {print $3}')
export http_proxy="http://${HOST_IP}:7890"
export https_proxy="http://${HOST_IP}:7890"

这样 WSL 重启后 IP 变化也无需手动干预。


七、SSH 远程服务器管理

工具链

使用 sshpass 免交互 SSH 登录:

bash
sshpass -p 'password' ssh -o StrictHostKeyChecking=no user@host 'command'

已接入服务器

主机IP系统用户密码
hadoop105192.168.10.105CentOS 7longwylj99

家目录: /home/long,含 .jenkins/、.sdkman/、xlab-website/

监控命令模板

bash
sshpass -p 'xxx' ssh user@host '
  tail -30 /var/log/messages
  dmesg | tail -30
  tail -15 /var/log/secure
  df -h / && free -h && uptime
'

八、小红书自动发布流水线

架构

cron 触发 → pipeline.py --max=2
  → 新闻采集(RSS + 搜索)
  → GLM-4-Flash AI改写
  → CogView 封面生成
  → 小红书 Docker 容器发布

Docker 容器

bash
cd /root/content-matrix && docker compose up -d
项目
端口18060
共享内存--shm-size=512m
Cookie 持久化目录挂载 + entrypoint 复制
封面格式JPEG,文件名必须 ASCII

九、文档/表格集成

腾讯文档 API

项目
client_id4840dde30f2949a08c7761567f5a7737
open_idd97d8a7af2cf4b30a60326b6b75b17cc
凭证文件/tmp/qqdoc_creds.json(30天过期)
写入 APIPOST /openapi/spreadsheet/v3/files/{id}/batchUpdate
测试表格300000000$BAujLqDmgqau(加班考勤测试)

写入格式:

json
{
  "requests": [{
    "updateRange": {
      "range": {"sheetId": "xxx"},
      "data": [{"cellValue": {"text": "内容"}, "dataType": "DATA_TYPE_UNSPECIFIED"}]
    }
  }]
}

Headers: Access-Token + Client-Id + Open-Id

飞书表格(全自动备选)

已接通,无需 OAuth 浏览器授权,适合完全自动化场景。


十、记忆系统

三层架构

存储用途
短期会话上下文当前对话
中期Memory entries环境事实/偏好/约定
长期Session search (FTS5)跨会话历史检索

记忆写入原则

  • 用户偏好与纠正 > 环境事实 > 操作流程
  • 7天内会过期的信息不要写入
  • 记忆上限 10,000 字符,占比 ~50%

十一、常用排查命令

bash
# Gateway 状态
systemctl status hermes
ps aux | grep hermes | grep -v grep

# Cron 任务
hermes cron list

# MCP 进程
ps aux | grep mcp

# 日志
tail -f ~/.hermes/logs/gateway.log
tail -50 ~/.hermes/logs/errors.log

# Docker 容器
docker ps --filter name=xiaohongshu

十二、常见问题

问题根因解决
WSL 重启后 cron 不漏systemd 服务未 enbalesystemctl enable hermes
Cron bash 脚本报 SyntaxErrorHermes 用 Python 执行所有脚本改用 .py
QQ/微信不能收群消息平台限制,非配置问题改用飞书群
pip install 后 ImportError用 pip --target 导致 C 扩展缺失用 venv pip install
free-web-search 启动失败依赖未装已从配置删除
Gateway 平台连不上账户 ID 冲突(PID 占用)先停旧进程

基于 VitePress 构建