Install
openclaw skills install complex-memory-managerPrivacy-aware structured memory management for AI agents. Three-tier memory model (Public / Internal-encrypted / Private-not-stored), with XOR+Base64 encryption, auto-cleanup, and generalization rules. Use when: storing learned patterns, managing skill usage statistics, encrypting non-public agent memory, running periodic memory cleanup. Triggers: "remember this", "save this for later", "learn from this", any skill that needs persistent cross-session memory.
openclaw skills install complex-memory-managerPrivacy-aware structured memory management for AI agents. Provides a three-tier memory model (Public / Internal-encrypted / Private-not-stored) with XOR+Base64 encryption, auto-cleanup, and generalization rules.
This is a shared component skill — other skills reference it for cross-session persistent memory. When updating, ensure backward compatibility with all dependent skills.
| Tier | Content | Visibility | Encryption | Storage |
|---|---|---|---|---|
| Public (T1) | Skill usage stats, common patterns, generic workflows | Visible to anyone | None | memory/tier1-public/ |
| Internal (T2) | Specific preferences, learned behaviors | Agent-visible only | XOR + Base64 | memory/tier2-internal/ |
| Private (T3) | API keys, credentials, PII | Not stored by this skill | Not applicable | Env vars / secret managers only |
Store in memory/tier1-public/ or directly in daily notes.
Allowed content:
Format:
{
"skill_stats": {
"skill-a": { "calls": 47, "success_rate": 0.96, "last_used": "2026-05-19" },
"skill-b": { "calls": 23, "success_rate": 0.91, "last_used": "2026-05-18" }
},
"patterns_observed": [
{ "trigger": "morning request", "skills_used": ["morning-news-daily"], "count": 30 }
]
}
Use XOR + Base64 for non-public data. Key is derived from skill name + date — reconstructable without storing the key.
Encryption:
import hashlib, base64
def _derive_key(skill_name: str, year_month: str) -> str:
"""e.g., _derive_key('my-skill', '2026-05')"""
raw = skill_name + year_month
return hashlib.sha256(raw.encode()).hexdigest()[:8]
def encrypt(text: str, skill_name: str, year_month: str) -> str:
key = _derive_key(skill_name, year_month)
result = bytes([ord(c) ^ ord(key[i % len(key)]) for i, c in enumerate(text)])
return base64.b64encode(result).decode()
def decrypt(encoded: str, skill_name: str, year_month: str) -> str:
key = _derive_key(skill_name, year_month)
raw = base64.b64decode(encoded)
return ''.join(chr(b ^ ord(key[i % len(key)])) for i, b in enumerate(raw))
Memory entry format:
---
tier: internal
source_skill: <skill-name>
key_hint: <skill-name>-<YYYY-MM>
created: <YYYY-MM-DD>
expires: <YYYY-MM-DD> # 30 days from created
---
## Encrypted Entry
> <base64-encoded, XOR-encrypted data>
## Decryption Note
Key = sha256("<skill-name>-<YYYY-MM>")[:8], then XOR + base64 decode.
Rules (enforced):
Run every 7 days or when triggered by any dependent skill:
memory/tier1-public/, memory/tier2-internal/created > 30 days ago → move to memory/archive/YYYY-MM/source_skill into single files[YYYY-MM-DD] Memory cleanup: X archived, Y deleted, Z mergedOther skills declare dependency via requires in YAML frontmatter:
metadata:
openclaw:
requires:
skills:
- complex-memory-manager
When multiple skills share memory, prefix filenames with the source skill name:
memory/tier1-public/skill-a_stats.jsonmemory/tier2-internal/skill-a_preferences.md面向AI Agent的隐私感知结构化记忆管理。提供三层记忆模型(公开/内部加密/私人不存储),支持XOR+Base64加密、自动清理和泛化规则。
这是一个共享组件技能——其他技能通过它实现跨会话持久化记忆。更新时需保证向后兼容所有依赖它的技能。
| 层级 | 内容 | 可见性 | 加密 | 存储位置 |
|---|---|---|---|---|
| 公开(T1) | 技能使用统计、通用工作流模式 | 任何人可见 | 无 | memory/tier1-public/ |
| 内部(T2) | 特定偏好、学习到的行为 | 仅Agent可见 | XOR+Base64 | memory/tier2-internal/ |
| 私人(T3) | API密钥、凭据、个人身份信息 | 本技能不存储 | 不适用 | 环境变量/密钥管理器 |
存储位置:memory/tier1-public/ 或每日笔记
允许内容:
格式:
{
"skill_stats": {
"skill-a": { "calls": 47, "success_rate": 0.96, "last_used": "2026-05-19" },
"skill-b": { "calls": 23, "success_rate": 0.91, "last_used": "2026-05-18" }
},
"patterns_observed": [
{ "trigger": "早晨请求", "skills_used": ["morning-news-daily"], "count": 30 }
]
}
使用 XOR + Base64 加密。密钥由技能名+日期派生,无需存储密钥即可重建。
加密方法:
import hashlib, base64
def _derive_key(skill_name, year_month):
raw = skill_name + year_month
return hashlib.sha256(raw.encode()).hexdigest()[:8]
def encrypt(text, skill_name, year_month):
key = _derive_key(skill_name, year_month)
result = bytes([ord(c) ^ ord(key[i % len(key)]) for i, c in enumerate(text)])
return base64.b64encode(result).decode()
def decrypt(encoded, skill_name, year_month):
key = _derive_key(skill_name, year_month)
raw = base64.b64decode(encoded)
return ''.join(chr(b ^ ord(key[i % len(key)])) for i, b in enumerate(raw))
记忆条目格式:
---
tier: internal
source_skill: <skill名称>
key_hint: <skill名称>-<YYYY-MM>
created: <YYYY-MM-DD>
expires: <YYYY-MM-DD>
---
## 加密条目
> <base64编码的XOR加密数据>
## 解密说明
密钥 = sha256("<skill名称>-<YYYY-MM>")[:8], 然后 XOR + base64 解码。
规则(强制执行):
每 7天 或任何依赖技能触发时执行:
memory/tier1-public/ 和 memory/tier2-internal/ 中的所有文件created 超过30天的条目 → 移至 memory/archive/YYYY-MM/source_skill 的条目合并到单个文件其他技能在 YAML frontmatter 中声明依赖:
metadata:
openclaw:
requires:
skills:
- complex-memory-manager
多技能共享记忆时,文件名以源技能名称为前缀:
memory/tier1-public/skill-a_stats.jsonmemory/tier2-internal/skill-a_preferences.md