用 Hermes Agent + wx-cli 搭建微信客服工作流:对话读取 → 总结 → 拟回复 →(可选)官方接口发送

跨 Windows/macOS/Linux 的可执行部署步骤:用 wx-cli 读取本地微信数据,Hermes Agent 做摘要与拟回复,并给出企业微信/公众号官方接口发送的可执行命令。

AI 摘要

这篇文章适合快速了解什么

跨 Windows/macOS/Linux 的可执行部署步骤:用 wx-cli 读取本地微信数据,Hermes Agent 做摘要与拟回复,并给出企业微信/公众号官方接口发送的可执行命令。

这是一篇偏部署方向的内容,适合想快速理解“用 Hermes Agent + wx-cli 搭建微信客服工作流:对话读取 → 总结 → 拟回复 →(可选)官方接口发送”核心脉络的读者。

文章先解释“目标与边界(先说清楚再动手)”,帮助你快速进入主题。

随后会展开“架构建议(推荐从半自动开始)”,方便直接定位关键方法或判断标准。

核心看点

  • 目标与边界(先说清楚再动手)
  • 架构建议(推荐从半自动开始)
  • 架构图(最小闭环:本机读取 + 容器/WSL 内总结)
  • Part A:安装与验证 wx-cli(跨 OS)

目标与边界(先说清楚再动手)

本文把“微信客服”拆成四段最小闭环:

  1. 读取微信侧对话:用 wx-cli 查询本机微信会话、未读、增量新消息、历史记录、关键词搜索、导出等(本机完成,数据不出本机)。
  2. 总结信息:Hermes Agent 将对话内容整理成结构化摘要与待办。
  3. 拟回复:Hermes Agent 生成可直接粘贴的回复草稿(含需要人工确认的点)。
  4. (可选)发送回复:通过“官方接口”发送(企业微信或公众号客服消息)。

重要限制:

架构建议(推荐从半自动开始)

  • 座席机:登录微信桌面端 + 安装 wx-cli(读取、检索、导出对话)
  • Agent 机:安装 Hermes Agent(可与座席机同一台;Windows 推荐 WSL2)
  • 可选“官方发送通道”:由你自己的后端服务/脚本调用企业微信或公众号官方 API(建议先让 Hermes 生成 curl,再人工执行)

架构图(最小闭环:本机读取 + 容器/WSL 内总结)

flowchart LR subgraph Host["宿主机(座席机)"] WX[微信桌面端] WXCLI[wx-cli + daemon
读取/检索/导出] WXBRIDGE[wx-bridge(推荐)
HTTP/MCP Server
白名单命令] WX --> WXCLI WXCLI --> WXBRIDGE end subgraph AgentEnv["Agent 运行环境(Docker/WSL2/Linux/macOS)"] HERMES[Hermes Agent] end OP[客服人员] -->|发起总结/拟回复| HERMES HERMES -->|调用工具:读取会话 JSON| WXBRIDGE HERMES -->|输出:摘要/拟回复/待确认项| OP

说明:

  • wx-cli 必须在“已登录微信桌面端”的宿主机上运行,读取数据才有意义。
  • Hermes 建议跑在 Docker 或 WSL2 内(Windows 原生不支持 Hermes),通过 wx-bridge 这种“最小暴露的桥接层”拿到结构化对话数据再做总结。

Part A:安装与验证 wx-cli(跨 OS)

A1. 安装

wx-cli README 给了多种安装方式(npm/curl/PowerShell/Release/源码构建),这里按“最少差异”优先推荐 npm:
来源:https://github.com/jackwener/wx-cli#安装

npm install -g @jackwener/wx-cli

如果你希望用脚本安装,请严格按 README:

  • macOS / Linux:
curl -fsSL https://raw.githubusercontent.com/jackwener/wx-cli/main/install.sh | bash
  • Windows(管理员 PowerShell):
irm https://raw.githubusercontent.com/jackwener/wx-cli/main/install.ps1 | iex

A2. 初始化(只需一次)

初始化前提:保持微信桌面端运行并完成登录。来源:https://github.com/jackwener/wx-cli#快速开始

  • macOS(需要先对 WeChat.app 做 ad-hoc 签名,然后重启微信,再 init)
codesign --force --deep --sign - /Applications/WeChat.app
killall WeChat && open /Applications/WeChat.app
sudo wx init
  • Linux
sudo wx init
  • Windows(管理员 PowerShell)
wx init

A3. 自检

wx sessions

能看到最近会话即表示初始化成功;daemon 会在首次调用时自动启动。来源:https://github.com/jackwener/wx-cli#验证安装

Part B:安装与验证 Hermes Agent(macOS/Linux/Windows)

B1. macOS / Linux / WSL2 安装

Hermes Agent 官方一行安装(Linux/macOS/WSL2):
来源:https://hermes-agent.nousresearch.com/docs/getting-started/installation/

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

