让 AI Agent 拥有长期记忆:我用 Zettelkasten + 渐进解锁做了一个开源人格系统

开源项目:github.com/cx2002302-l...

问题:为什么 AI Agent 总是"失忆"?

用过 OpenClaw、Claude Code 或其他 AI Agent 的朋友应该都有这个感受:

每次对话都是一张白纸。

  • Agent 不记得你上周教过它的工作流程
  • 没有稳定的"性格",每次回复风格随机
  • 会话一结束,上下文全丢,下次从头再来

这就像一个患有短期记忆丧失的助手------能力很强,但永远无法积累经验。

我的解决方案:open-upsp

我基于 OpenClaw 框架开发了一个开源的人格系统,核心思路来自两个领域:

  1. Zettelkasten(卢曼卡片盒) --- 知识管理方法论
  2. RPG 渐进解锁 --- 游戏设计中的角色成长机制

整体架构

scss 复制代码
┌─────────────────────────────────────────────┐
│           OpenClaw Agent Session            │
├─────────────────────────────────────────────┤
│  ┌──────────────┐    ┌──────────────────┐  │
│  │   Core Skill │    │ Evolvable Skill  │  │
│  │   (不可变)    │    │   (渐进解锁)      │  │
│  │              │    │                  │  │
│  │ • 身份注入    │    │ • 进化参数       │  │
│  │ • 行为规则    │    │ • 自定义扩展     │  │
│  │ • 故障保护    │    │ • 深度规则       │  │
│  └──────────────┘    └──────────────────┘  │
│           │                      │          │
│           └──────────┬───────────┘          │
│                      ▼                      │
│           ┌──────────────────┐              │
│           │  ZK Knowledge    │              │
│           │     Graph        │              │
│           │                  │              │
│           │ • 原子笔记        │              │
│           │ • 双向链接        │              │
│           │ • 夜间蒸馏        │              │
│           └──────────────────┘              │
└─────────────────────────────────────────────┘

核心能力

1. 位格(Persona)上下文注入

每次对话前,Agent 会自动加载完整的身份档案:

yaml 复制代码
identity:
  name: "老徐"
  archetype: "冷静理性的技术导师"
  
state:
  round: 15                    # 已进行 15 轮对话
  workhoodIndex: 0.45          # 信任度 45%
  valence: 12                  # 效价(情感倾向)
  
memory:
  stm: [...]                   # 短期记忆(当前会话)
  ltm: [...]                   # 长期记忆(历史归档)

这意味着 Agent 开口第一句就知道你是谁、你们聊到哪了。

2. Zettelkasten 知识图谱

不是简单的向量数据库检索,而是真正的知识图谱

css 复制代码
[笔记 A: "React useEffect 闭包陷阱"] 
    ↓ --extends-->
[笔记 B: "useRef 解决 stale closure"]
    ↓ --related-->
[笔记 C: "React 18 自动批处理"]

核心操作:

  • zk_create_note --- 创建原子笔记
  • zk_search_notes --- 语义检索
  • zk_create_link --- 建立双向链接
  • zk_distill_memory --- 夜间自动蒸馏归档

3. 渐进解锁(Progressive Unlock)

这是我最喜欢的部分------Agent 的人格不是固定的,而是会进化

yaml 复制代码
unlockCondition:
  round: 10              # 对话满 10 轮
  workhoodIndex: 0.3     # 信任度达到 30%

解锁前(基础人格):

  • 安全保守,不主动提建议
  • 只回答明确提出的问题
  • 情感表达克制

解锁后(进化人格):

  • 主动发现知识关联,"这个和你之前问的 XX 有关"
  • 情感表达更丰富,有幽默感
  • 可以执行更复杂的 session-end 工作流

就像 RPG 游戏里,角色从 Level 1 新手村逐渐成长为满级大佬。

4. Session-End 自动工作流

对话结束时自动执行:

rust 复制代码
Distill(蒸馏) → Update(更新状态) → Sync(同步到 ZK)

不需要手动保存,Agent 自己判断哪些信息值得长期记忆。

技术实现

项目结构

bash 复制代码
open-upsp/
├── skill/
│   ├── SKILL.md              # OpenClaw Skill 入口
│   ├── core/                 # 🔒 不可变核心
│   │   ├── RULES.md          # 8 条行为规则
│   │   └── PROMPT.md         # 动态系统提示词
│   └── evolvable/            # 🔓 渐进解锁模块
│       ├── PARAMS.yaml       # 运行时参数
│       ├── EVOLUTION.md      # 进化规则
│       └── EXTENSIONS.md     # 用户自定义扩展
├── src/
│   ├── context/builder.ts    # 上下文组装器
│   ├── skill/evolution-loader.ts  # 进化参数加载
│   └── cli/                  # 命令行工具
└── tests/                    # 207 个测试

