对话笔记直发: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,/health 200,磁盘 8.0G 空闲。
  • ⏳ 待用户实测(真实消息才触发 sync):
    • 场景 A:群里聊天后问”我之前说过啥” → 跨群语义召回。
    • 场景 B:隔天/重启后再问 → 上下文保留(不再 4 点重置切断)。
    • 场景 C:Home/DMG 群问群内项目 → 边界内正常回答。
  • 可选下一步:若 B 仍断片,加 on_session_end hook 按群写 digest 到 Obsidian vault(FNS 已就绪)。

注:本文涉及的服务器公网 IP / Tailnet / 局域网 IP 已脱敏,请替换为你自己的地址。


相关: 00-索引-AI工程索引 M.d 8.3 Hermes记忆迁移Hindsight与Docker清理