安装完成后(官方文档):

source ~/.bashrc # 或 source ~/.zshrc
hermes

B2. Windows:先装 WSL2,再在 WSL2 内安装 Hermes

WSL 安装指令(微软官方):
来源:https://learn.microsoft.com/en-us/windows/wsl/install

wsl --install

重启后进入 WSL2,再执行 B1 的 Hermes 安装命令。

B3. Hermes 配置文件位置(防止把密钥写错地方)

Hermes 配置目录在 ~/.hermes/,其中:

  • ~/.hermes/config.yaml:非敏感配置
  • ~/.hermes/.env:API Key/token/password 等敏感信息

来源:https://hermes-agent.nousresearch.com/docs/user-guide/configuration

Part C:把 wx-cli 变成“客服工作流”

这里提供两种落地方式:先从“最少改动”开始,再逐步工程化。

方案 1(推荐起步):Hermes 直接调用终端命令(Terminal Toolset)

要点:用 wx-cli --json 输出结构化数据,让 Hermes 更容易做摘要与拟回复。wx-cli README 明确 --json 可切换 JSON 输出。
来源:https://github.com/jackwener/wx-cli#输出格式

  1. 拉取增量新消息
wx new-messages --json
  1. 补齐上下文(最近 N 条)
wx history "客户A" -n 80 --json
  1. 让 Hermes 生成“摘要 + 拟回复”

建议你在 Hermes 会话里固定一个输出模板(复制即可用):

请基于给定的对话 JSON:
1) 输出【客服摘要】:客户诉求、关键事实、情绪、风险点、下一步待办(用要点列表)
2) 输出【拟回复】三版:短版(1-2句)、标准版(3-6句)、升级版(引导转人工/工单)
3) 输出【待确认项】:任何需要人工确认的订单号/权限/政策点
4) 输出【禁止项】:不得索要敏感信息、不得承诺无法兑现内容

方案 2(更可控):用 Hermes Plugins/MCP 封装“工具”

如果你希望“可审计、可最小权限暴露”,优先考虑:

Part E:Docker 部署 Hermes,并调用宿主机 wx-cli(推荐做法)

这一部分专门解决:Hermes 在容器里跑,但 wx-cli 只能在宿主机读取微信数据。

核心原则:不要把宿主机的微信数据目录整包挂进容器,也不要让容器直接控制宿主机;推荐用一个“桥接层”把 wx-cli 的少量能力变成可审计接口。

E1. 前置条件(必须满足)

  1. 宿主机已经完成 wx-cli 初始化且可读到会话:
wx sessions
wx new-messages --json
  1. Hermes 已按 Part B 可运行(Linux/macOS/WSL2 均可)。

  2. Docker 环境可用(Docker + Compose)。

E2. 方式一(推荐):宿主机起 wx-bridge,容器通过 host.docker.internal 调用

你可以把 wx-cli 封装成一个最小 HTTP 服务(或 MCP server),只提供你需要的 3-5 个命令:

  • sessions
  • unread
  • new-messages --json
  • history "<session>" -n 80 --json

这样 Hermes 只拿到“结构化对话 JSON”,不会直接接触宿主机敏感目录。

wx-cli README 说明 --json 输出结构化信息,适合被工具调用:
来源:https://github.com/jackwener/wx-cli#输出格式

E2.1. 在宿主机运行桥接服务(示例:HTTP)

下面是“可执行粒度”的最小示例(你可以换成任何语言实现,关键是把允许的命令白名单化)。

# 示例:在宿主机启动一个 wx-bridge(伪代码/示例)
# 目标:提供 /new-messages、/history?session=xxx 等接口,内部执行 wx-cli 并返回 JSON。
# 建议:只监听 127.0.0.1:19090,避免公网暴露。

安全建议:

  • 只监听 127.0.0.1
  • 只允许白名单命令(拒绝任意 shell)
  • 给接口加一个简单 token(至少防误用)
  • 日志落盘(便于审计)

E2.2. Docker Compose 启动 Hermes(容器访问宿主机)

你的仓库里 Hermes 已有 Compose 示例,并且已经配置了:

  • extra_hosts: host.docker.internal:host-gateway

参考:ai/hermes/docker-compose.yml

启动方式(宿主机执行):

cd ai/hermes
docker compose --env-file .env up -d --build
docker exec -it hermes-agent bash

进入容器后验证是否能访问宿主机桥接层:

curl -fsS http://host.docker.internal:19090/health
curl -fsS http://host.docker.internal:19090/new-messages

E2.3. Hermes 会话里的“固定提示词模板”(可复制)

你可以调用工具从 wx-bridge 拉取对话 JSON。

