对话笔记直发:8.2 Hermes Honcho 记忆服务器部署。分类:AI工程。
date: 2026-08-02 tags: [对话笔记]
8.2 Hermes Honcho 记忆服务器部署
目标与背景
- 修复 Hermes 跨群长期记忆:R1 连续性(隔天不丢)、R2 群边界、R3 可回溯召回。
- 起因:Hermes 的 Honcho 记忆插件一直报
Failed to sync messages to Honcho: Not Found(累计 58 次),记忆功能实际是摆设。 - 服务器:jp(
局域网IP(已脱敏),aarch64,29G 磁盘,只剩 6.3G)。 - 用户偏好:大白话、最小可行方案、先规划再动手、不用手动折腾。
关键结论
- 根因 1(端口占用):
/opt/data/honcho.json的baseUrl指向localhost:8000,但 8000 被 docker 容器grok2api占用 → Honcho 一直 404。 - 根因 2(误判断片):所谓”1 小时断片”是误判。真实配置是
session_reset.mode: both / idle_minutes: 1440 / at_hour: 4,即每天凌晨 4 点重置会话导致隔天失忆;gateway_auto_continue_freshness: 3600只管中断任务续跑,与断片无关。 - R3 本就可用:
/opt/data/state.db存全量消息(FTS5 全文检索)+session_search工具,无需 LLM。 - Obsidian/FNS 已接通:config.yaml 里
fns_service→127.0.0.1:9000(vault feng),Hermes 原生有笔记读写工具 + 每日/每周 cron。 - 方案定型:裸 venv + pgvector,而非 LanceDB。原因:Honcho 元数据(workspaces/sessions/messages)必须要 PostgreSQL,LanceDB 只替代向量表,省不了多少;pgvector 是默认最稳路径。
- Embedding 选型:用户最初给的 stepfun key 无 embedding 权限(模型列表无 embedding、对 step-embedding 报 not supported);换硅基流动
BAAI/bge-m3(1024 维)。 - 踩坑:bge-m3 拒绝 OpenAI SDK 发送的
dimensions参数(400 报错),需设EMBEDDING_MODEL_CONFIG__DIMENSIONS_MODE=never。 - LLM 走本机网关:dialectic/summary 走
llm-gateway:19000(glm-4-plus),不额外花钱;embedding 走硅基流动。
执行记录
uv sync --frozen --no-group dev(先直连 PyPI 太慢,改UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple)→ 119 包,venv 721M,位于/opt/data/honcho/.venv。docker run -d --name honcho-pg -p 127.0.0.1:5432:5432 -v /opt/data/honcho/pgdata:/var/lib/postgresql/data pgvector/pgvector:pg15→ pgvector 数据库,41M。/opt/data/honcho/.env:VECTOR_STORE_TYPE=pgvector、DB_CONNECTION_URI=postgresql+psycopg://postgres:postgres@127.0.0.1:5432/postgres、EMBEDDING_VECTOR_DIMENSIONS=1024、DIMENSIONS_MODE=never、CACHE_ENABLED=false、LLM/DIALECTIC/SUMMARY 指向 llm-gateway。.venv/bin/python scripts/provision_db.py→ alembic 迁移成功(含 HNSW 索引)。.venv/bin/python scripts/configure_embeddings.py --yes→ embedding 列 1536 → 1024。- 建 systemd
honcho.service:/opt/data/honcho/.venv/bin/fastapi run --host 127.0.0.1 --port 18001 src/main.py,/health返回 200。 /opt/data/honcho.json:baseUrl→http://127.0.0.1:18001。/opt/data/config.yaml:session_reset.mode: both → none(配合已有 compression 自动摘要兜底)。systemctl restart hermes-gateway→ 正常连接 Telegram。- 端到端验证(用 Hermes 插件自身
get_honcho_client链路):写入 → 语义搜索(中文正常召回)→ dialectic 全通;测试数据已从 pgvector 清理。 - 清理
/root/.cache/uv(982M)→ 磁盘空闲 6.3G → 8.0G。
状态与待办
- ✅ honcho / hermes-gateway / honcho-pg 全部 active,
/health200,磁盘 8.0G 空闲。 - ⏳ 待用户实测(真实消息才触发 sync):
- 场景 A:群里聊天后问”我之前说过啥” → 跨群语义召回。
- 场景 B:隔天/重启后再问 → 上下文保留(不再 4 点重置切断)。
- 场景 C:Home/DMG 群问群内项目 → 边界内正常回答。
- 可选下一步:若 B 仍断片,加
on_session_endhook 按群写 digest 到 Obsidian vault(FNS 已就绪)。
注:本文涉及的服务器公网 IP / Tailnet / 局域网 IP 已脱敏,请替换为你自己的地址。