【记忆】openclaw之Honcho 记忆系统

🧠 Honcho

Honcho 是一个开源的 AI 原生记忆库,提供托管服务,也可以本地部署使用,让智能体能够:

能力 说明
🔗 跨会话记忆 每轮对话自动持久化,上下文可跨会话重置、压缩和渠道切换延续
👤 用户建模 自动维护用户的偏好、事实、沟通风格等档案
🤖 智能体建模 同时维护智能体自身的个性与习得行为
🔍 语义搜索 搜索过去对话中的观察结果和结论,而非仅仅当前会话
👨‍👩‍👧‍👦 多智能体感知 父智能体自动跟踪子智能体,并在子会话中作为观察者参与
🧠 形式逻辑推理 不仅存储数据,更通过演绎、归纳、溯因推导出深层结论
🏠 完全自托管 可本地运行,数据不出服务器,无需外部 API

Honcho 可以 与任何模型、任何框架、任何架构 配合使用,无论是简单的聊天机器人,还是复杂的多智能体系统。


概念

要理解 Honcho,首先需要掌握它的四个存储原语(Primal)和一个推理引擎。它们之间的层级关系如下:
#mermaid-svg-ftyfeufOTqcvr3zB{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-ftyfeufOTqcvr3zB .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-ftyfeufOTqcvr3zB .error-icon{fill:#552222;}#mermaid-svg-ftyfeufOTqcvr3zB .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-ftyfeufOTqcvr3zB .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-ftyfeufOTqcvr3zB .marker{fill:#333333;stroke:#333333;}#mermaid-svg-ftyfeufOTqcvr3zB .marker.cross{stroke:#333333;}#mermaid-svg-ftyfeufOTqcvr3zB svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-ftyfeufOTqcvr3zB p{margin:0;}#mermaid-svg-ftyfeufOTqcvr3zB .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-ftyfeufOTqcvr3zB .cluster-label text{fill:#333;}#mermaid-svg-ftyfeufOTqcvr3zB .cluster-label span{color:#333;}#mermaid-svg-ftyfeufOTqcvr3zB .cluster-label span p{background-color:transparent;}#mermaid-svg-ftyfeufOTqcvr3zB .label text,#mermaid-svg-ftyfeufOTqcvr3zB span{fill:#333;color:#333;}#mermaid-svg-ftyfeufOTqcvr3zB .node rect,#mermaid-svg-ftyfeufOTqcvr3zB .node circle,#mermaid-svg-ftyfeufOTqcvr3zB .node ellipse,#mermaid-svg-ftyfeufOTqcvr3zB .node polygon,#mermaid-svg-ftyfeufOTqcvr3zB .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-ftyfeufOTqcvr3zB .rough-node .label text,#mermaid-svg-ftyfeufOTqcvr3zB .node .label text,#mermaid-svg-ftyfeufOTqcvr3zB .image-shape .label,#mermaid-svg-ftyfeufOTqcvr3zB .icon-shape .label{text-anchor:middle;}#mermaid-svg-ftyfeufOTqcvr3zB .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-ftyfeufOTqcvr3zB .rough-node .label,#mermaid-svg-ftyfeufOTqcvr3zB .node .label,#mermaid-svg-ftyfeufOTqcvr3zB .image-shape .label,#mermaid-svg-ftyfeufOTqcvr3zB .icon-shape .label{text-align:center;}#mermaid-svg-ftyfeufOTqcvr3zB .node.clickable{cursor:pointer;}#mermaid-svg-ftyfeufOTqcvr3zB .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-ftyfeufOTqcvr3zB .arrowheadPath{fill:#333333;}#mermaid-svg-ftyfeufOTqcvr3zB .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-ftyfeufOTqcvr3zB .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-ftyfeufOTqcvr3zB .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ftyfeufOTqcvr3zB .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-ftyfeufOTqcvr3zB .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ftyfeufOTqcvr3zB .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-ftyfeufOTqcvr3zB .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-ftyfeufOTqcvr3zB .cluster text{fill:#333;}#mermaid-svg-ftyfeufOTqcvr3zB .cluster span{color:#333;}#mermaid-svg-ftyfeufOTqcvr3zB div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-ftyfeufOTqcvr3zB .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-ftyfeufOTqcvr3zB rect.text{fill:none;stroke-width:0;}#mermaid-svg-ftyfeufOTqcvr3zB .icon-shape,#mermaid-svg-ftyfeufOTqcvr3zB .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-ftyfeufOTqcvr3zB .icon-shape p,#mermaid-svg-ftyfeufOTqcvr3zB .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-ftyfeufOTqcvr3zB .icon-shape .label rect,#mermaid-svg-ftyfeufOTqcvr3zB .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-ftyfeufOTqcvr3zB .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-ftyfeufOTqcvr3zB .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-ftyfeufOTqcvr3zB :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} Workspace 工作区

