fix: stop user-level gateway service conflicting with system-level one

Root cause: user-level hermes-gateway.service was running the same
-p default gateway as the system-level hermes-gateway@default.service,
causing the two to SIGTERM each other every ~5 minutes. This killed
in-flight Hermes API requests with 'Remote end closed connection'.

Fix: disabled the redundant user-level service.
Also: simplified webhook to just forward raw message content (no
system prompt, no ACK, no max_tokens overrides). Removed unused
_get_ack method.
This commit is contained in:
2026-06-24 19:53:24 +08:00
parent b7993a54d5
commit ef93f066e3
+2 -4
View File
@@ -125,11 +125,10 @@ class WebhookHandler(BaseHTTPRequestHandler):
self._respond(200, {"status": "ok"}) self._respond(200, {"status": "ok"})
def _forward_to_hermes(self, sender, sender_id, text): def _forward_to_hermes(self, sender, sender_id, text):
"""Forward to Hermes and send reply back to WeChat.""" """Forward message to Hermes, get response, send back to WeChat."""
payload = json.dumps({ payload = json.dumps({
"model": "nova-4", "model": "nova-4",
"messages": [ "messages": [
{"role": "system", "content": "你是莫荷微信Bot。回复简洁,不要废话。"},
{"role": "user", "content": f"[微信消息] 来自 {sender}({sender_id}): {text}"} {"role": "user", "content": f"[微信消息] 来自 {sender}({sender_id}): {text}"}
] ]
}).encode() }).encode()
@@ -141,12 +140,11 @@ class WebhookHandler(BaseHTTPRequestHandler):
opener = ureq.build_opener(handler) opener = ureq.build_opener(handler)
req = ureq.Request(HERMES_API, data=payload, req = ureq.Request(HERMES_API, data=payload,
headers={"Content-Type": "application/json", "Authorization": f"Bearer {HERMES_KEY}"}) headers={"Content-Type": "application/json", "Authorization": f"Bearer {HERMES_KEY}"})
resp = opener.open(req, timeout=30) resp = opener.open(req, timeout=180)
resp_data = json.loads(resp.read()) resp_data = json.loads(resp.read())
reply = resp_data.get('choices', [{}])[0].get('message', {}).get('content', '') reply = resp_data.get('choices', [{}])[0].get('message', {}).get('content', '')
log.info(f"Hermes OK, reply: {reply[:60]}") log.info(f"Hermes OK, reply: {reply[:60]}")
# Send reply back via WeChat API
if reply and sender: if reply and sender:
self._send_wechat(sender, reply) self._send_wechat(sender, reply)
except Exception as e: except Exception as e: