{"id":"6f4b7040-73f5-48d0-8ed9-f6782631f3de","entityType":"agent","slug":"clawhub-beyound87-smart-agent-memory","name":"Smart Agent Memory","canonicalUrl":"https://www.xpersona.co/agent/clawhub-beyound87-smart-agent-memory","canonicalPath":"/agent/clawhub-beyound87-smart-agent-memory","generatedAt":"2026-10-09T08:34:37.926Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":null},"description":"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。","descriptionLabel":"Source description","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 3.4K downloads reported by the source. Last updated 10/9/2026.","installCommand":"clawhub skill install s17dg3qthhjbatdnrgq35n8jrh83j4ba:smart-agent-memory","sourceUrl":"https://clawhub.ai/beyound87/smart-agent-memory","homepage":"https://clawhub.ai/beyound87/skills/smart-agent-memory","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/beyound87/smart-agent-memory","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/beyound87/skills/smart-agent-memory","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":55,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"Smart Agent Memory technical dossier on Xpersona with agent coverage, OPENCLEW support, and live trust metadata."},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":null},"protocols":[{"protocol":"OPENCLEW","label":"OpenClaw","status":"self-declared","notes":"Declared in the public agent profile."}],"capabilities":[],"verifiedCount":0,"selfDeclaredCount":1,"capabilityMatrix":{"rows":[{"key":"OPENCLEW","type":"protocol","support":"unknown","confidenceSource":"profile","notes":"Listed on profile"}],"flattenedTokens":"protocol:OPENCLEW|unknown|profile"}},"adoption":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":null},"stars":null,"forks":null,"downloads":3382,"packageName":null,"latestVersion":"3.0.6","tractionLabel":"3.4K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":null},"lastUpdatedAt":"2026-10-09T08:25:17.275Z","lastCrawledAt":"2026-10-09T08:25:17.275Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-10T08:25:17.275Z","lastVerifiedAt":null,"highlights":[{"version":"3.0.6","createdAt":"2026-03-30T00:45:45.038Z","changelog":"smart-agent-memory v3.0.6 - No file changes detected in this release. - Version and documentation remain the same as v2.1.0. - No new features, bug fixes, or updates included. - Safe to skip upgrade if already running v2.1.0.","fileCount":10,"zipByteSize":31127},{"version":"3.0.5","createdAt":"2026-03-29T19:00:58.555Z","changelog":"Version 3.0.5 - Documentation updated: Added section on multi-agent dispatch memory, including best practices and key experience notes for spawn and subagent modes in the SKILL.md file. - No code or feature changes; this update only modifies documentation for enhanced multi-agent usage clarity.","fileCount":9,"zipByteSize":29756},{"version":"3.0.1","createdAt":"2026-03-29T02:41:44.053Z","changelog":"smart-agent-memory 3.0.1 - Updated documentation (README.md) with no changes to skill code or functionality. - No impact to usage, interfaces, or behavior.","fileCount":9,"zipByteSize":29511},{"version":"3.0.0","createdAt":"2026-03-29T02:23:21.499Z","changelog":"smart-agent-memory v3.0.0 - Documentation updated for v3.0.0. - Added explanation for single agent and multi-agent memory workspace sharing in setup instructions (SKILL.md). - No CLI/API or core feature changes in the skill itself; all changes are in documentation.","fileCount":9,"zipByteSize":30023},{"version":"2.5.0","createdAt":"2026-03-28T23:02:59.039Z","changelog":"smart-agent-memory v2.5.0 - Updated documentation in README.md. - No code or feature changes; documentation only.","fileCount":9,"zipByteSize":29759},{"version":"2.4.4","createdAt":"2026-03-28T13:14:49.424Z","changelog":"No file changes detected for version 2.4.4. - This release does not include any code or documentation updates. - No user or developer action required.","fileCount":9,"zipByteSize":37181},{"version":"2.4.3","createdAt":"2026-03-28T06:03:00.671Z","changelog":"No file changes detected in this release. - Version bumped from 2.1.0 to 2.4.3 with no functional or documentation changes. - No updates to code or documentation files.","fileCount":9,"zipByteSize":37180},{"version":"2.4.2","createdAt":"2026-03-28T05:36:22.333Z","changelog":"- Expanded and clarified the \"Setup / Config / Scripts\" section in SKILL.md. - Added explicit \"Setup\" instructions and details for multi-workspace scenarios. - Improved documentation structure by grouping setup, session lifecycle, and script usage for easier onboarding. - No code or functionality changes. Documentation update only.","fileCount":9,"zipByteSize":37183}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17dg3qthhjbatdnrgq35n8jrh83j4ba:smart-agent-memory","setupComplexity":"low","setupSteps":["Install using `clawhub skill install s17dg3qthhjbatdnrgq35n8jrh83j4ba:smart-agent-memory` in an isolated environment before connecting it to live workloads.","No published capability contract is available yet, so validate auth and request/response behavior manually.","Review the upstream CLAWHUB listing at https://clawhub.ai/beyound87/smart-agent-memory before using production credentials."],"contract":{"contractStatus":"missing","authModes":[],"requires":[],"forbidden":[],"supportsMcp":false,"supportsA2a":false,"supportsStreaming":false,"inputSchemaRef":null,"outputSchemaRef":null,"dataRegion":null,"contractUpdatedAt":null,"sourceUpdatedAt":null,"freshnessSeconds":null},"invocationGuide":{"preferredApi":{"snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/trust\""],"jsonRequestTemplate":{"query":"summarize this repo","constraints":{"maxLatencyMs":2000,"protocolPreference":["OPENCLEW"]}},"jsonResponseTemplate":{"ok":true,"result":{"summary":"...","confidence":0.9},"meta":{"source":"CLAWHUB","generatedAt":"2026-10-09T08:34:37.923Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-beyound87-smart-agent-memory/trust"}},"reliability":{"evidence":{"source":"runtime-metrics","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No trust, reliability, or runtime telemetry is available."},"trust":{"status":"unavailable","handshakeStatus":"UNKNOWN","verificationFreshnessHours":null,"reputationScore":null,"p95LatencyMs":null,"successRate30d":null,"fallbackRate":null,"attempts30d":null,"trustUpdatedAt":null,"trustConfidence":"unknown","sourceUpdatedAt":null,"freshnessSeconds":null},"decisionGuardrails":{"doNotUseIf":["Contract metadata is missing or unavailable for deterministic execution."],"safeUseWhen":[],"riskFlags":["missing_or_unavailable_contract","trust_data_unavailable","schema_references_missing"],"operationalConfidence":"low"},"executionMetrics":{"observedLatencyMsP50":null,"observedLatencyMsP95":null,"estimatedCostUsd":null,"uptime30d":null,"rateLimitRpm":null,"rateLimitBurst":null,"lastVerifiedAt":null,"verificationSource":null},"runtimeMetrics":{"successRate":null,"avgLatencyMs":null,"avgCostUsd":null,"hallucinationRate":null,"retryRate":null,"disputeRate":null,"p50Latency":null,"p95Latency":null,"lastUpdated":null}},"benchmarks":{"evidence":{"source":"no-benchmark-data","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No benchmark suites or observed failure patterns are available."},"suites":[],"failurePatterns":[]},"artifacts":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":null},"readme":"Skill: Smart Agent Memory\n\nOwner: beyound87\n\nSummary: 跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\n\nTags: latest:3.0.6\n\nVersion history:\n\nv3.0.6 | 2026-03-30T00:45:45.038Z | auto\n\nsmart-agent-memory v3.0.6\n\n- No file changes detected in this release.\n- Version and documentation remain the same as v2.1.0.\n- No new features, bug fixes, or updates included.\n- Safe to skip upgrade if already running v2.1.0.\n\nv3.0.5 | 2026-03-29T19:00:58.555Z | auto\n\nVersion 3.0.5\n\n- Documentation updated: Added section on multi-agent dispatch memory, including best practices and key experience notes for spawn and subagent modes in the SKILL.md file.\n- No code or feature changes; this update only modifies documentation for enhanced multi-agent usage clarity.\n\nv3.0.1 | 2026-03-29T02:41:44.053Z | auto\n\nsmart-agent-memory 3.0.1\n\n- Updated documentation (README.md) with no changes to skill code or functionality.\n- No impact to usage, interfaces, or behavior.\n\nv3.0.0 | 2026-03-29T02:23:21.499Z | auto\n\nsmart-agent-memory v3.0.0\n\n- Documentation updated for v3.0.0.\n- Added explanation for single agent and multi-agent memory workspace sharing in setup instructions (SKILL.md).\n- No CLI/API or core feature changes in the skill itself; all changes are in documentation.\n\nv2.5.0 | 2026-03-28T23:02:59.039Z | auto\n\nsmart-agent-memory v2.5.0\n\n- Updated documentation in README.md.\n- No code or feature changes; documentation only.\n\nv2.4.4 | 2026-03-28T13:14:49.424Z | auto\n\nNo file changes detected for version 2.4.4.  \n- This release does not include any code or documentation updates.  \n- No user or developer action required.\n\nv2.4.3 | 2026-03-28T06:03:00.671Z | auto\n\nNo file changes detected in this release.\n\n- Version bumped from 2.1.0 to 2.4.3 with no functional or documentation changes.\n- No updates to code or documentation files.\n\nv2.4.2 | 2026-03-28T05:36:22.333Z | auto\n\n- Expanded and clarified the \"Setup / Config / Scripts\" section in SKILL.md.\n- Added explicit \"Setup\" instructions and details for multi-workspace scenarios.\n- Improved documentation structure by grouping setup, session lifecycle, and script usage for easier onboarding.\n- No code or functionality changes. Documentation update only.\n\nv2.0.5 | 2026-03-14T01:00:13.606Z | user\n\nv2.0: 融合agent-memory-system+agent-memory。双层存储(Markdown+JSON/SQLite)，温度模型，自动归档，知识提炼，FTS5搜索，14个CLI命令，纯Node.js跨平台。\n\nv2.0.4 | 2026-03-13T23:49:51.119Z | user\n\nv2.0: 融合agent-memory-system+agent-memory。双层存储(Markdown+JSON/SQLite)，温度模型，自动归档，知识提炼，FTS5搜索，14个CLI命令，纯Node.js跨平台。\n\nv2.0.0 | 2026-03-10T01:33:20.012Z | user\n\n全自动化，修复大量Bug\n\nv1.0.2 | 2026-03-09T16:27:08.238Z | user\n\nv1.0: 融合agent-memory-system+agent-memory。双层存储(Markdown+JSON/SQLite)，温度模型，自动归档，知识提炼，FTS5搜索，14个CLI命令，纯Node.js跨平台。\n\nv1.0.1 | 2026-03-07T11:46:11.558Z | user\n\nv1.0: 融合agent-memory-system+agent-memory。双层存储(Markdown+JSON/SQLite)，温度模型，自动归档，知识提炼，FTS5搜索，14个CLI命令，纯Node.js跨平台。\n\nv1.0.0 | 2026-03-07T11:44:26.058Z | user\n\nv1.0: 融合agent-memory-system+agent-memory。双层存储(Markdown+JSON/SQLite)，温度模型，自动归档，知识提炼，FTS5搜索，14个CLI命令，纯Node.js跨平台。\n\nArchive index:\n\nArchive v3.0.6: 10 files, 31127 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (4061b), scripts/memory-cli.js (27456b), skill-card.md (2528b), SKILL.md (8773b)\n\nFile v3.0.6:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 单 agent：直接使用本地 workspace 记忆\n- 共享 workspace / 多 agent：多个 agent 可共享同一记忆目录\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n### 🔗 多 Agent 调度经验记忆\n当 spawn 子 agent 成功/失败时，立即记录经验：\n```bash\nnode $CLI remember \"spawn 子 agent 用 runtime=subagent 成功，不能带 streamTo\" --skill multi-agent-dispatch --tags spawn,subagent\n```\n关键经验已沉淀：\n- `runtime=\"subagent\"` 模式**禁止**带 `streamTo` 参数（会直接报错）\n- `runtime=\"acp\"` 模式可带 `streamTo=\"parent\"`（仅限 openclaw.json 中配置了 `runtime.type: \"acp\"` 的 agent）\n- 子 agent 结果通过 auto-announce 自动推送，不需要轮询\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v3.0.6:README.md\n\n# smart-agent-memory\n\n## 这是什么\n`smart-agent-memory` 是一个跨平台的 Agent 长期记忆技能,目标是让 Agent 在本地工作区内形成**可读、可搜、可维护**的长期记忆体系。\n\n当前准确能力边界:\n- 使用 Node.js CLI 管理记忆\n- 支持分层读取:先 index,再按需 context\n- 支持事实、教训、实体、会话摘要等写入与查询\n- 支持温度模型、归档、反思、提炼\n- 支持通过 `setup` 为工作区注入 BOOTSTRAP 启动指令\n\n## 核心能力\n\n### 1. 分层记忆读取\n推荐顺序:\n1. `index`\n2. 判断需要什么\n3. `context`\n4. 再行动\n\n避免一次性全量读所有 memory。\n\n### 2. 事实 / 教训 / 实体管理\n- `remember`\n- `recall`\n- `learn`\n- `entity`\n- `facts`\n- `lessons`\n- `entities`\n\n### 3. Skill 经验记忆\n支持按 skill 记录与读取经验:\n- `remember ... --skill <name>`\n- `skill-mem <name>`\n- `skill-list`\n\n### 4. 会话生命周期\n- `session-start`\n- `session-end`\n\n适合在 session 开始与结束时调用。\n\n### 5. 维护能力\n- `gc`\n- `reflect`\n- `stats`\n- `temperature`\n- `extract`\n- `search`\n\n## 初始化(必须)\n本技能**有初始化步骤**。\n\n安装后请先执行一次:\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n作用:\n- 自动发现 `~/.openclaw/workspace*` 工作区\n- 为工作区注入 `BOOTSTRAP.md` 记忆启动指令\n- 幂等,可重复执行\n\n如果你新增了工作区,再执行一次 `setup` 即可。\n\n## 使用方法\n\n### 1. 会话开始\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\n```\n用于加载记忆概览与近期上下文。\n\n### 2. 会话中记录信息\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"关键信息\" --tags tag1,tag2\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\n```\n\n### 3. 会话结束\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### 4. 按需查询\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js index\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js context --tag <tag>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall <query>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js search <query>\n```\n\n## 配置与存储说明\n\n### 运行依赖\n- `node`\n\n### 默认存储位置\n- `~/.openclaw/workspace/memory/`\n\n### 存储形态\n根据当前说明文件,技能描述覆盖以下层次:\n- Markdown\n- JSON\n- SQLite / FTS5(在支持环境中)\n\nREADME 在描述时应保持谨慎:\n- 以当前 `SKILL.md` 声明与 CLI 能力为准\n- 不把尚未验证的底层实现细节写成外部承诺\n\n## 使用模式\n\n### 1. 个人模式\n单 agent 直接使用:setup → session-start → remember/learn → session-end。\n\n### 2. 共享工作区模式\n多个 agent 共用一个 workspace 时,可以共享记忆目录,但仍应按角色边界写入,避免噪音。\n\n### 3. 团队模式\n在多 agent 团队中,把它当长期记忆底座即可;团队协作约束应由团队模板或团队规范承载,而不是写死在记忆技能本体里。\n\n## 推荐工作流\n\n### 日常最小闭环\n1. `setup`(首次)\n2. `session-start`\n3. 中途 `remember` / `learn`\n4. 需要时 `index` / `context` / `recall`\n5. `session-end`\n6. 定期 `gc` / `reflect`\n\n### 定期维护\n- 每日:`reflect`\n- 每周:`gc`\n- 按需:`extract`\n\n## 限制与边界\n- 本地记忆系统,不替代外部知识库\n- 记忆质量依赖持续写入高质量 fact / lesson / session summary\n- 不建议每轮对话全量加载记忆\n\n## 相关文件\n- `SKILL.md`\n- `scripts/memory-cli.js`\n- `lib/`\n\n## 最近一次修改（中文）\n- **v2.1.0 / 2026-03-29**\n- README 改为使用周期驱动（初始化 → 使用 → 维护）\n- 补充个人模式 / 共享工作区模式 / 团队模式三层使用说明\n- 团队协作约束改为由团队规范承载，不写死在记忆技能本体里\n\nFile v3.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"3.0.6\",\n  \"publishedAt\": 1774831545038\n}\n\nFile v3.0.6:skill-card.md\n\n## Description:\n\nSmart Agent Memory provides a local long-term memory system for agents with layered context loading, per-skill experience memory, structured storage, search, reflection, and archival.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[beyound87](https://clawhub.ai/user/beyound87)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent users use this skill to maintain local, searchable long-term memory for facts, lessons, entities, session summaries, and per-skill experience across OpenClaw workspaces. The CLI supports session startup and shutdown workflows, scoped recall, memory maintenance, and optional skill extraction from recorded lessons.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The setup command persistently adds BOOTSTRAP.md startup instructions across ~/.openclaw/workspace* directories.\n\nMitigation: Run setup only after review, confirm that all targeted workspaces should receive the startup instructions, and inspect BOOTSTRAP.md changes before relying on them.\n\nRisk: Stored memory can contain secrets or untrusted instructions that may influence later agent sessions.\n\nMitigation: Do not store secrets or untrusted content in memory; review and sanitize memory entries before using them as context.\n\nRisk: The extract flow can generate new skill files from remembered lessons.\n\nMitigation: Review generated skills and their filenames before installation or execution, especially when lesson content or skill names came from untrusted input.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/beyound87/skills/smart-agent-memory)\n- [SKILL.md](artifact/SKILL.md)\n- [README.md](artifact/README.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Configuration]\n\n**Output Format:** [Markdown guidance with inline shell commands; CLI output may be text or JSON and may create local Markdown, JSON, or SQLite-backed memory files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Node.js. SQLite storage requires Node.js >= 22.5.0; otherwise the skill falls back to JSON storage.]\n\n## Skill Version(s):\n\n3.0.6 (source: server release metadata; source frontmatter remains 2.1.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment.\n\nArchive v3.0.5: 9 files, 29756 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (4061b), scripts/memory-cli.js (27456b), SKILL.md (8773b)\n\nFile v3.0.5:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 单 agent：直接使用本地 workspace 记忆\n- 共享 workspace / 多 agent：多个 agent 可共享同一记忆目录\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n### 🔗 多 Agent 调度经验记忆\n当 spawn 子 agent 成功/失败时，立即记录经验：\n```bash\nnode $CLI remember \"spawn 子 agent 用 runtime=subagent 成功，不能带 streamTo\" --skill multi-agent-dispatch --tags spawn,subagent\n```\n关键经验已沉淀：\n- `runtime=\"subagent\"` 模式**禁止**带 `streamTo` 参数（会直接报错）\n- `runtime=\"acp\"` 模式可带 `streamTo=\"parent\"`（仅限 openclaw.json 中配置了 `runtime.type: \"acp\"` 的 agent）\n- 子 agent 结果通过 auto-announce 自动推送，不需要轮询\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v3.0.5:README.md\n\n# smart-agent-memory\n\n## 这是什么\n`smart-agent-memory` 是一个跨平台的 Agent 长期记忆技能,目标是让 Agent 在本地工作区内形成**可读、可搜、可维护**的长期记忆体系。\n\n当前准确能力边界:\n- 使用 Node.js CLI 管理记忆\n- 支持分层读取:先 index,再按需 context\n- 支持事实、教训、实体、会话摘要等写入与查询\n- 支持温度模型、归档、反思、提炼\n- 支持通过 `setup` 为工作区注入 BOOTSTRAP 启动指令\n\n## 核心能力\n\n### 1. 分层记忆读取\n推荐顺序:\n1. `index`\n2. 判断需要什么\n3. `context`\n4. 再行动\n\n避免一次性全量读所有 memory。\n\n### 2. 事实 / 教训 / 实体管理\n- `remember`\n- `recall`\n- `learn`\n- `entity`\n- `facts`\n- `lessons`\n- `entities`\n\n### 3. Skill 经验记忆\n支持按 skill 记录与读取经验:\n- `remember ... --skill <name>`\n- `skill-mem <name>`\n- `skill-list`\n\n### 4. 会话生命周期\n- `session-start`\n- `session-end`\n\n适合在 session 开始与结束时调用。\n\n### 5. 维护能力\n- `gc`\n- `reflect`\n- `stats`\n- `temperature`\n- `extract`\n- `search`\n\n## 初始化(必须)\n本技能**有初始化步骤**。\n\n安装后请先执行一次:\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n作用:\n- 自动发现 `~/.openclaw/workspace*` 工作区\n- 为工作区注入 `BOOTSTRAP.md` 记忆启动指令\n- 幂等,可重复执行\n\n如果你新增了工作区,再执行一次 `setup` 即可。\n\n## 使用方法\n\n### 1. 会话开始\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\n```\n用于加载记忆概览与近期上下文。\n\n### 2. 会话中记录信息\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"关键信息\" --tags tag1,tag2\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\n```\n\n### 3. 会话结束\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### 4. 按需查询\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js index\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js context --tag <tag>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall <query>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js search <query>\n```\n\n## 配置与存储说明\n\n### 运行依赖\n- `node`\n\n### 默认存储位置\n- `~/.openclaw/workspace/memory/`\n\n### 存储形态\n根据当前说明文件,技能描述覆盖以下层次:\n- Markdown\n- JSON\n- SQLite / FTS5(在支持环境中)\n\nREADME 在描述时应保持谨慎:\n- 以当前 `SKILL.md` 声明与 CLI 能力为准\n- 不把尚未验证的底层实现细节写成外部承诺\n\n## 使用模式\n\n### 1. 个人模式\n单 agent 直接使用:setup → session-start → remember/learn → session-end。\n\n### 2. 共享工作区模式\n多个 agent 共用一个 workspace 时,可以共享记忆目录,但仍应按角色边界写入,避免噪音。\n\n### 3. 团队模式\n在多 agent 团队中,把它当长期记忆底座即可;团队协作约束应由团队模板或团队规范承载,而不是写死在记忆技能本体里。\n\n## 推荐工作流\n\n### 日常最小闭环\n1. `setup`(首次)\n2. `session-start`\n3. 中途 `remember` / `learn`\n4. 需要时 `index` / `context` / `recall`\n5. `session-end`\n6. 定期 `gc` / `reflect`\n\n### 定期维护\n- 每日:`reflect`\n- 每周:`gc`\n- 按需:`extract`\n\n## 限制与边界\n- 本地记忆系统,不替代外部知识库\n- 记忆质量依赖持续写入高质量 fact / lesson / session summary\n- 不建议每轮对话全量加载记忆\n\n## 相关文件\n- `SKILL.md`\n- `scripts/memory-cli.js`\n- `lib/`\n\n## 最近一次修改（中文）\n- **v2.1.0 / 2026-03-29**\n- README 改为使用周期驱动（初始化 → 使用 → 维护）\n- 补充个人模式 / 共享工作区模式 / 团队模式三层使用说明\n- 团队协作约束改为由团队规范承载，不写死在记忆技能本体里\n\nFile v3.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"3.0.5\",\n  \"publishedAt\": 1774810858555\n}\n\nArchive v3.0.1: 9 files, 29511 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (4061b), scripts/memory-cli.js (27456b), SKILL.md (8225b)\n\nFile v3.0.1:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 单 agent：直接使用本地 workspace 记忆\n- 共享 workspace / 多 agent：多个 agent 可共享同一记忆目录\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v3.0.1:README.md\n\n# smart-agent-memory\n\n## 这是什么\n`smart-agent-memory` 是一个跨平台的 Agent 长期记忆技能,目标是让 Agent 在本地工作区内形成**可读、可搜、可维护**的长期记忆体系。\n\n当前准确能力边界:\n- 使用 Node.js CLI 管理记忆\n- 支持分层读取:先 index,再按需 context\n- 支持事实、教训、实体、会话摘要等写入与查询\n- 支持温度模型、归档、反思、提炼\n- 支持通过 `setup` 为工作区注入 BOOTSTRAP 启动指令\n\n## 核心能力\n\n### 1. 分层记忆读取\n推荐顺序:\n1. `index`\n2. 判断需要什么\n3. `context`\n4. 再行动\n\n避免一次性全量读所有 memory。\n\n### 2. 事实 / 教训 / 实体管理\n- `remember`\n- `recall`\n- `learn`\n- `entity`\n- `facts`\n- `lessons`\n- `entities`\n\n### 3. Skill 经验记忆\n支持按 skill 记录与读取经验:\n- `remember ... --skill <name>`\n- `skill-mem <name>`\n- `skill-list`\n\n### 4. 会话生命周期\n- `session-start`\n- `session-end`\n\n适合在 session 开始与结束时调用。\n\n### 5. 维护能力\n- `gc`\n- `reflect`\n- `stats`\n- `temperature`\n- `extract`\n- `search`\n\n## 初始化(必须)\n本技能**有初始化步骤**。\n\n安装后请先执行一次:\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n作用:\n- 自动发现 `~/.openclaw/workspace*` 工作区\n- 为工作区注入 `BOOTSTRAP.md` 记忆启动指令\n- 幂等,可重复执行\n\n如果你新增了工作区,再执行一次 `setup` 即可。\n\n## 使用方法\n\n### 1. 会话开始\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\n```\n用于加载记忆概览与近期上下文。\n\n### 2. 会话中记录信息\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"关键信息\" --tags tag1,tag2\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\n```\n\n### 3. 会话结束\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### 4. 按需查询\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js index\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js context --tag <tag>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall <query>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js search <query>\n```\n\n## 配置与存储说明\n\n### 运行依赖\n- `node`\n\n### 默认存储位置\n- `~/.openclaw/workspace/memory/`\n\n### 存储形态\n根据当前说明文件,技能描述覆盖以下层次:\n- Markdown\n- JSON\n- SQLite / FTS5(在支持环境中)\n\nREADME 在描述时应保持谨慎:\n- 以当前 `SKILL.md` 声明与 CLI 能力为准\n- 不把尚未验证的底层实现细节写成外部承诺\n\n## 使用模式\n\n### 1. 个人模式\n单 agent 直接使用:setup → session-start → remember/learn → session-end。\n\n### 2. 共享工作区模式\n多个 agent 共用一个 workspace 时,可以共享记忆目录,但仍应按角色边界写入,避免噪音。\n\n### 3. 团队模式\n在多 agent 团队中,把它当长期记忆底座即可;团队协作约束应由团队模板或团队规范承载,而不是写死在记忆技能本体里。\n\n## 推荐工作流\n\n### 日常最小闭环\n1. `setup`(首次)\n2. `session-start`\n3. 中途 `remember` / `learn`\n4. 需要时 `index` / `context` / `recall`\n5. `session-end`\n6. 定期 `gc` / `reflect`\n\n### 定期维护\n- 每日:`reflect`\n- 每周:`gc`\n- 按需:`extract`\n\n## 限制与边界\n- 本地记忆系统,不替代外部知识库\n- 记忆质量依赖持续写入高质量 fact / lesson / session summary\n- 不建议每轮对话全量加载记忆\n\n## 相关文件\n- `SKILL.md`\n- `scripts/memory-cli.js`\n- `lib/`\n\n## 最近一次修改（中文）\n- **v2.1.0 / 2026-03-29**\n- README 改为使用周期驱动（初始化 → 使用 → 维护）\n- 补充个人模式 / 共享工作区模式 / 团队模式三层使用说明\n- 团队协作约束改为由团队规范承载，不写死在记忆技能本体里\n\nFile v3.0.1:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"3.0.1\",\n  \"publishedAt\": 1774752104053\n}\n\nArchive v3.0.0: 9 files, 30023 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (5188b), scripts/memory-cli.js (27456b), SKILL.md (8225b)\n\nFile v3.0.0:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 单 agent：直接使用本地 workspace 记忆\n- 共享 workspace / 多 agent：多个 agent 可共享同一记忆目录\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v3.0.0:README.md\n\n# smart-agent-memory\n\n## 这是什么\n`smart-agent-memory` 是一个跨平台的 Agent 长期记忆技能，目标是让 Agent 在本地工作区内形成**可读、可搜、可维护**的长期记忆体系。\n\n当前准确能力边界：\n- 使用 Node.js CLI 管理记忆\n- 支持分层读取：先 index，再按需 context\n- 支持事实、教训、实体、会话摘要等写入与查询\n- 支持温度模型、归档、反思、提炼\n- 支持通过 `setup` 为工作区注入 BOOTSTRAP 启动指令\n\n## 核心能力\n\n### 1. 分层记忆读取\n推荐顺序：\n1. `index`\n2. 判断需要什么\n3. `context`\n4. 再行动\n\n避免一次性全量读所有 memory。\n\n### 2. 事实 / 教训 / 实体管理\n- `remember`\n- `recall`\n- `learn`\n- `entity`\n- `facts`\n- `lessons`\n- `entities`\n\n### 3. Skill 经验记忆\n支持按 skill 记录与读取经验：\n- `remember ... --skill <name>`\n- `skill-mem <name>`\n- `skill-list`\n\n### 4. 会话生命周期\n- `session-start`\n- `session-end`\n\n适合在 session 开始与结束时调用。\n\n### 5. 维护能力\n- `gc`\n- `reflect`\n- `stats`\n- `temperature`\n- `extract`\n- `search`\n\n## 初始化（必须）\n本技能**有初始化步骤**。\n\n安装后请先执行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n作用：\n- 自动发现 `~/.openclaw/workspace*` 工作区\n- 为工作区注入 `BOOTSTRAP.md` 记忆启动指令\n- 幂等，可重复执行\n\n如果你新增了工作区，再执行一次 `setup` 即可。\n\n## 使用方法\n\n### 1. 会话开始\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\n```\n用于加载记忆概览与近期上下文。\n\n### 2. 会话中记录信息\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"关键信息\" --tags tag1,tag2\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\n```\n\n### 3. 会话结束\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### 4. 按需查询\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js index\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js context --tag <tag>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall <query>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js search <query>\n```\n\n## 配置与存储说明\n\n### 运行依赖\n- `node`\n\n### 默认存储位置\n- `~/.openclaw/workspace/memory/`\n\n### 存储形态\n根据当前说明文件，技能描述覆盖以下层次：\n- Markdown\n- JSON\n- SQLite / FTS5（在支持环境中）\n\nREADME 在描述时应保持谨慎：\n- 以当前 `SKILL.md` 声明与 CLI 能力为准\n- 不把尚未验证的底层实现细节写成外部承诺\n\n## 使用模式\n\n### 1. 个人模式\n单 agent 直接使用：setup → session-start → remember/learn → session-end。\n\n### 2. 共享工作区模式\n多个 agent 共用一个 workspace 时，可以共享记忆目录，但仍应按角色边界写入，避免噪音。\n\n### 3. 团队模式\n在多 agent 团队中，把它当长期记忆底座即可；团队协作约束应由团队模板或团队规范承载，而不是写死在记忆技能本体里。\n\n## 推荐工作流\n\n### 日常最小闭环\n1. `setup`（首次）\n2. `session-start`\n3. 中途 `remember` / `learn`\n4. 需要时 `index` / `context` / `recall`\n5. `session-end`\n6. 定期 `gc` / `reflect`\n\n### 定期维护\n- 每日：`reflect`\n- 每周：`gc`\n- 按需：`extract`\n\n## 已明确删除或纠正的旧描述\n以下内容在 README 层面需要收口，不应无限放大：\n- 大量“融合了哪些外部项目思想”的叙事性介绍可以保留为背景，但**不能盖过当前真实可用能力说明**\n- 某些底层实现细节若未在当前技能说明和实际脚本中稳定暴露，不应写成用户承诺\n- README 应优先说明：怎么初始化、怎么调用、怎么维护，而不是长篇来源故事\n\n## 限制与边界\n- 这是本地记忆系统，不替代外部知识库\n- 记忆质量依赖你是否持续写入高质量 fact / lesson / session summary\n- 不建议每轮对话都全量加载记忆\n\n## 推荐验证方式\n改动本技能后，建议至少检查：\n- `setup` 是否仍可重复执行且不重复注入\n- `session-start` / `session-end` 是否仍可用\n- `index` / `context` / `recall` 是否形成合理闭环\n- README 是否优先说明初始化、使用、配置、维护完整周期\n\n## 相关文件\n- `SKILL.md`\n- `scripts/memory-cli.js`\n- `lib/`\n\n## 最近一次修改（中文）\n- **最近一次可见版本信息：v2.1.0（以当前 SKILL 头部为准）**\n- 说明：当前已读取到现行 `SKILL.md`，其版本号为 `2.1.0`；未单独读取到独立 changelog 文件，因此这里按当前技能口径总结最近一次可见修改状态。\n- 当前口径重点：\n  - 强调分层上下文读取\n  - 强调 `setup` + `session-start` + `session-end` 的完整记忆生命周期\n  - 强调 skill 经验记忆与本地维护闭环\n  - 保持 README 以现行可用能力为中心，而不是以背景故事为中心\n\nFile v3.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"3.0.0\",\n  \"publishedAt\": 1774751001499\n}\n\nArchive v2.5.0: 9 files, 29759 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (4730b), scripts/memory-cli.js (27456b), SKILL.md (8101b)\n\nFile v2.5.0:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v2.5.0:README.md\n\n# smart-agent-memory\n\n## 这是什么\n`smart-agent-memory` 是一个跨平台的 Agent 长期记忆技能，目标是让 Agent 在本地工作区内形成**可读、可搜、可维护**的长期记忆体系。\n\n当前准确能力边界：\n- 使用 Node.js CLI 管理记忆\n- 支持分层读取：先 index，再按需 context\n- 支持事实、教训、实体、会话摘要等写入与查询\n- 支持温度模型、归档、反思、提炼\n- 支持通过 `setup` 为工作区注入 BOOTSTRAP 启动指令\n\n## 核心能力\n\n### 1. 分层记忆读取\n推荐顺序：\n1. `index`\n2. 判断需要什么\n3. `context`\n4. 再行动\n\n避免一次性全量读所有 memory。\n\n### 2. 事实 / 教训 / 实体管理\n- `remember`\n- `recall`\n- `learn`\n- `entity`\n- `facts`\n- `lessons`\n- `entities`\n\n### 3. Skill 经验记忆\n支持按 skill 记录与读取经验：\n- `remember ... --skill <name>`\n- `skill-mem <name>`\n- `skill-list`\n\n### 4. 会话生命周期\n- `session-start`\n- `session-end`\n\n适合在 session 开始与结束时调用。\n\n### 5. 维护能力\n- `gc`\n- `reflect`\n- `stats`\n- `temperature`\n- `extract`\n- `search`\n\n## 初始化（必须）\n本技能**有初始化步骤**。\n\n安装后请先执行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n作用：\n- 自动发现 `~/.openclaw/workspace*` 工作区\n- 为工作区注入 `BOOTSTRAP.md` 记忆启动指令\n- 幂等，可重复执行\n\n如果你新增了工作区，再执行一次 `setup` 即可。\n\n## 使用方法\n\n### 1. 会话开始\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\n```\n用于加载记忆概览与近期上下文。\n\n### 2. 会话中记录信息\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"关键信息\" --tags tag1,tag2\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\n```\n\n### 3. 会话结束\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### 4. 按需查询\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js index\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js context --tag <tag>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall <query>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js search <query>\n```\n\n## 配置与存储说明\n\n### 运行依赖\n- `node`\n\n### 默认存储位置\n- `~/.openclaw/workspace/memory/`\n\n### 存储形态\n根据当前说明文件，技能描述覆盖以下层次：\n- Markdown\n- JSON\n- SQLite / FTS5（在支持环境中）\n\nREADME 在描述时应保持谨慎：\n- 以当前 `SKILL.md` 声明与 CLI 能力为准\n- 不把尚未验证的底层实现细节写成外部承诺\n\n## 推荐工作流\n\n### 日常最小闭环\n1. `setup`（首次）\n2. `session-start`\n3. 中途 `remember` / `learn`\n4. 需要时 `index` / `context` / `recall`\n5. `session-end`\n6. 定期 `gc` / `reflect`\n\n### 定期维护\n- 每日：`reflect`\n- 每周：`gc`\n- 按需：`extract`\n\n## 已明确删除或纠正的旧描述\n以下内容在 README 层面需要收口，不应无限放大：\n- 大量“融合了哪些外部项目思想”的叙事性介绍可以保留为背景，但**不能盖过当前真实可用能力说明**\n- 某些底层实现细节若未在当前技能说明和实际脚本中稳定暴露，不应写成用户承诺\n- README 应优先说明：怎么初始化、怎么调用、怎么维护，而不是长篇来源故事\n\n## 限制与边界\n- 这是本地记忆系统，不替代外部知识库\n- 记忆质量依赖你是否持续写入高质量 fact / lesson / session summary\n- 不建议每轮对话都全量加载记忆\n\n## 推荐验证方式\n改动本技能后，建议至少检查：\n- `setup` 是否仍可重复执行且不重复注入\n- `session-start` / `session-end` 是否仍可用\n- `index` / `context` / `recall` 是否形成合理闭环\n- README 是否优先说明初始化、使用、配置、维护完整周期\n\n## 相关文件\n- `SKILL.md`\n- `scripts/memory-cli.js`\n- `lib/`\n\n## 最近一次修改（中文）\n- **最近一次可见版本信息：v2.1.0（以当前 SKILL 头部为准）**\n- 说明：当前已读取到现行 `SKILL.md`，其版本号为 `2.1.0`；未单独读取到独立 changelog 文件，因此这里按当前技能口径总结最近一次可见修改状态。\n- 当前口径重点：\n  - 强调分层上下文读取\n  - 强调 `setup` + `session-start` + `session-end` 的完整记忆生命周期\n  - 强调 skill 经验记忆与本地维护闭环\n  - 保持 README 以现行可用能力为中心，而不是以背景故事为中心\n\nFile v2.5.0:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"2.5.0\",\n  \"publishedAt\": 1774738979039\n}\n\nArchive v2.4.4: 9 files, 37181 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (25015b), scripts/memory-cli.js (27456b), SKILL.md (8101b)\n\nFile v2.4.4:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v2.4.4:README.md\n\n# 🧠 Smart Agent Memory v2.0 — 跨平台 Agent 长期记忆系统\n\n> 融合 5 个记忆方案的精华：**agent-memory-system**（温度/归档/反思）+ **agent-memory**（Fact/Lesson/Entity/FTS）+ **mem9**（会话生命周期钩子）+ **OpenViking**（语义搜索集成）+ **lossless-claw**（无损归档）。\n>\n> 打造**分层上下文供给 + Skill 经验记忆 + 温度模型 + 会话生命周期 + 结构化存储 + 无损归档**的一站式 Agent 记忆引擎。\n\n**纯 Node.js 原生模块，零外部依赖，零云端 API。Windows / macOS / Linux 通用。三层存储：Markdown + JSON + SQLite/FTS5。**\n\n---\n\n## 📖 目录\n\n- [项目背景：为什么要做这个？](#-项目背景为什么要做这个)\n- [核心优势](#-核心优势)\n- [快速开始](#-快速开始)\n- [完整命令手册](#-完整命令手册)\n- [双层存储架构](#-双层存储架构)\n- [温度模型](#-温度模型)\n- [智能后端：JSON 与 SQLite](#-智能后端json-与-sqlite)\n- [与 OpenClaw 深度集成](#-与-openclaw-深度集成)\n- [Agent 每日工作流](#-agent-每日工作流)\n- [系统要求](#-系统要求)\n- [文件结构](#-文件结构)\n- [常见问题](#-常见问题)\n- [致谢与来源](#-致谢与来源)\n\n---\n\n## 💡 项目背景：为什么要做这个？\n\n社区里已有两个 Agent 记忆方案，各有优缺点：\n\n### agent-memory-system（by 阿福）\n\n**理念：文件即记忆，日记本方式。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| 温度模型（热/温/冷三级分类） | 只支持 Linux/Mac（bash 脚本） |\n| 自动归档 GC（冷数据按月归档） | 依赖 rsync、crontab |\n| 夜间反思（每日健康报告） | 无结构化查询能力 |\n| 技能提炼（教训 → SKILL.md） | 无实体追踪 |\n| Markdown 人可读，QMD 直接搜索 | 搜索只能靠外部工具 |\n| 与 OpenClaw workspace 深度融合 | — |\n\n### agent-memory（by ClawHub 社区）\n\n**理念：数据库驱动，程序化 API。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| Fact / Lesson / Entity 三层模型 | 需要 Python 运行环境 |\n| SQLite + FTS5 精准全文搜索 | 数据在数据库里，人不可读 |\n| 置信度（confidence）模型 | 与 OpenClaw 原生工作流割裂 |\n| 访问计数 + 最后访问时间追踪 | 无温度模型，无自动归档 |\n| 置换链（supersede）保留历史 | 无夜间反思，无技能提炼 |\n| 实体属性自动合并 | — |\n| 数据导出（JSON export） | — |\n\n### v2.0 对标研究的竞品\n\n| 竞品 | 类型 | 我们吸收了什么 |\n|------|------|--------------|\n| **mem9** (1.0.5) | MCP server，云端持久记忆 | session-start/end 会话生命周期钩子、结构化事实存储模型（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎 | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | 对话上下文无损压缩 | 无损归档：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### Smart Agent Memory 的答案：全都要\n\n**5 个方案的优点合并，缺点全部干掉：**\n\n- ✅ 从 **agent-memory-system** 继承：温度模型、自动归档、夜间反思、技能提炼、Markdown 文件驱动\n- ✅ 从 **agent-memory** 继承：Fact/Lesson/Entity 结构化存储、全文搜索、置信度、访问追踪、置换链、实体追踪\n- ✅ 从 **mem9** 吸收：session-start/end 会话生命周期钩子（本地化，零云端依赖）\n- ✅ 从 **OpenViking** 吸收：语义搜索集成（通过 qmd 实现，不依赖火山 API）\n- ✅ 从 **lossless-claw** 吸收：无损归档思路（GC 压缩摘要但保留原文指针）\n- 🆕 **新增分层上下文供给**：index → 判断 → context 按需钻取，省 90% token\n- 🆕 **新增 Skill 经验记忆**：按技能名存取经验，下次调用前自动加载\n- 🆕 **新增三层写入**：一次操作同时写 Markdown + JSON + SQLite\n- 🆕 **新增跨平台**：纯 Node.js，不依赖 bash/python/rsync/云 API\n- 🆕 **新增智能后端**：Node.js >= 22.5 自动启用原生 SQLite + FTS5，否则降级 JSON\n- 🆕 **新增自动迁移**：从 JSON 升级到 SQLite 时零手动操作\n- 🆕 **新增 setup 一键激活**：自动发现所有工作区，注入 BOOTSTRAP.md\n- 🆕 **新增 OpenClaw Cron 集成**：不碰系统 crontab\n\n---\n\n## 🏆 核心优势\n\n| 特性 | 说明 |\n|------|------|\n| **双层存储** | Markdown（人可读，QMD 可搜索）+ JSON/SQLite（结构化，快速查询），写入时双写 |\n| **智能后端** | Node.js >= 22.5 → 原生 SQLite + FTS5；低版本 → JSON 降级（零依赖也能用） |\n| **温度模型** | 🔥 热（<7天）→ 🟡 温（7-30天）→ ❄️ 冷（>30天）→ 📦 归档 |\n| **三层记忆** | **Fact**（事实）+ **Lesson**（教训）+ **Entity**（实体），各有专用 CRUD |\n| **自动归档** | 冷数据自动移到 `.archive/YYYY-MM/`，配合 GC 清理低频 facts |\n| **全文搜索** | SQLite FTS5 精准搜索 / JSON 模式关键词匹配 / Markdown 文件全文扫描 |\n| **知识提炼** | 从教训一键提取 SKILL.md 模板，变成可复用的 Agent 技能 |\n| **夜间反思** | 自动生成记忆健康报告（facts/lessons/entities 统计 + 温度分布） |\n| **置信度** | 每个 fact 可设置 0-1 置信度，搜索时可按置信度过滤 |\n| **访问追踪** | 自动记录每个 fact 的访问次数和最后访问时间，GC 时保护高频数据 |\n| **置换链** | `supersede` 一个旧 fact，新旧关联保留历史轨迹 |\n| **自动迁移** | 首次检测到 SQLite 可用时，自动把 JSON 数据导入 SQLite |\n| **跨平台** | Windows / macOS / Linux 通用，纯 Node.js |\n| **会话生命周期** | session-start 自动加载上下文 / session-end 存会话摘要（借鉴 mem9，本地化实现） |\n| **分层上下文** | index（<500 tokens）→ context 按 tag/skill/时间钻取，避免全量加载浪费 token |\n| **Skill 经验记忆** | 按技能名存取经验（`--skill`），调用工具前自动加载历史踩坑记录 |\n| **无损归档** | GC 时冷数据压缩为摘要但保留原文指针，不丢失信息（借鉴 lossless-claw） |\n| **语义搜索** | 优先走 qmd（BM25+向量），不可用时降级内置 TF 搜索（借鉴 OpenViking，零外部 API） |\n| **一键激活** | `setup` 自动发现所有 workspace，注入 BOOTSTRAP.md，新工作区再跑一次即可 |\n| **14+ 个命令** | 覆盖记忆全生命周期：记住、回忆、遗忘、学习、追踪、归档、反思、提炼、会话、激活 |\n\n---\n\n## 🚀 快速开始\n\n### 安装\n\n```bash\n# 从 ClawHub 安装\nclawhub install smart-agent-memory\n\n# 或手动复制到技能目录\ncp -r smart-agent-memory ~/.openclaw/skills/\n```\n\n### 激活记忆（安装后必做）\n\n安装完成后，运行一次 `setup`：\n\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n`setup` 会**自动发现 `~/.openclaw/` 下所有 `workspace*` 目录**，逐个注入记忆启动指令到 `BOOTSTRAP.md`。\n- 幂等：重复运行不会重复写入\n- 新增工作区后再跑一次 `setup` 即可，已注入的会自动跳过\n\n> ⚠️ **不运行 setup = 技能装了但不会自动激活 = 依然失忆。** 这一步不能跳过。\n\n### 基本操作\n\n```bash\n# 记住一个事实\nnode scripts/memory-cli.js remember \"项目用 React 18 + TypeScript\" --tags tech,frontend\n\n# 搜索记忆\nnode scripts/memory-cli.js recall \"React\"\n\n# 记录教训\nnode scripts/memory-cli.js learn \\\n  --action \"线上直接改数据库\" \\\n  --context \"数据修复\" \\\n  --outcome negative \\\n  --insight \"永远先备份，在测试环境验证SQL后再操作生产\"\n\n# 追踪一个人\nnode scripts/memory-cli.js entity \"张三\" person --attr role=后端开发 --attr team=Core\n\n# 查看记忆健康\nnode scripts/memory-cli.js stats\n```\n\n**示例输出：**\n```\n🧠 Smart Agent Memory — Stats [sqlite]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nFacts:\n  Total:      42\n  Active:     38\n  🔥 Hot:     12 (< 7 days)\n  🟡 Warm:    18 (7-30 days)\n  ❄️ Cold:    8 (> 30 days)\n\nLessons:      7\nEntities:     5\nArchived:     23 files\n\nLast GC:         2026-03-05 00:00\nLast Reflection: 2026-03-06 23:45\n```\n\n---\n\n## 📖 完整命令手册\n\n### remember — 记住事实\n\n```bash\nnode scripts/memory-cli.js remember <内容> [选项]\n```\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--tags t1,t2` | 标签（逗号分隔） | 无 |\n| `--source` | 来源（conversation / observation / inference） | conversation |\n| `--confidence` | 置信度（0-1） | 1.0 |\n\n**示例：**\n```bash\n# 基础\nnode scripts/memory-cli.js remember \"老板偏好简短日报\"\n\n# 带标签\nnode scripts/memory-cli.js remember \"API限流100req/min\" --tags api,限制\n\n# 低置信度（不太确定的信息）\nnode scripts/memory-cli.js remember \"可能要迁移到AWS\" --confidence 0.6 --source inference\n```\n\n**背后发生了什么：**\n1. 写入 `.data/facts.json`（或 SQLite facts 表）\n2. 追加到当天的 `memory/2026-03-07.md` 日志\n3. 如果是 SQLite 模式，同时写入 FTS5 索引\n\n### recall — 搜索/回忆事实\n\n```bash\nnode scripts/memory-cli.js recall <关键词> [--limit 10] [--tags t1]\n```\n\n搜索 JSON/SQLite 中的结构化 facts。SQLite 模式下使用 FTS5 精准搜索，JSON 模式下使用关键词匹配 + 评分排序。\n\n**评分逻辑：** 关键词匹配度 + 数据新鲜度（近7天加分） + 访问频率\n\n### search — 全文搜索 Markdown 文件\n\n```bash\nnode scripts/memory-cli.js search <关键词> [--limit 20]\n```\n\n扫描 memory/ 下所有 `.md` 文件（日志、教训、人物、反思等），按匹配度 + 文件新鲜度排序。\n\n**recall vs search 的区别：**\n\n| | recall | search |\n|---|---|---|\n| 搜索范围 | 结构化 facts（JSON/SQLite） | 所有 Markdown 文件 |\n| 搜索方式 | FTS5 或关键词匹配 | 逐文件逐行扫描 |\n| 适合场景 | \"我记过什么关于 X 的 fact？\" | \"memory 里哪个文件提到了 X？\" |\n| 返回结果 | Fact 对象（含 ID、标签、置信度） | 文件名 + 匹配行 |\n\n### forget — 删除事实\n\n```bash\nnode scripts/memory-cli.js forget <fact-id>\n```\n\n### facts — 列出所有事实\n\n```bash\nnode scripts/memory-cli.js facts [--tags t1] [--limit 50]\n```\n\n### learn — 记录教训\n\n```bash\nnode scripts/memory-cli.js learn --action \"做了什么\" --context \"什么场景\" --outcome positive|negative|neutral --insight \"学到了什么\"\n```\n\n**双写目标：**\n- `.data/lessons.json`（或 SQLite lessons 表 + FTS5 索引）\n- `memory/lessons/YYYY-MM-DD-<id>.md`\n\n### lessons — 查看教训\n\n```bash\nnode scripts/memory-cli.js lessons [--context 主题] [--outcome negative] [--limit 10]\n```\n\n### entity — 追踪实体\n\n```bash\n# 创建\nnode scripts/memory-cli.js entity \"李四\" person --attr role=产品经理 --attr timezone=GMT+8\n\n# 更新（同名同类型自动合并属性）\nnode scripts/memory-cli.js entity \"李四\" person --attr email=lisi@example.com\n```\n\n**双写目标：**\n- `.data/entities.json`（或 SQLite entities 表）\n- `memory/people/<name>.md`（person 类型）\n- `memory/decisions/<name>.md`（其他类型）\n\n### entities — 列出实体\n\n```bash\nnode scripts/memory-cli.js entities [--type person]\n```\n\n### gc — 垃圾回收 / 归档\n\n```bash\nnode scripts/memory-cli.js gc [--days 30]\n```\n\n**做两件事：**\n1. **文件归档：** 把超过 N 天的 `YYYY-MM-DD.md` 日志移到 `.archive/YYYY-MM/`\n2. **清理低频数据：** 删除 JSON/SQLite 中超过 N 天且访问次数 ≤ 1 的 facts\n\n### reflect — 夜间反思\n\n```bash\nnode scripts/memory-cli.js reflect\n```\n\n在 `memory/reflections/YYYY-MM-DD.md` 生成当日记忆健康报告。\n\n### extract — 知识提炼（教训 → 技能）\n\n```bash\n# 查看教训 ID\nnode scripts/memory-cli.js lessons\n\n# 提炼\nnode scripts/memory-cli.js extract <lesson-id> --skill-name deploy-checklist\n# → 生成 ~/.openclaw/skills/deploy-checklist/SKILL.md\n```\n\n把一条教训自动生成 SKILL.md 模板，包含背景、问题、解决方案、使用场景。你可以在此基础上完善，变成一个真正可复用的 Agent 技能。\n\n### stats — 记忆健康面板\n\n```bash\nnode scripts/memory-cli.js stats\n```\n\n显示：facts 总量/活跃/热/温/冷分布、lessons 数量、entities 数量、归档文件数、上次 GC 和反思时间、当前后端类型。\n\n### temperature — 温度报告\n\n```bash\nnode scripts/memory-cli.js temperature\n```\n\n按热/温/冷分类列出所有日志文件。\n\n### export — 导出全部数据\n\n```bash\nnode scripts/memory-cli.js export\n```\n\n以 JSON 格式输出所有 facts、lessons、entities，方便备份或迁移。\n\n---\n\n## 📂 双层存储架构\n\n```\n~/.openclaw/workspace/memory/\n│\n│ ──── Markdown 层（人可读，QMD 可搜索）────\n├── 2026-03-07.md              ← 今天的日志\n├── 2026-03-06.md              ← 昨天\n├── lessons/                   ← 教训文件\n│   ├── 2026-03-07-abc123.md\n│   └── 2026-03-05-def456.md\n├── people/                    ← 人物档案\n│   └── zhang-san.md\n├── decisions/                 ← 非人物实体\n├── reflections/               ← 反思记录\n│   └── 2026-03-07.md\n│\n│ ──── 结构化层（程序用，快速查询）────\n├── .data/\n│   ├── facts.json             ← 事实（JSON 模式）\n│   ├── lessons.json           ← 教训（JSON 模式）\n│   ├── entities.json          ← 实体（JSON 模式）\n│   └── memory.db              ← SQLite 数据库（SQLite 模式，自动创建）\n│\n│ ──── 归档层 ────\n├── .archive/                  ← GC 归档的冷数据\n│   └── 2026-01/\n│       ├── 2026-01-05.md\n│       └── 2026-01-12.md\n│\n└── .index.json                ← 索引元数据\n```\n\n**设计原则：**\n- **写入时双写** — `remember` / `learn` / `entity` 同时写 Markdown 和 JSON/SQLite\n- **搜索时互补** — `recall` 走结构化层，`search` 走 Markdown 层\n- **Markdown 丢了** — 结构化数据还在，可以重建\n- **JSON 丢了** — Markdown 还在，教训和实体有 .md 文件兜底\n\n---\n\n## 🌡️ 温度模型\n\n| 温度 | 时间范围 | 存储位置 | 说明 |\n|------|----------|----------|------|\n| 🔥 热 | < 7 天 | `memory/*.md` | 活跃数据，高频访问 |\n| 🟡 温 | 7-30 天 | `memory/*.md` | 近期数据，偶尔访问 |\n| ❄️ 冷 | > 30 天 | `memory/*.md` → GC 后移到 `.archive/` | 低频数据，GC 候选 |\n| 📦 归档 | — | `memory/.archive/YYYY-MM/` | 已归档，按月分目录 |\n\n温度由文件修改时间自动计算，不需要手动标记。\n\n**GC 规则：**\n- 文件层：冷数据（>30天的日志文件）移到 `.archive/`\n- 数据层：超过 N 天 + 访问次数 ≤ 1 的 facts 被删除\n- 高频访问的 facts 即使很旧也不会被清理（访问计数保护）\n\n---\n\n## ⚡ 智能后端：JSON 与 SQLite\n\n本技能支持两种存储后端，**运行时自动检测、自动选择、自动迁移**：\n\n### JSON 模式（默认，零依赖）\n\n- 适合万级数据量\n- 数据存在 `.data/facts.json` 等文件中\n- 搜索用内存关键词匹配\n- 不需要安装任何额外包\n\n### SQLite 模式（Node.js >= 22.5 自动启用）\n\n使用 Node.js 原生 `node:sqlite` 模块（`DatabaseSync`），**无需安装任何 npm 包**。\n\n自动获得：\n\n| 特性 | 说明 |\n|------|------|\n| **FTS5 全文搜索** | FTS5 + LIKE 双引擎，英文走 FTS5，中文走 LIKE 子串匹配 |\n| **ACID 事务** | 数据写入更安全，不怕写到一半断电 |\n| **WAL 模式** | 读写并发性能好，多 Agent 同时访问不冲突 |\n| **百万级数据** | 轻松处理大量 facts/lessons |\n| **自动迁移** | 首次启用时自动把 JSON 数据导入 SQLite |\n\n**完全自动：**\n1. Node.js >= 22.5 → 自动检测 `node:sqlite`\n2. 自动创建 `memory.db` → 自动导入已有 JSON 数据\n3. 显示 `[sqlite]`\n\n**降级也无感：** Node.js < 22.5 自动回到 JSON 模式（JSON 文件一直保持更新）。\n\n---\n\n## 🔗 与 OpenClaw 深度集成\n\n### 1. memory_search 原生兼容\n\n所有 Markdown 文件在 `~/.openclaw/workspace/memory/` 下，OpenClaw 的 `memory_search` 工具**直接可搜**，不需要任何额外配置。\n\n### 2. OpenClaw Cron 定时任务\n\n用 OpenClaw 内置 cron，不碰系统 crontab：\n\n```bash\n# 每周日凌晨自动 GC 归档\nopenclaw cron add --name \"memory-gc\" \\\n  --schedule \"0 0 * * 0\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc\"\n\n# 每晚 23:45 自动反思\nopenclaw cron add --name \"memory-reflect\" \\\n  --schedule \"45 23 * * *\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect\"\n```\n\n### 3. Agent 直接调用\n\nAgent 可以通过 `exec` 工具直接执行：\n\n```bash\n# 在对话中记住重要信息\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"重要信息\" --tags important\n\n# 回忆相关知识\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall \"关键词\"\n```\n\n### 4. Heartbeat 集成\n\n在 `HEARTBEAT.md` 中加入记忆维护：\n\n```markdown\n## Memory Maintenance\n- 每周检查一次 `stats`，如果冷数据 > 20 个就运行 `gc`\n- 每月检查 lessons，考虑提炼高价值教训为 skill\n```\n\n---\n\n## 🔄 Agent 每日工作流\n\n### 会话开始\n\n1. 读取 `MEMORY.md` 获取核心记忆\n2. 运行 `stats` 检查记忆健康\n3. 运行 `recall` 获取当前任务相关上下文\n\n### 会话中\n\n| 触发事件 | 建议操作 |\n|----------|----------|\n| 用户提到重要信息 | `remember \"信息\" --tags 相关标签` |\n| 用户纠正了错误 | `learn --action \"做错了什么\" --outcome negative --insight \"正确做法\"` |\n| 发现了好方法 | `learn --action \"做对了什么\" --outcome positive --insight \"总结\"` |\n| 遇到新的人/项目 | `entity \"名字\" 类型 --attr key=value` |\n| 用户说\"记住这个\" | `remember \"内容\" --tags user-requested` |\n| 需要查找之前的决策 | `recall \"关键词\"` 或 `search \"关键词\"` |\n| 某个信息过时了 | `supersede 旧id \"新信息\"` 或 `forget 旧id` |\n\n### 每日结束\n\n1. 更新每日日志（自动，通过 remember 命令已经在写了）\n2. 有价值的对话总结 → `remember` 存入\n\n### 每周 / 定时\n\n| 任务 | 频率 | 命令 |\n|------|------|------|\n| GC 归档 | 每周 | `gc` |\n| 夜间反思 | 每日 | `reflect` |\n| 温度检查 | 按需 | `temperature` |\n| 教训提炼 | 按需 | `extract <id>` |\n\n---\n\n## 💻 系统要求\n\n| 要求 | 说明 |\n|------|------|\n| **Node.js** | >= 22.5 推荐（原生 SQLite）；18+ 可用（JSON 模式） |\n| **磁盘** | 通常 < 1MB（SQLite 模式 < 5MB） |\n| **外部依赖** | **无**。SQLite 使用 Node.js 原生 `node:sqlite` 模块 |\n\n**不需要**：Python、bash、rsync、系统 crontab。\n\n---\n\n## 📁 文件结构\n\n```\nsmart-agent-memory/\n├── SKILL.md                     # 技能定义（Agent 读）\n├── README.md                    # 本文档（人读）\n├── _meta.json                   # 技能元信息\n├── lib/\n│   ├── store.js                 # JSON 存储引擎 + 工厂函数（自动选择后端）\n│   ├── sqlite-store.js          # SQLite 存储引擎（FTS5 + WAL）\n│   ├── temperature.js           # 温度模型 + GC 归档\n│   ├── search.js                # 轻量 Markdown 全文搜索\n│   └── extract.js               # 教训 → 技能提炼\n└── scripts/\n    └── memory-cli.js            # CLI 入口（14 个命令）\n```\n\n---\n\n## ❓ 常见问题\n\n### Q: 和 OpenClaw 自带的 memory/ 目录冲突吗？\n\n**不冲突。** 本技能就是管理 `workspace/memory/` 目录的，与 OpenClaw 的 `memory_search` 完全兼容。结构化数据在 `.data/` 子目录下，不影响现有的 `.md` 文件。\n\n### Q: 已有 memory/ 下的日志文件会被破坏吗？\n\n**不会。** 本技能只追加内容（appendDailyLog），不修改已有文件。GC 归档是移动文件（rename），不是删除。\n\n### Q: JSON 数据丢了怎么办？\n\nMarkdown 文件还在。教训和实体都有对应的 `.md` 文件。JSON 丢了最多损失 facts 的访问计数等元数据，核心信息在 Markdown 中有备份。\n\n### Q: SQLite 数据库损坏了怎么办？\n\n删掉 `.data/memory.db`，下次运行自动从 JSON 文件重建（前提是 JSON 文件还在）。双层存储的好处就是互为备份。\n\n### Q: 数据量大了会慢吗？\n\n- **JSON 模式：** 万级 facts 没问题（内存操作）\n- **SQLite 模式：** 百万级没问题（索引 + FTS5）\n- **Markdown 搜索：** 千级文件秒出结果\n- **GC 会自动归档冷数据**，控制活跃文件数量\n\n### Q: 能和其他 Agent 共享记忆吗？\n\n**可以。** memory/ 目录在 workspace 下，多 Agent 共享同一个 workspace 就共享记忆。用 `--tags` 区分不同 Agent 的 facts。SQLite 的 WAL 模式支持并发读写。\n\n### Q: 在 Mac 上创建的记忆，Windows 上能用吗？\n\n**可以。** JSON 和 SQLite 都是跨平台格式。配合 `myopenclaw-backup-restore` 技能备份还原，跨平台迁移零障碍。\n\n### Q: 从旧版 agent-memory-system 迁移过来方便吗？\n\n**很方便。** 旧版的 memory/ 目录结构（日志、lessons、people 等）和本技能**完全兼容**。安装后直接用，已有的 .md 文件自动被 search 命令搜索到。只需要运行 `remember` 把重要信息录入结构化层即可。\n\n### Q: stats 显示 [json] 而不是 [sqlite]？\n\n需要 Node.js >= 22.5 才能使用原生 `node:sqlite`。运行 `node -v` 确认版本。如果低于 22.5，JSON 模式也完全可用。\n\n---\n\n## 📜 版本历史\n\n- **v2.0.0** — 零依赖重构\n  - 从 better-sqlite3 迁移到 Node.js 原生 `node:sqlite`（DatabaseSync），彻底零外部依赖\n  - 去除 crypto 模块依赖，改用时间戳+随机数生成 ID\n  - 目录 lazy init：不再构造时创建所有子目录，按需创建\n  - FTS + LIKE 双引擎搜索：英文走 FTS5，中文走 LIKE 子串匹配\n  - 搜索集成 qmd：`search` 命令优先走 qmd（BM25+向量+rerank），不可用时自动降级内置搜索\n  - reflect 命令增强：输出高频标签、最近实体、Skill 经验统计、最近教训\n  - JSON→SQLite 迁移后提示清理旧文件\n  - 对话标准流程（开场/过程/结束）写入 SKILL.md\n  - cron 配置改为标准 JSON 格式，可跨设备\n\n- **v1.0.0** — 初始版本\n  - 融合 agent-memory-system（温度/归档/反思/提炼）+ agent-memory（Fact/Lesson/Entity/FTS）\n  - 双层存储：Markdown + JSON/SQLite\n  - 智能后端自动检测 + 自动迁移\n  - 14 个 CLI 命令\n  - 纯 Node.js 跨平台\n\n---\n\n## 🤝 致谢与来源\n\n本技能站在多个优秀项目的肩膀上：\n\n### 直接整合的基础项目\n\n| 来源项目 | 作者 | 链接 | 继承的核心设计 |\n|----------|------|------|---------------|\n| **agent-memory-system** | 阿福 | [ClawHub](https://clawhub.com/skills/agent-memory-system) | 温度模型、自动归档 GC、夜间反思、技能提炼、文件驱动架构 |\n| **agent-memory** | dennis-da-menace | [GitHub](https://github.com/openclaw/skills/blob/main/skills/dennis-da-menace/agent-memory/SKILL.md) | Fact/Lesson/Entity 三层模型、全文搜索、置信度、访问追踪、置换链、实体属性合并 |\n\n### 对标研究的竞品（v2.0 设计参考）\n\n| 竞品 | 类型 | 链接 | 吸收的设计思路 |\n|------|------|------|--------------|\n| **mem9** (1.0.5) | Skill（MCP server），云端持久记忆 | [GitHub](https://github.com/mem9-ai/mem9) | 结构化事实存储模型、session-start/end 会话生命周期钩子（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎（字节跳动） | [GitHub](https://github.com/volcengine/OpenViking) | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | Plugin（Context Engine） | [LobeHub](https://lobehub.com/skills/olafgeibig-skills-lossless-claw-skill) | 无损归档思路：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### 我们的差异化\n- ✅ **零外部依赖**（vs mem9 需云 API，OpenViking 需 Python+火山 API）\n- ✅ **全本地数据**（vs mem9 云端存储）\n- ✅ **三层存储互为备份**：Markdown（人可读）+ JSON（结构化）+ SQLite/FTS5（高性能搜索）\n- ✅ **Skill 经验记忆** + **Artifact 跨 Agent 引用**（独有）\n- ✅ **跨平台**：纯 Node.js，Windows/macOS/Linux 通用\n\n感谢以上项目作者的开源贡献。\n\n**许可证：** MIT\n\nFile v2.4.4:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"2.4.4\",\n  \"publishedAt\": 1774703689424\n}\n\nArchive v2.4.3: 9 files, 37180 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (25015b), scripts/memory-cli.js (27456b), SKILL.md (8101b)\n\nFile v2.4.3:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v2.4.3:README.md\n\n# 🧠 Smart Agent Memory v2.0 — 跨平台 Agent 长期记忆系统\n\n> 融合 5 个记忆方案的精华：**agent-memory-system**（温度/归档/反思）+ **agent-memory**（Fact/Lesson/Entity/FTS）+ **mem9**（会话生命周期钩子）+ **OpenViking**（语义搜索集成）+ **lossless-claw**（无损归档）。\n>\n> 打造**分层上下文供给 + Skill 经验记忆 + 温度模型 + 会话生命周期 + 结构化存储 + 无损归档**的一站式 Agent 记忆引擎。\n\n**纯 Node.js 原生模块，零外部依赖，零云端 API。Windows / macOS / Linux 通用。三层存储：Markdown + JSON + SQLite/FTS5。**\n\n---\n\n## 📖 目录\n\n- [项目背景：为什么要做这个？](#-项目背景为什么要做这个)\n- [核心优势](#-核心优势)\n- [快速开始](#-快速开始)\n- [完整命令手册](#-完整命令手册)\n- [双层存储架构](#-双层存储架构)\n- [温度模型](#-温度模型)\n- [智能后端：JSON 与 SQLite](#-智能后端json-与-sqlite)\n- [与 OpenClaw 深度集成](#-与-openclaw-深度集成)\n- [Agent 每日工作流](#-agent-每日工作流)\n- [系统要求](#-系统要求)\n- [文件结构](#-文件结构)\n- [常见问题](#-常见问题)\n- [致谢与来源](#-致谢与来源)\n\n---\n\n## 💡 项目背景：为什么要做这个？\n\n社区里已有两个 Agent 记忆方案，各有优缺点：\n\n### agent-memory-system（by 阿福）\n\n**理念：文件即记忆，日记本方式。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| 温度模型（热/温/冷三级分类） | 只支持 Linux/Mac（bash 脚本） |\n| 自动归档 GC（冷数据按月归档） | 依赖 rsync、crontab |\n| 夜间反思（每日健康报告） | 无结构化查询能力 |\n| 技能提炼（教训 → SKILL.md） | 无实体追踪 |\n| Markdown 人可读，QMD 直接搜索 | 搜索只能靠外部工具 |\n| 与 OpenClaw workspace 深度融合 | — |\n\n### agent-memory（by ClawHub 社区）\n\n**理念：数据库驱动，程序化 API。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| Fact / Lesson / Entity 三层模型 | 需要 Python 运行环境 |\n| SQLite + FTS5 精准全文搜索 | 数据在数据库里，人不可读 |\n| 置信度（confidence）模型 | 与 OpenClaw 原生工作流割裂 |\n| 访问计数 + 最后访问时间追踪 | 无温度模型，无自动归档 |\n| 置换链（supersede）保留历史 | 无夜间反思，无技能提炼 |\n| 实体属性自动合并 | — |\n| 数据导出（JSON export） | — |\n\n### v2.0 对标研究的竞品\n\n| 竞品 | 类型 | 我们吸收了什么 |\n|------|------|--------------|\n| **mem9** (1.0.5) | MCP server，云端持久记忆 | session-start/end 会话生命周期钩子、结构化事实存储模型（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎 | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | 对话上下文无损压缩 | 无损归档：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### Smart Agent Memory 的答案：全都要\n\n**5 个方案的优点合并，缺点全部干掉：**\n\n- ✅ 从 **agent-memory-system** 继承：温度模型、自动归档、夜间反思、技能提炼、Markdown 文件驱动\n- ✅ 从 **agent-memory** 继承：Fact/Lesson/Entity 结构化存储、全文搜索、置信度、访问追踪、置换链、实体追踪\n- ✅ 从 **mem9** 吸收：session-start/end 会话生命周期钩子（本地化，零云端依赖）\n- ✅ 从 **OpenViking** 吸收：语义搜索集成（通过 qmd 实现，不依赖火山 API）\n- ✅ 从 **lossless-claw** 吸收：无损归档思路（GC 压缩摘要但保留原文指针）\n- 🆕 **新增分层上下文供给**：index → 判断 → context 按需钻取，省 90% token\n- 🆕 **新增 Skill 经验记忆**：按技能名存取经验，下次调用前自动加载\n- 🆕 **新增三层写入**：一次操作同时写 Markdown + JSON + SQLite\n- 🆕 **新增跨平台**：纯 Node.js，不依赖 bash/python/rsync/云 API\n- 🆕 **新增智能后端**：Node.js >= 22.5 自动启用原生 SQLite + FTS5，否则降级 JSON\n- 🆕 **新增自动迁移**：从 JSON 升级到 SQLite 时零手动操作\n- 🆕 **新增 setup 一键激活**：自动发现所有工作区，注入 BOOTSTRAP.md\n- 🆕 **新增 OpenClaw Cron 集成**：不碰系统 crontab\n\n---\n\n## 🏆 核心优势\n\n| 特性 | 说明 |\n|------|------|\n| **双层存储** | Markdown（人可读，QMD 可搜索）+ JSON/SQLite（结构化，快速查询），写入时双写 |\n| **智能后端** | Node.js >= 22.5 → 原生 SQLite + FTS5；低版本 → JSON 降级（零依赖也能用） |\n| **温度模型** | 🔥 热（<7天）→ 🟡 温（7-30天）→ ❄️ 冷（>30天）→ 📦 归档 |\n| **三层记忆** | **Fact**（事实）+ **Lesson**（教训）+ **Entity**（实体），各有专用 CRUD |\n| **自动归档** | 冷数据自动移到 `.archive/YYYY-MM/`，配合 GC 清理低频 facts |\n| **全文搜索** | SQLite FTS5 精准搜索 / JSON 模式关键词匹配 / Markdown 文件全文扫描 |\n| **知识提炼** | 从教训一键提取 SKILL.md 模板，变成可复用的 Agent 技能 |\n| **夜间反思** | 自动生成记忆健康报告（facts/lessons/entities 统计 + 温度分布） |\n| **置信度** | 每个 fact 可设置 0-1 置信度，搜索时可按置信度过滤 |\n| **访问追踪** | 自动记录每个 fact 的访问次数和最后访问时间，GC 时保护高频数据 |\n| **置换链** | `supersede` 一个旧 fact，新旧关联保留历史轨迹 |\n| **自动迁移** | 首次检测到 SQLite 可用时，自动把 JSON 数据导入 SQLite |\n| **跨平台** | Windows / macOS / Linux 通用，纯 Node.js |\n| **会话生命周期** | session-start 自动加载上下文 / session-end 存会话摘要（借鉴 mem9，本地化实现） |\n| **分层上下文** | index（<500 tokens）→ context 按 tag/skill/时间钻取，避免全量加载浪费 token |\n| **Skill 经验记忆** | 按技能名存取经验（`--skill`），调用工具前自动加载历史踩坑记录 |\n| **无损归档** | GC 时冷数据压缩为摘要但保留原文指针，不丢失信息（借鉴 lossless-claw） |\n| **语义搜索** | 优先走 qmd（BM25+向量），不可用时降级内置 TF 搜索（借鉴 OpenViking，零外部 API） |\n| **一键激活** | `setup` 自动发现所有 workspace，注入 BOOTSTRAP.md，新工作区再跑一次即可 |\n| **14+ 个命令** | 覆盖记忆全生命周期：记住、回忆、遗忘、学习、追踪、归档、反思、提炼、会话、激活 |\n\n---\n\n## 🚀 快速开始\n\n### 安装\n\n```bash\n# 从 ClawHub 安装\nclawhub install smart-agent-memory\n\n# 或手动复制到技能目录\ncp -r smart-agent-memory ~/.openclaw/skills/\n```\n\n### 激活记忆（安装后必做）\n\n安装完成后，运行一次 `setup`：\n\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n`setup` 会**自动发现 `~/.openclaw/` 下所有 `workspace*` 目录**，逐个注入记忆启动指令到 `BOOTSTRAP.md`。\n- 幂等：重复运行不会重复写入\n- 新增工作区后再跑一次 `setup` 即可，已注入的会自动跳过\n\n> ⚠️ **不运行 setup = 技能装了但不会自动激活 = 依然失忆。** 这一步不能跳过。\n\n### 基本操作\n\n```bash\n# 记住一个事实\nnode scripts/memory-cli.js remember \"项目用 React 18 + TypeScript\" --tags tech,frontend\n\n# 搜索记忆\nnode scripts/memory-cli.js recall \"React\"\n\n# 记录教训\nnode scripts/memory-cli.js learn \\\n  --action \"线上直接改数据库\" \\\n  --context \"数据修复\" \\\n  --outcome negative \\\n  --insight \"永远先备份，在测试环境验证SQL后再操作生产\"\n\n# 追踪一个人\nnode scripts/memory-cli.js entity \"张三\" person --attr role=后端开发 --attr team=Core\n\n# 查看记忆健康\nnode scripts/memory-cli.js stats\n```\n\n**示例输出：**\n```\n🧠 Smart Agent Memory — Stats [sqlite]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nFacts:\n  Total:      42\n  Active:     38\n  🔥 Hot:     12 (< 7 days)\n  🟡 Warm:    18 (7-30 days)\n  ❄️ Cold:    8 (> 30 days)\n\nLessons:      7\nEntities:     5\nArchived:     23 files\n\nLast GC:         2026-03-05 00:00\nLast Reflection: 2026-03-06 23:45\n```\n\n---\n\n## 📖 完整命令手册\n\n### remember — 记住事实\n\n```bash\nnode scripts/memory-cli.js remember <内容> [选项]\n```\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--tags t1,t2` | 标签（逗号分隔） | 无 |\n| `--source` | 来源（conversation / observation / inference） | conversation |\n| `--confidence` | 置信度（0-1） | 1.0 |\n\n**示例：**\n```bash\n# 基础\nnode scripts/memory-cli.js remember \"老板偏好简短日报\"\n\n# 带标签\nnode scripts/memory-cli.js remember \"API限流100req/min\" --tags api,限制\n\n# 低置信度（不太确定的信息）\nnode scripts/memory-cli.js remember \"可能要迁移到AWS\" --confidence 0.6 --source inference\n```\n\n**背后发生了什么：**\n1. 写入 `.data/facts.json`（或 SQLite facts 表）\n2. 追加到当天的 `memory/2026-03-07.md` 日志\n3. 如果是 SQLite 模式，同时写入 FTS5 索引\n\n### recall — 搜索/回忆事实\n\n```bash\nnode scripts/memory-cli.js recall <关键词> [--limit 10] [--tags t1]\n```\n\n搜索 JSON/SQLite 中的结构化 facts。SQLite 模式下使用 FTS5 精准搜索，JSON 模式下使用关键词匹配 + 评分排序。\n\n**评分逻辑：** 关键词匹配度 + 数据新鲜度（近7天加分） + 访问频率\n\n### search — 全文搜索 Markdown 文件\n\n```bash\nnode scripts/memory-cli.js search <关键词> [--limit 20]\n```\n\n扫描 memory/ 下所有 `.md` 文件（日志、教训、人物、反思等），按匹配度 + 文件新鲜度排序。\n\n**recall vs search 的区别：**\n\n| | recall | search |\n|---|---|---|\n| 搜索范围 | 结构化 facts（JSON/SQLite） | 所有 Markdown 文件 |\n| 搜索方式 | FTS5 或关键词匹配 | 逐文件逐行扫描 |\n| 适合场景 | \"我记过什么关于 X 的 fact？\" | \"memory 里哪个文件提到了 X？\" |\n| 返回结果 | Fact 对象（含 ID、标签、置信度） | 文件名 + 匹配行 |\n\n### forget — 删除事实\n\n```bash\nnode scripts/memory-cli.js forget <fact-id>\n```\n\n### facts — 列出所有事实\n\n```bash\nnode scripts/memory-cli.js facts [--tags t1] [--limit 50]\n```\n\n### learn — 记录教训\n\n```bash\nnode scripts/memory-cli.js learn --action \"做了什么\" --context \"什么场景\" --outcome positive|negative|neutral --insight \"学到了什么\"\n```\n\n**双写目标：**\n- `.data/lessons.json`（或 SQLite lessons 表 + FTS5 索引）\n- `memory/lessons/YYYY-MM-DD-<id>.md`\n\n### lessons — 查看教训\n\n```bash\nnode scripts/memory-cli.js lessons [--context 主题] [--outcome negative] [--limit 10]\n```\n\n### entity — 追踪实体\n\n```bash\n# 创建\nnode scripts/memory-cli.js entity \"李四\" person --attr role=产品经理 --attr timezone=GMT+8\n\n# 更新（同名同类型自动合并属性）\nnode scripts/memory-cli.js entity \"李四\" person --attr email=lisi@example.com\n```\n\n**双写目标：**\n- `.data/entities.json`（或 SQLite entities 表）\n- `memory/people/<name>.md`（person 类型）\n- `memory/decisions/<name>.md`（其他类型）\n\n### entities — 列出实体\n\n```bash\nnode scripts/memory-cli.js entities [--type person]\n```\n\n### gc — 垃圾回收 / 归档\n\n```bash\nnode scripts/memory-cli.js gc [--days 30]\n```\n\n**做两件事：**\n1. **文件归档：** 把超过 N 天的 `YYYY-MM-DD.md` 日志移到 `.archive/YYYY-MM/`\n2. **清理低频数据：** 删除 JSON/SQLite 中超过 N 天且访问次数 ≤ 1 的 facts\n\n### reflect — 夜间反思\n\n```bash\nnode scripts/memory-cli.js reflect\n```\n\n在 `memory/reflections/YYYY-MM-DD.md` 生成当日记忆健康报告。\n\n### extract — 知识提炼（教训 → 技能）\n\n```bash\n# 查看教训 ID\nnode scripts/memory-cli.js lessons\n\n# 提炼\nnode scripts/memory-cli.js extract <lesson-id> --skill-name deploy-checklist\n# → 生成 ~/.openclaw/skills/deploy-checklist/SKILL.md\n```\n\n把一条教训自动生成 SKILL.md 模板，包含背景、问题、解决方案、使用场景。你可以在此基础上完善，变成一个真正可复用的 Agent 技能。\n\n### stats — 记忆健康面板\n\n```bash\nnode scripts/memory-cli.js stats\n```\n\n显示：facts 总量/活跃/热/温/冷分布、lessons 数量、entities 数量、归档文件数、上次 GC 和反思时间、当前后端类型。\n\n### temperature — 温度报告\n\n```bash\nnode scripts/memory-cli.js temperature\n```\n\n按热/温/冷分类列出所有日志文件。\n\n### export — 导出全部数据\n\n```bash\nnode scripts/memory-cli.js export\n```\n\n以 JSON 格式输出所有 facts、lessons、entities，方便备份或迁移。\n\n---\n\n## 📂 双层存储架构\n\n```\n~/.openclaw/workspace/memory/\n│\n│ ──── Markdown 层（人可读，QMD 可搜索）────\n├── 2026-03-07.md              ← 今天的日志\n├── 2026-03-06.md              ← 昨天\n├── lessons/                   ← 教训文件\n│   ├── 2026-03-07-abc123.md\n│   └── 2026-03-05-def456.md\n├── people/                    ← 人物档案\n│   └── zhang-san.md\n├── decisions/                 ← 非人物实体\n├── reflections/               ← 反思记录\n│   └── 2026-03-07.md\n│\n│ ──── 结构化层（程序用，快速查询）────\n├── .data/\n│   ├── facts.json             ← 事实（JSON 模式）\n│   ├── lessons.json           ← 教训（JSON 模式）\n│   ├── entities.json          ← 实体（JSON 模式）\n│   └── memory.db              ← SQLite 数据库（SQLite 模式，自动创建）\n│\n│ ──── 归档层 ────\n├── .archive/                  ← GC 归档的冷数据\n│   └── 2026-01/\n│       ├── 2026-01-05.md\n│       └── 2026-01-12.md\n│\n└── .index.json                ← 索引元数据\n```\n\n**设计原则：**\n- **写入时双写** — `remember` / `learn` / `entity` 同时写 Markdown 和 JSON/SQLite\n- **搜索时互补** — `recall` 走结构化层，`search` 走 Markdown 层\n- **Markdown 丢了** — 结构化数据还在，可以重建\n- **JSON 丢了** — Markdown 还在，教训和实体有 .md 文件兜底\n\n---\n\n## 🌡️ 温度模型\n\n| 温度 | 时间范围 | 存储位置 | 说明 |\n|------|----------|----------|------|\n| 🔥 热 | < 7 天 | `memory/*.md` | 活跃数据，高频访问 |\n| 🟡 温 | 7-30 天 | `memory/*.md` | 近期数据，偶尔访问 |\n| ❄️ 冷 | > 30 天 | `memory/*.md` → GC 后移到 `.archive/` | 低频数据，GC 候选 |\n| 📦 归档 | — | `memory/.archive/YYYY-MM/` | 已归档，按月分目录 |\n\n温度由文件修改时间自动计算，不需要手动标记。\n\n**GC 规则：**\n- 文件层：冷数据（>30天的日志文件）移到 `.archive/`\n- 数据层：超过 N 天 + 访问次数 ≤ 1 的 facts 被删除\n- 高频访问的 facts 即使很旧也不会被清理（访问计数保护）\n\n---\n\n## ⚡ 智能后端：JSON 与 SQLite\n\n本技能支持两种存储后端，**运行时自动检测、自动选择、自动迁移**：\n\n### JSON 模式（默认，零依赖）\n\n- 适合万级数据量\n- 数据存在 `.data/facts.json` 等文件中\n- 搜索用内存关键词匹配\n- 不需要安装任何额外包\n\n### SQLite 模式（Node.js >= 22.5 自动启用）\n\n使用 Node.js 原生 `node:sqlite` 模块（`DatabaseSync`），**无需安装任何 npm 包**。\n\n自动获得：\n\n| 特性 | 说明 |\n|------|------|\n| **FTS5 全文搜索** | FTS5 + LIKE 双引擎，英文走 FTS5，中文走 LIKE 子串匹配 |\n| **ACID 事务** | 数据写入更安全，不怕写到一半断电 |\n| **WAL 模式** | 读写并发性能好，多 Agent 同时访问不冲突 |\n| **百万级数据** | 轻松处理大量 facts/lessons |\n| **自动迁移** | 首次启用时自动把 JSON 数据导入 SQLite |\n\n**完全自动：**\n1. Node.js >= 22.5 → 自动检测 `node:sqlite`\n2. 自动创建 `memory.db` → 自动导入已有 JSON 数据\n3. 显示 `[sqlite]`\n\n**降级也无感：** Node.js < 22.5 自动回到 JSON 模式（JSON 文件一直保持更新）。\n\n---\n\n## 🔗 与 OpenClaw 深度集成\n\n### 1. memory_search 原生兼容\n\n所有 Markdown 文件在 `~/.openclaw/workspace/memory/` 下，OpenClaw 的 `memory_search` 工具**直接可搜**，不需要任何额外配置。\n\n### 2. OpenClaw Cron 定时任务\n\n用 OpenClaw 内置 cron，不碰系统 crontab：\n\n```bash\n# 每周日凌晨自动 GC 归档\nopenclaw cron add --name \"memory-gc\" \\\n  --schedule \"0 0 * * 0\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc\"\n\n# 每晚 23:45 自动反思\nopenclaw cron add --name \"memory-reflect\" \\\n  --schedule \"45 23 * * *\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect\"\n```\n\n### 3. Agent 直接调用\n\nAgent 可以通过 `exec` 工具直接执行：\n\n```bash\n# 在对话中记住重要信息\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"重要信息\" --tags important\n\n# 回忆相关知识\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall \"关键词\"\n```\n\n### 4. Heartbeat 集成\n\n在 `HEARTBEAT.md` 中加入记忆维护：\n\n```markdown\n## Memory Maintenance\n- 每周检查一次 `stats`，如果冷数据 > 20 个就运行 `gc`\n- 每月检查 lessons，考虑提炼高价值教训为 skill\n```\n\n---\n\n## 🔄 Agent 每日工作流\n\n### 会话开始\n\n1. 读取 `MEMORY.md` 获取核心记忆\n2. 运行 `stats` 检查记忆健康\n3. 运行 `recall` 获取当前任务相关上下文\n\n### 会话中\n\n| 触发事件 | 建议操作 |\n|----------|----------|\n| 用户提到重要信息 | `remember \"信息\" --tags 相关标签` |\n| 用户纠正了错误 | `learn --action \"做错了什么\" --outcome negative --insight \"正确做法\"` |\n| 发现了好方法 | `learn --action \"做对了什么\" --outcome positive --insight \"总结\"` |\n| 遇到新的人/项目 | `entity \"名字\" 类型 --attr key=value` |\n| 用户说\"记住这个\" | `remember \"内容\" --tags user-requested` |\n| 需要查找之前的决策 | `recall \"关键词\"` 或 `search \"关键词\"` |\n| 某个信息过时了 | `supersede 旧id \"新信息\"` 或 `forget 旧id` |\n\n### 每日结束\n\n1. 更新每日日志（自动，通过 remember 命令已经在写了）\n2. 有价值的对话总结 → `remember` 存入\n\n### 每周 / 定时\n\n| 任务 | 频率 | 命令 |\n|------|------|------|\n| GC 归档 | 每周 | `gc` |\n| 夜间反思 | 每日 | `reflect` |\n| 温度检查 | 按需 | `temperature` |\n| 教训提炼 | 按需 | `extract <id>` |\n\n---\n\n## 💻 系统要求\n\n| 要求 | 说明 |\n|------|------|\n| **Node.js** | >= 22.5 推荐（原生 SQLite）；18+ 可用（JSON 模式） |\n| **磁盘** | 通常 < 1MB（SQLite 模式 < 5MB） |\n| **外部依赖** | **无**。SQLite 使用 Node.js 原生 `node:sqlite` 模块 |\n\n**不需要**：Python、bash、rsync、系统 crontab。\n\n---\n\n## 📁 文件结构\n\n```\nsmart-agent-memory/\n├── SKILL.md                     # 技能定义（Agent 读）\n├── README.md                    # 本文档（人读）\n├── _meta.json                   # 技能元信息\n├── lib/\n│   ├── store.js                 # JSON 存储引擎 + 工厂函数（自动选择后端）\n│   ├── sqlite-store.js          # SQLite 存储引擎（FTS5 + WAL）\n│   ├── temperature.js           # 温度模型 + GC 归档\n│   ├── search.js                # 轻量 Markdown 全文搜索\n│   └── extract.js               # 教训 → 技能提炼\n└── scripts/\n    └── memory-cli.js            # CLI 入口（14 个命令）\n```\n\n---\n\n## ❓ 常见问题\n\n### Q: 和 OpenClaw 自带的 memory/ 目录冲突吗？\n\n**不冲突。** 本技能就是管理 `workspace/memory/` 目录的，与 OpenClaw 的 `memory_search` 完全兼容。结构化数据在 `.data/` 子目录下，不影响现有的 `.md` 文件。\n\n### Q: 已有 memory/ 下的日志文件会被破坏吗？\n\n**不会。** 本技能只追加内容（appendDailyLog），不修改已有文件。GC 归档是移动文件（rename），不是删除。\n\n### Q: JSON 数据丢了怎么办？\n\nMarkdown 文件还在。教训和实体都有对应的 `.md` 文件。JSON 丢了最多损失 facts 的访问计数等元数据，核心信息在 Markdown 中有备份。\n\n### Q: SQLite 数据库损坏了怎么办？\n\n删掉 `.data/memory.db`，下次运行自动从 JSON 文件重建（前提是 JSON 文件还在）。双层存储的好处就是互为备份。\n\n### Q: 数据量大了会慢吗？\n\n- **JSON 模式：** 万级 facts 没问题（内存操作）\n- **SQLite 模式：** 百万级没问题（索引 + FTS5）\n- **Markdown 搜索：** 千级文件秒出结果\n- **GC 会自动归档冷数据**，控制活跃文件数量\n\n### Q: 能和其他 Agent 共享记忆吗？\n\n**可以。** memory/ 目录在 workspace 下，多 Agent 共享同一个 workspace 就共享记忆。用 `--tags` 区分不同 Agent 的 facts。SQLite 的 WAL 模式支持并发读写。\n\n### Q: 在 Mac 上创建的记忆，Windows 上能用吗？\n\n**可以。** JSON 和 SQLite 都是跨平台格式。配合 `myopenclaw-backup-restore` 技能备份还原，跨平台迁移零障碍。\n\n### Q: 从旧版 agent-memory-system 迁移过来方便吗？\n\n**很方便。** 旧版的 memory/ 目录结构（日志、lessons、people 等）和本技能**完全兼容**。安装后直接用，已有的 .md 文件自动被 search 命令搜索到。只需要运行 `remember` 把重要信息录入结构化层即可。\n\n### Q: stats 显示 [json] 而不是 [sqlite]？\n\n需要 Node.js >= 22.5 才能使用原生 `node:sqlite`。运行 `node -v` 确认版本。如果低于 22.5，JSON 模式也完全可用。\n\n---\n\n## 📜 版本历史\n\n- **v2.0.0** — 零依赖重构\n  - 从 better-sqlite3 迁移到 Node.js 原生 `node:sqlite`（DatabaseSync），彻底零外部依赖\n  - 去除 crypto 模块依赖，改用时间戳+随机数生成 ID\n  - 目录 lazy init：不再构造时创建所有子目录，按需创建\n  - FTS + LIKE 双引擎搜索：英文走 FTS5，中文走 LIKE 子串匹配\n  - 搜索集成 qmd：`search` 命令优先走 qmd（BM25+向量+rerank），不可用时自动降级内置搜索\n  - reflect 命令增强：输出高频标签、最近实体、Skill 经验统计、最近教训\n  - JSON→SQLite 迁移后提示清理旧文件\n  - 对话标准流程（开场/过程/结束）写入 SKILL.md\n  - cron 配置改为标准 JSON 格式，可跨设备\n\n- **v1.0.0** — 初始版本\n  - 融合 agent-memory-system（温度/归档/反思/提炼）+ agent-memory（Fact/Lesson/Entity/FTS）\n  - 双层存储：Markdown + JSON/SQLite\n  - 智能后端自动检测 + 自动迁移\n  - 14 个 CLI 命令\n  - 纯 Node.js 跨平台\n\n---\n\n## 🤝 致谢与来源\n\n本技能站在多个优秀项目的肩膀上：\n\n### 直接整合的基础项目\n\n| 来源项目 | 作者 | 链接 | 继承的核心设计 |\n|----------|------|------|---------------|\n| **agent-memory-system** | 阿福 | [ClawHub](https://clawhub.com/skills/agent-memory-system) | 温度模型、自动归档 GC、夜间反思、技能提炼、文件驱动架构 |\n| **agent-memory** | dennis-da-menace | [GitHub](https://github.com/openclaw/skills/blob/main/skills/dennis-da-menace/agent-memory/SKILL.md) | Fact/Lesson/Entity 三层模型、全文搜索、置信度、访问追踪、置换链、实体属性合并 |\n\n### 对标研究的竞品（v2.0 设计参考）\n\n| 竞品 | 类型 | 链接 | 吸收的设计思路 |\n|------|------|------|--------------|\n| **mem9** (1.0.5) | Skill（MCP server），云端持久记忆 | [GitHub](https://github.com/mem9-ai/mem9) | 结构化事实存储模型、session-start/end 会话生命周期钩子（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎（字节跳动） | [GitHub](https://github.com/volcengine/OpenViking) | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | Plugin（Context Engine） | [LobeHub](https://lobehub.com/skills/olafgeibig-skills-lossless-claw-skill) | 无损归档思路：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### 我们的差异化\n- ✅ **零外部依赖**（vs mem9 需云 API，OpenViking 需 Python+火山 API）\n- ✅ **全本地数据**（vs mem9 云端存储）\n- ✅ **三层存储互为备份**：Markdown（人可读）+ JSON（结构化）+ SQLite/FTS5（高性能搜索）\n- ✅ **Skill 经验记忆** + **Artifact 跨 Agent 引用**（独有）\n- ✅ **跨平台**：纯 Node.js，Windows/macOS/Linux 通用\n\n感谢以上项目作者的开源贡献。\n\n**许可证：** MIT\n\nFile v2.4.3:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"2.4.3\",\n  \"publishedAt\": 1774677780671\n}\n\nArchive v2.4.2: 9 files, 37183 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (25015b), scripts/memory-cli.js (27456b), SKILL.md (8101b)\n\nFile v2.4.2:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### Common Scripts\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v2.4.2:README.md\n\n# 🧠 Smart Agent Memory v2.0 — 跨平台 Agent 长期记忆系统\n\n> 融合 5 个记忆方案的精华：**agent-memory-system**（温度/归档/反思）+ **agent-memory**（Fact/Lesson/Entity/FTS）+ **mem9**（会话生命周期钩子）+ **OpenViking**（语义搜索集成）+ **lossless-claw**（无损归档）。\n>\n> 打造**分层上下文供给 + Skill 经验记忆 + 温度模型 + 会话生命周期 + 结构化存储 + 无损归档**的一站式 Agent 记忆引擎。\n\n**纯 Node.js 原生模块，零外部依赖，零云端 API。Windows / macOS / Linux 通用。三层存储：Markdown + JSON + SQLite/FTS5。**\n\n---\n\n## 📖 目录\n\n- [项目背景：为什么要做这个？](#-项目背景为什么要做这个)\n- [核心优势](#-核心优势)\n- [快速开始](#-快速开始)\n- [完整命令手册](#-完整命令手册)\n- [双层存储架构](#-双层存储架构)\n- [温度模型](#-温度模型)\n- [智能后端：JSON 与 SQLite](#-智能后端json-与-sqlite)\n- [与 OpenClaw 深度集成](#-与-openclaw-深度集成)\n- [Agent 每日工作流](#-agent-每日工作流)\n- [系统要求](#-系统要求)\n- [文件结构](#-文件结构)\n- [常见问题](#-常见问题)\n- [致谢与来源](#-致谢与来源)\n\n---\n\n## 💡 项目背景：为什么要做这个？\n\n社区里已有两个 Agent 记忆方案，各有优缺点：\n\n### agent-memory-system（by 阿福）\n\n**理念：文件即记忆，日记本方式。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| 温度模型（热/温/冷三级分类） | 只支持 Linux/Mac（bash 脚本） |\n| 自动归档 GC（冷数据按月归档） | 依赖 rsync、crontab |\n| 夜间反思（每日健康报告） | 无结构化查询能力 |\n| 技能提炼（教训 → SKILL.md） | 无实体追踪 |\n| Markdown 人可读，QMD 直接搜索 | 搜索只能靠外部工具 |\n| 与 OpenClaw workspace 深度融合 | — |\n\n### agent-memory（by ClawHub 社区）\n\n**理念：数据库驱动，程序化 API。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| Fact / Lesson / Entity 三层模型 | 需要 Python 运行环境 |\n| SQLite + FTS5 精准全文搜索 | 数据在数据库里，人不可读 |\n| 置信度（confidence）模型 | 与 OpenClaw 原生工作流割裂 |\n| 访问计数 + 最后访问时间追踪 | 无温度模型，无自动归档 |\n| 置换链（supersede）保留历史 | 无夜间反思，无技能提炼 |\n| 实体属性自动合并 | — |\n| 数据导出（JSON export） | — |\n\n### v2.0 对标研究的竞品\n\n| 竞品 | 类型 | 我们吸收了什么 |\n|------|------|--------------|\n| **mem9** (1.0.5) | MCP server，云端持久记忆 | session-start/end 会话生命周期钩子、结构化事实存储模型（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎 | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | 对话上下文无损压缩 | 无损归档：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### Smart Agent Memory 的答案：全都要\n\n**5 个方案的优点合并，缺点全部干掉：**\n\n- ✅ 从 **agent-memory-system** 继承：温度模型、自动归档、夜间反思、技能提炼、Markdown 文件驱动\n- ✅ 从 **agent-memory** 继承：Fact/Lesson/Entity 结构化存储、全文搜索、置信度、访问追踪、置换链、实体追踪\n- ✅ 从 **mem9** 吸收：session-start/end 会话生命周期钩子（本地化，零云端依赖）\n- ✅ 从 **OpenViking** 吸收：语义搜索集成（通过 qmd 实现，不依赖火山 API）\n- ✅ 从 **lossless-claw** 吸收：无损归档思路（GC 压缩摘要但保留原文指针）\n- 🆕 **新增分层上下文供给**：index → 判断 → context 按需钻取，省 90% token\n- 🆕 **新增 Skill 经验记忆**：按技能名存取经验，下次调用前自动加载\n- 🆕 **新增三层写入**：一次操作同时写 Markdown + JSON + SQLite\n- 🆕 **新增跨平台**：纯 Node.js，不依赖 bash/python/rsync/云 API\n- 🆕 **新增智能后端**：Node.js >= 22.5 自动启用原生 SQLite + FTS5，否则降级 JSON\n- 🆕 **新增自动迁移**：从 JSON 升级到 SQLite 时零手动操作\n- 🆕 **新增 setup 一键激活**：自动发现所有工作区，注入 BOOTSTRAP.md\n- 🆕 **新增 OpenClaw Cron 集成**：不碰系统 crontab\n\n---\n\n## 🏆 核心优势\n\n| 特性 | 说明 |\n|------|------|\n| **双层存储** | Markdown（人可读，QMD 可搜索）+ JSON/SQLite（结构化，快速查询），写入时双写 |\n| **智能后端** | Node.js >= 22.5 → 原生 SQLite + FTS5；低版本 → JSON 降级（零依赖也能用） |\n| **温度模型** | 🔥 热（<7天）→ 🟡 温（7-30天）→ ❄️ 冷（>30天）→ 📦 归档 |\n| **三层记忆** | **Fact**（事实）+ **Lesson**（教训）+ **Entity**（实体），各有专用 CRUD |\n| **自动归档** | 冷数据自动移到 `.archive/YYYY-MM/`，配合 GC 清理低频 facts |\n| **全文搜索** | SQLite FTS5 精准搜索 / JSON 模式关键词匹配 / Markdown 文件全文扫描 |\n| **知识提炼** | 从教训一键提取 SKILL.md 模板，变成可复用的 Agent 技能 |\n| **夜间反思** | 自动生成记忆健康报告（facts/lessons/entities 统计 + 温度分布） |\n| **置信度** | 每个 fact 可设置 0-1 置信度，搜索时可按置信度过滤 |\n| **访问追踪** | 自动记录每个 fact 的访问次数和最后访问时间，GC 时保护高频数据 |\n| **置换链** | `supersede` 一个旧 fact，新旧关联保留历史轨迹 |\n| **自动迁移** | 首次检测到 SQLite 可用时，自动把 JSON 数据导入 SQLite |\n| **跨平台** | Windows / macOS / Linux 通用，纯 Node.js |\n| **会话生命周期** | session-start 自动加载上下文 / session-end 存会话摘要（借鉴 mem9，本地化实现） |\n| **分层上下文** | index（<500 tokens）→ context 按 tag/skill/时间钻取，避免全量加载浪费 token |\n| **Skill 经验记忆** | 按技能名存取经验（`--skill`），调用工具前自动加载历史踩坑记录 |\n| **无损归档** | GC 时冷数据压缩为摘要但保留原文指针，不丢失信息（借鉴 lossless-claw） |\n| **语义搜索** | 优先走 qmd（BM25+向量），不可用时降级内置 TF 搜索（借鉴 OpenViking，零外部 API） |\n| **一键激活** | `setup` 自动发现所有 workspace，注入 BOOTSTRAP.md，新工作区再跑一次即可 |\n| **14+ 个命令** | 覆盖记忆全生命周期：记住、回忆、遗忘、学习、追踪、归档、反思、提炼、会话、激活 |\n\n---\n\n## 🚀 快速开始\n\n### 安装\n\n```bash\n# 从 ClawHub 安装\nclawhub install smart-agent-memory\n\n# 或手动复制到技能目录\ncp -r smart-agent-memory ~/.openclaw/skills/\n```\n\n### 激活记忆（安装后必做）\n\n安装完成后，运行一次 `setup`：\n\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n`setup` 会**自动发现 `~/.openclaw/` 下所有 `workspace*` 目录**，逐个注入记忆启动指令到 `BOOTSTRAP.md`。\n- 幂等：重复运行不会重复写入\n- 新增工作区后再跑一次 `setup` 即可，已注入的会自动跳过\n\n> ⚠️ **不运行 setup = 技能装了但不会自动激活 = 依然失忆。** 这一步不能跳过。\n\n### 基本操作\n\n```bash\n# 记住一个事实\nnode scripts/memory-cli.js remember \"项目用 React 18 + TypeScript\" --tags tech,frontend\n\n# 搜索记忆\nnode scripts/memory-cli.js recall \"React\"\n\n# 记录教训\nnode scripts/memory-cli.js learn \\\n  --action \"线上直接改数据库\" \\\n  --context \"数据修复\" \\\n  --outcome negative \\\n  --insight \"永远先备份，在测试环境验证SQL后再操作生产\"\n\n# 追踪一个人\nnode scripts/memory-cli.js entity \"张三\" person --attr role=后端开发 --attr team=Core\n\n# 查看记忆健康\nnode scripts/memory-cli.js stats\n```\n\n**示例输出：**\n```\n🧠 Smart Agent Memory — Stats [sqlite]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nFacts:\n  Total:      42\n  Active:     38\n  🔥 Hot:     12 (< 7 days)\n  🟡 Warm:    18 (7-30 days)\n  ❄️ Cold:    8 (> 30 days)\n\nLessons:      7\nEntities:     5\nArchived:     23 files\n\nLast GC:         2026-03-05 00:00\nLast Reflection: 2026-03-06 23:45\n```\n\n---\n\n## 📖 完整命令手册\n\n### remember — 记住事实\n\n```bash\nnode scripts/memory-cli.js remember <内容> [选项]\n```\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--tags t1,t2` | 标签（逗号分隔） | 无 |\n| `--source` | 来源（conversation / observation / inference） | conversation |\n| `--confidence` | 置信度（0-1） | 1.0 |\n\n**示例：**\n```bash\n# 基础\nnode scripts/memory-cli.js remember \"老板偏好简短日报\"\n\n# 带标签\nnode scripts/memory-cli.js remember \"API限流100req/min\" --tags api,限制\n\n# 低置信度（不太确定的信息）\nnode scripts/memory-cli.js remember \"可能要迁移到AWS\" --confidence 0.6 --source inference\n```\n\n**背后发生了什么：**\n1. 写入 `.data/facts.json`（或 SQLite facts 表）\n2. 追加到当天的 `memory/2026-03-07.md` 日志\n3. 如果是 SQLite 模式，同时写入 FTS5 索引\n\n### recall — 搜索/回忆事实\n\n```bash\nnode scripts/memory-cli.js recall <关键词> [--limit 10] [--tags t1]\n```\n\n搜索 JSON/SQLite 中的结构化 facts。SQLite 模式下使用 FTS5 精准搜索，JSON 模式下使用关键词匹配 + 评分排序。\n\n**评分逻辑：** 关键词匹配度 + 数据新鲜度（近7天加分） + 访问频率\n\n### search — 全文搜索 Markdown 文件\n\n```bash\nnode scripts/memory-cli.js search <关键词> [--limit 20]\n```\n\n扫描 memory/ 下所有 `.md` 文件（日志、教训、人物、反思等），按匹配度 + 文件新鲜度排序。\n\n**recall vs search 的区别：**\n\n| | recall | search |\n|---|---|---|\n| 搜索范围 | 结构化 facts（JSON/SQLite） | 所有 Markdown 文件 |\n| 搜索方式 | FTS5 或关键词匹配 | 逐文件逐行扫描 |\n| 适合场景 | \"我记过什么关于 X 的 fact？\" | \"memory 里哪个文件提到了 X？\" |\n| 返回结果 | Fact 对象（含 ID、标签、置信度） | 文件名 + 匹配行 |\n\n### forget — 删除事实\n\n```bash\nnode scripts/memory-cli.js forget <fact-id>\n```\n\n### facts — 列出所有事实\n\n```bash\nnode scripts/memory-cli.js facts [--tags t1] [--limit 50]\n```\n\n### learn — 记录教训\n\n```bash\nnode scripts/memory-cli.js learn --action \"做了什么\" --context \"什么场景\" --outcome positive|negative|neutral --insight \"学到了什么\"\n```\n\n**双写目标：**\n- `.data/lessons.json`（或 SQLite lessons 表 + FTS5 索引）\n- `memory/lessons/YYYY-MM-DD-<id>.md`\n\n### lessons — 查看教训\n\n```bash\nnode scripts/memory-cli.js lessons [--context 主题] [--outcome negative] [--limit 10]\n```\n\n### entity — 追踪实体\n\n```bash\n# 创建\nnode scripts/memory-cli.js entity \"李四\" person --attr role=产品经理 --attr timezone=GMT+8\n\n# 更新（同名同类型自动合并属性）\nnode scripts/memory-cli.js entity \"李四\" person --attr email=lisi@example.com\n```\n\n**双写目标：**\n- `.data/entities.json`（或 SQLite entities 表）\n- `memory/people/<name>.md`（person 类型）\n- `memory/decisions/<name>.md`（其他类型）\n\n### entities — 列出实体\n\n```bash\nnode scripts/memory-cli.js entities [--type person]\n```\n\n### gc — 垃圾回收 / 归档\n\n```bash\nnode scripts/memory-cli.js gc [--days 30]\n```\n\n**做两件事：**\n1. **文件归档：** 把超过 N 天的 `YYYY-MM-DD.md` 日志移到 `.archive/YYYY-MM/`\n2. **清理低频数据：** 删除 JSON/SQLite 中超过 N 天且访问次数 ≤ 1 的 facts\n\n### reflect — 夜间反思\n\n```bash\nnode scripts/memory-cli.js reflect\n```\n\n在 `memory/reflections/YYYY-MM-DD.md` 生成当日记忆健康报告。\n\n### extract — 知识提炼（教训 → 技能）\n\n```bash\n# 查看教训 ID\nnode scripts/memory-cli.js lessons\n\n# 提炼\nnode scripts/memory-cli.js extract <lesson-id> --skill-name deploy-checklist\n# → 生成 ~/.openclaw/skills/deploy-checklist/SKILL.md\n```\n\n把一条教训自动生成 SKILL.md 模板，包含背景、问题、解决方案、使用场景。你可以在此基础上完善，变成一个真正可复用的 Agent 技能。\n\n### stats — 记忆健康面板\n\n```bash\nnode scripts/memory-cli.js stats\n```\n\n显示：facts 总量/活跃/热/温/冷分布、lessons 数量、entities 数量、归档文件数、上次 GC 和反思时间、当前后端类型。\n\n### temperature — 温度报告\n\n```bash\nnode scripts/memory-cli.js temperature\n```\n\n按热/温/冷分类列出所有日志文件。\n\n### export — 导出全部数据\n\n```bash\nnode scripts/memory-cli.js export\n```\n\n以 JSON 格式输出所有 facts、lessons、entities，方便备份或迁移。\n\n---\n\n## 📂 双层存储架构\n\n```\n~/.openclaw/workspace/memory/\n│\n│ ──── Markdown 层（人可读，QMD 可搜索）────\n├── 2026-03-07.md              ← 今天的日志\n├── 2026-03-06.md              ← 昨天\n├── lessons/                   ← 教训文件\n│   ├── 2026-03-07-abc123.md\n│   └── 2026-03-05-def456.md\n├── people/                    ← 人物档案\n│   └── zhang-san.md\n├── decisions/                 ← 非人物实体\n├── reflections/               ← 反思记录\n│   └── 2026-03-07.md\n│\n│ ──── 结构化层（程序用，快速查询）────\n├── .data/\n│   ├── facts.json             ← 事实（JSON 模式）\n│   ├── lessons.json           ← 教训（JSON 模式）\n│   ├── entities.json          ← 实体（JSON 模式）\n│   └── memory.db              ← SQLite 数据库（SQLite 模式，自动创建）\n│\n│ ──── 归档层 ────\n├── .archive/                  ← GC 归档的冷数据\n│   └── 2026-01/\n│       ├── 2026-01-05.md\n│       └── 2026-01-12.md\n│\n└── .index.json                ← 索引元数据\n```\n\n**设计原则：**\n- **写入时双写** — `remember` / `learn` / `entity` 同时写 Markdown 和 JSON/SQLite\n- **搜索时互补** — `recall` 走结构化层，`search` 走 Markdown 层\n- **Markdown 丢了** — 结构化数据还在，可以重建\n- **JSON 丢了** — Markdown 还在，教训和实体有 .md 文件兜底\n\n---\n\n## 🌡️ 温度模型\n\n| 温度 | 时间范围 | 存储位置 | 说明 |\n|------|----------|----------|------|\n| 🔥 热 | < 7 天 | `memory/*.md` | 活跃数据，高频访问 |\n| 🟡 温 | 7-30 天 | `memory/*.md` | 近期数据，偶尔访问 |\n| ❄️ 冷 | > 30 天 | `memory/*.md` → GC 后移到 `.archive/` | 低频数据，GC 候选 |\n| 📦 归档 | — | `memory/.archive/YYYY-MM/` | 已归档，按月分目录 |\n\n温度由文件修改时间自动计算，不需要手动标记。\n\n**GC 规则：**\n- 文件层：冷数据（>30天的日志文件）移到 `.archive/`\n- 数据层：超过 N 天 + 访问次数 ≤ 1 的 facts 被删除\n- 高频访问的 facts 即使很旧也不会被清理（访问计数保护）\n\n---\n\n## ⚡ 智能后端：JSON 与 SQLite\n\n本技能支持两种存储后端，**运行时自动检测、自动选择、自动迁移**：\n\n### JSON 模式（默认，零依赖）\n\n- 适合万级数据量\n- 数据存在 `.data/facts.json` 等文件中\n- 搜索用内存关键词匹配\n- 不需要安装任何额外包\n\n### SQLite 模式（Node.js >= 22.5 自动启用）\n\n使用 Node.js 原生 `node:sqlite` 模块（`DatabaseSync`），**无需安装任何 npm 包**。\n\n自动获得：\n\n| 特性 | 说明 |\n|------|------|\n| **FTS5 全文搜索** | FTS5 + LIKE 双引擎，英文走 FTS5，中文走 LIKE 子串匹配 |\n| **ACID 事务** | 数据写入更安全，不怕写到一半断电 |\n| **WAL 模式** | 读写并发性能好，多 Agent 同时访问不冲突 |\n| **百万级数据** | 轻松处理大量 facts/lessons |\n| **自动迁移** | 首次启用时自动把 JSON 数据导入 SQLite |\n\n**完全自动：**\n1. Node.js >= 22.5 → 自动检测 `node:sqlite`\n2. 自动创建 `memory.db` → 自动导入已有 JSON 数据\n3. 显示 `[sqlite]`\n\n**降级也无感：** Node.js < 22.5 自动回到 JSON 模式（JSON 文件一直保持更新）。\n\n---\n\n## 🔗 与 OpenClaw 深度集成\n\n### 1. memory_search 原生兼容\n\n所有 Markdown 文件在 `~/.openclaw/workspace/memory/` 下，OpenClaw 的 `memory_search` 工具**直接可搜**，不需要任何额外配置。\n\n### 2. OpenClaw Cron 定时任务\n\n用 OpenClaw 内置 cron，不碰系统 crontab：\n\n```bash\n# 每周日凌晨自动 GC 归档\nopenclaw cron add --name \"memory-gc\" \\\n  --schedule \"0 0 * * 0\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc\"\n\n# 每晚 23:45 自动反思\nopenclaw cron add --name \"memory-reflect\" \\\n  --schedule \"45 23 * * *\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect\"\n```\n\n### 3. Agent 直接调用\n\nAgent 可以通过 `exec` 工具直接执行：\n\n```bash\n# 在对话中记住重要信息\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"重要信息\" --tags important\n\n# 回忆相关知识\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall \"关键词\"\n```\n\n### 4. Heartbeat 集成\n\n在 `HEARTBEAT.md` 中加入记忆维护：\n\n```markdown\n## Memory Maintenance\n- 每周检查一次 `stats`，如果冷数据 > 20 个就运行 `gc`\n- 每月检查 lessons，考虑提炼高价值教训为 skill\n```\n\n---\n\n## 🔄 Agent 每日工作流\n\n### 会话开始\n\n1. 读取 `MEMORY.md` 获取核心记忆\n2. 运行 `stats` 检查记忆健康\n3. 运行 `recall` 获取当前任务相关上下文\n\n### 会话中\n\n| 触发事件 | 建议操作 |\n|----------|----------|\n| 用户提到重要信息 | `remember \"信息\" --tags 相关标签` |\n| 用户纠正了错误 | `learn --action \"做错了什么\" --outcome negative --insight \"正确做法\"` |\n| 发现了好方法 | `learn --action \"做对了什么\" --outcome positive --insight \"总结\"` |\n| 遇到新的人/项目 | `entity \"名字\" 类型 --attr key=value` |\n| 用户说\"记住这个\" | `remember \"内容\" --tags user-requested` |\n| 需要查找之前的决策 | `recall \"关键词\"` 或 `search \"关键词\"` |\n| 某个信息过时了 | `supersede 旧id \"新信息\"` 或 `forget 旧id` |\n\n### 每日结束\n\n1. 更新每日日志（自动，通过 remember 命令已经在写了）\n2. 有价值的对话总结 → `remember` 存入\n\n### 每周 / 定时\n\n| 任务 | 频率 | 命令 |\n|------|------|------|\n| GC 归档 | 每周 | `gc` |\n| 夜间反思 | 每日 | `reflect` |\n| 温度检查 | 按需 | `temperature` |\n| 教训提炼 | 按需 | `extract <id>` |\n\n---\n\n## 💻 系统要求\n\n| 要求 | 说明 |\n|------|------|\n| **Node.js** | >= 22.5 推荐（原生 SQLite）；18+ 可用（JSON 模式） |\n| **磁盘** | 通常 < 1MB（SQLite 模式 < 5MB） |\n| **外部依赖** | **无**。SQLite 使用 Node.js 原生 `node:sqlite` 模块 |\n\n**不需要**：Python、bash、rsync、系统 crontab。\n\n---\n\n## 📁 文件结构\n\n```\nsmart-agent-memory/\n├── SKILL.md                     # 技能定义（Agent 读）\n├── README.md                    # 本文档（人读）\n├── _meta.json                   # 技能元信息\n├── lib/\n│   ├── store.js                 # JSON 存储引擎 + 工厂函数（自动选择后端）\n│   ├── sqlite-store.js          # SQLite 存储引擎（FTS5 + WAL）\n│   ├── temperature.js           # 温度模型 + GC 归档\n│   ├── search.js                # 轻量 Markdown 全文搜索\n│   └── extract.js               # 教训 → 技能提炼\n└── scripts/\n    └── memory-cli.js            # CLI 入口（14 个命令）\n```\n\n---\n\n## ❓ 常见问题\n\n### Q: 和 OpenClaw 自带的 memory/ 目录冲突吗？\n\n**不冲突。** 本技能就是管理 `workspace/memory/` 目录的，与 OpenClaw 的 `memory_search` 完全兼容。结构化数据在 `.data/` 子目录下，不影响现有的 `.md` 文件。\n\n### Q: 已有 memory/ 下的日志文件会被破坏吗？\n\n**不会。** 本技能只追加内容（appendDailyLog），不修改已有文件。GC 归档是移动文件（rename），不是删除。\n\n### Q: JSON 数据丢了怎么办？\n\nMarkdown 文件还在。教训和实体都有对应的 `.md` 文件。JSON 丢了最多损失 facts 的访问计数等元数据，核心信息在 Markdown 中有备份。\n\n### Q: SQLite 数据库损坏了怎么办？\n\n删掉 `.data/memory.db`，下次运行自动从 JSON 文件重建（前提是 JSON 文件还在）。双层存储的好处就是互为备份。\n\n### Q: 数据量大了会慢吗？\n\n- **JSON 模式：** 万级 facts 没问题（内存操作）\n- **SQLite 模式：** 百万级没问题（索引 + FTS5）\n- **Markdown 搜索：** 千级文件秒出结果\n- **GC 会自动归档冷数据**，控制活跃文件数量\n\n### Q: 能和其他 Agent 共享记忆吗？\n\n**可以。** memory/ 目录在 workspace 下，多 Agent 共享同一个 workspace 就共享记忆。用 `--tags` 区分不同 Agent 的 facts。SQLite 的 WAL 模式支持并发读写。\n\n### Q: 在 Mac 上创建的记忆，Windows 上能用吗？\n\n**可以。** JSON 和 SQLite 都是跨平台格式。配合 `myopenclaw-backup-restore` 技能备份还原，跨平台迁移零障碍。\n\n### Q: 从旧版 agent-memory-system 迁移过来方便吗？\n\n**很方便。** 旧版的 memory/ 目录结构（日志、lessons、people 等）和本技能**完全兼容**。安装后直接用，已有的 .md 文件自动被 search 命令搜索到。只需要运行 `remember` 把重要信息录入结构化层即可。\n\n### Q: stats 显示 [json] 而不是 [sqlite]？\n\n需要 Node.js >= 22.5 才能使用原生 `node:sqlite`。运行 `node -v` 确认版本。如果低于 22.5，JSON 模式也完全可用。\n\n---\n\n## 📜 版本历史\n\n- **v2.0.0** — 零依赖重构\n  - 从 better-sqlite3 迁移到 Node.js 原生 `node:sqlite`（DatabaseSync），彻底零外部依赖\n  - 去除 crypto 模块依赖，改用时间戳+随机数生成 ID\n  - 目录 lazy init：不再构造时创建所有子目录，按需创建\n  - FTS + LIKE 双引擎搜索：英文走 FTS5，中文走 LIKE 子串匹配\n  - 搜索集成 qmd：`search` 命令优先走 qmd（BM25+向量+rerank），不可用时自动降级内置搜索\n  - reflect 命令增强：输出高频标签、最近实体、Skill 经验统计、最近教训\n  - JSON→SQLite 迁移后提示清理旧文件\n  - 对话标准流程（开场/过程/结束）写入 SKILL.md\n  - cron 配置改为标准 JSON 格式，可跨设备\n\n- **v1.0.0** — 初始版本\n  - 融合 agent-memory-system（温度/归档/反思/提炼）+ agent-memory（Fact/Lesson/Entity/FTS）\n  - 双层存储：Markdown + JSON/SQLite\n  - 智能后端自动检测 + 自动迁移\n  - 14 个 CLI 命令\n  - 纯 Node.js 跨平台\n\n---\n\n## 🤝 致谢与来源\n\n本技能站在多个优秀项目的肩膀上：\n\n### 直接整合的基础项目\n\n| 来源项目 | 作者 | 链接 | 继承的核心设计 |\n|----------|------|------|---------------|\n| **agent-memory-system** | 阿福 | [ClawHub](https://clawhub.com/skills/agent-memory-system) | 温度模型、自动归档 GC、夜间反思、技能提炼、文件驱动架构 |\n| **agent-memory** | dennis-da-menace | [GitHub](https://github.com/openclaw/skills/blob/main/skills/dennis-da-menace/agent-memory/SKILL.md) | Fact/Lesson/Entity 三层模型、全文搜索、置信度、访问追踪、置换链、实体属性合并 |\n\n### 对标研究的竞品（v2.0 设计参考）\n\n| 竞品 | 类型 | 链接 | 吸收的设计思路 |\n|------|------|------|--------------|\n| **mem9** (1.0.5) | Skill（MCP server），云端持久记忆 | [GitHub](https://github.com/mem9-ai/mem9) | 结构化事实存储模型、session-start/end 会话生命周期钩子（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎（字节跳动） | [GitHub](https://github.com/volcengine/OpenViking) | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | Plugin（Context Engine） | [LobeHub](https://lobehub.com/skills/olafgeibig-skills-lossless-claw-skill) | 无损归档思路：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### 我们的差异化\n- ✅ **零外部依赖**（vs mem9 需云 API，OpenViking 需 Python+火山 API）\n- ✅ **全本地数据**（vs mem9 云端存储）\n- ✅ **三层存储互为备份**：Markdown（人可读）+ JSON（结构化）+ SQLite/FTS5（高性能搜索）\n- ✅ **Skill 经验记忆** + **Artifact 跨 Agent 引用**（独有）\n- ✅ **跨平台**：纯 Node.js，Windows/macOS/Linux 通用\n\n感谢以上项目作者的开源贡献。\n\n**许可证：** MIT\n\nFile v2.4.2:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"2.4.2\",\n  \"publishedAt\": 1774676182333\n}\n\nArchive v2.0.5: 9 files, 37047 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (27404b), lib/store.js (22226b), lib/temperature.js (2329b), README.md (25015b), scripts/memory-cli.js (27456b), SKILL.md (7513b)\n\nFile v2.0.5:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## 安装后必做：Setup\n\n安装技能后运行一次：\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md 记忆启动指令。\n幂等，新增工作区后再跑一次即可。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆GC：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc --days 30，报告归档了多少条记忆。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每日会话摘要检查（可选，弥补遗忘）\n\n```json\n{\n  \"name\": \"memory-session-check\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 22 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"检查今天的记忆情况：运行 node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js stats，如果今天有对话但 facts 没增长，回顾今天的对话并用 session-end 补存摘要。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n> Agent 可用 `cron` 工具的 `add` action 直接添加以上任务，JSON 作为 `job` 参数传入。\n\nFile v2.0.5:README.md\n\n# 🧠 Smart Agent Memory v2.0 — 跨平台 Agent 长期记忆系统\n\n> 融合 5 个记忆方案的精华：**agent-memory-system**（温度/归档/反思）+ **agent-memory**（Fact/Lesson/Entity/FTS）+ **mem9**（会话生命周期钩子）+ **OpenViking**（语义搜索集成）+ **lossless-claw**（无损归档）。\n>\n> 打造**分层上下文供给 + Skill 经验记忆 + 温度模型 + 会话生命周期 + 结构化存储 + 无损归档**的一站式 Agent 记忆引擎。\n\n**纯 Node.js 原生模块，零外部依赖，零云端 API。Windows / macOS / Linux 通用。三层存储：Markdown + JSON + SQLite/FTS5。**\n\n---\n\n## 📖 目录\n\n- [项目背景：为什么要做这个？](#-项目背景为什么要做这个)\n- [核心优势](#-核心优势)\n- [快速开始](#-快速开始)\n- [完整命令手册](#-完整命令手册)\n- [双层存储架构](#-双层存储架构)\n- [温度模型](#-温度模型)\n- [智能后端：JSON 与 SQLite](#-智能后端json-与-sqlite)\n- [与 OpenClaw 深度集成](#-与-openclaw-深度集成)\n- [Agent 每日工作流](#-agent-每日工作流)\n- [系统要求](#-系统要求)\n- [文件结构](#-文件结构)\n- [常见问题](#-常见问题)\n- [致谢与来源](#-致谢与来源)\n\n---\n\n## 💡 项目背景：为什么要做这个？\n\n社区里已有两个 Agent 记忆方案，各有优缺点：\n\n### agent-memory-system（by 阿福）\n\n**理念：文件即记忆，日记本方式。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| 温度模型（热/温/冷三级分类） | 只支持 Linux/Mac（bash 脚本） |\n| 自动归档 GC（冷数据按月归档） | 依赖 rsync、crontab |\n| 夜间反思（每日健康报告） | 无结构化查询能力 |\n| 技能提炼（教训 → SKILL.md） | 无实体追踪 |\n| Markdown 人可读，QMD 直接搜索 | 搜索只能靠外部工具 |\n| 与 OpenClaw workspace 深度融合 | — |\n\n### agent-memory（by ClawHub 社区）\n\n**理念：数据库驱动，程序化 API。**\n\n| 优点 ✅ | 缺点 ❌ |\n|---------|---------|\n| Fact / Lesson / Entity 三层模型 | 需要 Python 运行环境 |\n| SQLite + FTS5 精准全文搜索 | 数据在数据库里，人不可读 |\n| 置信度（confidence）模型 | 与 OpenClaw 原生工作流割裂 |\n| 访问计数 + 最后访问时间追踪 | 无温度模型，无自动归档 |\n| 置换链（supersede）保留历史 | 无夜间反思，无技能提炼 |\n| 实体属性自动合并 | — |\n| 数据导出（JSON export） | — |\n\n### v2.0 对标研究的竞品\n\n| 竞品 | 类型 | 我们吸收了什么 |\n|------|------|--------------|\n| **mem9** (1.0.5) | MCP server，云端持久记忆 | session-start/end 会话生命周期钩子、结构化事实存储模型（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎 | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | 对话上下文无损压缩 | 无损归档：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### Smart Agent Memory 的答案：全都要\n\n**5 个方案的优点合并，缺点全部干掉：**\n\n- ✅ 从 **agent-memory-system** 继承：温度模型、自动归档、夜间反思、技能提炼、Markdown 文件驱动\n- ✅ 从 **agent-memory** 继承：Fact/Lesson/Entity 结构化存储、全文搜索、置信度、访问追踪、置换链、实体追踪\n- ✅ 从 **mem9** 吸收：session-start/end 会话生命周期钩子（本地化，零云端依赖）\n- ✅ 从 **OpenViking** 吸收：语义搜索集成（通过 qmd 实现，不依赖火山 API）\n- ✅ 从 **lossless-claw** 吸收：无损归档思路（GC 压缩摘要但保留原文指针）\n- 🆕 **新增分层上下文供给**：index → 判断 → context 按需钻取，省 90% token\n- 🆕 **新增 Skill 经验记忆**：按技能名存取经验，下次调用前自动加载\n- 🆕 **新增三层写入**：一次操作同时写 Markdown + JSON + SQLite\n- 🆕 **新增跨平台**：纯 Node.js，不依赖 bash/python/rsync/云 API\n- 🆕 **新增智能后端**：Node.js >= 22.5 自动启用原生 SQLite + FTS5，否则降级 JSON\n- 🆕 **新增自动迁移**：从 JSON 升级到 SQLite 时零手动操作\n- 🆕 **新增 setup 一键激活**：自动发现所有工作区，注入 BOOTSTRAP.md\n- 🆕 **新增 OpenClaw Cron 集成**：不碰系统 crontab\n\n---\n\n## 🏆 核心优势\n\n| 特性 | 说明 |\n|------|------|\n| **双层存储** | Markdown（人可读，QMD 可搜索）+ JSON/SQLite（结构化，快速查询），写入时双写 |\n| **智能后端** | Node.js >= 22.5 → 原生 SQLite + FTS5；低版本 → JSON 降级（零依赖也能用） |\n| **温度模型** | 🔥 热（<7天）→ 🟡 温（7-30天）→ ❄️ 冷（>30天）→ 📦 归档 |\n| **三层记忆** | **Fact**（事实）+ **Lesson**（教训）+ **Entity**（实体），各有专用 CRUD |\n| **自动归档** | 冷数据自动移到 `.archive/YYYY-MM/`，配合 GC 清理低频 facts |\n| **全文搜索** | SQLite FTS5 精准搜索 / JSON 模式关键词匹配 / Markdown 文件全文扫描 |\n| **知识提炼** | 从教训一键提取 SKILL.md 模板，变成可复用的 Agent 技能 |\n| **夜间反思** | 自动生成记忆健康报告（facts/lessons/entities 统计 + 温度分布） |\n| **置信度** | 每个 fact 可设置 0-1 置信度，搜索时可按置信度过滤 |\n| **访问追踪** | 自动记录每个 fact 的访问次数和最后访问时间，GC 时保护高频数据 |\n| **置换链** | `supersede` 一个旧 fact，新旧关联保留历史轨迹 |\n| **自动迁移** | 首次检测到 SQLite 可用时，自动把 JSON 数据导入 SQLite |\n| **跨平台** | Windows / macOS / Linux 通用，纯 Node.js |\n| **会话生命周期** | session-start 自动加载上下文 / session-end 存会话摘要（借鉴 mem9，本地化实现） |\n| **分层上下文** | index（<500 tokens）→ context 按 tag/skill/时间钻取，避免全量加载浪费 token |\n| **Skill 经验记忆** | 按技能名存取经验（`--skill`），调用工具前自动加载历史踩坑记录 |\n| **无损归档** | GC 时冷数据压缩为摘要但保留原文指针，不丢失信息（借鉴 lossless-claw） |\n| **语义搜索** | 优先走 qmd（BM25+向量），不可用时降级内置 TF 搜索（借鉴 OpenViking，零外部 API） |\n| **一键激活** | `setup` 自动发现所有 workspace，注入 BOOTSTRAP.md，新工作区再跑一次即可 |\n| **14+ 个命令** | 覆盖记忆全生命周期：记住、回忆、遗忘、学习、追踪、归档、反思、提炼、会话、激活 |\n\n---\n\n## 🚀 快速开始\n\n### 安装\n\n```bash\n# 从 ClawHub 安装\nclawhub install smart-agent-memory\n\n# 或手动复制到技能目录\ncp -r smart-agent-memory ~/.openclaw/skills/\n```\n\n### 激活记忆（安装后必做）\n\n安装完成后，运行一次 `setup`：\n\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n`setup` 会**自动发现 `~/.openclaw/` 下所有 `workspace*` 目录**，逐个注入记忆启动指令到 `BOOTSTRAP.md`。\n- 幂等：重复运行不会重复写入\n- 新增工作区后再跑一次 `setup` 即可，已注入的会自动跳过\n\n> ⚠️ **不运行 setup = 技能装了但不会自动激活 = 依然失忆。** 这一步不能跳过。\n\n### 基本操作\n\n```bash\n# 记住一个事实\nnode scripts/memory-cli.js remember \"项目用 React 18 + TypeScript\" --tags tech,frontend\n\n# 搜索记忆\nnode scripts/memory-cli.js recall \"React\"\n\n# 记录教训\nnode scripts/memory-cli.js learn \\\n  --action \"线上直接改数据库\" \\\n  --context \"数据修复\" \\\n  --outcome negative \\\n  --insight \"永远先备份，在测试环境验证SQL后再操作生产\"\n\n# 追踪一个人\nnode scripts/memory-cli.js entity \"张三\" person --attr role=后端开发 --attr team=Core\n\n# 查看记忆健康\nnode scripts/memory-cli.js stats\n```\n\n**示例输出：**\n```\n🧠 Smart Agent Memory — Stats [sqlite]\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n\nFacts:\n  Total:      42\n  Active:     38\n  🔥 Hot:     12 (< 7 days)\n  🟡 Warm:    18 (7-30 days)\n  ❄️ Cold:    8 (> 30 days)\n\nLessons:      7\nEntities:     5\nArchived:     23 files\n\nLast GC:         2026-03-05 00:00\nLast Reflection: 2026-03-06 23:45\n```\n\n---\n\n## 📖 完整命令手册\n\n### remember — 记住事实\n\n```bash\nnode scripts/memory-cli.js remember <内容> [选项]\n```\n\n| 选项 | 说明 | 默认值 |\n|------|------|--------|\n| `--tags t1,t2` | 标签（逗号分隔） | 无 |\n| `--source` | 来源（conversation / observation / inference） | conversation |\n| `--confidence` | 置信度（0-1） | 1.0 |\n\n**示例：**\n```bash\n# 基础\nnode scripts/memory-cli.js remember \"老板偏好简短日报\"\n\n# 带标签\nnode scripts/memory-cli.js remember \"API限流100req/min\" --tags api,限制\n\n# 低置信度（不太确定的信息）\nnode scripts/memory-cli.js remember \"可能要迁移到AWS\" --confidence 0.6 --source inference\n```\n\n**背后发生了什么：**\n1. 写入 `.data/facts.json`（或 SQLite facts 表）\n2. 追加到当天的 `memory/2026-03-07.md` 日志\n3. 如果是 SQLite 模式，同时写入 FTS5 索引\n\n### recall — 搜索/回忆事实\n\n```bash\nnode scripts/memory-cli.js recall <关键词> [--limit 10] [--tags t1]\n```\n\n搜索 JSON/SQLite 中的结构化 facts。SQLite 模式下使用 FTS5 精准搜索，JSON 模式下使用关键词匹配 + 评分排序。\n\n**评分逻辑：** 关键词匹配度 + 数据新鲜度（近7天加分） + 访问频率\n\n### search — 全文搜索 Markdown 文件\n\n```bash\nnode scripts/memory-cli.js search <关键词> [--limit 20]\n```\n\n扫描 memory/ 下所有 `.md` 文件（日志、教训、人物、反思等），按匹配度 + 文件新鲜度排序。\n\n**recall vs search 的区别：**\n\n| | recall | search |\n|---|---|---|\n| 搜索范围 | 结构化 facts（JSON/SQLite） | 所有 Markdown 文件 |\n| 搜索方式 | FTS5 或关键词匹配 | 逐文件逐行扫描 |\n| 适合场景 | \"我记过什么关于 X 的 fact？\" | \"memory 里哪个文件提到了 X？\" |\n| 返回结果 | Fact 对象（含 ID、标签、置信度） | 文件名 + 匹配行 |\n\n### forget — 删除事实\n\n```bash\nnode scripts/memory-cli.js forget <fact-id>\n```\n\n### facts — 列出所有事实\n\n```bash\nnode scripts/memory-cli.js facts [--tags t1] [--limit 50]\n```\n\n### learn — 记录教训\n\n```bash\nnode scripts/memory-cli.js learn --action \"做了什么\" --context \"什么场景\" --outcome positive|negative|neutral --insight \"学到了什么\"\n```\n\n**双写目标：**\n- `.data/lessons.json`（或 SQLite lessons 表 + FTS5 索引）\n- `memory/lessons/YYYY-MM-DD-<id>.md`\n\n### lessons — 查看教训\n\n```bash\nnode scripts/memory-cli.js lessons [--context 主题] [--outcome negative] [--limit 10]\n```\n\n### entity — 追踪实体\n\n```bash\n# 创建\nnode scripts/memory-cli.js entity \"李四\" person --attr role=产品经理 --attr timezone=GMT+8\n\n# 更新（同名同类型自动合并属性）\nnode scripts/memory-cli.js entity \"李四\" person --attr email=lisi@example.com\n```\n\n**双写目标：**\n- `.data/entities.json`（或 SQLite entities 表）\n- `memory/people/<name>.md`（person 类型）\n- `memory/decisions/<name>.md`（其他类型）\n\n### entities — 列出实体\n\n```bash\nnode scripts/memory-cli.js entities [--type person]\n```\n\n### gc — 垃圾回收 / 归档\n\n```bash\nnode scripts/memory-cli.js gc [--days 30]\n```\n\n**做两件事：**\n1. **文件归档：** 把超过 N 天的 `YYYY-MM-DD.md` 日志移到 `.archive/YYYY-MM/`\n2. **清理低频数据：** 删除 JSON/SQLite 中超过 N 天且访问次数 ≤ 1 的 facts\n\n### reflect — 夜间反思\n\n```bash\nnode scripts/memory-cli.js reflect\n```\n\n在 `memory/reflections/YYYY-MM-DD.md` 生成当日记忆健康报告。\n\n### extract — 知识提炼（教训 → 技能）\n\n```bash\n# 查看教训 ID\nnode scripts/memory-cli.js lessons\n\n# 提炼\nnode scripts/memory-cli.js extract <lesson-id> --skill-name deploy-checklist\n# → 生成 ~/.openclaw/skills/deploy-checklist/SKILL.md\n```\n\n把一条教训自动生成 SKILL.md 模板，包含背景、问题、解决方案、使用场景。你可以在此基础上完善，变成一个真正可复用的 Agent 技能。\n\n### stats — 记忆健康面板\n\n```bash\nnode scripts/memory-cli.js stats\n```\n\n显示：facts 总量/活跃/热/温/冷分布、lessons 数量、entities 数量、归档文件数、上次 GC 和反思时间、当前后端类型。\n\n### temperature — 温度报告\n\n```bash\nnode scripts/memory-cli.js temperature\n```\n\n按热/温/冷分类列出所有日志文件。\n\n### export — 导出全部数据\n\n```bash\nnode scripts/memory-cli.js export\n```\n\n以 JSON 格式输出所有 facts、lessons、entities，方便备份或迁移。\n\n---\n\n## 📂 双层存储架构\n\n```\n~/.openclaw/workspace/memory/\n│\n│ ──── Markdown 层（人可读，QMD 可搜索）────\n├── 2026-03-07.md              ← 今天的日志\n├── 2026-03-06.md              ← 昨天\n├── lessons/                   ← 教训文件\n│   ├── 2026-03-07-abc123.md\n│   └── 2026-03-05-def456.md\n├── people/                    ← 人物档案\n│   └── zhang-san.md\n├── decisions/                 ← 非人物实体\n├── reflections/               ← 反思记录\n│   └── 2026-03-07.md\n│\n│ ──── 结构化层（程序用，快速查询）────\n├── .data/\n│   ├── facts.json             ← 事实（JSON 模式）\n│   ├── lessons.json           ← 教训（JSON 模式）\n│   ├── entities.json          ← 实体（JSON 模式）\n│   └── memory.db              ← SQLite 数据库（SQLite 模式，自动创建）\n│\n│ ──── 归档层 ────\n├── .archive/                  ← GC 归档的冷数据\n│   └── 2026-01/\n│       ├── 2026-01-05.md\n│       └── 2026-01-12.md\n│\n└── .index.json                ← 索引元数据\n```\n\n**设计原则：**\n- **写入时双写** — `remember` / `learn` / `entity` 同时写 Markdown 和 JSON/SQLite\n- **搜索时互补** — `recall` 走结构化层，`search` 走 Markdown 层\n- **Markdown 丢了** — 结构化数据还在，可以重建\n- **JSON 丢了** — Markdown 还在，教训和实体有 .md 文件兜底\n\n---\n\n## 🌡️ 温度模型\n\n| 温度 | 时间范围 | 存储位置 | 说明 |\n|------|----------|----------|------|\n| 🔥 热 | < 7 天 | `memory/*.md` | 活跃数据，高频访问 |\n| 🟡 温 | 7-30 天 | `memory/*.md` | 近期数据，偶尔访问 |\n| ❄️ 冷 | > 30 天 | `memory/*.md` → GC 后移到 `.archive/` | 低频数据，GC 候选 |\n| 📦 归档 | — | `memory/.archive/YYYY-MM/` | 已归档，按月分目录 |\n\n温度由文件修改时间自动计算，不需要手动标记。\n\n**GC 规则：**\n- 文件层：冷数据（>30天的日志文件）移到 `.archive/`\n- 数据层：超过 N 天 + 访问次数 ≤ 1 的 facts 被删除\n- 高频访问的 facts 即使很旧也不会被清理（访问计数保护）\n\n---\n\n## ⚡ 智能后端：JSON 与 SQLite\n\n本技能支持两种存储后端，**运行时自动检测、自动选择、自动迁移**：\n\n### JSON 模式（默认，零依赖）\n\n- 适合万级数据量\n- 数据存在 `.data/facts.json` 等文件中\n- 搜索用内存关键词匹配\n- 不需要安装任何额外包\n\n### SQLite 模式（Node.js >= 22.5 自动启用）\n\n使用 Node.js 原生 `node:sqlite` 模块（`DatabaseSync`），**无需安装任何 npm 包**。\n\n自动获得：\n\n| 特性 | 说明 |\n|------|------|\n| **FTS5 全文搜索** | FTS5 + LIKE 双引擎，英文走 FTS5，中文走 LIKE 子串匹配 |\n| **ACID 事务** | 数据写入更安全，不怕写到一半断电 |\n| **WAL 模式** | 读写并发性能好，多 Agent 同时访问不冲突 |\n| **百万级数据** | 轻松处理大量 facts/lessons |\n| **自动迁移** | 首次启用时自动把 JSON 数据导入 SQLite |\n\n**完全自动：**\n1. Node.js >= 22.5 → 自动检测 `node:sqlite`\n2. 自动创建 `memory.db` → 自动导入已有 JSON 数据\n3. 显示 `[sqlite]`\n\n**降级也无感：** Node.js < 22.5 自动回到 JSON 模式（JSON 文件一直保持更新）。\n\n---\n\n## 🔗 与 OpenClaw 深度集成\n\n### 1. memory_search 原生兼容\n\n所有 Markdown 文件在 `~/.openclaw/workspace/memory/` 下，OpenClaw 的 `memory_search` 工具**直接可搜**，不需要任何额外配置。\n\n### 2. OpenClaw Cron 定时任务\n\n用 OpenClaw 内置 cron，不碰系统 crontab：\n\n```bash\n# 每周日凌晨自动 GC 归档\nopenclaw cron add --name \"memory-gc\" \\\n  --schedule \"0 0 * * 0\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js gc\"\n\n# 每晚 23:45 自动反思\nopenclaw cron add --name \"memory-reflect\" \\\n  --schedule \"45 23 * * *\" --tz \"Asia/Shanghai\" \\\n  --agent main \\\n  --message \"运行：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect\"\n```\n\n### 3. Agent 直接调用\n\nAgent 可以通过 `exec` 工具直接执行：\n\n```bash\n# 在对话中记住重要信息\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"重要信息\" --tags important\n\n# 回忆相关知识\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall \"关键词\"\n```\n\n### 4. Heartbeat 集成\n\n在 `HEARTBEAT.md` 中加入记忆维护：\n\n```markdown\n## Memory Maintenance\n- 每周检查一次 `stats`，如果冷数据 > 20 个就运行 `gc`\n- 每月检查 lessons，考虑提炼高价值教训为 skill\n```\n\n---\n\n## 🔄 Agent 每日工作流\n\n### 会话开始\n\n1. 读取 `MEMORY.md` 获取核心记忆\n2. 运行 `stats` 检查记忆健康\n3. 运行 `recall` 获取当前任务相关上下文\n\n### 会话中\n\n| 触发事件 | 建议操作 |\n|----------|----------|\n| 用户提到重要信息 | `remember \"信息\" --tags 相关标签` |\n| 用户纠正了错误 | `learn --action \"做错了什么\" --outcome negative --insight \"正确做法\"` |\n| 发现了好方法 | `learn --action \"做对了什么\" --outcome positive --insight \"总结\"` |\n| 遇到新的人/项目 | `entity \"名字\" 类型 --attr key=value` |\n| 用户说\"记住这个\" | `remember \"内容\" --tags user-requested` |\n| 需要查找之前的决策 | `recall \"关键词\"` 或 `search \"关键词\"` |\n| 某个信息过时了 | `supersede 旧id \"新信息\"` 或 `forget 旧id` |\n\n### 每日结束\n\n1. 更新每日日志（自动，通过 remember 命令已经在写了）\n2. 有价值的对话总结 → `remember` 存入\n\n### 每周 / 定时\n\n| 任务 | 频率 | 命令 |\n|------|------|------|\n| GC 归档 | 每周 | `gc` |\n| 夜间反思 | 每日 | `reflect` |\n| 温度检查 | 按需 | `temperature` |\n| 教训提炼 | 按需 | `extract <id>` |\n\n---\n\n## 💻 系统要求\n\n| 要求 | 说明 |\n|------|------|\n| **Node.js** | >= 22.5 推荐（原生 SQLite）；18+ 可用（JSON 模式） |\n| **磁盘** | 通常 < 1MB（SQLite 模式 < 5MB） |\n| **外部依赖** | **无**。SQLite 使用 Node.js 原生 `node:sqlite` 模块 |\n\n**不需要**：Python、bash、rsync、系统 crontab。\n\n---\n\n## 📁 文件结构\n\n```\nsmart-agent-memory/\n├── SKILL.md                     # 技能定义（Agent 读）\n├── README.md                    # 本文档（人读）\n├── _meta.json                   # 技能元信息\n├── lib/\n│   ├── store.js                 # JSON 存储引擎 + 工厂函数（自动选择后端）\n│   ├── sqlite-store.js          # SQLite 存储引擎（FTS5 + WAL）\n│   ├── temperature.js           # 温度模型 + GC 归档\n│   ├── search.js                # 轻量 Markdown 全文搜索\n│   └── extract.js               # 教训 → 技能提炼\n└── scripts/\n    └── memory-cli.js            # CLI 入口（14 个命令）\n```\n\n---\n\n## ❓ 常见问题\n\n### Q: 和 OpenClaw 自带的 memory/ 目录冲突吗？\n\n**不冲突。** 本技能就是管理 `workspace/memory/` 目录的，与 OpenClaw 的 `memory_search` 完全兼容。结构化数据在 `.data/` 子目录下，不影响现有的 `.md` 文件。\n\n### Q: 已有 memory/ 下的日志文件会被破坏吗？\n\n**不会。** 本技能只追加内容（appendDailyLog），不修改已有文件。GC 归档是移动文件（rename），不是删除。\n\n### Q: JSON 数据丢了怎么办？\n\nMarkdown 文件还在。教训和实体都有对应的 `.md` 文件。JSON 丢了最多损失 facts 的访问计数等元数据，核心信息在 Markdown 中有备份。\n\n### Q: SQLite 数据库损坏了怎么办？\n\n删掉 `.data/memory.db`，下次运行自动从 JSON 文件重建（前提是 JSON 文件还在）。双层存储的好处就是互为备份。\n\n### Q: 数据量大了会慢吗？\n\n- **JSON 模式：** 万级 facts 没问题（内存操作）\n- **SQLite 模式：** 百万级没问题（索引 + FTS5）\n- **Markdown 搜索：** 千级文件秒出结果\n- **GC 会自动归档冷数据**，控制活跃文件数量\n\n### Q: 能和其他 Agent 共享记忆吗？\n\n**可以。** memory/ 目录在 workspace 下，多 Agent 共享同一个 workspace 就共享记忆。用 `--tags` 区分不同 Agent 的 facts。SQLite 的 WAL 模式支持并发读写。\n\n### Q: 在 Mac 上创建的记忆，Windows 上能用吗？\n\n**可以。** JSON 和 SQLite 都是跨平台格式。配合 `myopenclaw-backup-restore` 技能备份还原，跨平台迁移零障碍。\n\n### Q: 从旧版 agent-memory-system 迁移过来方便吗？\n\n**很方便。** 旧版的 memory/ 目录结构（日志、lessons、people 等）和本技能**完全兼容**。安装后直接用，已有的 .md 文件自动被 search 命令搜索到。只需要运行 `remember` 把重要信息录入结构化层即可。\n\n### Q: stats 显示 [json] 而不是 [sqlite]？\n\n需要 Node.js >= 22.5 才能使用原生 `node:sqlite`。运行 `node -v` 确认版本。如果低于 22.5，JSON 模式也完全可用。\n\n---\n\n## 📜 版本历史\n\n- **v2.0.0** — 零依赖重构\n  - 从 better-sqlite3 迁移到 Node.js 原生 `node:sqlite`（DatabaseSync），彻底零外部依赖\n  - 去除 crypto 模块依赖，改用时间戳+随机数生成 ID\n  - 目录 lazy init：不再构造时创建所有子目录，按需创建\n  - FTS + LIKE 双引擎搜索：英文走 FTS5，中文走 LIKE 子串匹配\n  - 搜索集成 qmd：`search` 命令优先走 qmd（BM25+向量+rerank），不可用时自动降级内置搜索\n  - reflect 命令增强：输出高频标签、最近实体、Skill 经验统计、最近教训\n  - JSON→SQLite 迁移后提示清理旧文件\n  - 对话标准流程（开场/过程/结束）写入 SKILL.md\n  - cron 配置改为标准 JSON 格式，可跨设备\n\n- **v1.0.0** — 初始版本\n  - 融合 agent-memory-system（温度/归档/反思/提炼）+ agent-memory（Fact/Lesson/Entity/FTS）\n  - 双层存储：Markdown + JSON/SQLite\n  - 智能后端自动检测 + 自动迁移\n  - 14 个 CLI 命令\n  - 纯 Node.js 跨平台\n\n---\n\n## 🤝 致谢与来源\n\n本技能站在多个优秀项目的肩膀上：\n\n### 直接整合的基础项目\n\n| 来源项目 | 作者 | 链接 | 继承的核心设计 |\n|----------|------|------|---------------|\n| **agent-memory-system** | 阿福 | [ClawHub](https://clawhub.com/skills/agent-memory-system) | 温度模型、自动归档 GC、夜间反思、技能提炼、文件驱动架构 |\n| **agent-memory** | dennis-da-menace | [GitHub](https://github.com/openclaw/skills/blob/main/skills/dennis-da-menace/agent-memory/SKILL.md) | Fact/Lesson/Entity 三层模型、全文搜索、置信度、访问追踪、置换链、实体属性合并 |\n\n### 对标研究的竞品（v2.0 设计参考）\n\n| 竞品 | 类型 | 链接 | 吸收的设计思路 |\n|------|------|------|--------------|\n| **mem9** (1.0.5) | Skill（MCP server），云端持久记忆 | [GitHub](https://github.com/mem9-ai/mem9) | 结构化事实存储模型、session-start/end 会话生命周期钩子（我们改为零依赖本地版） |\n| **OpenViking** | RAG 语义搜索引擎（字节跳动） | [GitHub](https://github.com/volcengine/OpenViking) | 语义搜索集成思路（我们用 qmd BM25+向量替代，不依赖火山 API） |\n| **lossless-claw** | Plugin（Context Engine） | [LobeHub](https://lobehub.com/skills/olafgeibig-skills-lossless-claw-skill) | 无损归档思路：GC 时压缩成摘要但保留原文+指针，而非直接丢弃 |\n\n### 我们的差异化\n- ✅ **零外部依赖**（vs mem9 需云 API，OpenViking 需 Python+火山 API）\n- ✅ **全本地数据**（vs mem9 云端存储）\n- ✅ **三层存储互为备份**：Markdown（人可读）+ JSON（结构化）+ SQLite/FTS5（高性能搜索）\n- ✅ **Skill 经验记忆** + **Artifact 跨 Agent 引用**（独有）\n- ✅ **跨平台**：纯 Node.js，Windows/macOS/Linux 通用\n\n感谢以上项目作者的开源贡献。\n\n**许可证：** MIT\n\nFile v2.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"2.0.5\",\n  \"publishedAt\": 1773450013606\n}\n\nArchive v2.0.4: 9 files, 34085 bytes\n\nFiles: _meta.json (137b), lib/extract.js (1309b), lib/search.js (3334b), lib/sqlite-store.js (24461b), lib/store.js (21716b), lib/temperature.js (2329b), README.md (21582b), scripts/memory-cli.js (24897b), SKILL.md (7567b)\n\nFile v2.0.4:SKILL.md\n\n---\nname: smart-agent-memory\nversion: 2.0.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.0\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## 安装后必做：Setup\n\n安装技能后，在每个工作区运行一次：\n```bash\ncd <workspace-dir>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n这会自动向 BOOTSTRAP.md 注入记忆启动指令，确保每次 session 自动提醒 agent 加载记忆。\n已注入过的工作区不会重复写入（幂等）。\n\n## Agent 行为规范\n\n### 🔄 记忆召回（已自动）\n\n**所有 agent 通过 `memory_search`（OpenClaw 内置 mandatory recall）自动搜索 `memory/*.md`。**\n双层存储确保每次写入都同步生成 Markdown，所以 `memory_search` / qmd 天然能搜到所有结构化数据。\n无需额外操作，无需 workspace 配置，跨 agent 通用。\n\n需要深入某方向时，用 CLI 钻取：\n```bash\nnode $CLI context --tag <tag>       # 按标签\nnode $CLI context --skill <name>    # 按 Skill 经验\nnode $CLI context --days 7          # 按时间\n```\n\n### 📝 记忆写入（有内容就写）\n\n```bash\nnode $CLI remember \"关键信息\" --tags tag1,tag2    # 事实\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"  # 教训\nnode $CLI session-end \"本次讨论了XX，决定了YY\"    # 会话摘要\n```\n> ⚠️ **不要攒到最后！** 有内容就写，中途断了也不丢。\n> 每晚 cron 兜底检查，确保不遗漏。\n\n### ✅ MUST DO\n- **每次需要历史信息时**：先 `index`，看概览，再决定加载哪部分\n- **工具调用踩坑后**：`remember \"经验\" --skill <name>` 沉淀经验\n- **调用不熟悉的工具前**：`skill-mem <name>` 检查有没有历史经验\n- **记录新信息时**：打好 tags，方便后续按需检索\n- **搜索记忆时**：`search` 命令优先走 qmd（语义搜索），qmd 不可用时自动降级为内置 TF 搜索\n\n### ❌ NEVER DO\n- 不要一次性 `facts --limit 999` 全量加载\n- 不要在每轮对话都加载全部记忆\n- 不要忽略 `index` 直接 `recall`（除非你确切知道要搜什么）\n- 不要把记忆操作全堆到对话结束时\n\n## Storage Layout\n\n```\n~/.openclaw/workspace/memory/\n├── YYYY-MM-DD.md           ← 每日日志\n├── skills/                 ← ★ Skill 经验记忆（新增）\n│   ├── api-tool.md\n│   └── deploy.md\n├── lessons/                ← 教训 Markdown\n├── decisions/              ← 决策 Markdown\n├── people/                 ← 人物档案\n├── reflections/            ← 反思记录\n├── .data/                  ← JSON 结构化数据\n├── .archive/               ← 归档冷数据\n└── .index.json             ← 温度索引 + 统计\n```\n\n## Recommended Cron Jobs\n\n安装后建议通过 OpenClaw cron 工具添加以下定时任务：\n\n### 每晚反思（推荐）\n\n```json\n{\n  \"name\": \"memory-reflect\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"45 23 * * *\", \"tz\": \"Asia/Shanghai\" },\n  \"payload\": {\n    \"kind\": \"agentTurn\",\n    \"message\": \"运行记忆反思：node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js reflect，然后总结今天的记忆变化。\"\n  },\n  \"sessionTarget\": \"isolated\",\n  \"delivery\": { \"mode\": \"none\" }\n}\n```\n\n### 每周日 GC 归档（推荐）\n\n```json\n{\n  \"name\": \"memory-gc\",\n  \"schedule\": { \"kind\": \"cron\", \"expr\": \"0 2 * * 0\", \"tz\": \"Asia/Shanghai","readmeExcerpt":"Skill: Smart Agent Memory Owner: beyound87 Summary: 跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。 Tags: latest:3.0.6 Version history: v3.0.6 | 2026-03-30T00:45:45.038Z | auto smart-agent-memory v3.0.6 - No file changes detected in this release. - Version and documentation remain the same as v2.1.0. - No new features, bug fi","codeSnippets":[],"executableExamples":[{"language":"text","snippet":"1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务"},{"language":"text","snippet":"工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验"},{"language":"bash","snippet":"CLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill"},{"language":"bash","snippet":"node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup"},{"language":"bash","snippet":"node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\""},{"language":"bash","snippet":"node ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: smart-agent-memory\nversion: 2.1.0\ndescription: \"跨平台 Agent 长期记忆系统。分层上下文供给 + 温度模型 + Skill经验记忆 + 结构化存储 + 自动归档。三层存储：Markdown（人可读，QMD 可搜索）+ JSON（结构化）+ SQLite/FTS5（高性能全文搜索）。纯 Node.js 原生模块，零外部依赖。\"\nkeywords: [memory, agent, openclaw, longterm, gc, archive, skill-extraction, temperature-model, layered-context, skill-experience]\nmetadata:\n  openclaw:\n    emoji: \"🧠\"\n    requires:\n      bins: [\"node\"]\n    trust: high\n    permissions:\n      - read: ~/.openclaw/workspace/memory\n      - write: ~/.openclaw/workspace/memory\n---\n\n# Smart Agent Memory 🧠 v2.1\n\n**跨平台 Agent 长期记忆系统** — 分层上下文供给 + Skill经验记忆 + 温度模型 + 自动归档。\n\n## ⚡ 核心原则：分层加载，按需供给\n\n> **绝对不要全量加载记忆！** 先读索引，再按需钻取。这是省 token 的关键。\n\n### 记忆使用流程（每次需要记忆时）\n\n```\n1. index    → 读取精简索引（总览，<500 tokens）\n2. 判断     → 根据当前任务决定需要哪部分记忆\n3. context  → 按 tag/skill/时间 加载具体上下文\n4. 行动     → 基于加载的上下文执行任务\n```\n\n### Skill 经验记忆流程（工具调用后）\n\n```\n工具调用成功/踩坑 → remember \"经验总结\" --skill <skill-name>\n下次调用该工具前 → skill-mem <skill-name> 加载经验\n```\n\n## CLI Reference\n\n```bash\nCLI=~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js\n\n# ★ 分层上下文（核心，优先使用）\nnode $CLI index                              # 精简记忆索引（先读这个！）\nnode $CLI context --tag <tag>                # 按标签加载上下文\nnode $CLI context --skill <skill-name>       # 按 Skill 加载经验+相关事实\nnode $CLI context --days 7                   # 最近 N 天的记忆\nnode $CLI context --entity-type person       # 按实体类型加载\n\n# ★ Skill 经验记忆\nnode $CLI remember \"该API时间参数必须用ISO格式\" --skill api-tool\nnode $CLI skill-mem <skill-name>             # 读取某 Skill 的经验\nnode $CLI skill-list                         # 列出所有有经验记忆的 Skill\n\n# 基础记忆操作\nnode $CLI remember <content> [--tags t1,t2] [--skill name] [--source conversation]\nnode $CLI recall <query> [--limit 10]\nnode $CLI forget <id>\nnode $CLI facts [--tags t1] [--limit 50]\n\n# 教训与实体\nnode $CLI learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\nnode $CLI lessons [--context topic]\nnode $CLI entity \"Alex\" person --attr role=CTO\nnode $CLI entities [--type person]\n\n# ★ 会话生命周期（模拟 mem9 自动钩子）\nnode $CLI session-start                      # 对话开场：加载记忆概览+最近上下文（一个命令搞定）\nnode $CLI session-end \"本次讨论了XX，决定了YY\"  # 对话结束：存会话摘要\n\n# 维护\nnode $CLI gc [--days 30]                     # 归档冷数据\nnode $CLI reflect                            # 夜间反思\nnode $CLI stats                              # 记忆健康\nnode $CLI search <query>                     # 全文搜索 .md（优先qmd，兜底内置）\nnode $CLI temperature                        # 温度报告\nnode $CLI extract <lesson-id> --skill-name x # 提炼 Skill\n```\n\n## Setup / Config / Scripts\n\n### Setup（必须执行一次）\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n自动发现 `~/.openclaw/workspace*` 下所有工作区，逐个注入 BOOTSTRAP.md。\n\n### Storage / Config\n- 依赖：`node`\n- 默认存储：`~/.openclaw/workspace/memory/`\n- 单 agent：直接使用本地 workspace 记忆\n- 共享 workspace / 多 agent：多个 agent 可共享同一记忆目录\n- 多 workspace 场景：setup 会自动扫描并注入\n\n### Session Init / Finish\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cl"},{"path":"README.md","content":"# smart-agent-memory\n\n## 这是什么\n`smart-agent-memory` 是一个跨平台的 Agent 长期记忆技能,目标是让 Agent 在本地工作区内形成**可读、可搜、可维护**的长期记忆体系。\n\n当前准确能力边界:\n- 使用 Node.js CLI 管理记忆\n- 支持分层读取:先 index,再按需 context\n- 支持事实、教训、实体、会话摘要等写入与查询\n- 支持温度模型、归档、反思、提炼\n- 支持通过 `setup` 为工作区注入 BOOTSTRAP 启动指令\n\n## 核心能力\n\n### 1. 分层记忆读取\n推荐顺序:\n1. `index`\n2. 判断需要什么\n3. `context`\n4. 再行动\n\n避免一次性全量读所有 memory。\n\n### 2. 事实 / 教训 / 实体管理\n- `remember`\n- `recall`\n- `learn`\n- `entity`\n- `facts`\n- `lessons`\n- `entities`\n\n### 3. Skill 经验记忆\n支持按 skill 记录与读取经验:\n- `remember ... --skill <name>`\n- `skill-mem <name>`\n- `skill-list`\n\n### 4. 会话生命周期\n- `session-start`\n- `session-end`\n\n适合在 session 开始与结束时调用。\n\n### 5. 维护能力\n- `gc`\n- `reflect`\n- `stats`\n- `temperature`\n- `extract`\n- `search`\n\n## 初始化(必须)\n本技能**有初始化步骤**。\n\n安装后请先执行一次:\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js setup\n```\n\n作用:\n- 自动发现 `~/.openclaw/workspace*` 工作区\n- 为工作区注入 `BOOTSTRAP.md` 记忆启动指令\n- 幂等,可重复执行\n\n如果你新增了工作区,再执行一次 `setup` 即可。\n\n## 使用方法\n\n### 1. 会话开始\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-start\n```\n用于加载记忆概览与近期上下文。\n\n### 2. 会话中记录信息\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js remember \"关键信息\" --tags tag1,tag2\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js learn --action \"...\" --context \"...\" --outcome positive --insight \"...\"\n```\n\n### 3. 会话结束\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js session-end \"本次做了什么\"\n```\n\n### 4. 按需查询\n```bash\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js index\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js context --tag <tag>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js recall <query>\nnode ~/.openclaw/skills/smart-agent-memory/scripts/memory-cli.js search <query>\n```\n\n## 配置与存储说明\n\n### 运行依赖\n- `node`\n\n### 默认存储位置\n- `~/.openclaw/workspace/memory/`\n\n### 存储形态\n根据当前说明文件,技能描述覆盖以下层次:\n- Markdown\n- JSON\n- SQLite / FTS5(在支持环境中)\n\nREADME 在描述时应保持谨慎:\n- 以当前 `SKILL.md` 声明与 CLI 能力为准\n- 不把尚未验证的底层实现细节写成外部承诺\n\n## 使用模式\n\n### 1. 个人模式\n单 agent 直接使用:setup → session-start → remember/learn → session-end。\n\n### 2. 共享工作区模式\n多个 agent 共用一个 workspace 时,可以共享记忆目录,但仍应按角色边界写入,避免噪音。\n\n### 3. 团队模式\n在多 agent 团队中,把它当长期记忆底座即可;团队协作约束应由团队模板或团队规范承载,而不是写死在记忆技能本体里。\n\n## 推荐工作流\n\n### 日常最小闭环\n1. `setup`(首次)\n2. `session-start`\n3. 中途 `remember` / `learn`\n4. 需要时 `index` / `context` / `recall`\n5. `session-end`\n6. 定期 `gc` / `reflect`\n\n### 定期维护\n- 每日:`reflect`\n- 每周:`gc`\n- 按需:`extract`\n\n## 限制与边界\n- 本地记忆系统,不替代外部知识库\n- 记忆质量依赖持续写入高质量 fact / lesson / session summary\n- 不建议每轮对话全量加载记忆\n\n## 相关文件\n- `SKILL.md`\n- `scripts/memory-cli.js`\n- `lib/`\n\n## 最近一次修改（中文）\n- **v2.1.0 / 2026-03-29**\n- README 改为使用周期驱动（初始化 → 使用 → 维护）\n- 补充个人模式 / 共享工作区模式 / 团队模式三层使用说明\n- 团队协作约束改为由团队规范承载，不写死在记忆技能本体里"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn761rne5jajzfg0d8h6nge4hh8220cq\",\n  \"slug\": \"smart-agent-memory\",\n  \"version\": \"3.0.6\",\n  \"publishedAt\": 1774831545038\n}"},{"path":"skill-card.md","content":"## Description:\n\nSmart Agent Memory provides a local long-term memory system for agents with layered context loading, per-skill experience memory, structured storage, search, reflection, and archival.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[beyound87](https://clawhub.ai/user/beyound87)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and agent users use this skill to maintain local, searchable long-term memory for facts, lessons, entities, session summaries, and per-skill experience across OpenClaw workspaces. The CLI supports session startup and shutdown workflows, scoped recall, memory maintenance, and optional skill extraction from recorded lessons.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: The setup command persistently adds BOOTSTRAP.md startup instructions across ~/.openclaw/workspace* directories.\n\nMitigation: Run setup only after review, confirm that all targeted workspaces should receive the startup instructions, and inspect BOOTSTRAP.md changes before relying on them.\n\nRisk: Stored memory can contain secrets or untrusted instructions that may influence later agent sessions.\n\nMitigation: Do not store secrets or untrusted content in memory; review and sanitize memory entries before using them as context.\n\nRisk: The extract flow can generate new skill files from remembered lessons.\n\nMitigation: Review generated skills and their filenames before installation or execution, especially when lesson content or skill names came from untrusted input.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/beyound87/skills/smart-agent-memory)\n- [SKILL.md](artifact/SKILL.md)\n- [README.md](artifact/README.md)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, JSON, Shell commands, Configuration]\n\n**Output Format:** [Markdown guidance with inline shell commands; CLI output may be text or JSON and may create local Markdown, JSON, or SQLite-backed memory files.]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [Requires Node.js. SQLite storage requires Node.js >= 22.5.0; otherwise the skill falls back to JSON storage.]\n\n## Skill Version(s):\n\n3.0.6 (source: server release metadata; source frontmatter remains 2.1.0)\n\n## Ethical Considerations:\n\nUsers should evaluate whether this skill is appropriate for their environment, review any generated or modified files before relying on them, and apply their organization's safety, security, and compliance requirements before deployment."}],"languages":[],"docsSourceLabel":"CLAWHUB","editorialOverview":null,"editorialQuality":{"score":100,"threshold":65,"status":"thin","wordCount":1210,"uniquenessScore":43,"reasons":["uniqueness-below-45"]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":"No screenshots, media assets, or demo links are available."},"primaryImageUrl":null,"mediaAssetCount":0,"assets":[],"demoUrl":null},"ownerResources":{"evidence":{"source":"unclaimed","verified":false,"confidence":"low","updatedAt":"2026-10-09T08:25:17.275Z","emptyReason":"This page has not been claimed by the agent owner."},"hasCustomPage":false,"customPageUpdatedAt":null,"customLinks":[],"structuredLinks":{"docsUrl":null,"demoUrl":null,"supportUrl":null,"pricingUrl":null,"statusUrl":null},"customPage":null},"relatedAgents":{"evidence":{"source":"protocol-neighbors","verified":false,"confidence":"medium","updatedAt":"2026-10-09T08:34:37.926Z","emptyReason":null},"items":[{"id":"b917f68a-ebff-438e-84f8-3f4b2494c0bc","entityType":"agent","canonicalPath":"/agent/activepieces-activepieces","slug":"activepieces-activepieces","name":"activepieces","description":"AI Agents & MCPs & AI Workflow Automation • (~400 MCP servers for AI agents) • AI Automation / AI Agent with MCPs • AI Workflows & AI Agents • MCPs for AI Agents","url":"https://github.com/activepieces/activepieces","homepage":"https://www.activepieces.com","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-15T02:22:12.426Z","createdAt":"2026-02-25T03:38:12.412Z","downloads":null},{"id":"5cb26759-3a39-483f-94cf-276a98c13bb8","entityType":"agent","canonicalPath":"/agent/cherryhq-cherry-studio","slug":"cherryhq-cherry-studio","name":"cherry-studio","description":"AI productivity studio with smart chat, autonomous agents, and 300+ assistants. Unified access to frontier LLMs","url":"https://github.com/CherryHQ/cherry-studio","homepage":"https://cherry-ai.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-11T14:38:40.986Z","createdAt":"2026-02-25T03:38:19.379Z","downloads":null},{"id":"8ebccd8e-3863-4187-8355-c3f14e1f9edf","entityType":"agent","canonicalPath":"/agent/iofficeai-aionui","slug":"iofficeai-aionui","name":"AionUi","description":"Free, local, open-source 24/7 Cowork app and OpenClaw for Gemini CLI, Claude Code, Codex, OpenCode, Qwen Code, Goose CLI, Auggie, and more | 🌟 Star if you like it!","url":"https://github.com/iOfficeAI/AionUi","homepage":"https://www.aionui.com","source":"GITHUB_REPOS","protocols":["MCP","OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-04-10T18:48:31.762Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"id":"6f6582d0-5d76-4f0f-b81d-86520247950b","entityType":"agent","canonicalPath":"/agent/copilotkit-copilotkit","slug":"copilotkit-copilotkit","name":"CopilotKit","description":"The Frontend for Agents & Generative UI. React + Angular","url":"https://github.com/CopilotKit/CopilotKit","homepage":"https://docs.copilotkit.ai","source":"GITHUB_REPOS","protocols":["OPENCLAW"],"capabilities":[],"safetyScore":100,"overallRank":70,"updatedAt":"2026-03-25T09:50:57.846Z","createdAt":"2026-02-25T03:39:14.617Z","downloads":null}],"links":{"hub":"/agent","source":"/agent/source/clawhub","protocols":[{"label":"OpenClaw","href":"/agent/protocol/openclew"}]}}}