MIT License

项目介绍

AaronWong1999/hermesclaw 是一个托管在 GitHub 上的开源项目,主要使用 Python 编写,采用 MIT License 许可证,目前获得 758 个 Star、81 次 Fork。

仓库全名
AaronWong1999/hermesclaw
开源许可证
MIT License
Star 数
758
Fork 数
81
未关闭 Issue
4

README 摘要

HermesClaw Run Hermes Agent, OpenClaw, and OpenCode on the same WeChat account. One command to install. 在同一个微信账号上同时多开 Hermes Agent、OpenClaw 和 OpenCode。一条命令安装。 New from the same author: ccx — hit your Claude Code limit, or stuck on a bug? Hand the task to Codex with the full context, then switch back. One click in the macOS menu bar, runs locally, free and open source. HermesClaw keeps working as before. If ccx looks…

完整内容见 GitHub 原始 README 或本页 。

常见问题

hermesclaw 用什么语言开发?

主要使用 Python 编写,采用 MIT License 许可证,目前有 758 个 Star。

hermesclaw 可以免费商用吗?

仓库采用 MIT License 许可证,可免费使用与修改,商业使用请遵守许可证条款(例如保留版权声明与许可声明)。

如何获取 hermesclaw 的源码?

可以直接克隆仓库:git clone https://github.com/AaronWong1999/hermesclaw.git,默认分支为 main;安装与运行步骤见仓库 README。

hermesclaw 最近还在维护吗?

仓库最近一次更新为 2 周前,当前有 4 个未关闭 Issue;Star 数为 758,可作为社区活跃度的参考。

关于

Run Hermes Agent and OpenClaw on the same WeChat account

描述取自 GitHub 官方 API,中文内容由 GitRead 中文社区 编辑团队整理。

简要分析

热度分
922
价值分
479
活跃状态
活跃

语言占比

Python
Shell

贡献者

README

HermesClaw

Run Hermes Agent, OpenClaw, and OpenCode on the same WeChat account. One command to install.

在同一个微信账号上同时多开 Hermes Agent、OpenClaw 和 OpenCode。一条命令安装。

New from the same author: ccx — hit your Claude Code limit, or stuck on a bug? Hand the task to Codex with the full context, then switch back. One click in the macOS menu bar, runs locally, free and open source. HermesClaw keeps working as before. If ccx looks useful to you, a star there would mean a lot.

同一作者的新项目:ccx —— Claude Code 额度用完了,或者卡在某个问题上?带着完整上下文交给 Codex 接着干,搞定再切回来。macOS 菜单栏一键切换,本地运行,免费开源。HermesClaw 照常可用,不受影响。如果你觉得 ccx 有用,欢迎去看看、点个 Star。

MIT License

HermesClaw — One WeChat bot. Two AI brains. /hermes, /openclaw, /both.

One iLink account. Three AI brains. Switch with /hermes, /openclaw, /opencode, /both, /three.
一个 iLink 账号,三个 AI 大脑。/hermes、/openclaw、/opencode、/both、/three 一句话切换。


Why HermesClaw

Both Hermes Agent and OpenClaw now support WeChat natively — but you can’t run both on the same account. Each gateway exclusively locks the iLink connection. If you start both, one gets 403 errors and drops messages. OpenCode adds a third AI brain via its ACP subprocess protocol.

HermesClaw solves this by becoming the sole iLink poller, then running two local proxy servers (for Hermes and OpenClaw) plus a direct ACP bridge (for OpenCode). Each gateway believes it’s talking to the real iLink API.

The new OpenCode support also lets you Vibe Code via WeChat voice messages — just speak and OpenCode handles it, backed by four free models including MiniMax M2.5 Free. You can also use it alongside the other two agents to complement each other — fixing their issues, tracing bugs, or inspecting the local environment.

现在 Hermes 和 OpenClaw 都原生支持微信了——但你不能在同一个账号上双开。 每个 Gateway 会独占 iLink 连接。HermesClaw 解决这个问题:它作为唯一的 iLink 轮询者,运行两个本地代理,让两个 Gateway 各连各的。

