🧠 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.json 的 plugins.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.md、MEMORY.md、IDENTITY.md、memory/、canvas/ 等),openclaw honcho setup 会检测并提供非破坏性迁移。
迁移映射
| 类别 | 文件 | 上传目标 |
|---|---|---|
| 用户/所有者文件 | USER.md、IDENTITY.md、MEMORY.md、memory/、canvas/ |
Owner Peer |
| 智能体/自身文件 | SOUL.md、AGENTS.md、TOOLS.md、BOOTSTRAP.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_search 和 memory_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 不是另一个"对话历史数据库"。它是一个 持续学习的推理系统,能够从对话中提取深层洞察。