名称: penfield
描述: 为 OpenClaw 智能体提供持久化记忆。存储决策、偏好和上下文,使其在不同会话间持续存在。构建随时间增长的知识图谱。混合搜索(BM25 + 向量 + 图谱)能在需要时准确召回重要信息。
元数据: {"openclaw":{"emoji":"🧠","install":[{"id":"npm","kind":"node","package":"openclaw-penfield","global":true,"label":"安装 Penfield 插件"}],"requires":{"config":["plugins.entries.openclaw-penfield.enabled"]}}}
持久化、可积累的记忆。您的智能体能够记住对话、学习偏好、关联想法,并在会话、日期和渠道之间实现无缝衔接,随时从上次中断的地方继续。
| 工具 | 用途 | 使用场景 |
|---|---|---|
penfield_store |
保存记忆 | 用户分享偏好、您有新发现、做出决策、学到值得保留的内容时 |
penfield_recall |
混合搜索 (BM25 + 向量 + 图谱) | 回复前需要上下文、恢复某个话题、查找先前决策时 |
penfield_search |
语义搜索 (向量权重更高) | 没有确切术语时进行模糊概念搜索 |
penfield_fetch |
根据 ID 获取记忆 | 跟进从召回结果中找到的特定记忆 |
penfield_update_memory |
编辑现有记忆 | 修正、补充细节、更改重要性或标签 |
| 工具 | 用途 | 使用场景 |
|---|---|---|
penfield_connect |
连接两个记忆 | 新信息与现有知识相关,随时间构建理解时 |
penfield_explore |
从某个记忆开始遍历图谱 | 理解想法间的关联,寻找相关上下文时 |
| 工具 | 用途 | 使用场景 |
|---|---|---|
penfield_save_context |
保存会话检查点 | 结束实质性工作、准备将任务移交给其他智能体时 |
penfield_restore_context |
从检查点恢复 | 从您或其他智能体中断的地方继续 |
penfield_list_contexts |
列出已保存的检查点 | 查找要恢复的先前会话 |
penfield_reflect |
分析记忆模式 | 会话开始时的方向定位、寻找主题、发现信息缺口时 |
| 工具 | 用途 | 使用场景 |
|---|---|---|
penfield_save_artifact |
存储文件 | 保存图表、笔记、代码、参考文档时 |
penfield_retrieve_artifact |
获取文件 | 加载先前保存的工作成果时 |
penfield_list_artifacts |
列出存储的文件 | 浏览已保存的工件时 |
penfield_delete_artifact |
删除文件 | 清理过时的工件时 |
记忆内容的质量决定了 Penfield 是有用还是无用。关键在于具体性和上下文。
反面示例 — 模糊、无上下文、日后难以查找:
"用户喜欢 Python"
正面示例 — 具体、有上下文、易于查找:
"[偏好] 对于后端工作,用户更喜欢 Python 而非 JavaScript。
原因:对 JS 的回调模式和缺乏类型安全感到沮丧。
重视类型提示和明确的错误处理。使用 FastAPI 构建 API。"
让记忆易于查找的要素:
[偏好]、[项目: API 重构]、[调查: 支付故障]、[决策]使用正确的类型。系统会利用这些类型进行过滤和分析。
| 类型 | 用于 | 示例 |
|---|---|---|
fact |
已验证、持久的信息 | “用户公司使用 AWS EKS 运行 Kubernetes” |
insight |
模式或认知 | “部署失败与周五发布相关” |
correction |
修正先前的理解 | “更正:超时问题并非 Redis 导致,而是硬编码的批处理限制” |
conversation |
会话摘要、重要交流 | “讨论了迁移策略。用户倾向于渐进式方法” |
reference |
源材料、引用 | “RFC 8628 为输入受限设备定义了 OAuth 设备代码流” |
task |
工作项、待办事项 | “待办:索引重建后测试召回延迟” |
strategy |
方法、计划 | “对于用户的代码库:始终先检查 types.ts 文件,它是事实来源” |
checkpoint |
里程碑状态 | “项目进度 80% — 认证完成,UI 待完成” |
identity_core |
不可变的身份事实 | 通过个性配置设置,很少手动存储 |
personality_trait |
行为模式 | 通过个性配置设置,很少手动存储 |
relationship |
实体连接 | “用户与 Chad Schultz 在网络安全内容方面合作” |
充分利用评分范围。并非所有事情都是 0.5。
| 评分 | 含义 | 示例 |
|---|---|---|
| 0.9–1.0 | 关键 — 永不忘记 | 架构决策、来之不易的修正、核心偏好 |
| 0.7–0.8 | 重要 — 经常参考 | 项目上下文、关于用户工作的关键事实 |
| 0.5–0.6 | 普通 — 有用的上下文 | 一般偏好、会话摘要 |
| 0.3–0.4 | 次要 — 背景细节 | 间接事实、低风险观察 |
| 0.1–0.2 | 琐碎 — 可能无需存储 | 如果犹豫是否存储,那就别存 |
连接是 Penfield 强大的关键。孤立的记忆只是一条笔记。连接起来的记忆才是理解。
存储记忆后,始终要问: 这与什么相关?然后连接它。
知识演进: supersedes · updates · evolution_of
当理解发生变化时使用。“我们曾认为 X,现在我们知道 Y。”
证据: supports · contradicts · disputes
当新信息验证或挑战现有信念时使用。
层次结构: parent_of · child_of · sibling_of · composed_of · part_of
用于结构关系。包含子主题的主题,包含组件的系统。
因果关系: causes · influenced_by · prerequisite_for
用于因果链和依赖关系。
实现: implements · documents · tests · example_of
当某事物演示、描述或验证另一事物时使用。
对话: responds_to · references · inspired_by
用于归属和对话线程。
序列: follows · precedes
用于流程或时间线中的有序步骤。
依赖: depends_on
当一件事物需要另一件事物时使用。
好的查询能找到东西。坏的查询只会返回噪音。
根据查询类型调整搜索权重:
| 查询类型 | bm25_weight | vector_weight | graph_weight |
|---|---|---|---|
| 精确术语查找 (“Twilio 认证令牌”) | 0.6 | 0.3 | 0.1 |
| 概念搜索 (“我们如何处理错误”) | 0.2 | 0.6 | 0.2 |
| 关联知识搜索 (“关于支付的一切”) | 0.2 | 0.3 | 0.5 |
| 默认 (平衡) | 0.4 | 0.4 | 0.2 |
积极使用过滤器:
- memory_types: ["correction", "insight"] 以查找发现和更正
- importance_threshold: 0.7 以跳过噪音
- enable_graph_expansion: true 以跟随连接 (默认开启,通常保持)
penfield_store({
content: "[偏好] 用户希望回复不超过 3 段,除非复杂度要求更多。不喜欢在随意对话中使用项目符号列表。",
memory_type: "fact",
importance: 0.8,
tags: ["preferences", "communication"]
})
// 开始
penfield_store({
content: "[调查: 部署失败] 报告称每次周五部署后都会出现 500 错误。正在检查发布流水线、配置漂移和流量模式。",
memory_type: "task",
importance: 0.7,
tags: ["investigation", "deployment"]
})
// 发现 — 连接到调查
discovery = penfield_store({
content: "[调查: 部署失败] 洞察:周五部署与每周 17:00 UTC 的批处理作业时间重合。两者竞争数据库连接池。这不是部署问题,而是资源争用。",
memory_type: "insight",
importance: 0.9,
tags: ["investigation", "deployment", "root-cause"]
})
penfield_connect({
from_memory_id: discovery.id,
to_memory_id: initial_report.id,
relationship_type: "responds_to"
})
// 更正 — 取代错误的假设
correction = penfield_store({
content: "[调查: 部署失败] 更正:不是 CI/CD 问题。周五批处理作业 + 部署 = 连接池耗尽。修复:将批处理作业错开到 03:00 UTC。",
memory_type: "correction",
importance: 0.9,
tags: ["investigation", "deployment", "correction"]
})
penfield_connect({
from_memory_id: correction.id,
to_memory_id: initial_report.id,
relationship_type: "supersedes"
})
penfield_save_context({
name: "deployment-investigation-2026-02",
description: "调查了部署超时问题。记忆 ID: " + discovery.id,
memory_ids: [discovery.id, correction.id, initial_report.id]
})
下一个会话或不同智能体:
penfield_restore_context({
name: "deployment-investigation-2026-02"
})
保持简短、一致、小写。每条记忆使用 2–5 个标签。
好例子:preferences、architecture、investigation、correction、project-name
坏例子:2026-02-02、important-memory-about-deployment、UserPreferencesForCommunicationStyle
原生 OpenClaw 插件是最快的途径,但 Penfield 可与任何 AI 工具配合使用:
Claude 连接器
**名称:** Penfield
Remote MCP server URL: https://mcp.penfield.app
Claude Code
Claude mcp add --transport http --scope user penfield https://mcp.penfield.app
MCP 服务器 — 适用于 Gemini CLI、Cursor、Windsurf、Intent、Perplexity Desktop 或任何 MCP 兼容工具:
{
"mcpServers": {
"penfield": {
"command": "npx",
"args": [
"mcp-remote@latest",
"https://mcp.penfield.app/"
]
}
}
}
API — 通过 api.penfield.app 直接进行 HTTP 访问,用于自定义集成。
相同的记忆、相同的知识图谱、相同的账户。插件速度快 4-5 倍 (无 MCP 代理层),但无论您如何连接,所有内容都保持同步。