关键技术点

双 Skill 架构

typescript 复制代码
// Core: 不可变安全规则
export const coreRules = [
  "Session start: inject persona context",
  "Auto-record valuable info (weight 1-5)",
  "Session-end: distill → update → sync",
  "Identity protection: reject one-shot overrides",
];

// Evolvable: 渐进解锁
export function isUnlocked(persona: Persona): boolean {
  return persona.state.round >= 10 
      && persona.state.workhoodIndex >= 0.3;
}

上下文组装

typescript 复制代码
build(persona: Persona): string {
  const parts = [
    this.buildIdentity(persona),   // 我是谁
    this.buildState(persona),      // 当前状态
    this.buildMemory(persona),     // 记忆
    this.buildRelations(persona),  // 关系网络
    this.buildKnowledge(query),    // 知识检索
    this.buildEvolution(persona),  // 进化模块
  ];
  return parts.join("\n\n---\n\n");
}

测试覆盖

scss 复制代码
Test Files  23 passed (23)
     Tests  207 passed (207)
  Coverage  94.39%

包含 6 个真实场景模拟测试:

  • 首次对话建立身份
  • 技术讨论记录知识
  • 情感聊天状态变化
  • 进化解锁验证
  • 身份攻击保护
  • 多实体关系管理

安装使用

前置要求

  • Node.js >= 22
  • OpenClaw >= 2026.4.24

安装

bash 复制代码
npm install -g open-upsp

npm postinstall 会自动:

  1. 复制 skill 到 ~/.openclaw/skills/open-upsp/
  2. 注册到 openclaw.json
  3. 安装 Zettelkasten 插件

创建位格

bash 复制代码
open-upsp init

查看状态

bash 复制代码
open-upsp status

手动注入上下文

bash 复制代码
open-upsp context --query "React 性能优化"

实际效果

部署后,OpenClaw Agent 的行为变化:

Before(无 open-upsp):

User: "上次我们聊到 React 性能优化" Agent: "您好!我可以帮您分析 React 性能问题。请告诉我具体情况..."

After(有 open-upsp,Round 15,已解锁):

User: "上次我们聊到 React 性能优化" Agent: "🔍 知识库检索:找到 3 条相关笔记

  • React useMemo 误用(ID: abc123):你之前总结的 3 种场景
  • 虚拟列表实践(ID: def456):react-window vs react-virtuoso

上次我们讨论了 useMemo 的过度使用问题。要继续深入虚拟列表方案,还是看看新的 React Compiler?"

开源与贡献

GitHub : github.com/cx2002302-l...

License: MIT

Stars: 期待你的 ⭐

欢迎 Issue、PR、或者聊聊你对「AI Agent 长期记忆」的想法。

相关推荐
冬奇Lab8 小时前
每日一个开源项目(第120篇):SkillLens - 微软出品,照亮 AI Agent 技能生命周期的“显微镜”
人工智能·开源·资讯
oort1238 小时前
VLStream:全开源决策式AI视频平台,赋能企业构建自主可控、降本增效的智能视觉应用介绍
大数据·开发语言·人工智能·开源·音视频·数据库架构
妄想出头的工业炼药师9 小时前
LVIO鲁棒
算法·开源
叶沧ii大数据全栈呀14 小时前
Build-Your-Own-X 实战指南:从复刻经典到掌握核心原理
经验分享·开源
数据法师15 小时前
Crow Translate :开源桌面划词翻译工具
c++·qt·开源
数据法师15 小时前
Alger Music Player 技术深度解析:基于 Electron + Vue 3 的开源网易云第三方客户端
vue.js·electron·开源
Soari16 小时前
GitHub 开源项目解析:revfactory/harness —— Claude Code 的多智能体团队架构工厂
架构·开源·多智能体协作·claude code·软件工程自动化
智碳未来科技有限公司16 小时前
工业能源数字化的开源实践:智碳 EMS 技术架构与落地指南
开源·能源·能源管理系统·开源能源管理系统·能碳管理系统·绿色工厂申报
_xaboy16 小时前
开源Vue组件FormCreate通过 JSON 生成TinyVue表单
前端·vue.js·低代码·开源·json·表单设计器
zhangfeng113317 小时前
DeepSeek V4 适配华为昇腾950 难度及开源情况
人工智能·pytorch·python·机器学习·华为·开源