新版还增加了 OpenCode 支持,现在你可以用微信语音直接进行 Vibe Coding 了,调用的就是 OpenCode 中包含 MiniMax M2.5 Free 在内的四个免费模型。你也可以用它和另外两个 Agent 互相补充使用,比如帮它们修问题、查 bug、看本机环境。


Special Thanks

Special thanks to the Hermes Agent team at Nous Research for recognizing and recommending HermesClaw in the Community section of their official GitHub README.

特别感谢 Nous Research 的 Hermes Agent 团队,在其 GitHub 官方 README 的 Community 区收录并推荐 HermesClaw。

Hermes Agent README Community section highlighting HermesClaw

Official reference: Hermes Agent README - Community


Before / After

Without HermesClaw With HermesClaw
Hermes on WeChat ✅ Works (native gateway) ✅ Works
OpenClaw on WeChat ✅ Works (clawbot) ✅ Works
OpenCode on WeChat ❌ No WeChat support ✅ via ACP bridge
Both on same account ❌ Token conflict / 403 ✅ /both mode
All three on same account ❌ Impossible ✅ /three mode
Voice messages ✅ Each handles natively ✅ Transcription forwarded
Images / video / files ✅ Each handles natively ✅ Raw iLink msg forwarded
Switching agents — /hermes, /openclaw, /opencode, /both, /three

Architecture

                    ┌────────── iLink API ──────────┐
                    │  ilinkai.weixin.qq.com        │
                    └──────────┬────────────────────┘
                               │
                      (sole poller / token owner)
                               │
                    ┌──────────▼────────────────────┐
                    │     HermesClaw v3              │
                    │  routes by /hermes /openclaw   │
                    │          /opencode /three      │
                    │  queues raw iLink messages     │
                    ├────────┬──────────┬────────────┤
                    │        │          │
              Proxy A      Proxy B    ACP Bridge
              (:19999)     (:19998)   (subprocess)
              openclaw     hermes     opencode acp
                    │        │          │
                    ▼        ▼          ▼
              ┌──────────┐ ┌──────────┐ ┌──────────┐
              │ openclaw │ │ hermes   │ │ opencode │
              │ gateway  │ │ gateway  │ │ process  │
              └────┬─────┘ └────┬─────┘ └────┬─────┘
                   │            │             │
              sendmessage  sendmessage   send_text_ilink
                   └─────┬──────┘            │
                         │ (proxy forwards)  │
                         └──────────────────►┘
                                to iLink

HermesClaw is a thin Python proxy (~500 lines). It does not process media, call agent APIs, or touch agent memory. It just queues and forwards raw iLink protocol messages. Each gateway handles its own media decryption, markdown formatting, and AI interaction natively.

HermesClaw 只是一个轻量转发代理(~500 行),不处理媒体、不调 Agent API、不动记忆。每个 Gateway 原生处理自己的媒体解密和 AI 交互。


Prerequisites

Before installing HermesClaw, you need at least one of:

  1. OpenClaw + clawbot (openclaw-weixin) — installed and logged into WeChat
  2. Hermes Agent + WeChat gateway — installed with hermes gateway configured

Both installed = full dual-open. One installed = single-agent mode with the option to add the other later.

安装 HermesClaw 前,需要至少安装以下其中一个:OpenClaw 的 clawbot,或者 Hermes 的微信 Gateway。


Quick Install

curl -fsSL https://raw.githubusercontent.com/AaronWong1999/hermesclaw/main/install.sh | bash

For non-interactive / automated installs (skips all confirmation prompts):

curl -fsSL https://raw.githubusercontent.com/AaronWong1999/hermesclaw/main/install.sh | HERMESCLAW_YES=1 bash
# or, when running the script directly:
bash install.sh -y

The installer will:

  1. Detect which gateways are installed and configured
  2. Extract the iLink token from gateway account files
  3. Patch openclaw-weixin baseUrl → http://127.0.0.1:19999 (proxy A)
  4. Patch Hermes WEIXIN_BASE_URL → http://127.0.0.1:19998 (proxy B)
  5. Detect OpenCode CLI (optional — enables /opencode and /three)
  6. Install Python deps (requests, python-dotenv)
  7. Create OpenClaw media symlink (workaround for media path mismatch)
  8. Set up the hermesclaw systemd service