顶层隔离容器
Peer: 用户
Peer: 智能体
Peer: 群组/想法
Session 会话 1
Session 会话 2
Session 会话 3
Messages 消息
Messages 消息
Messages 消息
Messages 消息
推理引擎

后台异步处理
Representations

可查询的表示
开发者 / 智能体查询

Workspace 工作区

🔒 隔离容器,不同应用或环境的数据互不干扰

Workspace 是顶层隔离单元。比如你可以为"客服机器人"创建一个工作区,为"个人助理"创建另一个工作区,两者的记忆完全隔离。

在 OpenClaw 集成中,默认工作区 ID 为 openclaw


Peer 对等体

🧑‍🤝‍🧑 持久存在的实体------用户、智能体、对象、群组、想法......

Peer 是 Honcho 中最核心的概念。 每一个值得被记住的"存在"都是一个 Peer。它可以是:

  • 一个真实的用户(你)
  • 一个 AI 智能体(助手)
  • 一个群组(多个 Peer 的集合)
  • 甚至是一个"想法"或"项目"

每个 Peer 拥有独立的 表示(Representation),Honcho 通过推理不断更新这些表示,让它们越来越精准地反映实体的真实面貌。

💡 简单理解:Peer 就像 Honcho 给每个"角色"建立的一份动态档案,越用越懂你。


Session 会话

💬 Peer 之间的交互线程

Session 是 Peer 之间的一次连续对话,它有明确的时间边界:

  • 一个 Peer 可以参与多个会话
  • 多个 Peer 也可以在同一个会话中交互
  • Session 是消息的容器 ,也是上下文检索的基本单位

比如你和一个 AI 助手在 WhatsApp 上聊天的整个过程,就是一个 Session。


Message 消息

📝 触发推理的数据单元

消息不只是"聊天内容"------它可以是:

  • 对话中的一句话
  • 一个系统事件(如"用户上传了文件")
  • 一条活动记录
  • 一份文档或日志

当你向 Honcho 写入消息时,它们会被立即存储,并进入后台推理队列。这种设计保证了写入操作的快速响应,同时让推理能力在后台安静地运转。


推理引擎:Honcho 的大脑

🧠 从数据中提取洞察,而非仅仅存储数据

Honcho 不仅仅是一个"记忆数据库"。它的推理引擎会异步处理所有消息,提取显式信息、推导隐含结论、识别模式、并推断行为背后的原因。


推理引擎运作

推理引擎是 Honcho 最具特色的部分。它使用自定义训练的模型执行形式逻辑推理,整个过程可以拆解为四个层次:
#mermaid-svg-AKnCS0pWCb3JiG1T{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-AKnCS0pWCb3JiG1T .error-icon{fill:#552222;}#mermaid-svg-AKnCS0pWCb3JiG1T .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-AKnCS0pWCb3JiG1T .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-AKnCS0pWCb3JiG1T .marker{fill:#333333;stroke:#333333;}#mermaid-svg-AKnCS0pWCb3JiG1T .marker.cross{stroke:#333333;}#mermaid-svg-AKnCS0pWCb3JiG1T svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-AKnCS0pWCb3JiG1T p{margin:0;}#mermaid-svg-AKnCS0pWCb3JiG1T .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T .cluster-label text{fill:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T .cluster-label span{color:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T .cluster-label span p{background-color:transparent;}#mermaid-svg-AKnCS0pWCb3JiG1T .label text,#mermaid-svg-AKnCS0pWCb3JiG1T span{fill:#333;color:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T .node rect,#mermaid-svg-AKnCS0pWCb3JiG1T .node circle,#mermaid-svg-AKnCS0pWCb3JiG1T .node ellipse,#mermaid-svg-AKnCS0pWCb3JiG1T .node polygon,#mermaid-svg-AKnCS0pWCb3JiG1T .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-AKnCS0pWCb3JiG1T .rough-node .label text,#mermaid-svg-AKnCS0pWCb3JiG1T .node .label text,#mermaid-svg-AKnCS0pWCb3JiG1T .image-shape .label,#mermaid-svg-AKnCS0pWCb3JiG1T .icon-shape .label{text-anchor:middle;}#mermaid-svg-AKnCS0pWCb3JiG1T .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-AKnCS0pWCb3JiG1T .rough-node .label,#mermaid-svg-AKnCS0pWCb3JiG1T .node .label,#mermaid-svg-AKnCS0pWCb3JiG1T .image-shape .label,#mermaid-svg-AKnCS0pWCb3JiG1T .icon-shape .label{text-align:center;}#mermaid-svg-AKnCS0pWCb3JiG1T .node.clickable{cursor:pointer;}#mermaid-svg-AKnCS0pWCb3JiG1T .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-AKnCS0pWCb3JiG1T .arrowheadPath{fill:#333333;}#mermaid-svg-AKnCS0pWCb3JiG1T .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-AKnCS0pWCb3JiG1T .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-AKnCS0pWCb3JiG1T .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-AKnCS0pWCb3JiG1T .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-AKnCS0pWCb3JiG1T .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-AKnCS0pWCb3JiG1T .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-AKnCS0pWCb3JiG1T .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-AKnCS0pWCb3JiG1T .cluster text{fill:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T .cluster span{color:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-AKnCS0pWCb3JiG1T .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-AKnCS0pWCb3JiG1T rect.text{fill:none;stroke-width:0;}#mermaid-svg-AKnCS0pWCb3JiG1T .icon-shape,#mermaid-svg-AKnCS0pWCb3JiG1T .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-AKnCS0pWCb3JiG1T .icon-shape p,#mermaid-svg-AKnCS0pWCb3JiG1T .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-AKnCS0pWCb3JiG1T .icon-shape .label rect,#mermaid-svg-AKnCS0pWCb3JiG1T .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-AKnCS0pWCb3JiG1T .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-AKnCS0pWCb3JiG1T .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-AKnCS0pWCb3JiG1T :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 📤 输出
🧠 推理层
📥 输入
Messages

