Hermes Agent 安装

Nous Research 出的 AI Agent CLI;本机用作 Prism 主体(Discord + WeChat + CLI)。 这页记录安装方式、踩过的坑和模型配置。

安装方式

一行脚本:

curl -fsSL https://raw.githubusercontent.com/NousResearch/hermes-agent/main/scripts/install.sh | bash

安装路径:~/.hermes/hermes-agent/hermes update 可原地升级;hermes setup 进交互向导。

部署机器

机器版本说明
Restry 主机v0.8.0+Prism 身份,Discord + WeChat + CLI 三端
Ottor(04-13)v0.8.0Discord Bot Ottor#1161,systemd 用户服务
Fires(04-14)v0.9.0/Users/leway/Projects/hermes-agent,Python 3.11 venv

Discord Gateway 配置(Ottor)

  • 需开启 Privileged Gateway Intents(Presence、Server Members、Message Content)
  • 环境变量 DISCORD_BOT_TOKEN不是 DISCORD_TOKEN
  • 必须设 DISCORD_ALLOWED_USERS 白名单
  • Slash command 上限 100,超出技能不注册不影响使用

Discord Auto-Thread(04-19)

Hermes 收到 @bot 自动开 thread(discord.py:2826),便于隔离归档。 不建子区的 4 种情况: DISCORD_AUTO_THREAD=false / 频道在 DISCORD_NO_THREAD_CHANNELS / 语音关联频道 / 触发消息是 reply 类型。 归档时长 auto_archive_duration=1440(24h 无活动),找回入口:频道 🧵 → “归档的帖子”。

WeChat 接入(04-12)

通过 iLink Bot API(域名 ilinkai.weixin.qq.com)接入个人微信号:

  1. hermes update 升级到支持 weixin 平台的版本
  2. hermes platform add weixin 启动配置
  3. 扫描终端打印的二维码登录个人微信
  4. 长轮询收发消息,支持文字/图片/文件/语音,长消息自动拆气泡

文档:https://hermes-agent.nousresearch.com/docs/user-guide/messaging/weixin

⚠️ 教训:早期回答时怀疑此 API 不存在并误导用户。事实是 Hermes 代码库里就有 weixin.py 适配器,扫码后能正常收到群消息确认。遇到陌生平台先查 repo 再下结论

模型配置

当前激活模型

model: claude-opus-4.6
provider: copilot
base_url: https://api.githubcopilot.com
api_mode: chat_completions
summary_model: gpt-4o-mini

认证用 .env 里的 COPILOT_GITHUB_TOKENgho_* OAuth token),Hermes 内置的 copilot provider 自动做 token exchange + 加请求头。

Copilot 企业端点 + Opus 4.6 1M

  • 个人 Copilot 不支持 claude-opus-4.6 等高级模型
  • 企业端点:https://api.enterprise.githubcopilot.com
  • 内部通过 copilot_internal/v2/token 交换企业 token;Hermes 未内置该流程,需手动指定 base_url
  • Opus 4.6 有两个变体:claude-opus-4.6 (200K) 与 claude-opus-4.6-1m (1M, internal-only)
  • 详见 copilot-anthropic-proxy 的 model remap 与 model-provider-config 的 Hermes 上下文 bug

summary_model 误配 → 400(04-13 修复)

summary_model: github-copilot/gemini-3-flash-preview 是不存在的模型,导致每次上下文压缩报:

Error 400: model_not_supported

修复:改为 gpt-4o-mini。日志里”老的 12 点报错”全部来自此条配置,与 vision 超时无关。

SOUL.md 清理(04-13)

迁移自 OpenClaw 后 SOUL.md(系统 prompt)残留 B2P Hackathon PM 角色 + Prism 五代理设定。问题:

  • 持久身份”Prism 🔮 / B2P Hackathon AI 中枢”
  • “5 个常驻代理”(prism-arch/data/ui/docs/backend)—— Hackathon 已结束,实际不跑
  • “2周冲刺”过期项

清理动作:

  • ~/.hermes/SOUL.md 从 3315 字节精简到 538 字节
  • 仅保留:身份(Prism,通用 AI 助手)、沟通风格、铁律
  • 去掉 Hackathon 频道(prism-general/dev/standup)和”常驻 Agent”概念
  • 同步精简内存里重复的时区条目和 OpenClaw 迁移条目

SOUL.md 是磁盘文件不是 memory,agent 改不动 memory 段时仍可直接 patch SOUL.md。改完下个 session 自动加载。

Hermes 三种代理方式

方式用途持久性
delegate_task临时派子代理单次任务
delegate_task(acp_command="claude")调 Claude Code 编码单次(可 --resume
delegate_task(acp_command="codex")调 OpenAI Codex单次

最多 3 个并行任务。所谓”常驻代理”在 Hermes 里就是 SOUL.md 的人设描述,不是真进程。详见 multi-agent-architecture

Claude Code 调用注意(04-13 教训)

  1. stdin 卡死claude -p "..."--resume 模式下可能卡住读 stdin,必须 < /dev/null
  2. --max-turns 上限 — 默认 20 容易 error_max_turns,Hermes 调用建议 ≥80
  3. session_id 提取 — 任务跑完才能从 JSON 输出里拿到 session_id,长任务期间无法预先记住
  4. 同目录并发 — 两个 Opus 同时改同一目录文件会冲突
  5. 死循环风险 — 用 Claude Code → Copilot Proxy 改 Copilot Proxy 自己的代码,磁盘改了但内存里还跑旧版(systemd 进程未 restart 反而救了一命)
  6. notify_on_complete 不可靠 — 长跑(≥1h)任务通知可能丢,要主动 poll
  7. 长 prompt + < /dev/null 卡 stdin — 04-16 观察到:用 claude -p "...长 prompt..." < /dev/null 启动的后台进程可能在 0 输出情况下被 SIGTERM(exit 143)而一行未改;改用 heredoc pipe(cat <<'EOF' | claude -p ... EOF)可稳定启动
  8. 默认模型与 effort(04-16 起):~/.claude/ 默认配置 claude-opus-4-6 + reasoning_effort: high;opus-4.7 上游只接受 medium,此处不要改到 4.7 高 effort

相关页面