Honcho Memory(Honcho 记忆)
Honcho 是一个 AI 原生记忆后端,在 Hermes 内置记忆系统之上增加了辩证推理和深度用户建模。它不仅仅提供简单的键值存储,而是通过对话后进行推理,维护关于用户是谁的运行模型——他们的偏好、沟通风格、目标和模式。
:::info Honcho 是一个记忆提供者插件 Honcho 已集成到记忆提供者系统中。以下所有功能都通过统一的记忆提供者接口提供。 :::
Honcho 增加的功能
| 能力 | 内置记忆 | Honcho |
|---|---|---|
| 跨会话持久化 | ✔ 基于文件的 MEMORY.md/USER.md | ✔ 服务端带 API |
| 用户画像 | ✔ 手动代理整理 | ✔ 自动辩证推理 |
| 会话摘要 | — | ✔ 会话作用域上下文注入 |
| 多代理隔离 | — | ✔ 每对等体画像分离 |
| 观察模式 | — | ✔ 统一或定向观察 |
| 结论(派生洞察) | — | ✔ 关于模式的服务端推理 |
| 跨历史搜索 | ✔ FTS5 会话搜索 | ✔ 基于结论的语义搜索 |
辩证推理(Dialectic reasoning): 每轮对话后(由 dialecticCadence 控制),Honcho 分析交互内容并推断关于用户偏好、习惯和目标的洞察。这些洞察随时间累积,使代理对用户的理解不断加深,超越用户显式陈述的内容。辩证支持多轮深度(1-3 轮),自动选择冷/热提示——冷启动查询关注一般用户事实,而热查询优先考虑会话作用域上下文。
会话作用域上下文: 基础上下文现在包括会话摘要以及用户表示和对等体卡片。这使代理感知当前会话中已经讨论过的内容,减少重复并实现连续性。
多代理画像: 当多个 Hermes 实例与同一用户对话时(例如,一个编码助手和一个个人助手),Honcho 维护独立的”对等体”画像。每个对等体只看到自己的观察和结论,防止上下文交叉污染。
设置
hermes memory setup # 从提供商列表中选择 "honcho"或手动配置:
# ~/.hermes/config.yaml
memory:
provider: honchoecho 'HONCHO_API_KEY=***' >> ~/.hermes/.env在 honcho.dev 获取 API 密钥。
架构
双层上下文注入
每轮(在 hybrid 或 context 模式下),Honcho 组装两层注入到系统提示中的上下文:
- 基础上下文 — 会话摘要、用户表示、用户对等体卡片、AI 自我表示和 AI 身份卡片。在
contextCadence时刷新。这是”这个用户是谁”层。 - 辩证补充 — LLM 综合推理,关于用户当前状态和需求。在
dialecticCadence时刷新。这是”现在什么重要”层。
两个层会被拼接并截断到 contextTokens 预算(如果设置)。
冷/热提示选择
辩证自动在两种提示策略之间选择:
- 冷启动(尚无基础上下文):通用查询——“这个人是谁?他们的偏好、目标和工作风格是什么?”
- 热会话(基础上下文存在):会话作用域查询——“考虑到当前会话中已经讨论的内容,关于这个用户哪些上下文最相关?”
这根据基础上下文是否已填充自动发生。
三个正交配置旋钮
成本和深度由三个独立旋钮控制:
| 旋钮 | 控制内容 | 默认值 |
|---|---|---|
contextCadence | context() API 调用之间的轮数(基础层刷新) | 1 |
dialecticCadence | peer.chat() LLM 调用之间的轮数(辩证层刷新) | 2(建议 1–5) |
dialecticDepth | 每次辩证调用中的 .chat() 传递次数(1–3) | 1 |
这些是正交的——您可以频繁刷新上下文但少做辩证,或低频深度的多轮辩证。例如:contextCadence: 1, dialecticCadence: 5, dialecticDepth: 2 每轮刷新基础上下文、每 5 轮运行辩证、每次辩证运行 2 轮传递。
辩证深度(多轮传递)
当 dialecticDepth > 1 时,每次辩证调用运行多个 .chat() 传递:
- 第 0 轮:冷或热提示(见上文)
- 第 1 轮:自我审计——识别初始评估中的空白并综合来自最近会话的证据
- 第 2 轮:协调——检查先前传递之间的矛盾并产生最终综合
每轮使用按比例的推理级别(早期轮次较轻,主轮使用基础级别)。使用 dialecticDepthLevels 覆盖每轮级别——例如,深度 3 的 ["minimal", "medium", "high"]。
如果前一轮返回了强信号(长、结构化的输出),后续轮次会提前退出,因此深度 3 并不总是意味着 3 次 LLM 调用。
会话开始预热
在会话初始化时,Honcho 在后台以完整配置的 dialecticDepth 触发一次辩证调用,并将结果直接交给第 1 轮的上下文集装。冷对等体上的单轮预热通常返回薄弱的输出——多轮深度会在用户发言之前运行审计/协调周期。如果预热在第 1 轮之前尚未完成,第 1 轮会回退到具有有限超时的同步调用。
查询自适应推理级别
自动注入的辩证会根据查询长度缩放 dialecticReasoningLevel:≥120 字符时 +1 级,≥400 时 +2,上限为 reasoningLevelCap(默认 "high")。使用 reasoningHeuristic: false 禁用,将每次自动调用固定为 dialecticReasoningLevel。可用级别:minimal、low、medium、high、max。
配置选项
Honcho 在 ~/.honcho/config.json(全局)或 $HERMES_HOME/honcho.json(配置本地)中配置。设置向导会为您处理。
完整配置参考
| 键 | 默认值 | 描述 |
|---|---|---|
contextTokens | null(无上限) | 每轮自动注入上下文的令牌预算。设置为整数(例如 1200)以限制。按单词边界截断 |
contextCadence | 1 | context() API 调用之间的最小轮数(基础层刷新) |
dialecticCadence | 2 | peer.chat() LLM 调用之间的最小轮数(辩证层)。建议 1–5。在 tools 模式下无关——模型显式调用 |
dialecticDepth | 1 | 每次辩证调用的 .chat() 传递次数。限制在 1–3 |
dialecticDepthLevels | null | 可选的每轮推理级别数组,例如 ["minimal", "low", "medium"]。覆盖按比例的默认值 |
dialecticReasoningLevel | 'low' | 基础推理级别:minimal、low、medium、high、max |
dialecticDynamic | true | 为 true 时,模型可以通过工具参数覆盖每次调用的推理级别 |
dialecticMaxChars | 600 | 注入系统提示的辩证结果的最大字符数 |
recallMode | 'hybrid' | hybrid(自动注入 + 工具)、context(仅注入)、tools(仅工具) |
writeFrequency | 'async' | 何时刷新消息:async(后台线程)、turn(同步)、session(结束时批量)或整数 N |
saveMessages | true | 是否将消息持久化到 Honcho API |
observationMode | 'directional' | directional(全部开启)或 unified(共享池)。使用 observation 对象覆盖以进行细粒度控制 |
messageMaxChars | 25000 | 每次通过 add_messages() 发送的消息的最大字符数。超过时会被分块 |
dialecticMaxInputChars | 10000 | 辩证查询输入到 peer.chat() 的最大字符数 |
sessionStrategy | 'per-directory' | per-directory、per-repo、per-session 或 global |
会话策略控制 Honcho 会话如何映射到您的工作:
per-session— 每次hermes运行获得一个新会话。干净开始,通过工具使用记忆。推荐给新用户。per-directory— 每个工作目录一个 Honcho 会话。上下文跨运行累积。per-repo— 每个 git 仓库一个会话。global— 跨所有目录的单一会话。
召回模式控制记忆如何流入对话:
hybrid— 上下文自动注入系统提示 AND 工具可用(模型决定何时查询)。context— 仅自动注入,工具隐藏。tools— 仅工具,无自动注入。代理必须显式调用honcho_reasoning、honcho_search等。
每种召回模式的设置:
| 设置 | hybrid | context | tools |
|---|---|---|---|
writeFrequency | 刷新消息 | 刷新消息 | 刷新消息 |
contextCadence | 控制基础上下文刷新 | 控制基础上下文刷新 | 无关——无注入 |
dialecticCadence | 控制自动 LLM 调用 | 控制自动 LLM 调用 | 无关——模型显式调用 |
dialecticDepth | 每次调用的多轮传递 | 每次调用的多轮传递 | 无关——模型显式调用 |
contextTokens | 限制注入 | 限制注入 | 无关——无注入 |
dialecticDynamic | 控制模型覆盖 | 不适用(无工具) | 控制模型覆盖 |
在 tools 模式下,模型完全控制——它可以在需要时以任何选择的 reasoning_level 调用 honcho_reasoning。节奏和预算设置仅适用于具有自动注入的模式(hybrid 和 context)。
观察(定向 vs. 统一)
Honcho 将对话建模为对等体交换消息。每个对等体有两个观察开关,与 Honcho 的 SessionPeerConfig 一一对应:
| 开关 | 效果 |
|---|---|
observeMe | Honcho 从此对等体自己的消息中构建该对等体的表示 |
observeOthers | 此对等体观察另一个对等体的消息(提供跨对等体推理) |
两个对等体 × 两个开关 = 四个标志。observationMode 是一个简写预设:
| 预设 | 用户标志 | AI 标志 | 语义 |
|---|---|---|---|
"directional"(默认) | me: 开, others: 开 | me: 开, others: 开 | 完全相互观察。启用跨对等体辩证——“AI 对用户的了解,基于用户所说的和 AI 回复的。“ |
"unified" | me: 开, others: 关 | me: 关, others: 开 | 共享池语义——AI 只观察用户的消息,用户对等体只自我建模。单一观察者池。 |
使用显式的 observation 块覆盖预设以进行每对等体控制:
"observation": {
"user": { "observeMe": true, "observeOthers": true },
"ai": { "observeMe": true, "observeOthers": false }
}常见模式:
| 意图 | 配置 |
|---|---|
| 完全观察(大多数用户) | "observationMode": "directional" |
| AI 不应从自己的回复中重新建模用户 | "ai": {"observeMe": true, "observeOthers": false} |
| 强人格,AI 对等体不应通过自我观察更新 | "ai": {"observeMe": false, "observeOthers": true} |
通过 Honcho 仪表盘设置的服务端开关会覆盖本地默认值——Hermes 在会话初始化时会同步回来。
工具
当 Honcho 作为记忆提供者激活时,五个工具变得可用:
| 工具 | 用途 |
|---|---|
honcho_profile | 读取或更新对等体卡片——传入 card(事实列表)以更新,省略以读取 |
honcho_search | 基于上下文的语义搜索——原始摘录,无 LLM 综合 |
honcho_context | 完整会话上下文——摘要、表示、卡片、最近消息 |
honcho_reasoning | 来自 Honcho LLM 的综合答案——传入 reasoning_level(minimal/low/medium/high/max)控制深度 |
honcho_conclude | 创建或删除结论——传入 conclusion 创建,delete_id 删除(仅 PII) |
CLI 命令
hermes honcho 子命令仅在 Honcho 是活动记忆提供者时注册(config.yaml 中的 memory.provider: honcho)。先运行 hermes memory setup 并选择 Honcho;子命令会在下次调用时出现。
hermes honcho status # 连接状态、配置和关键设置
hermes honcho setup # 重定向到 `hermes memory setup`
hermes honcho strategy # 显示或设置会话策略(per-session/per-directory/per-repo/global)
hermes honcho peer # 显示或更新对等体名称 + 辩证推理级别
hermes honcho mode # 显示或设置召回模式(hybrid/context/tools)
hermes honcho tokens # 显示或设置上下文和辩证的令牌预算
hermes honcho identity # 播种或显示 AI 对等体的 Honcho 身份
hermes honcho sync # 将 Honcho 配置同步到所有现有配置
hermes honcho peers # 显示所有配置中的对等体身份
hermes honcho sessions # 列出已知的 Honcho 会话映射
hermes honcho map # 将当前目录映射到 Honcho 会话名称
hermes honcho enable # 为活动配置启用 Honcho
hermes honcho disable # 为活动配置禁用 Honcho
hermes honcho migrate # 从 openclaw-honcho 的分步迁移指南从 hermes honcho 迁移
如果您之前使用过独立的 hermes honcho setup:
- 您现有的配置(
honcho.json或~/.honcho/config.json)会被保留 - 您的服务端数据(记忆、结论、用户画像)完好无损
- 在 config.yaml 中设置
memory.provider: honcho以重新激活
无需重新登录或重新设置。运行 hermes memory setup 并选择 “honcho”——向导会检测到您现有的配置。
完整文档
参见 记忆提供者 — Honcho 获取完整参考。