Hindsight 自托管记忆引擎部署与灾备 SOP

本卡片记录 Hindsight 记忆引擎(向量记忆数据库 pgvector + API Worker)在 Debian 宿主机上的自托管 Docker 编排、与 Hermes Agent 的 MCP 工具链集成、以及基于 PostgreSQL 原生逻辑转储的灾备恢复标准流程。


一、 第一性原理架构设计 (动静分离与本地直连)

  1. 计算与存储层 (沙盒内部)
    • pgvector/pgvector:pg16 容器承载 PostgreSQL 向量数据存储(海马体)。
    • ghcr.io/vectorize-io/hindsight:latest 负责后台认知蒸馏与 API 响应。
  2. 通信与网络隔离
    • API 8888 端口强行绑定宿主机环回网卡 (127.0.0.1:8888),供本地 Hermes Agent 以零时延直连。
    • Web 9999 端口仅在 cf-gateway 内部网络暴露,通过 Cloudflare Tunnel 进行 Zero-Trust 安全穿透。
  3. 模型中转
    • 依赖的 LLM 抓取通过 https://xlxz321701.yinf.de/v1 (gemini-3.6-flash-high) 代理路由完成。

二、 阶段一:Docker 服务编排部署

1. 工作空间与环境变量

mkdir -p ~/hindsight-server && cd ~/hindsight-server
 
# 生成 32 位高强度密码
tr -dc A-Za-z0-9 </dev/urandom | head -c 32 ; echo ''

~/hindsight-server/.env 中写入中转 API 密钥(注意进行脱敏处理):

OPENAI_API_KEY=[REDACTED]

2. 编排文件 (docker-compose.yml)

version: '3.8'
 
services:
  hindsight-db:
    image: pgvector/pgvector:pg16
    container_name: hindsight-db
    restart: unless-stopped
    expose:
      - "5432"
    environment:
      POSTGRES_USER: postgres
      POSTGRES_PASSWORD: [REDACTED_POSTGRES_PASSWORD]
      POSTGRES_DB: hindsight
    volumes:
      - pgdata:/var/lib/postgresql/data
    networks:
      - cf-gateway
 
  hindsight-api:
    image: ghcr.io/vectorize-io/hindsight:latest
    container_name: hindsight-api
    restart: unless-stopped
    ports:
      - "127.0.0.1:8888:8888" # 本地环回物理隔绝
    expose:
      - "9999" # 内部代理 UI
    environment:
      HINDSIGHT_API_DATABASE_URL: postgresql://postgres:[REDACTED_POSTGRES_PASSWORD]@hindsight-db:5432/hindsight
      HINDSIGHT_API_LLM_PROVIDER: openai
      HINDSIGHT_API_LLM_BASE_URL: "https://xlxz321701.yinf.de/v1"
      HINDSIGHT_API_LLM_MODEL: gemini-3.6-flash-high
      HINDSIGHT_API_LLM_API_KEY: ${OPENAI_API_KEY}
      HINDSIGHT_API_WORKER_ID: "hermes-memory-worker-1"
    depends_on:
      - hindsight-db
    networks:
      - cf-gateway
 
volumes:
  pgdata:
 
networks:
  cf-gateway:
    external: true

3. 启动指令

cd ~/hindsight-server && docker compose up -d

三、 阶段二:Hermes 工具链挂载

1. 注入 MCP 扩展模块

# 挂载 Hindsight 记忆引擎(REST API 桥接)
hermes mcp add hindsight_memory --url http://127.0.0.1:8888/mcp
 
# 挂载 TradingView 行情引擎(标准输入输出桥接)
hermes mcp add tradingview --command "uvx --refresh --from git+https://github.com/atilaahmettaner/tradingview-mcp.git tradingview-mcp"

2. 系统灵魂 (SOUL) 认知约束

SOUL.md 末尾追加法则:

## 外部大脑与工具链调用 (External Memory & Toolchains)
你已接入 MCP 协议,必须严格遵守以下法则:
1. **绝对记忆中枢 (`hindsight_memory`)**:这是你唯一的长期记忆后端。
   - 遇到环境规范、底层配置或核心指令,**必须**调用 `retain` 固化。
   - 在执行任务前,**必须**调用 `recall` 检索历史偏好与规范,严禁凭空臆想环境状态。
2. **事实锚定 (`tradingview`)**
   - 在推演衍生品策略时,**必须**调用行情工具获取客观数据,严禁生成价格或波动率计算幻觉。

四、 阶段三:灾备策略与系统容错 (Disaster Recovery)

1. 自动化定时备份脚本 (/usr/local/bin/backup_hindsight.sh)

采用 PostgreSQL 原生的逻辑转储(-F c Custom 压缩导出),剥离底层文件系统依赖。

#!/bin/bash
BACKUP_DIR="/root/hindsight_backups"
CONTAINER_NAME="hindsight-db"
DATE=$(date +%Y%m%d_%H%M%S)
FILE_NAME="hindsight_${DATE}.dump"
 
mkdir -p ${BACKUP_DIR}
# 逻辑转储
docker exec -t ${CONTAINER_NAME} pg_dump -U postgres -F c -d hindsight > ${BACKUP_DIR}/${FILE_NAME}
 
# 校验并删除超过 7 天的历史转储
if [ -s "${BACKUP_DIR}/${FILE_NAME}" ]; then
    find ${BACKUP_DIR} -name "hindsight_*.dump" -type f -mtime +7 -delete
else
    exit 1
fi

定时 Cron 挂载(每天凌晨 04:00 自动执行):

0 4 * * * /usr/local/bin/backup_hindsight.sh >> /var/log/hindsight_backup.log 2>&1

2. 灾难恢复标准操作程序 (SOP)

如遇数据损毁,必须严格按照以下物理时序执行,防止数据库死锁与脏读:

# 1. 物理熔断通道,停止后台蒸馏
docker stop hindsight-api
 
# 2. 执行覆盖式恢复(自动清理残余表并重建 Schema)
docker exec -i hindsight-db pg_restore -U postgres -d hindsight --clean --if-exists < /root/hindsight_backups/hindsight_YYYYMMDD_HHMMSS.dump
 
# 3. 恢复通信
docker start hindsight-api

相关链接