消息队列
显式提取

Explicit
演绎推理

Deductive
归纳推理

Inductive
溯因推理

Abductive
Peer Card

关键传记信息
整合

去重/消歧
模式识别

跨消息规律
行为解释

最简推断

四种推理能力

推理类型 说明 示例
显式提取 提取用户直接陈述的内容 用户说"我是程序员" → 显式记录"职业:程序员"
演绎推理 从已有前提推导出必然结论 "用户说喜欢 Python" + "Python 是一种编程语言" → "用户掌握编程技能"
归纳推理 从多个消息中识别模式 用户多次询问性能优化 → "用户关注系统性能"
溯因推理 推断观察行为的最简单解释 用户频繁问"怎么做" → "用户处于学习阶段"

推理生成的数据结构大致如下:

json 复制代码
{
  "explicit": [
    { "content": "用户说:我喜欢用 Python 写脚本" }
  ],
  "deductive": [
    {
      "premises": ["用户喜欢 Python", "Python 用于脚本编程"],
      "conclusion": "用户具备脚本编程经验"
    }
  ]
}

Token 批处理机制

Honcho 不会对每条消息单独运行推理(那样成本太高)。相反,它采用 Token 批处理 策略:

🔄 当某个 Peer 的待处理消息累积到约 1,000 token 时,触发一次批量推理。

这样既保证了推理成本可控,又确保每次推理有足够的上下文量,使结论更准确。


安装指南

Honcho 的安装方式取决于你的使用场景。

OpenClaw 插件安装

面向 OpenClaw 用户,只需三步即可获得跨所有渠道(WhatsApp、Telegram、Discord、Slack......)的记忆能力:

bash 复制代码
# 1️⃣ 安装插件
openclaw plugins install @honcho-ai/openclaw-honcho

# 2️⃣ 运行设置向导(交互式配置 API 密钥、迁移现有文件)
openclaw honcho setup

# 3️⃣ 重启网关
openclaw gateway --force

# 卸载
openclaw plugins uninstall openclaw-honcho

💡 自托管提示 :如果你使用本地 Honcho 实例,在 setup 提示输入 API Key 时直接回车留空 ,然后将 Base URL 设置为 http://localhost:8000


独立 SDK 安装

如果你在构建自己的应用(非 OpenClaw),选择适合的包管理器:

包管理器 命令
Python (uv) uv add honcho-ai
Python (pip) pip install honcho-ai
TypeScript (npm) npm install honcho-ai
TypeScript (yarn) yarn add honcho-ai
TypeScript (pnpm) pnpm add honcho-ai

安装后,访问 app.honcho.dev 注册账号获取 API Key。新用户可获得 $100 免费额度 🎁。


配置详解

OpenClaw 插件配置

配置位于 ~/.openclaw/openclaw.jsonplugins.entries["openclaw-honcho"].config 下:

json5 复制代码
{
  "plugins": {
    "entries": {
      "openclaw-honcho": {
        "config": {
          "apiKey": "your-api-key",          // 托管模式必填;自托管时删除此字段
          "workspaceId": "openclaw",          // 记忆隔离的工作区 ID
          "baseUrl": "https://api.honcho.dev" // API 端点地址
        }
      }
    }
  }
}
配置项 默认值 说明
apiKey --- Honcho API 密钥(托管模式必填,自托管时省略)
workspaceId "openclaw" 工作区 ID,用于记忆隔离
baseUrl "https://api.honcho.dev" API 端点(自托管时改为本地地址)

自托管配置

Honcho 可以完全运行在本地,无需任何外部 API 依赖:

