我在本地跑了一套 Hermes Agent 作为个人助手,底下还有几个子 Agent(千川投放、知识库填充、代码审查等)。之前每个 Agent 各有一份记忆文件(MEMORY.md / USER.md),各自维护、互相隔离。
问题很快就来了:
需要一个共享的知识层。
可选方案对比了一圈:
| 方案 | 优势 | 痛点 |
|---|---|---|
| 共享文件 + NFS | 简单 | 并发写入冲突、无语义搜索 |
| ChromaDB(已有的) | 语义搜索强 | 只适合静态文档,不适合动态记忆 |
| Redis | 快 | 无持久化结构,无搜索 |
| OpenViking v0.4.11 | 语义搜索 + 结构化 + Peer 隔离 | 项目较新,社区小 |
OpenViking 胜出的关键:
┌─────────────────────┐ ┌───────────────────┐ │ 本地 MEMORY.md │ │ OpenViking 共享层 │ │ (私有) │ │ (全局) │ │ │ │ │ │ - 架构决策 │ │ - 用户画像 │ │ - 工具路径 │ │ - 操作规范 │ │ - 环境配置 │ │ - 踩坑记录 │ │ - 内部约定 │ │ - 活跃项目清单 │ │ │ │ - 账号信息(脱敏) │ └─────────────────────┘ └─────────────────────┘ │ │ └── 两套并行,各管各的 ──┘
什么放本地(MEMORY.md):
custom_providers 必须是 list 不是 map)/data 挂载盘路径、Ollama 模型目录)什么放 OpenViking(共享):
OpenViking v0.4.11 跑在 1933 端口,Docker 部署,一个容器搞定。
yaml# ~/.hermes/config.yaml
memory:
provider: openviking
openviking:
base_url: "http://127.0.0.1:1933"
peer: hermes
注意 Peer 参数——不同的 Agent 用不同的 Peer 名,数据物理上共享但逻辑上能区分来源。
python# 写入用户偏好
viking_remember("丘丘偏好全程中文,INTJ/4w5,凌晨5-6点睡")
# 写入操作规范
viking_remember("跟播每步操作需汇报逻辑+判断+结果")
# 写入踩坑记录
viking_remember("custom_providers 必须是 list 格式,不能用 hermes config set 写入")
python# 语义检索,不用关心关键词
viking_search("投流操作规范")
# → 返回跟播透明原则、ROI 决策阈值等
之前: 每次 Agent 初始化,要手动把一堆上下文塞进来,还经常漏。
现在:
OpenViking 目前还在早期,但作为多 Agent 共享记忆层已经够用了。如果哪天社区成熟了或者出了更好的方案,换掉它也不亏——因为抽象层就是 HTTP API,换后端不换接口。
本文作者:丘丘
本文链接:
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!