输出要求:
1) 客服摘要:客户诉求、关键事实、情绪、风险点、下一步待办(要点)
2) 拟回复三版:短版/标准版/升级版(明确哪些要人工确认)
3) 待确认项:订单号、权限、政策、金额、时间等
4) 禁止项:不要索要敏感信息,不要承诺无法兑现内容

E3. 方式二(不推荐):把 wx-cli 运行目录直接挂进容器

wx-cli README 指出 ~/.wx-cli/ 包含密钥与缓存等内容,直接挂载到容器会扩大暴露面:
来源:https://github.com/jackwener/wx-cli#架构

如果你确实要这么做,至少做到:

  • 只读挂载(如果业务允许)
  • 容器内用户权限最小化
  • 宿主机目录权限收紧(不进备份、不进同步盘)

E4. 运行调用图(从“拉取对话”到“拟回复”)

sequenceDiagram participant OP as 客服人员 participant H as Hermes(容器/WSL2) participant WB as wx-bridge(宿主机本地) participant WX as wx-cli(宿主机) participant API as 可选:公众号/企业微信官方接口 OP->>H: 指定会话/关键词/时间范围 H->>WB: 请求 new-messages / history(JSON) WB->>WX: 执行 wx-cli 命令(白名单) WX-->>WB: 返回 JSON WB-->>H: 返回结构化对话 H-->>OP: 输出摘要 + 拟回复 + 待确认项 alt 需要发送(建议人工确认后执行) OP->>H: 让 Hermes 生成 curl H-->>OP: 生成可执行 curl(公众号/企业微信) OP->>API: 人工执行 curl 发送 end

Part D(可选):通过官方接口发送回复(建议先“人工审核后执行”)

强烈建议先让 Hermes 生成 curl,由人工确认后再执行。原因:权限、风控与误发成本远高于“多一步确认”。

D1. 公众号:发送客服消息(对外回复)

官方文档明确客服消息 48 小时窗口与触发条件,并给出接口地址:
来源:https://developers.weixin.qq.com/doc/service/api/customer/message/api_sendcustommessage.html

  1. 获取 access_token(示例 URL 以官方接口为准;将 APPID/APPSECRET 替换为你的真实值)
curl -s "https://api.weixin.qq.com/cgi-bin/token?appid=APPID&secret=APPSECRET&grant_type=client_credential"
  1. 发送文本客服消息(将 ACCESS_TOKEN、OPENID 替换为你的真实值)
curl -s "https://api.weixin.qq.com/cgi-bin/message/custom/send?access_token=ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "touser":"OPENID",
    "msgtype":"text",
    "text":{"content":"您好,关于您反馈的问题……(此处为 Hermes 拟稿,经人工确认后发送)"}
  }'

D2. 企业微信(WeCom):发送应用消息(内部协同/工单流转)

企业微信“获取 access_token”文档明确:不要把 access_token 返回给前端、需要后台缓存、不要频繁调用。
来源:https://developer.work.weixin.qq.com/document/path/91039

  1. 获取 access_token
curl -s "https://qyapi.weixin.qq.com/cgi-bin/gettoken?corpid=CORP_ID&corpsecret=CORP_SECRET"
  1. 发送应用消息(接口文档:发送应用消息)
    来源:https://developer.work.weixin.qq.com/document/path/90236
curl -s "https://qyapi.weixin.qq.com/cgi-bin/message/send?access_token=ACCESS_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "touser":"UserID1",
    "msgtype":"text",
    "agentid":1000002,
    "text":{"content":"【客服摘要】…\\n【建议回复】…"},
    "safe":0
  }'

安全与合规清单(必须做)

待确认项 + 可执行验证方法(不要猜)

  1. wx-cli 在你的微信版本/系统上的兼容性
    验证:按 README 完成 wx init 后执行 wx sessions、wx unread、wx new-messages --json,并用 wx daemon logs --follow 观察是否稳定。来源:https://github.com/jackwener/wx-cli#daemon-管理

  2. 公众号客服消息权限与触发窗口是否满足你的业务
    验证:严格按官方“允许的动作列表”和“下发规则”对照你的触发场景,并用测试账号调用一次 message/custom/send,以返回码为准。来源:https://developers.weixin.qq.com/doc/service/api/customer/message/api_sendcustommessage.html

  3. Hermes 在 Windows 的运维形态是否可接受(WSL2)
    验证:按微软 WSL 安装文档安装后,在 WSL2 内执行 Hermes 一行安装并运行 hermes,确认可稳定启动。
    来源:https://learn.microsoft.com/en-us/windows/wsl/install 与 https://hermes-agent.nousresearch.com/docs/getting-started/installation/

参考链接(便于逐条核对)

站点信息

关于这篇内容的来源与维护方式

这篇文章由 ToolsHub 公开发布,站点持续维护 AI 工具、在线文档、技术教程和效率实践内容。

我们优先保证公开页面可直接阅读、可分享、可被搜索引擎与 AI 正确理解。