After install, restart your gateways and send /whoami in WeChat.

AI-assisted install

Drop this into any AI agent on the target machine:

Run: curl -fsSL https://raw.githubusercontent.com/AaronWong1999/hermesclaw/main/install.sh | bash

Then read README.md and install.sh from the installed HermesClaw directory.
Detect whether Hermes Agent, OpenClaw, their WeChat gateways, python3, pip3,
and systemd are present.  At least one gateway must be configured.  Extract
the iLink token from the first available gateway account file.  Patch
openclaw-weixin baseUrl to http://127.0.0.1:19999 and Hermes WEIXIN_BASE_URL
to http://127.0.0.1:19998.  Install dependencies and systemd service.

Also detect OpenCode CLI: run `command -v opencode` or check
~/.npm-global/bin/opencode.  If not found, suggest installing with:
  npm install -g opencode-ai
Set OPENCODE_CMD in .env to the detected path (or empty if not found).
OPENCODE_MODEL defaults to opencode/minimax-m2.5-free (free, no API key needed).

If Hermes Agent WeChat gateway is detected, the installer will offer to patch
weixin.py to disable newline-based message splitting (recommended).  Accept
this patch so long replies are sent as single messages instead of being split
by paragraphs.  The fix script is at fix_hermes_splitting.sh.

Restart gateways.  Verify /whoami works in WeChat.

Commands

Command Action
/hermes Route to Hermes only
/openclaw Route to OpenClaw only
/opencode Route to OpenCode only (via ACP bridge)
/both Route to Hermes + OpenClaw (reply from both)
/three Route to all three (reply from all)
/whoami Show current route and status
anything else Forward to the active agent(s)

Default route is Hermes. In /both and /three modes, proxy replies are prefixed with [Hermes Agent] / [OpenClaw] / [OpenCode] for attribution.

OpenCode setup

OpenCode connects via its native ACP subprocess protocol — no proxy port needed. Install it first:

npm install -g opencode-ai

Then set OPENCODE_CMD in .env (the installer auto-detects it). Use /opencode or /three once OpenCode is installed.


Project layout

hermesclaw.py             # ~870 lines. Triple-proxy router + ACP bridge.
install.sh                # Smart auto-detecting installer (-y for non-interactive).
fix_hermes_splitting.sh   # Patch Hermes weixin.py (optional, recommended).
tests/                    # 82 pytest tests (core, proxy, ACP, recovery).
README.md
LICENSE
docs/                     # Screenshots and media.

Media handling

HermesClaw forwards raw iLink protocol messages to each gateway. This means:

  • Text — forwarded as-is
  • Voice — iLink includes a transcription; HermesClaw forwards the transcription text
  • Images / video / files — the raw iLink message (with CDN URLs and AES keys) is forwarded; each gateway downloads and decrypts natively

HermesClaw does not do AES decryption, CDN downloads, or media re-encoding. That’s each gateway’s job.


Uninstall

AI-assisted

Stop and disable the hermesclaw systemd service.  Restore openclaw-weixin
account .bak files.  Remove WEIXIN_BASE_URL override from ~/.hermes/.env
(or restore .bak).  Optionally remove ~/hermesclaw directory.

Manual

sudo systemctl stop hermesclaw
sudo systemctl disable hermesclaw
sudo rm -f /etc/systemd/system/hermesclaw.service
sudo systemctl daemon-reload

# Restore openclaw-weixin configs:
find "$HOME" -maxdepth 5 -name "*.json.bak" -path "*/openclaw-weixin/accounts/*" \
  -exec sh -c 'for f; do cp "$f" "${f%.bak}"; done' sh {} +

# Restore Hermes .env:
[ -f "$HOME/.hermes/.env.bak" ] && cp "$HOME/.hermes/.env.bak" "$HOME/.hermes/.env"

rm -rf "$HOME/hermesclaw"

Star History

Star History Chart

Changelog

v0.4.0

  • Feature: Native macOS support — The install.sh script now supports macOS (Darwin) out-of-the-box by leveraging launchd instead of failing on the missing systemctl. It automatically creates, loads, and manages the background service via ~/Library/LaunchAgents/com.hermesclaw.plist (Thanks @unliftedq for the feature request).

v0.3.6

  • Fix: macOS install failure — mapfile: command not found — macOS ships with bash 3.2 which lacks the mapfile builtin (added in bash 4). All 3 occurrences replaced with portable while IFS= read -r loops, making the installer work on macOS out of the box.
  • Fix: curl | bash silent abort — With set -euo pipefail, bare read calls returned non-zero on EOF when stdin was a pipe, causing the installer to exit before any ${REPLY:-Y} default was evaluated. The installer now detects a non-tty stdin and redirects interactive prompts to /dev/tty so users can still answer them; if /dev/tty is also unavailable (CI / Docker) it falls back to auto-yes. All three prompt calls also have || VAR="" guards as defence-in-depth.
  • 5 new regression tests — tests/test_install_sh.py covers mapfile absence, bash syntax, read guards, tty detection, and non-interactive stdin.
  • Thanks to @ShxxxNewBee, @siasbaily, and @csloz for reporting and diagnosing these issues 🙏

v0.3.0

  • OpenCode ACP bridge — New OpenCodeBridge + ACPSession classes implement JSON-RPC 2.0 over NDJSON for opencode acp subprocess. Per-user sessions with automatic reconnect.
  • /opencode command — Route messages to OpenCode only.
  • /three command — Route messages to all three agents simultaneously (Hermes + OpenClaw + OpenCode).
  • “Not installed” detection — If opencode binary is not found, /opencode and /three show a helpful install hint instead of crashing.
  • Tagging in THREE mode — Proxy tags Hermes/OpenClaw replies; OpenCode worker tags its own replies with [OpenCode].
  • Dead subprocess recovery — If OpenCode exits mid-session, pending prompts unblock immediately with an error instead of hanging for the full 120 s timeout.
  • Headless ACP permissions — OpenCode permission prompts are handled automatically with OPENCODE_PERMISSION_STRATEGY=allow_always, preventing WeChat replies from hanging on non-interactive tool approvals. The OpenCode global config (~/.config/opencode/opencode.json) is also set to "permission": "allow" by the installer so tool calls are approved at the OpenCode level without round-tripping through ACP.
  • OpenCode typing indicator — OpenCode mode now sends and keeps alive the WeChat typing indicator while the ACP agent is working.
  • Non-interactive installer — bash install.sh -y (or HERMESCLAW_YES=1 bash install.sh) skips all confirmation prompts; OpenCode appears in the discovery summary.
  • Installer git pull — Re-running install.sh on an existing install now pulls the latest code before continuing.
  • 117 tests — Expanded route matrix covers every command route across text, voice, image, video, and file payloads, plus ACP permissions, OpenCode media prompts, dead-subprocess recovery, and THREE mode.

v0.2.1 (2026-04-12)

  • Fix: Hermes message splitting — The installer now offers to patch Hermes Agent’s weixin.py to disable newline-based message splitting during installation (recommended, default Yes). This ensures long replies are sent as single messages instead of being split by paragraphs. Existing users can run bash fix_hermes_splitting.sh manually.

v0.2.0

  • Complete rewrite: dual-proxy gateway architecture.
  • Removed ~400 lines of AES/CDN media processing.
  • 59 pytest tests (core, proxy, recovery).
  • Smart 8-case detection installer.
  • Fix: Hermes “Response formatting failed” — Proxy servers now use ThreadingHTTPServer instead of single-threaded HTTPServer.
  • Fix: OpenClaw ENOENT on media files — Installer now creates symlink for media path mismatch.
  • Improved error handling — BrokenPipeError now caught and logged as DEBUG.

License

MIT — by @AaronWong1999


Credits

HermesClaw is a community bridge. It is not affiliated with NousResearch or OpenClaw.

If you use Claude Code and Codex, you might also like ccx, my newer project: hand a task between Claude Code and Codex with the full context, so a usage limit doesn’t stop your work.

评论

暂无评论