bash 复制代码
# 1️⃣ 按照 Honcho 自托管指南部署本地实例
# 2️⃣ 运行设置向导,将 Base URL 指向本地服务器
openclaw honcho setup
# 输入空的 API Key,Base URL 设为 http://localhost:8000

⚠️ 注意 :自托管实例不需要 API Key。将 baseUrl 指向本地服务器地址(如 http://localhost:8000),并省略 apiKey 字段。


OpenClaw 集成:

插件安装后,记忆能力会自动生效,无需手动干预。它通过三个机制协同工作:
#mermaid-svg-xl7Zaq3F8F92mW5N{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-xl7Zaq3F8F92mW5N .error-icon{fill:#552222;}#mermaid-svg-xl7Zaq3F8F92mW5N .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-xl7Zaq3F8F92mW5N .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-xl7Zaq3F8F92mW5N .marker{fill:#333333;stroke:#333333;}#mermaid-svg-xl7Zaq3F8F92mW5N .marker.cross{stroke:#333333;}#mermaid-svg-xl7Zaq3F8F92mW5N svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-xl7Zaq3F8F92mW5N p{margin:0;}#mermaid-svg-xl7Zaq3F8F92mW5N .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N .cluster-label text{fill:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N .cluster-label span{color:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N .cluster-label span p{background-color:transparent;}#mermaid-svg-xl7Zaq3F8F92mW5N .label text,#mermaid-svg-xl7Zaq3F8F92mW5N span{fill:#333;color:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N .node rect,#mermaid-svg-xl7Zaq3F8F92mW5N .node circle,#mermaid-svg-xl7Zaq3F8F92mW5N .node ellipse,#mermaid-svg-xl7Zaq3F8F92mW5N .node polygon,#mermaid-svg-xl7Zaq3F8F92mW5N .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-xl7Zaq3F8F92mW5N .rough-node .label text,#mermaid-svg-xl7Zaq3F8F92mW5N .node .label text,#mermaid-svg-xl7Zaq3F8F92mW5N .image-shape .label,#mermaid-svg-xl7Zaq3F8F92mW5N .icon-shape .label{text-anchor:middle;}#mermaid-svg-xl7Zaq3F8F92mW5N .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-xl7Zaq3F8F92mW5N .rough-node .label,#mermaid-svg-xl7Zaq3F8F92mW5N .node .label,#mermaid-svg-xl7Zaq3F8F92mW5N .image-shape .label,#mermaid-svg-xl7Zaq3F8F92mW5N .icon-shape .label{text-align:center;}#mermaid-svg-xl7Zaq3F8F92mW5N .node.clickable{cursor:pointer;}#mermaid-svg-xl7Zaq3F8F92mW5N .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-xl7Zaq3F8F92mW5N .arrowheadPath{fill:#333333;}#mermaid-svg-xl7Zaq3F8F92mW5N .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-xl7Zaq3F8F92mW5N .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-xl7Zaq3F8F92mW5N .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xl7Zaq3F8F92mW5N .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-xl7Zaq3F8F92mW5N .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xl7Zaq3F8F92mW5N .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-xl7Zaq3F8F92mW5N .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-xl7Zaq3F8F92mW5N .cluster text{fill:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N .cluster span{color:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-xl7Zaq3F8F92mW5N .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-xl7Zaq3F8F92mW5N rect.text{fill:none;stroke-width:0;}#mermaid-svg-xl7Zaq3F8F92mW5N .icon-shape,#mermaid-svg-xl7Zaq3F8F92mW5N .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-xl7Zaq3F8F92mW5N .icon-shape p,#mermaid-svg-xl7Zaq3F8F92mW5N .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-xl7Zaq3F8F92mW5N .icon-shape .label rect,#mermaid-svg-xl7Zaq3F8F92mW5N .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-xl7Zaq3F8F92mW5N .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-xl7Zaq3F8F92mW5N .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-xl7Zaq3F8F92mW5N :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 💾 存储
🧠 Honcho 记忆系统
🤖 OpenClaw 智能体
👤 用户交互
用户发送消息
AI 处理
生成回复
消息观察器

持久化每轮对话
上下文注入器

before_prompt_build 钩子
AI 工具集

数据检索 + 问答
用户 Peer

偏好·事实·风格
智能体 Peer

个性·习得行为

双 Peer 模型

Honcho 为每次对话维护 两套独立表示

  • 用户 Peer:存储用户的偏好、事实、沟通风格
  • 智能体 Peer:存储智能体的个性、习得行为

每个 OpenClaw 智能体拥有自己的 Honcho Peer(agent-{id}),多智能体工作区中各智能体的记忆保持隔离,互不干扰。


多智能体感知

OpenClaw 支持主智能体生成子智能体处理专门任务。Honcho 插件完全感知这一层次结构:
#mermaid-svg-aZhXNFqLzuWxkrJL{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-aZhXNFqLzuWxkrJL .error-icon{fill:#552222;}#mermaid-svg-aZhXNFqLzuWxkrJL .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-aZhXNFqLzuWxkrJL .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-aZhXNFqLzuWxkrJL .marker{fill:#333333;stroke:#333333;}#mermaid-svg-aZhXNFqLzuWxkrJL .marker.cross{stroke:#333333;}#mermaid-svg-aZhXNFqLzuWxkrJL svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-aZhXNFqLzuWxkrJL p{margin:0;}#mermaid-svg-aZhXNFqLzuWxkrJL .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL .cluster-label text{fill:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL .cluster-label span{color:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL .cluster-label span p{background-color:transparent;}#mermaid-svg-aZhXNFqLzuWxkrJL .label text,#mermaid-svg-aZhXNFqLzuWxkrJL span{fill:#333;color:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL .node rect,#mermaid-svg-aZhXNFqLzuWxkrJL .node circle,#mermaid-svg-aZhXNFqLzuWxkrJL .node ellipse,#mermaid-svg-aZhXNFqLzuWxkrJL .node polygon,#mermaid-svg-aZhXNFqLzuWxkrJL .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-aZhXNFqLzuWxkrJL .rough-node .label text,#mermaid-svg-aZhXNFqLzuWxkrJL .node .label text,#mermaid-svg-aZhXNFqLzuWxkrJL .image-shape .label,#mermaid-svg-aZhXNFqLzuWxkrJL .icon-shape .label{text-anchor:middle;}#mermaid-svg-aZhXNFqLzuWxkrJL .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-aZhXNFqLzuWxkrJL .rough-node .label,#mermaid-svg-aZhXNFqLzuWxkrJL .node .label,#mermaid-svg-aZhXNFqLzuWxkrJL .image-shape .label,#mermaid-svg-aZhXNFqLzuWxkrJL .icon-shape .label{text-align:center;}#mermaid-svg-aZhXNFqLzuWxkrJL .node.clickable{cursor:pointer;}#mermaid-svg-aZhXNFqLzuWxkrJL .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-aZhXNFqLzuWxkrJL .arrowheadPath{fill:#333333;}#mermaid-svg-aZhXNFqLzuWxkrJL .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-aZhXNFqLzuWxkrJL .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-aZhXNFqLzuWxkrJL .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aZhXNFqLzuWxkrJL .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-aZhXNFqLzuWxkrJL .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aZhXNFqLzuWxkrJL .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-aZhXNFqLzuWxkrJL .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-aZhXNFqLzuWxkrJL .cluster text{fill:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL .cluster span{color:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-aZhXNFqLzuWxkrJL .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-aZhXNFqLzuWxkrJL rect.text{fill:none;stroke-width:0;}#mermaid-svg-aZhXNFqLzuWxkrJL .icon-shape,#mermaid-svg-aZhXNFqLzuWxkrJL .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-aZhXNFqLzuWxkrJL .icon-shape p,#mermaid-svg-aZhXNFqLzuWxkrJL .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-aZhXNFqLzuWxkrJL .icon-shape .label rect,#mermaid-svg-aZhXNFqLzuWxkrJL .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-aZhXNFqLzuWxkrJL .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-aZhXNFqLzuWxkrJL .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-aZhXNFqLzuWxkrJL :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} spawn
spawn
observeMe: false

observeOthers: true
observeMe: false

observeOthers: true
子会话 Session B
子智能体消息
子会话 Session A
子智能体消息
父会话 Session P
父智能体消息
父智能体 Peer

agent-parent-001
子智能体 Peer

agent-child-001
子智能体 Peer

agent-child-002

  • 自动检测 :当 OpenClaw 生成子智能体时,插件通过 subagent_spawned 钩子跟踪父子关系
  • 父作为观察者 :父智能体被添加为子智能体 Honcho 会话中的静默观察者observeMe: false, observeOthers: true
  • 完整可见性:父智能体可以看到子智能体的行为,但其自身消息不会被错误归入子会话

AI 工具集

Honcho 为智能体注册了两类工具,可在对话期间按需调用:

📊 数据检索(快速,无需 LLM 调用)
工具 作用
honcho_context 跨会话的完整用户表示。detail='card' 获取关键事实,'full' 获取广泛表示
honcho_search_conclusions 对已存储结论进行语义向量搜索,按相关性排序
honcho_search_messages 跨会话查找消息,支持按发送者、日期或元数据过滤
honcho_session 当前会话历史和摘要,支持会话内语义搜索
💬 问答(由 LLM 驱动)
工具 作用
honcho_ask 向 Honcho 询问有关用户的问题。depth='quick' 用于事实查询,'thorough' 用于综合分析

🎯 工具选择原则 :简单事实查询用检索工具,开放性问题用 honcho_ask


CLI 命令

OpenClaw 提供了以下 Honcho 命令行工具:

命令 说明
openclaw honcho setup 配置 API 密钥并迁移现有记忆文件
openclaw honcho status 检查 Honcho 服务连接状态
openclaw honcho ask "问题" 向 Honcho 询问有关用户的信息
openclaw honcho search "查询" -k 10 -d 0.8 对记忆进行语义搜索(-k 指定 TopK,-d 指定最大语义距离)

迁移现有记忆

如果你已经在使用 OpenClaw 的工作区记忆文件(USER.mdMEMORY.mdIDENTITY.mdmemory/canvas/ 等),openclaw honcho setup 会检测并提供非破坏性迁移

迁移映射

类别 文件 上传目标
用户/所有者文件 USER.mdIDENTITY.mdMEMORY.mdmemory/canvas/ Owner Peer
智能体/自身文件 SOUL.mdAGENTS.mdTOOLS.mdBOOTSTRAP.md OpenClaw Peer

非破坏性保证 :文件会被上传到 Honcho,但原始文件永远不会被删除或移动。平台元数据(对话信息、发送者头信息等)在保存前会被剥离,只保留有意义的正文内容。


SDK 编程使用

如果你在构建自定义 AI 应用,Honcho SDK 提供了完整的编程接口。以下是核心流程:
#mermaid-svg-Vm16OO4441YNchjx{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#mermaid-svg-Vm16OO4441YNchjx .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#mermaid-svg-Vm16OO4441YNchjx .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#mermaid-svg-Vm16OO4441YNchjx .error-icon{fill:#552222;}#mermaid-svg-Vm16OO4441YNchjx .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-Vm16OO4441YNchjx .edge-thickness-normal{stroke-width:1px;}#mermaid-svg-Vm16OO4441YNchjx .edge-thickness-thick{stroke-width:3.5px;}#mermaid-svg-Vm16OO4441YNchjx .edge-pattern-solid{stroke-dasharray:0;}#mermaid-svg-Vm16OO4441YNchjx .edge-thickness-invisible{stroke-width:0;fill:none;}#mermaid-svg-Vm16OO4441YNchjx .edge-pattern-dashed{stroke-dasharray:3;}#mermaid-svg-Vm16OO4441YNchjx .edge-pattern-dotted{stroke-dasharray:2;}#mermaid-svg-Vm16OO4441YNchjx .marker{fill:#333333;stroke:#333333;}#mermaid-svg-Vm16OO4441YNchjx .marker.cross{stroke:#333333;}#mermaid-svg-Vm16OO4441YNchjx svg{font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;}#mermaid-svg-Vm16OO4441YNchjx p{margin:0;}#mermaid-svg-Vm16OO4441YNchjx .label{font-family:"trebuchet ms",verdana,arial,sans-serif;color:#333;}#mermaid-svg-Vm16OO4441YNchjx .cluster-label text{fill:#333;}#mermaid-svg-Vm16OO4441YNchjx .cluster-label span{color:#333;}#mermaid-svg-Vm16OO4441YNchjx .cluster-label span p{background-color:transparent;}#mermaid-svg-Vm16OO4441YNchjx .label text,#mermaid-svg-Vm16OO4441YNchjx span{fill:#333;color:#333;}#mermaid-svg-Vm16OO4441YNchjx .node rect,#mermaid-svg-Vm16OO4441YNchjx .node circle,#mermaid-svg-Vm16OO4441YNchjx .node ellipse,#mermaid-svg-Vm16OO4441YNchjx .node polygon,#mermaid-svg-Vm16OO4441YNchjx .node path{fill:#ECECFF;stroke:#9370DB;stroke-width:1px;}#mermaid-svg-Vm16OO4441YNchjx .rough-node .label text,#mermaid-svg-Vm16OO4441YNchjx .node .label text,#mermaid-svg-Vm16OO4441YNchjx .image-shape .label,#mermaid-svg-Vm16OO4441YNchjx .icon-shape .label{text-anchor:middle;}#mermaid-svg-Vm16OO4441YNchjx .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#mermaid-svg-Vm16OO4441YNchjx .rough-node .label,#mermaid-svg-Vm16OO4441YNchjx .node .label,#mermaid-svg-Vm16OO4441YNchjx .image-shape .label,#mermaid-svg-Vm16OO4441YNchjx .icon-shape .label{text-align:center;}#mermaid-svg-Vm16OO4441YNchjx .node.clickable{cursor:pointer;}#mermaid-svg-Vm16OO4441YNchjx .root .anchor path{fill:#333333!important;stroke-width:0;stroke:#333333;}#mermaid-svg-Vm16OO4441YNchjx .arrowheadPath{fill:#333333;}#mermaid-svg-Vm16OO4441YNchjx .edgePath .path{stroke:#333333;stroke-width:2.0px;}#mermaid-svg-Vm16OO4441YNchjx .flowchart-link{stroke:#333333;fill:none;}#mermaid-svg-Vm16OO4441YNchjx .edgeLabel{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Vm16OO4441YNchjx .edgeLabel p{background-color:rgba(232,232,232, 0.8);}#mermaid-svg-Vm16OO4441YNchjx .edgeLabel rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Vm16OO4441YNchjx .labelBkg{background-color:rgba(232, 232, 232, 0.5);}#mermaid-svg-Vm16OO4441YNchjx .cluster rect{fill:#ffffde;stroke:#aaaa33;stroke-width:1px;}#mermaid-svg-Vm16OO4441YNchjx .cluster text{fill:#333;}#mermaid-svg-Vm16OO4441YNchjx .cluster span{color:#333;}#mermaid-svg-Vm16OO4441YNchjx div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:12px;background:hsl(80, 100%, 96.2745098039%);border:1px solid #aaaa33;border-radius:2px;pointer-events:none;z-index:100;}#mermaid-svg-Vm16OO4441YNchjx .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#333;}#mermaid-svg-Vm16OO4441YNchjx rect.text{fill:none;stroke-width:0;}#mermaid-svg-Vm16OO4441YNchjx .icon-shape,#mermaid-svg-Vm16OO4441YNchjx .image-shape{background-color:rgba(232,232,232, 0.8);text-align:center;}#mermaid-svg-Vm16OO4441YNchjx .icon-shape p,#mermaid-svg-Vm16OO4441YNchjx .image-shape p{background-color:rgba(232,232,232, 0.8);padding:2px;}#mermaid-svg-Vm16OO4441YNchjx .icon-shape .label rect,#mermaid-svg-Vm16OO4441YNchjx .image-shape .label rect{opacity:0.5;background-color:rgba(232,232,232, 0.8);fill:rgba(232,232,232, 0.8);}#mermaid-svg-Vm16OO4441YNchjx .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#mermaid-svg-Vm16OO4441YNchjx .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#mermaid-svg-Vm16OO4441YNchjx :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;} 🔹 4. 查询推理
user.chat ('关于这位用户

我需要知道什么?')
📤 获得综合洞察
🔹 3. 会话与消息
创建 Session

session = honcho.session('id')
session.add_peers(user, assistant)
session.add_messages(messages)
🔹 2. 创建 Peer
user = honcho.peer('user')
assistant = honcho.peer('assistant')
🔹 1. 初始化
创建 Honcho 客户端

传入 workspace_id + api_key

快速开始

python 复制代码
from honcho import Honcho

# 1️⃣ 初始化客户端
honcho = Honcho(
    workspace_id="my-workspace",
    api_key="your-api-key"
)

# 2️⃣ 创建 Peer(为每个参与者创建)
user = honcho.peer("user-123")
assistant = honcho.peer("assistant-001")

# 3️⃣ 创建会话并添加消息
session = honcho.session("conversation-001")
session.add_peers([user, assistant])

messages = [
    user.message("我登录账户时遇到了问题"),
    assistant.message("我可以帮你。你看到了什么错误信息?"),
    user.message("它说'凭据无效',但我确定密码是对的")
]
session.add_messages(messages)

# 4️⃣ 查询推理结果
response = user.chat("关于这个用户,我需要知道什么?简要概括")
print(response)

⏱️ 处理延迟 :Honcho 需要少量时间处理消息。可以通过 honcho.status() 方法检查队列状态。

获取上下文

context() 方法是从会话中检索格式化上下文的主要接口,可直接用于 LLM 集成:

python 复制代码
# 基础用法
context = session.context()

# 限制 token 数量
context = session.context(tokens=1500)

# 包含用户表示,并进行语义搜索
context = session.context(
    tokens=2000,
    peer_target="user-123",           # 包含该用户的表示
    search_query="用户的编程偏好",     # 语义搜索
    search_top_k=10,
    include_most_frequent=True,
    max_conclusions=25
)
上下文参数一览
参数 类型 说明
summary bool 是否包含摘要(默认 true)
tokens int 上下文最大 token 数
peer_target str 指定要包含表示的 Peer ID
peer_perspective str 指定视角的 Peer ID(需配合 peer_target)
search_query str 语义搜索查询(需配合 peer_target)
search_top_k int 返回结果数(1-100)
search_max_distance float 最大语义距离(0.0-1.0)
include_most_frequent bool 是否包含最频繁结论
max_conclusions int 最大结论数(1-100)

LLM 集成示例

SessionContext 对象提供了 to_openai()to_anthropic() 方法,可无缝集成主流 LLM API:

python 复制代码
import openai
from honcho import Honcho

honcho = Honcho()
openai_client = openai.OpenAI()

session = honcho.session("support-chat")
user = honcho.peer("user-123")
assistant = honcho.peer("support-bot")

# 添加对话历史
session.add_messages([
    user.message("我登录账户遇到了问题"),
    assistant.message("我可以帮你。你看到了什么错误信息?"),
    user.message("它说'凭据无效'但我确定密码是对的")
])

# 获取上下文并转换为 OpenAI 格式
messages = session.context(tokens=2000).to_openai(assistant=assistant)

# 追加新用户消息
messages.append({"role": "user", "content": "你能重置我的密码吗?"})

# 调用 OpenAI
response = openai_client.chat.completions.create(
    model="gpt-4",
    messages=messages
)

# 将 AI 响应写回 Honcho
ai_response = response.choices[0].message.content
session.add_messages([assistant.message(ai_response)])

print(f"助手回复:{ai_response}")

Honcho vs 内置记忆 ------ 对比一览

OpenClaw 默认通过工作区中的 Markdown 文件实现记忆。Honcho 提供了基于专用服务的替代方案,两者可以协同工作而非互斥。

维度 内置 / QMD Honcho
存储介质 工作区 Markdown 文件 专用服务(本地或托管)
跨会话记忆 通过记忆文件手动管理 自动,内置
用户建模 手动写入 MEMORY.md 自动创建并更新档案
搜索方式 向量 + 关键词(混合) 基于观察结果的语义搜索
多智能体感知 不跟踪父子关系 原生父/子感知
推理能力 形式逻辑推理(演绎、归纳、溯因)
依赖项 无(内置)或 QMD 二进制 安装 Honcho 插件
学习能力 静态 持续学习,随时间演进

高级用法:与 QMD 协同工作

Honcho 插件在配置了 QMD 记忆后端时,会自动暴露 memory_searchmemory_get 工具,实现 Honcho 推理记忆 + QMD 本地文件检索 的双重能力。

json5 复制代码
// ~/.openclaw/openclaw.json
{
  "memory": {
    "backend": "qmd"    // 启用 QMD 后端
  }
}

配置完成后,你将同时拥有:

工具 来源 说明
honcho_* Honcho 跨会话记忆、用户建模、逻辑推理
memory_search QMD 搜索本地 Markdown 文件
memory_get QMD 获取特定文件内容

常见问题解决

openclaw honcho setup 报错:

bash 复制代码
[openclaw] Could not start the CLI.
[openclaw] Reason: Unknown command: openclaw honcho. No built-in command or plugin CLI metadata owns "honcho".
[openclaw] Debug: set OPENCLAW_DEBUG=1 to include the stack trace.
[openclaw] Try: openclaw doctor
[openclaw] Help: openclaw --help

使用如下命令查看:

bash 复制代码
openclaw plugins inspect openclaw-honcho 2>&1 | tail -30

如下图所示:

该插件当前处于禁用状态,原因是内存槽位已被内置的 memory-core 占用。Honcho 本身属于内存类插件,同一时间仅允许一个内存插件处于激活状态。

所以需要先关闭(禁用)memory-core插件。

✨ Honcho 的独特之处

Honcho 不是另一个"对话历史数据库"。它是一个 持续学习的推理系统,能够从对话中提取深层洞察。

相关推荐
泛普软件1 小时前
工程施工项目管理办公系统能解决哪些现场管理难题与超支问题
大数据·人工智能·软件需求
happy_baymax1 小时前
MATLAB MCP Server+ MATLAB Agentic Toolkit+Simulink Agentic Toolkit自动更新批处理文件.ps1
人工智能·算法
深兰科技1 小时前
深兰科技携手绿地集团布局行业智能体,绿地深兰科技智能体科技公司揭牌
人工智能·科技·启发式算法·推荐算法·深兰科技·绿地集团·deepagent
AIVOClaw容剪1 小时前
AI 成片系统搭建如何让矩阵号差异化从「同一脚本 50 个号发」变成「反推提示词每号一版」——5 模块防止同质化被判搬运 · AI 视频智能体平台
人工智能·矩阵·音视频
A15362552 小时前
WMS 仓储系统的软件有哪些?2026 主流产品分类与选型参考
大数据·人工智能
爱炼丹的James2 小时前
目标检测任务
人工智能·深度学习
春末的南方城市2 小时前
消费级显卡迎来实时视频生成!FastVideo 开源 FastWan-QAD,RTX 5090 实现 1.8 秒生成 5 秒 480P 视频!
人工智能·深度学习·计算机视觉·aigc·音视频
ivywriter2 小时前
【具身智能】VLA大模型和世界模型有什么区别?
人工智能
Thom5802 小时前
【迅投 QMT】QMT如何获取ETF申赎清单?download_etf_info()与get_etf_info()教程
人工智能·经验分享·量化交易·ptrade·量化编程