微信 Bot、外部 API 调用、未来的新渠道——每个入口各自接入模型、各自管理配置、各自维护记忆?不。Hermes Gateway 做一件事:让所有渠道共享同一个大脑。统一配置、统一记忆、统一 API 格式。下游接什么模型、上游开几个入口,调用方无需关心。
一、核心问题:为什么需要统一网关?
没有 Hermes Gateway 之前,每个渠道是孤岛:
自己配模型 Key
自己管认证
自己写后端
Key · 温度 · Prompt
Key · 温度 · Prompt
Key · 温度 · Prompt
微信独享
API 独享
Web 独享
二、Hermes Gateway 架构:一个大脑,多个入口
渠道适配器
任何兼容客户端
Telegram / Web / ...
统一 API · 统一配置 · 统一记忆
推理引擎
所有渠道共享
一处修改,全局生效
三、三大统一
3.1 统一配置 — 一处修改,全局生效
模型 Key、Temperature、System Prompt、超时策略……所有配置集中在 Hermes Gateway 一个地方管理。切换模型、调整参数,改一处即所有渠道同步生效。
| 配置项 | 分散架构(改 3 处) | Hermes 统一(改 1 处) |
|---|---|---|
| 模型 API Key | 微信配一份 · API 配一份 · Web 配一份 | Gateway 统一存储 |
| 模型选择 | 每个渠道各自指定 | Gateway 统一路由 |
| Temperature / 参数 | 每个渠道各自配置 | Gateway 统一默认值 |
| System Prompt | 重复维护 N 份 | Gateway 统一管理 |
| 超时 / 重试策略 | 每个渠道自己写 | Gateway 统一策略 |
| 新增模型 | 改 N 个渠道的代码 | 改 Gateway 一处配置 |
3.2 统一记忆 — 所有渠道共享上下文
在微信里聊过的内容,通过 API 调用时也能看到。所有渠道共享同一个记忆空间——对话连续性不因入口不同而断裂。
"帮我查天气"
Hermes 存储
"刚才说了啥"
同一份上下文
"你说查天气"
3.3 统一 API 格式 — OpenAI 兼容
对外暴露标准的 OpenAI /v1/chat/completions 格式。任何支持 OpenAI SDK 的工具——Python、Node.js、LangChain、LobeChat——只需改一个 base_url,即可接入。
from openai import OpenAI
# 唯一需要改的:base_url 指向 Hermes Gateway
client = OpenAI(
base_url="https://ceshi.com/v1",
api_key="你的密钥",
)
# 其余代码与 OpenAI 官方完全一致
response = client.chat.completions.create(
model="any-model",
messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)
四、整体网络架构
Hermes Gateway 通过 Caddy 反向代理暴露到公网,自动获得 HTTPS 证书。外部调用者看到的是一个标准的 OpenAI 兼容端点,完全感知不到背后的微信 Bot 和多模型路由。
OpenAI SDK / curl / LangChain
自动 HTTPS · 反向代理
api_server · :8642
同时在线
推理引擎
五、请求完整生命周期
HTTPS POST
TLS 终止
认证 · 路由 · 配置加载
加载统一上下文
DeepSeek V4
记忆回写 · SSE
六、API 端点
七、扩展:新增渠道 = 新增适配器
Hermes Gateway 的架构让新增渠道变得极其简单——只需写一个渠道适配器,模型配置、记忆、API 格式全部复用:
已接入
通过 Hermes Gateway 原生对接,同时在线,共享统一记忆和配置
已接入
api_server 模式,Caddy 反代到公网,任何 SDK 即插即用
可扩展
新增 Telegram 适配器 → 接入 Hermes → 自动共享配置和记忆
可扩展
前端直接调用 /v1/chat/completions,零后端开发
可扩展
写一个 Webhook 适配器,Hermes 统一处理其余一切
可扩展
curl 或 Python 脚本直连,适合自动化和 DevOps 场景
八、安全设计
Caddy 自动证书
Bearer Token
仅 /v1/* 可达
:8642 仅本机
所有渠道一处查看
九、调用示例
Python
from openai import OpenAI
client = OpenAI(
base_url="https://ceshi.com/v1",
api_key="你的密钥",
)
# 非流式
response = client.chat.completions.create(
model="any-model",
messages=[{"role": "user", "content": "你好"}],
)
print(response.choices[0].message.content)
# 流式
stream = client.chat.completions.create(
model="any-model",
messages=[{"role": "user", "content": "讲个笑话"}],
stream=True,
)
for chunk in stream:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
curl
curl -s -X POST https://ceshi.com/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer 你的密钥" \
-d '{"model":"any-model","messages":[{"role":"user","content":"你好"}]}'
Node.js
const res = await fetch("https://ceshi.com/v1/chat/completions", {
method: "POST",
headers: {
"Content-Type": "application/json",
"Authorization": `Bearer ${API_KEY}`,
},
body: JSON.stringify({
model: "any-model",
messages: [{ role: "user", content: "你好" }],
}),
});
const data = await res.json();
console.log(data.choices[0].message.content);
十、设计总结
- 统一配置:模型 Key、参数、Prompt 集中管理,一处修改所有渠道同步生效
- 统一记忆:所有渠道共享同一记忆空间,对话连续性不因入口不同而断裂
- 统一 API:标准 OpenAI 兼容格式,任何 SDK 即插即用,零改造接入
- 渠道可扩展:新增渠道 = 新增适配器,模型侧零改动
- 透明路由:调用者无需知道下游是 DeepSeek 还是其他模型,Gateway 统一路由
- 安全纵深:TLS → API Key → 路径限制 → 内网隔离,四层防御