{"id":"d47bd799-e25a-4483-bdb7-334c1947c14b","entityType":"agent","slug":"clawhub-lmqiang-711-session-memory-extractor","name":"Session Memory Extractor","canonicalUrl":"https://www.xpersona.co/agent/clawhub-lmqiang-711-session-memory-extractor","canonicalPath":"/agent/clawhub-lmqiang-711-session-memory-extractor","generatedAt":"2026-10-11T10:50:16.938Z","source":"CLAWHUB","claimStatus":"UNCLAIMED","verificationTier":"NONE","summary":{"evidence":{"source":"editorial-content","verified":true,"confidence":"high","updatedAt":"2026-10-11T07:57:09.341Z","emptyReason":null},"description":"OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。 Skill: Session Memory Extractor Owner: lmqiang-711 Summary: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-22T05:06:51.758Z | user v1.0.6: 提炼失败的 session 文件自动 Quarantine，彻底杜绝数据静默丢失。 - 引入隔离机制：只有提炼成功并检测到 __EXTRACT_OK__ marker 后才写 memory/ 并删除原始文件。 - 提炼失败或无效结构（内容","descriptionLabel":"Technical summary","evidenceSummary":"Capability contract not published. No trust telemetry is available yet. 1.1K downloads reported by the source. Last updated 10/11/2026.","installCommand":"clawhub skill install s17e4y92f44qhs1jfky5dxr9b984rsvd:session-memory-extractor","sourceUrl":"https://clawhub.ai/lmqiang-711/session-memory-extractor","homepage":"https://clawhub.ai/lmqiang-711/skills/session-memory-extractor","primaryLinks":[{"label":"View on ClawHub","url":"https://clawhub.ai/lmqiang-711/session-memory-extractor","kind":"source"},{"label":"Homepage","url":"https://clawhub.ai/lmqiang-711/skills/session-memory-extractor","kind":"homepage"}],"safetyScore":84,"overallRank":62,"popularityScore":61,"trustScore":null,"claimedByName":null,"isOwner":false,"seoDescription":"OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。 Skil"},"coverage":{"evidence":{"source":"public-profile","verified":false,"confidence":"medium","updatedAt":"2026-10-11T07:57:09.341Z","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-11T07:57:09.341Z","emptyReason":null},"stars":null,"forks":null,"downloads":1119,"packageName":null,"latestVersion":"1.0.6","tractionLabel":"1.1K downloads"},"release":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"medium","updatedAt":"2026-10-11T07:57:08.880Z","emptyReason":null},"lastUpdatedAt":"2026-10-11T07:57:09.341Z","lastCrawledAt":"2026-10-11T07:57:08.880Z","lastIndexedAt":null,"nextCrawlAt":"2026-10-12T07:57:08.880Z","lastVerifiedAt":null,"highlights":[{"version":"1.0.6","createdAt":"2026-06-22T05:06:51.758Z","changelog":"v1.0.6: 提炼失败的 session 文件自动 Quarantine，彻底杜绝数据静默丢失。 - 引入隔离机制：只有提炼成功并检测到 `__EXTRACT_OK__` marker 后才写 memory/ 并删除原始文件。 - 提炼失败或无效结构（内容太短/缺少结构化标记）时，原 session 文件重命名为 `.quarantined-<原因>-<时间戳>.jsonl`，不再直接删除。 - 新增 `reports/quarantine.log`，详细记录被隔离文件的路径、原因和元数据，便于事后审计和回溯。 - `.find` 排除 quarantine 文件，避免二次处理。 - 保证 session 内容永不过因提炼脚本异常而丢失。","fileCount":8,"zipByteSize":27495},{"version":"1.0.5","createdAt":"2026-06-03T09:08:31.744Z","changelog":"v1.0.5 introduces audit-driven security and usability improvements: - Standardized the meanings of `--preview` and `--dry-run` with a parameter table for clear distinction. - Added a dedicated privacy protection section, recommending users to audit session contents and avoid extracting or notifying sensitive data. - Further narrowed trigger phrases to prevent accidental activation and potential data loss. - Removed ambiguous synonyms (\"SME\") as triggers. - Strengthened the required confirmation steps before deleting files.","fileCount":7,"zipByteSize":17236},{"version":"1.0.4","createdAt":"2026-05-26T02:02:59.829Z","changelog":"v1.0.4: 强化安全，防止误触发和数据丢失 - 收窄触发词，仅支持明确指令（如“用 session-memory-extractor 提炼 session 记忆”），删除宽泛表述和「SME」别名，降低误触发风险 - 增加多步确认：预览、提炼前及删除前需用户输入大写“YES”确认，避免无意中丢失数据 - 明确风险提示，执行高风险操作时须多次征得用户同意","fileCount":3,"zipByteSize":6251},{"version":"1.0.3","createdAt":"2026-05-24T10:04:33.796Z","changelog":"v1.0.3: 修复与优化飞书通知及预览统计 - 修复飞书通知提取条数始终为0的错误（`extractions`→`results`键名问题） - 修复预览文件大小始终显示0B的问题（`stat -f %s`→`stat -f %z`，兼容macOS） - 飞书通知内容新增3条提炼结果示例（snippet），便于直观了解提炼内容 - 飞书通知中所有类型统计（DECISION/PREFERENCE/FACT/TODO）均会显示，无论计数是否为0","fileCount":2,"zipByteSize":4304},{"version":"1.0.2","createdAt":"2026-05-21T09:29:01.788Z","changelog":"v1.0.2 introduces config file support, natural language triggers, parallel processing, and enhanced notification options. - All parameters are now configurable via a new config.env file; no code changes required for setup. - Model selection and API key sources are now configurable. - Added support for quick preview, parallel processing, and customizable session retention days. - Users can trigger extraction via natural language commands (e.g., \"用 sme 整理 session 记忆\"). - Optional Feishu (飞书) notification on completion, fully configurable. - Improved documentation and troubleshooting guidance.","fileCount":2,"zipByteSize":3929},{"version":"1.0.0","createdAt":"2026-05-20T10:48:21.847Z","changelog":"Session Memory Extractor v1.0.0 - Initial release. - Scans and processes old OpenClaw session files, using AI to extract key memories (decisions, preferences, facts, TODOs) with confidence scores. - Appends extracted content to dated memory files, preserving source and context. - Safely deletes original session files after extraction to reclaim disk space. - Includes dry-run mode for extraction preview without deletion. - Provides summary notifications of processed sessions, items extracted, and space freed.","fileCount":2,"zipByteSize":2334}]},"execution":{"evidence":{"source":"CLAWHUB","verified":false,"confidence":"low","updatedAt":null,"emptyReason":"No published capability contract is available yet."},"installCommand":"clawhub skill install s17e4y92f44qhs1jfky5dxr9b984rsvd:session-memory-extractor","setupComplexity":"low","setupSteps":["Setup complexity is classified as HIGH. You must provision dedicated cloud infrastructure or an isolated VM. Do not run this directly on your local workstation.","Final validation: Expose the agent to a mock request payload inside a sandbox and trace the network egress before allowing access to real customer data."],"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-lmqiang-711-session-memory-extractor/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/trust"},"curlExamples":["curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/snapshot\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/contract\"","curl -s \"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/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-11T10:50:16.937Z"}},"retryPolicy":{"maxAttempts":3,"backoffMs":[500,1500,3500],"retryableConditions":["HTTP_429","HTTP_503","NETWORK_TIMEOUT"]}},"endpoints":{"dossierUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/dossier","snapshotUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/snapshot","contractUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/contract","trustUrl":"https://www.xpersona.co/api/v1/agents/clawhub-lmqiang-711-session-memory-extractor/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":"high","updatedAt":"2026-10-11T07:57:09.341Z","emptyReason":null},"readme":"Skill: Session Memory Extractor\n\nOwner: lmqiang-711\n\nSummary: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。\n\nTags: latest:1.0.6\n\nVersion history:\n\nv1.0.6 | 2026-06-22T05:06:51.758Z | user\n\nv1.0.6: 提炼失败的 session 文件自动 Quarantine，彻底杜绝数据静默丢失。\n\n- 引入隔离机制：只有提炼成功并检测到 `__EXTRACT_OK__` marker 后才写 memory/ 并删除原始文件。\n- 提炼失败或无效结构（内容太短/缺少结构化标记）时，原 session 文件重命名为 `.quarantined-<原因>-<时间戳>.jsonl`，不再直接删除。\n- 新增 `reports/quarantine.log`，详细记录被隔离文件的路径、原因和元数据，便于事后审计和回溯。\n- `.find` 排除 quarantine 文件，避免二次处理。\n- 保证 session 内容永不过因提炼脚本异常而丢失。\n\nv1.0.5 | 2026-06-03T09:08:31.744Z | user\n\nv1.0.5 introduces audit-driven security and usability improvements:\n\n- Standardized the meanings of `--preview` and `--dry-run` with a parameter table for clear distinction.\n- Added a dedicated privacy protection section, recommending users to audit session contents and avoid extracting or notifying sensitive data.\n- Further narrowed trigger phrases to prevent accidental activation and potential data loss.\n- Removed ambiguous synonyms (\"SME\") as triggers.\n- Strengthened the required confirmation steps before deleting files.\n\nv1.0.4 | 2026-05-26T02:02:59.829Z | user\n\nv1.0.4: 强化安全，防止误触发和数据丢失\n\n- 收窄触发词，仅支持明确指令（如“用 session-memory-extractor 提炼 session 记忆”），删除宽泛表述和「SME」别名，降低误触发风险\n- 增加多步确认：预览、提炼前及删除前需用户输入大写“YES”确认，避免无意中丢失数据\n- 明确风险提示，执行高风险操作时须多次征得用户同意\n\nv1.0.3 | 2026-05-24T10:04:33.796Z | user\n\nv1.0.3: 修复与优化飞书通知及预览统计\n\n- 修复飞书通知提取条数始终为0的错误（`extractions`→`results`键名问题）\n- 修复预览文件大小始终显示0B的问题（`stat -f %s`→`stat -f %z`，兼容macOS）\n- 飞书通知内容新增3条提炼结果示例（snippet），便于直观了解提炼内容\n- 飞书通知中所有类型统计（DECISION/PREFERENCE/FACT/TODO）均会显示，无论计数是否为0\n\nv1.0.2 | 2026-05-21T09:29:01.788Z | user\n\nv1.0.2 introduces config file support, natural language triggers, parallel processing, and enhanced notification options.\n\n- All parameters are now configurable via a new config.env file; no code changes required for setup.\n- Model selection and API key sources are now configurable.\n- Added support for quick preview, parallel processing, and customizable session retention days.\n- Users can trigger extraction via natural language commands (e.g., \"用 sme 整理 session 记忆\").\n- Optional Feishu (飞书) notification on completion, fully configurable.\n- Improved documentation and troubleshooting guidance.\n\nv1.0.0 | 2026-05-20T10:48:21.847Z | user\n\nSession Memory Extractor v1.0.0\n\n- Initial release.\n- Scans and processes old OpenClaw session files, using AI to extract key memories (decisions, preferences, facts, TODOs) with confidence scores.\n- Appends extracted content to dated memory files, preserving source and context.\n- Safely deletes original session files after extraction to reclaim disk space.\n- Includes dry-run mode for extraction preview without deletion.\n- Provides summary notifications of processed sessions, items extracted, and space freed.\n\nArchive index:\n\nArchive v1.0.6: 8 files, 27495 bytes\n\nFiles: extract_session.py (15751b), extract-trajectory.sh (12120b), feishu_notify.py (5392b), run_extractor.py (14557b), session-memory-extractor.sh (6443b), skill-card.md (2385b), SKILL.md (14321b), _meta.json (143b)\n\nFile v1.0.6:SKILL.md\n\n---\nname: Session Memory Extractor\nslug: session-memory-extractor\nversion: 1.0.6\nhomepage: https://clawhub.ai/hasakyi/session-memory-extractor\ndescription: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。\nchangelog: \"v1.0.6: 安全加固-提炼失败的文件 Quarantine 不删除（__EXTRACT_OK__ marker 验证 + quarantine.log 审计）；v1.0.5: 修复审计问题-统一preview/dry-run语义+强化隐私保护建议+收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.4: 安全修复-收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.3: 修复飞书通知提取数为0的bug（key名extractions→results）；修复预览大小显示0B的bug（stat -f %s→-f %z）；飞书通知增加内容示例展示（3条snippet）；v1.0.2: 支持config.env配置化、快速预览、并行处理、自然语言触发、飞书通知\"\nmetadata: {\"clawhub\":{\"emoji\":\"🧠\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"],\"configPaths\":[\"~/.openclaw/workspace/skills/session-memory-extractor/\"]}}\n---\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## When to Use\n\n用户**明确要求**提炼 session 记忆时，触发本 skill：\n\n| 用户说（中文） | 用户说（英文） | 含义 |\n|---------------|---------------|------|\n| 用 session-memory-extractor 提炼 session 记忆 | use session-memory-extractor to extract session memories | 运行提炼 |\n| 提炼旧 session 记忆 | extract memories from old sessions | 运行提炼 |\n| 运行 session-memory-extractor | run session-memory-extractor | 运行提炼 |\n\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n- ❌「整理 session 记忆」\n- ❌「清理 session 文件」\n- ❌「整理记忆」\n- ❌「清理文件」\n- ❌「SME」单独使用\n\n## 触发命令\n\n识别到上述语句后，**先运行预览**，不直接执行删除：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview\n```\n\n**参数说明：**\n\n| 参数 | 作用 |\n|------|------|\n| `--preview` | 仅扫描并显示统计数字（多少文件、多大空间、最早/最新日期），**不提炼、不删除、不修改任何数据** |\n| `--dry-run` | 完整执行一次提炼（写入 memory/），但**不删除**原始文件，适合验证提炼质量 |\n| `--parallel N` | 并行数，建议 3-5 |\n| `--min-age 14` | 自定义保留天数 |\n\n**⚠️ 确认步骤（必须严格执行）：**\n1. 预览完成后，向用户展示扫描结果\n2. 告知将执行的操作及风险：\n   - **提炼内容**：将提取到 `memory/`，供后续 session 查阅\n   - **删除原始文件**：提炼成功的 `.jsonl` 原始文件将被永久删除，**无法恢复**\n   - **提炼失败的文件**：v1.0.6+ 自动 Quarantine（重命名为 `.quarantined-<reason>-<ts>.jsonl`），原文件**保留不删**，记录到 `reports/quarantine.log`\n   - **隐私风险**：session 中可能包含密码、密钥、敏感对话等，提炼内容会写入 memory/，存在隐私泄露风险\n3. 等待用户**明确输入 `YES`（大写）**后，才执行提炼\n4. 提炼完成后，询问是否删除原始文件，需用户再次**输入 `YES`（大写）**确认删除\n\n**⚠️ v1.0.6 安全保证：**\n提炼失败的 session **绝对不会被静默删除**。三种隔离机制：\n1. **marker 验证**：`extract_session.py` 输出 `__EXTRACT_OK__` marker，runner 必须看到这个 marker 才认定提炼成功\n2. **内容验证**：提取内容必须 ≥ 50 字符且至少包含 1 个结构化标记（`[FACT]` / `[LEARN]` / `[TODO]` / `[INSIGHT]` / `[NOTE]` / `[REFERENCE]` / `[DECISION]`），否则视为无效\n3. **Quarantine**：失败的 session 文件被重命名（不删除），保留在 sessions 目录里供事后审查；同时写入 `reports/quarantine.log` 包含失败原因\n\n可用的 Quarantine reason：\n- `no_marker`：API 调用失败 / 返回空内容\n- `too_short`：提取内容不足 50 字符\n- `no_structured_entries`：提取内容无结构化标记\n\n**⚠️ 隐私保护建议（重要）：**\n- 运行前建议先用 `--preview` 查看涉及哪些 session\n- 如果 session 包含敏感内容（密码、密钥、业务敏感对话），建议先审查提炼结果再决定是否写入 memory/\n- 如果 session 高度敏感，建议跳过提炼、直接清理旧文件即可\n- 飞书通知会发送提炼摘要到指定用户，**不要**开启通知给不可信的第三方\n\n用户确认后，再跑实际提炼：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --parallel 3\n```\n\n**可选参数：**\n- `--preview` 快速预览（不执行）\n- `--parallel 3` 并行数（默认 1，建议 3-5）\n- `--min-age 14` 自定义保留天数\n- `--dry-run` 只提炼不删除（需确认后执行）\n\n---\n\n## 版本历史\n\n### v1.0.6 (2026-06-18) — Quarantine 安全加固\n\n**背景：** 2026-06-18 老板主 agent 的 `auth-profiles.json` 已被 OAuth SQLite 取代，原 skill 只读 `auth-profiles.json`，导致 31 个 session 提炼调用全部静默失败返回 `NO_MEMORIES`，文件却被删除——**30/31 个 session 原始内容永久丢失**。这是原 skill 的“吞错误 + 无条件删文件”双重设计失误。\n\n**修复：**\n\n| 改动点 | 原状 | v1.0.6 |\n|------|------|--------|\n| `extract_session.py` | 成功就 print，失败抛 `RuntimeError` 被 runner 吞为 `NO_MEMORIES` | 成功 print `__EXTRACT_OK__\\n<content>`；空内容抛 `RuntimeError`；失败 100% 走 stderr + 非零退出码 |\n| `run_extractor.py` | 始终写 memory + 删文件 | **验证 marker + 内容 + 结构后才写 memory/删文件**；否则 Quarantine 文件 + 写 `quarantine.log` |\n| Quarantine 机制 | 不存在 | 失败文件被 `os.rename` 为 `.quarantined-<reason>-<ts>.jsonl`（不删除）；保留原内容供事后恢复 |\n| Shell wrapper `find` | 只排除 `.deleted.*` | 增加排除 `*.quarantined-*`，重跑不会再次处理已 quarantine 文件 |\n| 审计 | 仅 report.json | 新增 `reports/quarantine.log`（append-only），含会话ID、文件日期、原因、文件大小 |\n\n**影响范围：** 不影响成功路径（提炼成功的 session 仍会被删）。仅改变失败路径——原 session 不丢失。\n\n### v1.0.5 (2026-05-28) — 审计问题修复\n\n**审计问题修复（来自 ClawHub 安全审计）：**\n- **统一 preview/dry-run 语义**：新增参数说明表格，明确 `--preview` 仅扫描不提炼不删除，`--dry-run` 提炼但不删除\n- **强化隐私保护建议**：新增「隐私保护建议」段落，建议用户在使用前审查 session 内容、对敏感内容跳过提炼、飞书通知不发给不可信第三方\n\n### v1.0.4 (2026-05-26) — 安全修复\n\n**安全问题修复（来自 ClawHub 安全审计）：**\n- **收窄触发词**：删除宽泛触发词（「整理 session 记忆」「清理 session 文件」），避免用户无意图时误触发导致数据丢失\n- **删除歧义别名**：移除「SME skill」等歧义触发词，减少意外激活概率\n- **强化确认步骤**：明确要求在预览后、执行前、执行后三次确认，确保用户全程知情\n\n### v1.0.3 (2026-05-24)\n\n**Bug 修复：**\n- 飞书通知显示\"（无提炼内容）\"——实际提取了 300 条，原因是 JSON 报告 key 名是 `results` 但代码读的是 `extractions`，现已修复\n- 预览 `total_size=0B`——原因是 macOS 上 `stat -f %s` 返回的是 512 字节块数量而非文件大小，现改用 `stat -f %z`\n\n**体验改进：**\n- 飞书通知新增 3 条提取内容示例（snippet），不只显示数字统计\n- 飞书通知现在会显示所有类型计数（DECISION/PREFERENCE/FACT/TODO），即使某类为 0 也会显示\n\n### v1.0.2 (2026-05-21)\n\n**改进：**\n- 支持 `config.env` 配置文件，所有参数可通过配置文件修改，无需触碰代码\n- 模型选择从硬编码改为可配置（默认 MiniMax-M2）\n- API Key 来源可选择（auth-profiles.json / 环境变量）\n- 新增自然语言触发：用户可通过\"用 sme 整理 session 记忆\"等语句调用\n\n---\n\n## 痛点\n\nOpenClaw 的 Session 文件（`.jsonl` / `.trajectory.jsonl`）越积越多，用了几个月轻松达到数百 MB。\n\n**问题是：**\n- 内置 Compaction 只在上下文快满时触发，不清理历史文件\n- 内置 Dreaming 不会从旧 .jsonl 里提取内容\n- 手动删除 .jsonl = 直接丢失所有上下文\n\n---\n\n## 解决思路\n\n```\n扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件\n```\n\n- **提炼**：用 AI 从原始对话中提取决策、偏好、事实、待办，标注置信度\n- **写入**：追加到 `memory/YYYY-MM-DD.md`，永久保留\n- **删除**：同时清理 sessions.json 和磁盘上的 .jsonl / .trajectory.jsonl\n- **通知**：完成后发送飞书报告（需配置）\n\n---\n\n## 快速开始\n\n### 1. 安装\n\n下载 skill 后，复制配置示例文件：\n\n```bash\ncd ~/.openclaw/workspace/skills/session-memory-extractor\ncp config.env.example config.env\n```\n\n### 2. 配置\n\n编辑 `config.env`，修改以下必填项：\n\n```bash\n# 模型（默认 MiniMax-M2）\nEXTRACTION_MODEL=MiniMax-M2\n\n# API Key 来源：auth_profiles（默认，从 auth-profiles.json 自动读）\nAPI_KEY_SOURCE=auth_profiles\n\n# 保留天数\nMIN_AGE_DAYS=7\n\n# 飞书通知（可选）\nNOTIFY_TARGET=ou_your_open_id_here\nNOTIFY_ENABLED=false\n```\n\n### 3. 运行\n\n```bash\n# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数\nbash session-memory-extractor.sh --agent main --min-age 14\n```\n\n---\n\n## 配置文件详解\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `EXTRACTION_MODEL` | `MiniMax-M2` | AI 提炼使用的模型 |\n| `API_KEY_SOURCE` | `auth_profiles` | API Key 从哪读：`auth_profiles`=从 auth-profiles.json，`env`=从环境变量 |\n| `MIN_AGE_DAYS` | `7` | 超过此天数的 session 文件才会被处理 |\n| `CLEAN_TRAJECTORY` | `true` | 是否清理 .trajectory.jsonl 文件 |\n| `NOTIFY_TARGET` | （空） | 飞书 DM 目标（用户 open_id 或群 chat_id） |\n| `NOTIFY_ENABLED` | `false` | 是否启用飞书通知 |\n| `DRY_RUN` | `false` | dry-run 模式（只提炼不删除） |\n\n---\n\n## 输出格式\n\n### 控制台摘要\n\n```\nSessions processed:   12\nEntries extracted:    31\nTotal bytes freed:   47.3 MB\nMemory written:       memory/2026-05-20.md\n```\n\n### memory/ 写入格式\n\n```markdown\n## Extracted from session: {session-id}\n\n- **[DECISION]** 用户选择了航天赛道作为主要内容方向\n  Confidence: HIGH\n\n- **[PREFERENCE]** 用户喜欢先给结论再展开\n  Confidence: HIGH\n```\n\n---\n\n## 多 Agent 支持\n\n```bash\nbash session-memory-extractor.sh --agent main      # ~/.openclaw/workspace/memory/\nbash session-memory-extractor.sh --agent space      # ~/.openclaw/agents/space/workspace/memory/\nbash session-memory-extractor.sh --agent math-tutor # ~/.openclaw/agents/math-tutor/workspace/memory/\n```\n\n---\n\n## 触发调度\n\nSkill 本身不内置定时，由用户自行配置：\n\n```xml\n<!-- macOS LaunchAgent: 每周一 10:00 -->\n<key>Label</key>\n<string>com.user.session-memory-extractor</string>\n<key>ProgramArguments</key>\n<array>\n    <string>/bin/bash</string>\n    <string>/path/to/session-memory-extractor.sh</string>\n    <string>--agent</string>\n    <string>main</string>\n</array>\n<key>StartCalendarInterval</key>\n<dict>\n    <key>Weekday</key><integer>1</integer>\n    <key>Hour</key><integer>10</integer>\n    <key>Minute</key><integer>0</integer>\n</dict>\n```\n\n---\n\n## 功能对比\n\n| 功能 | 内置 Compaction | 内置 Dreaming | 本 Skill |\n|------|:---:|:---:|:---:|\n| 从 .jsonl 提炼内容 | ❌ | ❌ | ✅ |\n| 写入 memory/ | 仅 compaction 时 | 仅 light 阶段 | ✅ |\n| 提炼后删除原始文件 | ❌ | ❌ | ✅ |\n| 释放磁盘空间 | ❌ | ❌ | ✅ |\n| 支持 dry-run 预览 | ❌ | ❌ | ✅ |\n| 配置文件化 | ❌ | ❌ | ✅ |\n\n---\n\n## 文件结构\n\n```\nsession-memory-extractor/\n├── SKILL.md                    ← 本文件\n├── config.env.example           ← 配置示例（下载后复制为 config.env）\n├── config.env                   ← 用户配置（下载更新时保留）\n├── session-memory-extractor.sh  ← 主入口\n├── run_extractor.py            ← Python 处理器\n├── extract_session.py          ← AI 提炼\n├── feishu_notify.py            ← 飞书通知\n└── reports/                    ← 运行报告目录\n```\n\n---\n\n## 安全说明\n\n- **API Key 不写入日志**：API Key 只在内存中使用，不写入任何输出文件\n- **auth-profiles.json 读取**：默认从 `~/.openclaw/agents/main/agent/auth-profiles.json` 读取，无需手动配置\n- **环境变量回退**：如果 auth-profiles.json 读取失败，回退到 `MINIMAX_API_KEY` 环境变量\n\n---\n\n## 故障排除\n\n### API 调用失败\n\n检查项：\n1. `config.env` 中 `API_KEY_SOURCE` 是否正确\n2. `auth-profiles.json` 是否存在且包含有效的 API Key\n3. 网络是否正常\n\n### 提炼结果为空\n\n可能原因：\n- session 文件内容已被压缩/加密\n- session 主要是闲聊无实质内容\n- 文件日期未超过 `MIN_AGE_DAYS`\n\n### 磁盘空间未释放\n\n检查项：\n1. 是否有其他进程正在读取 .jsonl 文件\n2. `sessions.json` 是否有写权限\n\nFile v1.0.6:_meta.json\n\n{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1782104811758\n}\n\nFile v1.0.6:skill-card.md\n\n## Description:\n\nScans old OpenClaw session files, uses AI to extract durable decisions, preferences, facts, and tasks into memory/, then cleans up source session files while quarantining failed extractions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[lmqiang-711](https://clawhub.ai/user/lmqiang-711)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and OpenClaw users use this skill to convert older .jsonl and .trajectory.jsonl session history into persistent memory entries before removing or quarantining the original session files.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Private session history may be sent to MiniMax and persisted into memory files.\n\nMitigation: Use only on agents whose old sessions are acceptable for external processing, run preview or dry-run first, and review or skip sessions that may contain secrets or sensitive business content.\n\nRisk: Normal execution can permanently remove raw session history after writing summarized memories.\n\nMitigation: Keep backups, use dry-run review workflows before normal execution, and confirm that quarantine logs preserve failed extraction cases for audit.\n\nRisk: Feishu notifications can expose extracted summaries to unintended recipients.\n\nMitigation: Keep Feishu notifications disabled unless the recipient or webhook target is trusted and verified.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/lmqiang-711/skills/session-memory-extractor)\n- [ClawHub metadata homepage](https://clawhub.ai/hasakyi/session-memory-extractor)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Files, Shell commands, Configuration]\n\n**Output Format:** [Markdown memory entries, console summaries, JSON reports, and optional notification text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May send session content to MiniMax, append extracted memories to memory/YYYY-MM-DD.md, write quarantine audit logs, and delete successfully processed raw session files.]\n\n## Skill Version(s):\n\n1.0.6 (source: frontmatter and server release metadata)\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 v1.0.5: 7 files, 17236 bytes\n\nFiles: extract_session.py (5032b), feishu_notify.py (5392b), run_extractor.py (10460b), session-memory-extractor.sh (6196b), skill-card.md (2332b), SKILL.md (11689b), _meta.json (143b)\n\nFile v1.0.5:SKILL.md\n\n---\nname: Session Memory Extractor\nslug: session-memory-extractor\nversion: 1.0.5\nhomepage: https://clawhub.ai/hasakyi/session-memory-extractor\ndescription: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\nchangelog: \"v1.0.5: 修复审计问题-统一preview/dry-run语义+强化隐私保护建议+收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.4: 安全修复-收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.3: 修复飞书通知提取数为0的bug（key名extractions→results）；修复预览大小显示0B的bug（stat -f %s→-f %z）；飞书通知增加内容示例展示（3条snippet）；v1.0.2: 支持config.env配置化、快速预览、并行处理、自然语言触发、飞书通知\"\nmetadata: {\"clawhub\":{\"emoji\":\"🧠\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"],\"configPaths\":[\"~/.openclaw/workspace/skills/session-memory-extractor/\"]}}\n---\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## When to Use\n\n用户**明确要求**提炼 session 记忆时，触发本 skill：\n\n| 用户说（中文） | 用户说（英文） | 含义 |\n|---------------|---------------|------|\n| 用 session-memory-extractor 提炼 session 记忆 | use session-memory-extractor to extract session memories | 运行提炼 |\n| 提炼旧 session 记忆 | extract memories from old sessions | 运行提炼 |\n| 运行 session-memory-extractor | run session-memory-extractor | 运行提炼 |\n\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n- ❌「整理 session 记忆」\n- ❌「清理 session 文件」\n- ❌「整理记忆」\n- ❌「清理文件」\n- ❌「SME」单独使用\n\n## 触发命令\n\n识别到上述语句后，**先运行预览**，不直接执行删除：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview\n```\n\n**参数说明：**\n\n| 参数 | 作用 |\n|------|------|\n| `--preview` | 仅扫描并显示统计数字（多少文件、多大空间、最早/最新日期），**不提炼、不删除、不修改任何数据** |\n| `--dry-run` | 完整执行一次提炼（写入 memory/），但**不删除**原始文件，适合验证提炼质量 |\n| `--parallel N` | 并行数，建议 3-5 |\n| `--min-age 14` | 自定义保留天数 |\n\n**⚠️ 确认步骤（必须严格执行）：**\n1. 预览完成后，向用户展示扫描结果\n2. 告知将执行的操作及风险：\n   - **提炼内容**：将提取到 `memory/`，供后续 session 查阅\n   - **删除原始文件**：`.jsonl` 原始文件将被永久删除，**无法恢复**\n   - **隐私风险**：session 中可能包含密码、密钥、敏感对话等，提炼内容会写入 memory/，存在隐私泄露风险\n3. 等待用户**明确输入 `YES`（大写）**后，才执行提炼\n4. 提炼完成后，询问是否删除原始文件，需用户再次**输入 `YES`（大写）**确认删除\n\n**⚠️ 隐私保护建议（重要）：**\n- 运行前建议先用 `--preview` 查看涉及哪些 session\n- 如果 session 包含敏感内容（密码、密钥、业务敏感对话），建议先审查提炼结果再决定是否写入 memory/\n- 如果 session 高度敏感，建议跳过提炼、直接清理旧文件即可\n- 飞书通知会发送提炼摘要到指定用户，**不要**开启通知给不可信的第三方\n\n用户确认后，再跑实际提炼：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --parallel 3\n```\n\n**可选参数：**\n- `--preview` 快速预览（不执行）\n- `--parallel 3` 并行数（默认 1，建议 3-5）\n- `--min-age 14` 自定义保留天数\n- `--dry-run` 只提炼不删除（需确认后执行）\n\n---\n\n## 版本历史\n\n### v1.0.5 (2026-05-28) — 审计问题修复\n\n**审计问题修复（来自 ClawHub 安全审计）：**\n- **统一 preview/dry-run 语义**：新增参数说明表格，明确 `--preview` 仅扫描不提炼不删除，`--dry-run` 提炼但不删除\n- **强化隐私保护建议**：新增「隐私保护建议」段落，建议用户在使用前审查 session 内容、对敏感内容跳过提炼、飞书通知不发给不可信第三方\n\n### v1.0.4 (2026-05-26) — 安全修复\n\n**安全问题修复（来自 ClawHub 安全审计）：**\n- **收窄触发词**：删除宽泛触发词（「整理 session 记忆」「清理 session 文件」），避免用户无意图时误触发导致数据丢失\n- **删除歧义别名**：移除「SME skill」等歧义触发词，减少意外激活概率\n- **强化确认步骤**：明确要求在预览后、执行前、执行后三次确认，确保用户全程知情\n\n### v1.0.3 (2026-05-24)\n\n**Bug 修复：**\n- 飞书通知显示\"（无提炼内容）\"——实际提取了 300 条，原因是 JSON 报告 key 名是 `results` 但代码读的是 `extractions`，现已修复\n- 预览 `total_size=0B`——原因是 macOS 上 `stat -f %s` 返回的是 512 字节块数量而非文件大小，现改用 `stat -f %z`\n\n**体验改进：**\n- 飞书通知新增 3 条提取内容示例（snippet），不只显示数字统计\n- 飞书通知现在会显示所有类型计数（DECISION/PREFERENCE/FACT/TODO），即使某类为 0 也会显示\n\n### v1.0.2 (2026-05-21)\n\n**改进：**\n- 支持 `config.env` 配置文件，所有参数可通过配置文件修改，无需触碰代码\n- 模型选择从硬编码改为可配置（默认 MiniMax-M2）\n- API Key 来源可选择（auth-profiles.json / 环境变量）\n- 新增自然语言触发：用户可通过\"用 sme 整理 session 记忆\"等语句调用\n\n---\n\n## 痛点\n\nOpenClaw 的 Session 文件（`.jsonl` / `.trajectory.jsonl`）越积越多，用了几个月轻松达到数百 MB。\n\n**问题是：**\n- 内置 Compaction 只在上下文快满时触发，不清理历史文件\n- 内置 Dreaming 不会从旧 .jsonl 里提取内容\n- 手动删除 .jsonl = 直接丢失所有上下文\n\n---\n\n## 解决思路\n\n```\n扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件\n```\n\n- **提炼**：用 AI 从原始对话中提取决策、偏好、事实、待办，标注置信度\n- **写入**：追加到 `memory/YYYY-MM-DD.md`，永久保留\n- **删除**：同时清理 sessions.json 和磁盘上的 .jsonl / .trajectory.jsonl\n- **通知**：完成后发送飞书报告（需配置）\n\n---\n\n## 快速开始\n\n### 1. 安装\n\n下载 skill 后，复制配置示例文件：\n\n```bash\ncd ~/.openclaw/workspace/skills/session-memory-extractor\ncp config.env.example config.env\n```\n\n### 2. 配置\n\n编辑 `config.env`，修改以下必填项：\n\n```bash\n# 模型（默认 MiniMax-M2）\nEXTRACTION_MODEL=MiniMax-M2\n\n# API Key 来源：auth_profiles（默认，从 auth-profiles.json 自动读）\nAPI_KEY_SOURCE=auth_profiles\n\n# 保留天数\nMIN_AGE_DAYS=7\n\n# 飞书通知（可选）\nNOTIFY_TARGET=ou_your_open_id_here\nNOTIFY_ENABLED=false\n```\n\n### 3. 运行\n\n```bash\n# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数\nbash session-memory-extractor.sh --agent main --min-age 14\n```\n\n---\n\n## 配置文件详解\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `EXTRACTION_MODEL` | `MiniMax-M2` | AI 提炼使用的模型 |\n| `API_KEY_SOURCE` | `auth_profiles` | API Key 从哪读：`auth_profiles`=从 auth-profiles.json，`env`=从环境变量 |\n| `MIN_AGE_DAYS` | `7` | 超过此天数的 session 文件才会被处理 |\n| `CLEAN_TRAJECTORY` | `true` | 是否清理 .trajectory.jsonl 文件 |\n| `NOTIFY_TARGET` | （空） | 飞书 DM 目标（用户 open_id 或群 chat_id） |\n| `NOTIFY_ENABLED` | `false` | 是否启用飞书通知 |\n| `DRY_RUN` | `false` | dry-run 模式（只提炼不删除） |\n\n---\n\n## 输出格式\n\n### 控制台摘要\n\n```\nSessions processed:   12\nEntries extracted:    31\nTotal bytes freed:   47.3 MB\nMemory written:       memory/2026-05-20.md\n```\n\n### memory/ 写入格式\n\n```markdown\n## Extracted from session: {session-id}\n\n- **[DECISION]** 用户选择了航天赛道作为主要内容方向\n  Confidence: HIGH\n\n- **[PREFERENCE]** 用户喜欢先给结论再展开\n  Confidence: HIGH\n```\n\n---\n\n## 多 Agent 支持\n\n```bash\nbash session-memory-extractor.sh --agent main      # ~/.openclaw/workspace/memory/\nbash session-memory-extractor.sh --agent space      # ~/.openclaw/agents/space/workspace/memory/\nbash session-memory-extractor.sh --agent math-tutor # ~/.openclaw/agents/math-tutor/workspace/memory/\n```\n\n---\n\n## 触发调度\n\nSkill 本身不内置定时，由用户自行配置：\n\n```xml\n<!-- macOS LaunchAgent: 每周一 10:00 -->\n<key>Label</key>\n<string>com.user.session-memory-extractor</string>\n<key>ProgramArguments</key>\n<array>\n    <string>/bin/bash</string>\n    <string>/path/to/session-memory-extractor.sh</string>\n    <string>--agent</string>\n    <string>main</string>\n</array>\n<key>StartCalendarInterval</key>\n<dict>\n    <key>Weekday</key><integer>1</integer>\n    <key>Hour</key><integer>10</integer>\n    <key>Minute</key><integer>0</integer>\n</dict>\n```\n\n---\n\n## 功能对比\n\n| 功能 | 内置 Compaction | 内置 Dreaming | 本 Skill |\n|------|:---:|:---:|:---:|\n| 从 .jsonl 提炼内容 | ❌ | ❌ | ✅ |\n| 写入 memory/ | 仅 compaction 时 | 仅 light 阶段 | ✅ |\n| 提炼后删除原始文件 | ❌ | ❌ | ✅ |\n| 释放磁盘空间 | ❌ | ❌ | ✅ |\n| 支持 dry-run 预览 | ❌ | ❌ | ✅ |\n| 配置文件化 | ❌ | ❌ | ✅ |\n\n---\n\n## 文件结构\n\n```\nsession-memory-extractor/\n├── SKILL.md                    ← 本文件\n├── config.env.example           ← 配置示例（下载后复制为 config.env）\n├── config.env                   ← 用户配置（下载更新时保留）\n├── session-memory-extractor.sh  ← 主入口\n├── run_extractor.py            ← Python 处理器\n├── extract_session.py          ← AI 提炼\n├── feishu_notify.py            ← 飞书通知\n└── reports/                    ← 运行报告目录\n```\n\n---\n\n## 安全说明\n\n- **API Key 不写入日志**：API Key 只在内存中使用，不写入任何输出文件\n- **auth-profiles.json 读取**：默认从 `~/.openclaw/agents/main/agent/auth-profiles.json` 读取，无需手动配置\n- **环境变量回退**：如果 auth-profiles.json 读取失败，回退到 `MINIMAX_API_KEY` 环境变量\n\n---\n\n## 故障排除\n\n### API 调用失败\n\n检查项：\n1. `config.env` 中 `API_KEY_SOURCE` 是否正确\n2. `auth-profiles.json` 是否存在且包含有效的 API Key\n3. 网络是否正常\n\n### 提炼结果为空\n\n可能原因：\n- session 文件内容已被压缩/加密\n- session 主要是闲聊无实质内容\n- 文件日期未超过 `MIN_AGE_DAYS`\n\n### 磁盘空间未释放\n\n检查项：\n1. 是否有其他进程正在读取 .jsonl 文件\n2. `sessions.json` 是否有写权限\n\nFile v1.0.5:_meta.json\n\n{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.5\",\n  \"publishedAt\": 1780477711744\n}\n\nFile v1.0.5:skill-card.md\n\n## Description: <br>\nExtracts durable memories from old OpenClaw session transcripts, writes decisions, preferences, facts, and todos to memory files, and can clean up the original session logs. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[lmqiang-711](https://clawhub.ai/user/lmqiang-711) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nOpenClaw users and developers use this skill to preview older session logs, extract durable memory entries with MiniMax, and optionally clean up the original session files after explicit confirmation. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: Old OpenClaw session transcripts may be sent to MiniMax for memory extraction. <br>\nMitigation: Review the sessions before use, avoid processing sensitive transcripts, and use the skill only when external processing is acceptable. <br>\nRisk: Feishu notifications may include extracted content snippets. <br>\nMitigation: Keep notifications disabled unless the target user or channel is trusted. <br>\nRisk: Default non-preview runs can permanently delete original session logs. <br>\nMitigation: Run preview first, use dry-run for testing, and back up session files before allowing cleanup. <br>\n\n\n## Reference(s): <br>\n- [ClawHub skill page](https://clawhub.ai/lmqiang-711/session-memory-extractor) <br>\n- [ClawHub homepage metadata](https://clawhub.ai/hasakyi/session-memory-extractor) <br>\n- [Publisher profile](https://clawhub.ai/user/lmqiang-711) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with bash commands and generated memory markdown files] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May call MiniMax for extraction, may send Feishu notifications, and may delete original session logs during non-preview runs.] <br>\n\n## Skill Version(s): <br>\n1.0.5 (source: frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v1.0.4: 3 files, 6251 bytes\n\nFiles: skill-card.md (2678b), SKILL.md (10257b), _meta.json (143b)\n\nFile v1.0.4:SKILL.md\n\n---\nname: Session Memory Extractor\nslug: session-memory-extractor\nversion: 1.0.4\nhomepage: https://clawhub.ai/hasakyi/session-memory-extractor\ndescription: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\nchangelog: \"v1.0.4: 安全修复-收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.3: 修复飞书通知提取数为0的bug（key名extractions→results）；修复预览大小显示0B的bug（stat -f %s→-f %z）；飞书通知增加内容示例展示（3条snippet）；v1.0.2: 支持config.env配置化、快速预览、并行处理、自然语言触发、飞书通知\"\nmetadata: {\"clawhub\":{\"emoji\":\"🧠\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"],\"configPaths\":[\"~/.openclaw/workspace/skills/session-memory-extractor/\"]}}\n---\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## When to Use\n\n用户**明确要求**提炼 session 记忆时，触发本 skill：\n\n| 用户说（中文） | 用户说（英文） | 含义 |\n|---------------|---------------|------|\n| 用 session-memory-extractor 提炼 session 记忆 | use session-memory-extractor to extract session memories | 运行提炼 |\n| 提炼旧 session 记忆 | extract memories from old sessions | 运行提炼 |\n| 运行 session-memory-extractor | run session-memory-extractor | 运行提炼 |\n\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n- ❌「整理 session 记忆」\n- ❌「清理 session 文件」\n- ❌「整理记忆」\n- ❌「清理文件」\n- ❌「SME」单独使用\n\n## 触发命令\n\n识别到上述语句后，**先运行预览**，不直接执行删除：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview\n```\n\n这会快速扫描并显示：\n- 将处理多少个 session\n- 预计耗时\n- 最早/最新文件日期\n\n**⚠️ 确认步骤（必须严格执行）：**\n1. 预览完成后，向用户展示扫描结果\n2. 告知将执行的操作及风险：\n   - **提炼内容**：将提取到 `memory/`，供后续 session 查阅\n   - **删除原始文件**：`.jsonl` 原始文件将被永久删除，**无法恢复**\n   - **隐私风险**：session 中可能包含密码、密钥、敏感对话等，提炼内容会写入 memory/，存在隐私泄露风险\n3. 等待用户**明确输入 `YES`（大写）**后，才执行提炼\n4. 提炼完成后，询问是否删除原始文件，需用户再次**输入 `YES`（大写）**确认删除\n\n用户确认后，再跑实际提炼：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --parallel 3\n```\n\n**可选参数：**\n- `--preview` 快速预览（不执行）\n- `--parallel 3` 并行数（默认 1，建议 3-5）\n- `--min-age 14` 自定义保留天数\n- `--dry-run` 只提炼不删除（需确认后执行）\n\n---\n\n## 版本历史\n\n### v1.0.4 (2026-05-26) — 安全修复\n\n**安全问题修复（来自 ClawHub 安全审计）：**\n- **收窄触发词**：删除宽泛触发词（「整理 session 记忆」「清理 session 文件」），避免用户无意图时误触发导致数据丢失\n- **删除歧义别名**：移除「SME skill」等歧义触发词，减少意外激活概率\n- **强化确认步骤**：明确要求在预览后、执行前、执行后三次确认，确保用户全程知情\n\n### v1.0.3 (2026-05-24)\n\n**Bug 修复：**\n- 飞书通知显示\"（无提炼内容）\"——实际提取了 300 条，原因是 JSON 报告 key 名是 `results` 但代码读的是 `extractions`，现已修复\n- 预览 `total_size=0B`——原因是 macOS 上 `stat -f %s` 返回的是 512 字节块数量而非文件大小，现改用 `stat -f %z`\n\n**体验改进：**\n- 飞书通知新增 3 条提取内容示例（snippet），不只显示数字统计\n- 飞书通知现在会显示所有类型计数（DECISION/PREFERENCE/FACT/TODO），即使某类为 0 也会显示\n\n### v1.0.2 (2026-05-21)\n\n**改进：**\n- 支持 `config.env` 配置文件，所有参数可通过配置文件修改，无需触碰代码\n- 模型选择从硬编码改为可配置（默认 MiniMax-M2）\n- API Key 来源可选择（auth-profiles.json / 环境变量）\n- 新增自然语言触发：用户可通过\"用 sme 整理 session 记忆\"等语句调用\n\n---\n\n## 痛点\n\nOpenClaw 的 Session 文件（`.jsonl` / `.trajectory.jsonl`）越积越多，用了几个月轻松达到数百 MB。\n\n**问题是：**\n- 内置 Compaction 只在上下文快满时触发，不清理历史文件\n- 内置 Dreaming 不会从旧 .jsonl 里提取内容\n- 手动删除 .jsonl = 直接丢失所有上下文\n\n---\n\n## 解决思路\n\n```\n扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件\n```\n\n- **提炼**：用 AI 从原始对话中提取决策、偏好、事实、待办，标注置信度\n- **写入**：追加到 `memory/YYYY-MM-DD.md`，永久保留\n- **删除**：同时清理 sessions.json 和磁盘上的 .jsonl / .trajectory.jsonl\n- **通知**：完成后发送飞书报告（需配置）\n\n---\n\n## 快速开始\n\n### 1. 安装\n\n下载 skill 后，复制配置示例文件：\n\n```bash\ncd ~/.openclaw/workspace/skills/session-memory-extractor\ncp config.env.example config.env\n```\n\n### 2. 配置\n\n编辑 `config.env`，修改以下必填项：\n\n```bash\n# 模型（默认 MiniMax-M2）\nEXTRACTION_MODEL=MiniMax-M2\n\n# API Key 来源：auth_profiles（默认，从 auth-profiles.json 自动读）\nAPI_KEY_SOURCE=auth_profiles\n\n# 保留天数\nMIN_AGE_DAYS=7\n\n# 飞书通知（可选）\nNOTIFY_TARGET=ou_your_open_id_here\nNOTIFY_ENABLED=false\n```\n\n### 3. 运行\n\n```bash\n# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数\nbash session-memory-extractor.sh --agent main --min-age 14\n```\n\n---\n\n## 配置文件详解\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `EXTRACTION_MODEL` | `MiniMax-M2` | AI 提炼使用的模型 |\n| `API_KEY_SOURCE` | `auth_profiles` | API Key 从哪读：`auth_profiles`=从 auth-profiles.json，`env`=从环境变量 |\n| `MIN_AGE_DAYS` | `7` | 超过此天数的 session 文件才会被处理 |\n| `CLEAN_TRAJECTORY` | `true` | 是否清理 .trajectory.jsonl 文件 |\n| `NOTIFY_TARGET` | （空） | 飞书 DM 目标（用户 open_id 或群 chat_id） |\n| `NOTIFY_ENABLED` | `false` | 是否启用飞书通知 |\n| `DRY_RUN` | `false` | dry-run 模式（只提炼不删除） |\n\n---\n\n## 输出格式\n\n### 控制台摘要\n\n```\nSessions processed:   12\nEntries extracted:    31\nTotal bytes freed:   47.3 MB\nMemory written:       memory/2026-05-20.md\n```\n\n### memory/ 写入格式\n\n```markdown\n## Extracted from session: {session-id}\n\n- **[DECISION]** 用户选择了航天赛道作为主要内容方向\n  Confidence: HIGH\n\n- **[PREFERENCE]** 用户喜欢先给结论再展开\n  Confidence: HIGH\n```\n\n---\n\n## 多 Agent 支持\n\n```bash\nbash session-memory-extractor.sh --agent main      # ~/.openclaw/workspace/memory/\nbash session-memory-extractor.sh --agent space      # ~/.openclaw/agents/space/workspace/memory/\nbash session-memory-extractor.sh --agent math-tutor # ~/.openclaw/agents/math-tutor/workspace/memory/\n```\n\n---\n\n## 触发调度\n\nSkill 本身不内置定时，由用户自行配置：\n\n```xml\n<!-- macOS LaunchAgent: 每周一 10:00 -->\n<key>Label</key>\n<string>com.user.session-memory-extractor</string>\n<key>ProgramArguments</key>\n<array>\n    <string>/bin/bash</string>\n    <string>/path/to/session-memory-extractor.sh</string>\n    <string>--agent</string>\n    <string>main</string>\n</array>\n<key>StartCalendarInterval</key>\n<dict>\n    <key>Weekday</key><integer>1</integer>\n    <key>Hour</key><integer>10</integer>\n    <key>Minute</key><integer>0</integer>\n</dict>\n```\n\n---\n\n## 功能对比\n\n| 功能 | 内置 Compaction | 内置 Dreaming | 本 Skill |\n|------|:---:|:---:|:---:|\n| 从 .jsonl 提炼内容 | ❌ | ❌ | ✅ |\n| 写入 memory/ | 仅 compaction 时 | 仅 light 阶段 | ✅ |\n| 提炼后删除原始文件 | ❌ | ❌ | ✅ |\n| 释放磁盘空间 | ❌ | ❌ | ✅ |\n| 支持 dry-run 预览 | ❌ | ❌ | ✅ |\n| 配置文件化 | ❌ | ❌ | ✅ |\n\n---\n\n## 文件结构\n\n```\nsession-memory-extractor/\n├── SKILL.md                    ← 本文件\n├── config.env.example           ← 配置示例（下载后复制为 config.env）\n├── config.env                   ← 用户配置（下载更新时保留）\n├── session-memory-extractor.sh  ← 主入口\n├── run_extractor.py            ← Python 处理器\n├── extract_session.py          ← AI 提炼\n├── feishu_notify.py            ← 飞书通知\n└── reports/                    ← 运行报告目录\n```\n\n---\n\n## 安全说明\n\n- **API Key 不写入日志**：API Key 只在内存中使用，不写入任何输出文件\n- **auth-profiles.json 读取**：默认从 `~/.openclaw/agents/main/agent/auth-profiles.json` 读取，无需手动配置\n- **环境变量回退**：如果 auth-profiles.json 读取失败，回退到 `MINIMAX_API_KEY` 环境变量\n\n---\n\n## 故障排除\n\n### API 调用失败\n\n检查项：\n1. `config.env` 中 `API_KEY_SOURCE` 是否正确\n2. `auth-profiles.json` 是否存在且包含有效的 API Key\n3. 网络是否正常\n\n### 提炼结果为空\n\n可能原因：\n- session 文件内容已被压缩/加密\n- session 主要是闲聊无实质内容\n- 文件日期未超过 `MIN_AGE_DAYS`\n\n### 磁盘空间未释放\n\n检查项：\n1. 是否有其他进程正在读取 .jsonl 文件\n2. `sessions.json` 是否有写权限\n\nFile v1.0.4:_meta.json\n\n{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.4\",\n  \"publishedAt\": 1779760979829\n}\n\nFile v1.0.4:skill-card.md\n\n## Description: <br>\nExtracts decisions, preferences, facts, and todos from older OpenClaw session logs into memory files, then can clean up the original session files after explicit confirmation. <br>\n\nThis skill is ready for commercial/non-commercial use. <br>\n\n## Publisher: <br>\n[lmqiang-711](https://clawhub.ai/user/lmqiang-711) <br>\n\n### License/Terms of Use: <br>\nMIT-0 <br>\n\n\n## Use Case: <br>\nOpenClaw users and developers use this skill to preserve useful context from old session logs as reusable memory while reducing local session storage. It is intended for explicit, user-approved maintenance of session history. <br>\n\n### Deployment Geography for Use: <br>\nGlobal <br>\n\n## Known Risks and Mitigations: <br>\nRisk: The skill handles private session logs that may contain credentials, regulated data, or confidential work. <br>\nMitigation: Use preview or dry-run first, review and redact generated memory before relying on it, and avoid running it on sessions that may contain sensitive material. <br>\nRisk: The skill can permanently delete original .jsonl and .trajectory.jsonl session files. <br>\nMitigation: Require explicit uppercase YES confirmation before extraction and again before deletion; keep backups when retention matters. <br>\nRisk: The release evidence reports broad scope and incomplete packaged runtime files. <br>\nMitigation: Review the actual installed runtime scripts before running the skill and limit execution to trusted local workspaces. <br>\nRisk: Optional notifications can expose extracted memory snippets to a recipient. <br>\nMitigation: Keep notifications disabled unless the target recipient is trusted and the memory content has been reviewed. <br>\n\n\n## Reference(s): <br>\n- [ClawHub Skill Page](https://clawhub.ai/lmqiang-711/session-memory-extractor) <br>\n- [ClawHub Metadata Homepage](https://clawhub.ai/hasakyi/session-memory-extractor) <br>\n\n\n## Skill Output: <br>\n**Output Type(s):** [text, markdown, shell commands, configuration, guidance] <br>\n**Output Format:** [Markdown guidance with bash command examples; generated memories are written as Markdown files.] <br>\n**Output Parameters:** [1D] <br>\n**Other Properties Related to Output:** [May produce console summaries, memory/YYYY-MM-DD.md entries, optional reports, and optional notification content.] <br>\n\n## Skill Version(s): <br>\n1.0.4 (source: frontmatter and server release evidence) <br>\n\n## Ethical Considerations: <br>\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. <br>\n\nArchive v1.0.3: 2 files, 4304 bytes\n\nFiles: SKILL.md (9033b), _meta.json (143b)\n\nFile v1.0.3:SKILL.md\n\n---\nname: Session Memory Extractor\nslug: session-memory-extractor\nversion: 1.0.3\nhomepage: https://clawhub.ai/hasakyi/session-memory-extractor\ndescription: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\nchangelog: \"v1.0.3: 修复飞书通知提取数为0的bug（key名extractions→results）；修复预览大小显示0B的bug（stat -f %s→-f %z）；飞书通知增加内容示例展示（3条snippet）；v1.0.2: 支持config.env配置化、快速预览、并行处理、自然语言触发、飞书通知\"\nmetadata: {\"clawhub\":{\"emoji\":\"🧠\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"],\"configPaths\":[\"~/.openclaw/workspace/skills/session-memory-extractor/\"]}}\n---\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## When to Use\n\n用户说这些话时，触发本 skill：\n\n| 用户说（中文） | 用户说（英文） | 含义 |\n|---------------|---------------|------|\n| 用 session-memory-extractor 整理 session 记忆 | use session-memory-extractor to organize session memory | 运行提炼 |\n| 用 sme 整理 session 记忆 | use sme to organize session memory | 运行提炼 |\n| 提炼旧 session | extract memories from old sessions | 运行提炼 |\n| 整理 session 记忆 | organize session memories | 运行提炼 |\n| 清理 session 文件 | clean up session files | 运行提炼 |\n| 运行 session-memory-extractor | run session-memory-extractor | 运行提炼 |\n| SME 技能 | SME skill | 运行提炼 |\n\n## 触发命令\n\n识别到上述语句后，运行预览：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview\n```\n\n这会快速扫描并显示：\n- 将处理多少个 session\n- 预计耗时\n- 最早/最新文件日期\n\n用户确认后，再跑实际提炼：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --parallel 3\n```\n\n**可选参数：**\n- `--preview` 快速预览（不执行）\n- `--parallel 3` 并行数（默认 1，建议 3-5）\n- `--min-age 14` 自定义保留天数\n- `--dry-run` 只提炼不删除（需确认后执行）\n\n---\n\n## 版本历史\n\n### v1.0.3 (2026-05-24)\n\n**Bug 修复：**\n- 飞书通知显示\"（无提炼内容）\"——实际提取了 300 条，原因是 JSON 报告 key 名是 `results` 但代码读的是 `extractions`，现已修复\n- 预览 `total_size=0B`——原因是 macOS 上 `stat -f %s` 返回的是 512 字节块数量而非文件大小，现改用 `stat -f %z`\n\n**体验改进：**\n- 飞书通知新增 3 条提取内容示例（snippet），不只显示数字统计\n- 飞书通知现在会显示所有类型计数（DECISION/PREFERENCE/FACT/TODO），即使某类为 0 也会显示\n\n### v1.0.2 (2026-05-21)\n\n**改进：**\n- 支持 `config.env` 配置文件，所有参数可通过配置文件修改，无需触碰代码\n- 模型选择从硬编码改为可配置（默认 MiniMax-M2）\n- API Key 来源可选择（auth-profiles.json / 环境变量）\n- 新增自然语言触发：用户可通过\"用 sme 整理 session 记忆\"等语句调用\n\n---\n\n## 痛点\n\nOpenClaw 的 Session 文件（`.jsonl` / `.trajectory.jsonl`）越积越多，用了几个月轻松达到数百 MB。\n\n**问题是：**\n- 内置 Compaction 只在上下文快满时触发，不清理历史文件\n- 内置 Dreaming 不会从旧 .jsonl 里提取内容\n- 手动删除 .jsonl = 直接丢失所有上下文\n\n---\n\n## 解决思路\n\n```\n扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件\n```\n\n- **提炼**：用 AI 从原始对话中提取决策、偏好、事实、待办，标注置信度\n- **写入**：追加到 `memory/YYYY-MM-DD.md`，永久保留\n- **删除**：同时清理 sessions.json 和磁盘上的 .jsonl / .trajectory.jsonl\n- **通知**：完成后发送飞书报告（需配置）\n\n---\n\n## 快速开始\n\n### 1. 安装\n\n下载 skill 后，复制配置示例文件：\n\n```bash\ncd ~/.openclaw/workspace/skills/session-memory-extractor\ncp config.env.example config.env\n```\n\n### 2. 配置\n\n编辑 `config.env`，修改以下必填项：\n\n```bash\n# 模型（默认 MiniMax-M2）\nEXTRACTION_MODEL=MiniMax-M2\n\n# API Key 来源：auth_profiles（默认，从 auth-profiles.json 自动读）\nAPI_KEY_SOURCE=auth_profiles\n\n# 保留天数\nMIN_AGE_DAYS=7\n\n# 飞书通知（可选）\nNOTIFY_TARGET=ou_your_open_id_here\nNOTIFY_ENABLED=false\n```\n\n### 3. 运行\n\n```bash\n# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数\nbash session-memory-extractor.sh --agent main --min-age 14\n```\n\n---\n\n## 配置文件详解\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `EXTRACTION_MODEL` | `MiniMax-M2` | AI 提炼使用的模型 |\n| `API_KEY_SOURCE` | `auth_profiles` | API Key 从哪读：`auth_profiles`=从 auth-profiles.json，`env`=从环境变量 |\n| `MIN_AGE_DAYS` | `7` | 超过此天数的 session 文件才会被处理 |\n| `CLEAN_TRAJECTORY` | `true` | 是否清理 .trajectory.jsonl 文件 |\n| `NOTIFY_TARGET` | （空） | 飞书 DM 目标（用户 open_id 或群 chat_id） |\n| `NOTIFY_ENABLED` | `false` | 是否启用飞书通知 |\n| `DRY_RUN` | `false` | dry-run 模式（只提炼不删除） |\n\n---\n\n## 输出格式\n\n### 控制台摘要\n\n```\nSessions processed:   12\nEntries extracted:    31\nTotal bytes freed:   47.3 MB\nMemory written:       memory/2026-05-20.md\n```\n\n### memory/ 写入格式\n\n```markdown\n## Extracted from session: {session-id}\n\n- **[DECISION]** 用户选择了航天赛道作为主要内容方向\n  Confidence: HIGH\n\n- **[PREFERENCE]** 用户喜欢先给结论再展开\n  Confidence: HIGH\n```\n\n---\n\n## 多 Agent 支持\n\n```bash\nbash session-memory-extractor.sh --agent main      # ~/.openclaw/workspace/memory/\nbash session-memory-extractor.sh --agent space      # ~/.openclaw/agents/space/workspace/memory/\nbash session-memory-extractor.sh --agent math-tutor # ~/.openclaw/agents/math-tutor/workspace/memory/\n```\n\n---\n\n## 触发调度\n\nSkill 本身不内置定时，由用户自行配置：\n\n```xml\n<!-- macOS LaunchAgent: 每周一 10:00 -->\n<key>Label</key>\n<string>com.user.session-memory-extractor</string>\n<key>ProgramArguments</key>\n<array>\n    <string>/bin/bash</string>\n    <string>/path/to/session-memory-extractor.sh</string>\n    <string>--agent</string>\n    <string>main</string>\n</array>\n<key>StartCalendarInterval</key>\n<dict>\n    <key>Weekday</key><integer>1</integer>\n    <key>Hour</key><integer>10</integer>\n    <key>Minute</key><integer>0</integer>\n</dict>\n```\n\n---\n\n## 功能对比\n\n| 功能 | 内置 Compaction | 内置 Dreaming | 本 Skill |\n|------|:---:|:---:|:---:|\n| 从 .jsonl 提炼内容 | ❌ | ❌ | ✅ |\n| 写入 memory/ | 仅 compaction 时 | 仅 light 阶段 | ✅ |\n| 提炼后删除原始文件 | ❌ | ❌ | ✅ |\n| 释放磁盘空间 | ❌ | ❌ | ✅ |\n| 支持 dry-run 预览 | ❌ | ❌ | ✅ |\n| 配置文件化 | ❌ | ❌ | ✅ |\n\n---\n\n## 文件结构\n\n```\nsession-memory-extractor/\n├── SKILL.md                    ← 本文件\n├── config.env.example           ← 配置示例（下载后复制为 config.env）\n├── config.env                   ← 用户配置（下载更新时保留）\n├── session-memory-extractor.sh  ← 主入口\n├── run_extractor.py            ← Python 处理器\n├── extract_session.py          ← AI 提炼\n├── feishu_notify.py            ← 飞书通知\n└── reports/                    ← 运行报告目录\n```\n\n---\n\n## 安全说明\n\n- **API Key 不写入日志**：API Key 只在内存中使用，不写入任何输出文件\n- **auth-profiles.json 读取**：默认从 `~/.openclaw/agents/main/agent/auth-profiles.json` 读取，无需手动配置\n- **环境变量回退**：如果 auth-profiles.json 读取失败，回退到 `MINIMAX_API_KEY` 环境变量\n\n---\n\n## 故障排除\n\n### API 调用失败\n\n检查项：\n1. `config.env` 中 `API_KEY_SOURCE` 是否正确\n2. `auth-profiles.json` 是否存在且包含有效的 API Key\n3. 网络是否正常\n\n### 提炼结果为空\n\n可能原因：\n- session 文件内容已被压缩/加密\n- session 主要是闲聊无实质内容\n- 文件日期未超过 `MIN_AGE_DAYS`\n\n### 磁盘空间未释放\n\n检查项：\n1. 是否有其他进程正在读取 .jsonl 文件\n2. `sessions.json` 是否有写权限\n\nFile v1.0.3:_meta.json\n\n{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.3\",\n  \"publishedAt\": 1779617073796\n}\n\nArchive v1.0.2: 2 files, 3929 bytes\n\nFiles: SKILL.md (8268b), _meta.json (143b)\n\nFile v1.0.2:SKILL.md\n\n---\nname: Session Memory Extractor\nslug: session-memory-extractor\nversion: 1.0.2\nhomepage: https://clawhub.ai/hasakyi/session-memory-extractor\ndescription: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\nchangelog: \"v1.0.2: 支持 config.env 配置化、快速预览、并行处理、自然语言触发、飞书通知\"\nmetadata: {\"clawhub\":{\"emoji\":\"🧠\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"],\"configPaths\":[\"~/.openclaw/workspace/skills/session-memory-extractor/\"]}}\n---\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## When to Use\n\n用户说这些话时，触发本 skill：\n\n| 用户说（中文） | 用户说（英文） | 含义 |\n|---------------|---------------|------|\n| 用 session-memory-extractor 整理 session 记忆 | use session-memory-extractor to organize session memory | 运行提炼 |\n| 用 sme 整理 session 记忆 | use sme to organize session memory | 运行提炼 |\n| 提炼旧 session | extract memories from old sessions | 运行提炼 |\n| 整理 session 记忆 | organize session memories | 运行提炼 |\n| 清理 session 文件 | clean up session files | 运行提炼 |\n| 运行 session-memory-extractor | run session-memory-extractor | 运行提炼 |\n| SME 技能 | SME skill | 运行提炼 |\n\n## 触发命令\n\n识别到上述语句后，运行预览：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview\n```\n\n这会快速扫描并显示：\n- 将处理多少个 session\n- 预计耗时\n- 最早/最新文件日期\n\n用户确认后，再跑实际提炼：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --parallel 3\n```\n\n**可选参数：**\n- `--preview` 快速预览（不执行）\n- `--parallel 3` 并行数（默认 1，建议 3-5）\n- `--min-age 14` 自定义保留天数\n- `--dry-run` 只提炼不删除（需确认后执行）\n\n---\n\n## 版本历史\n\n### v1.0.2 (2026-05-21)\n\n**改进：**\n- 支持 `config.env` 配置文件，所有参数可通过配置文件修改，无需触碰代码\n- 模型选择从硬编码改为可配置（默认 MiniMax-M2）\n- API Key 来源可选择（auth-profiles.json / 环境变量）\n- 新增自然语言触发：用户可通过\"用 sme 整理 session 记忆\"等语句调用\n\n---\n\n## 痛点\n\nOpenClaw 的 Session 文件（`.jsonl` / `.trajectory.jsonl`）越积越多，用了几个月轻松达到数百 MB。\n\n**问题是：**\n- 内置 Compaction 只在上下文快满时触发，不清理历史文件\n- 内置 Dreaming 不会从旧 .jsonl 里提取内容\n- 手动删除 .jsonl = 直接丢失所有上下文\n\n---\n\n## 解决思路\n\n```\n扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件\n```\n\n- **提炼**：用 AI 从原始对话中提取决策、偏好、事实、待办，标注置信度\n- **写入**：追加到 `memory/YYYY-MM-DD.md`，永久保留\n- **删除**：同时清理 sessions.json 和磁盘上的 .jsonl / .trajectory.jsonl\n- **通知**：完成后发送飞书报告（需配置）\n\n---\n\n## 快速开始\n\n### 1. 安装\n\n下载 skill 后，复制配置示例文件：\n\n```bash\ncd ~/.openclaw/workspace/skills/session-memory-extractor\ncp config.env.example config.env\n```\n\n### 2. 配置\n\n编辑 `config.env`，修改以下必填项：\n\n```bash\n# 模型（默认 MiniMax-M2）\nEXTRACTION_MODEL=MiniMax-M2\n\n# API Key 来源：auth_profiles（默认，从 auth-profiles.json 自动读）\nAPI_KEY_SOURCE=auth_profiles\n\n# 保留天数\nMIN_AGE_DAYS=7\n\n# 飞书通知（可选）\nNOTIFY_TARGET=ou_your_open_id_here\nNOTIFY_ENABLED=false\n```\n\n### 3. 运行\n\n```bash\n# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数\nbash session-memory-extractor.sh --agent main --min-age 14\n```\n\n---\n\n## 配置文件详解\n\n| 配置项 | 默认值 | 说明 |\n|--------|--------|------|\n| `EXTRACTION_MODEL` | `MiniMax-M2` | AI 提炼使用的模型 |\n| `API_KEY_SOURCE` | `auth_profiles` | API Key 从哪读：`auth_profiles`=从 auth-profiles.json，`env`=从环境变量 |\n| `MIN_AGE_DAYS` | `7` | 超过此天数的 session 文件才会被处理 |\n| `CLEAN_TRAJECTORY` | `true` | 是否清理 .trajectory.jsonl 文件 |\n| `NOTIFY_TARGET` | （空） | 飞书 DM 目标（用户 open_id 或群 chat_id） |\n| `NOTIFY_ENABLED` | `false` | 是否启用飞书通知 |\n| `DRY_RUN` | `false` | dry-run 模式（只提炼不删除） |\n\n---\n\n## 输出格式\n\n### 控制台摘要\n\n```\nSessions processed:   12\nEntries extracted:    31\nTotal bytes freed:   47.3 MB\nMemory written:       memory/2026-05-20.md\n```\n\n### memory/ 写入格式\n\n```markdown\n## Extracted from session: {session-id}\n\n- **[DECISION]** 用户选择了航天赛道作为主要内容方向\n  Confidence: HIGH\n\n- **[PREFERENCE]** 用户喜欢先给结论再展开\n  Confidence: HIGH\n```\n\n---\n\n## 多 Agent 支持\n\n```bash\nbash session-memory-extractor.sh --agent main      # ~/.openclaw/workspace/memory/\nbash session-memory-extractor.sh --agent space      # ~/.openclaw/agents/space/workspace/memory/\nbash session-memory-extractor.sh --agent math-tutor # ~/.openclaw/agents/math-tutor/workspace/memory/\n```\n\n---\n\n## 触发调度\n\nSkill 本身不内置定时，由用户自行配置：\n\n```xml\n<!-- macOS LaunchAgent: 每周一 10:00 -->\n<key>Label</key>\n<string>com.user.session-memory-extractor</string>\n<key>ProgramArguments</key>\n<array>\n    <string>/bin/bash</string>\n    <string>/path/to/session-memory-extractor.sh</string>\n    <string>--agent</string>\n    <string>main</string>\n</array>\n<key>StartCalendarInterval</key>\n<dict>\n    <key>Weekday</key><integer>1</integer>\n    <key>Hour</key><integer>10</integer>\n    <key>Minute</key><integer>0</integer>\n</dict>\n```\n\n---\n\n## 功能对比\n\n| 功能 | 内置 Compaction | 内置 Dreaming | 本 Skill |\n|------|:---:|:---:|:---:|\n| 从 .jsonl 提炼内容 | ❌ | ❌ | ✅ |\n| 写入 memory/ | 仅 compaction 时 | 仅 light 阶段 | ✅ |\n| 提炼后删除原始文件 | ❌ | ❌ | ✅ |\n| 释放磁盘空间 | ❌ | ❌ | ✅ |\n| 支持 dry-run 预览 | ❌ | ❌ | ✅ |\n| 配置文件化 | ❌ | ❌ | ✅ |\n\n---\n\n## 文件结构\n\n```\nsession-memory-extractor/\n├── SKILL.md                    ← 本文件\n├── config.env.example           ← 配置示例（下载后复制为 config.env）\n├── config.env                   ← 用户配置（下载更新时保留）\n├── session-memory-extractor.sh  ← 主入口\n├── run_extractor.py            ← Python 处理器\n├── extract_session.py          ← AI 提炼\n├── feishu_notify.py            ← 飞书通知\n└── reports/                    ← 运行报告目录\n```\n\n---\n\n## 安全说明\n\n- **API Key 不写入日志**：API Key 只在内存中使用，不写入任何输出文件\n- **auth-profiles.json 读取**：默认从 `~/.openclaw/agents/main/agent/auth-profiles.json` 读取，无需手动配置\n- **环境变量回退**：如果 auth-profiles.json 读取失败，回退到 `MINIMAX_API_KEY` 环境变量\n\n---\n\n## 故障排除\n\n### API 调用失败\n\n检查项：\n1. `config.env` 中 `API_KEY_SOURCE` 是否正确\n2. `auth-profiles.json` 是否存在且包含有效的 API Key\n3. 网络是否正常\n\n### 提炼结果为空\n\n可能原因：\n- session 文件内容已被压缩/加密\n- session 主要是闲聊无实质内容\n- 文件日期未超过 `MIN_AGE_DAYS`\n\n### 磁盘空间未释放\n\n检查项：\n1. 是否有其他进程正在读取 .jsonl 文件\n2. `sessions.json` 是否有写权限\n\nFile v1.0.2:_meta.json\n\n{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.2\",\n  \"publishedAt\": 1779355741788\n}\n\nArchive v1.0.0: 2 files, 2334 bytes\n\nFiles: SKILL.md (3965b), _meta.json (143b)\n\nFile v1.0.0:SKILL.md\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## 痛点\n\nOpenClaw 的 Session 文件（`.jsonl` / `.trajectory.jsonl`）越积越多，用了几个月轻松达到数百 MB。\n\n**问题是：**\n- 内置 Compaction 只在上下文快满时触发，不清理历史文件\n- 内置 Dreaming 不会从旧 .jsonl 里提取内容\n- 手动删除 .jsonl = 直接丢失所有上下文\n\n---\n\n## 解决思路\n\n```\n扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件\n```\n\n- **提炼**：用 AI 从原始对话中提取决策、偏好、事实、待办，标注置信度\n- **写入**：追加到 `memory/YYYY-MM-DD.md`，永久保留\n- **删除**：同时清理 sessions.json 和磁盘上的 .jsonl / .trajectory.jsonl\n- **通知**：完成后发送飞书报告\n\n---\n\n## 使用方法\n\n### 前置条件\n\n- OpenClaw `memory-core` 插件已启用\n- MiniMax API Key（用于 AI 提炼）\n\n### 运行命令\n\n```bash\n# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数（默认 7 天）\nbash session-memory-extractor.sh --agent main --min-age 14\n```\n\n---\n\n## 输出格式\n\n### 控制台摘要\n\n```\nSessions processed:   12\nEntries extracted:    31\nTotal bytes freed:   47.3 MB\nMemory written:       memory/2026-05-20.md\n```\n\n### 飞书通知\n\n```\n🧠 Session Memory Extractor | main\n\n✅ 提炼完成\n\n📊 处理摘要:\n  • Session: 12 个\n  • 提炼: 31 条\n  • 释放: 47.3 MB\n\n💾 磁盘变化:\n  • .jsonl: 732 → 720 个\n  • .trajectory: 193 → 188 个\n\n📝 提炼内容已写入: memory/2026-05-20.md\n```\n\n### memory/ 写入格式\n\n```markdown\n## Extracted from session: {session-id}\n\n- **[DECISION]** 用户选择了航天赛道作为主要内容方向\n  Confidence: HIGH\n\n- **[PREFERENCE]** 用户喜欢先给结论再展开\n  Confidence: HIGH\n```\n\n---\n\n## 多 Agent 支持\n\n```bash\nbash session-memory-extractor.sh --agent main      # ~/.openclaw/workspace/memory/\nbash session-memory-extractor.sh --agent space      # ~/.openclaw/agents/space/workspace/memory/\nbash session-memory-extractor.sh --agent math-tutor # ~/.openclaw/agents/math-tutor/workspace/memory/\n```\n\n---\n\n## 触发调度\n\nSkill 本身不内置定时，由用户自行配置：\n\n```xml\n<!-- macOS LaunchAgent: 每周一 10:00 -->\n<key>Label</key>\n<string>com.user.session-memory-extractor</string>\n<key>ProgramArguments</key>\n<array>\n    <string>/bin/bash</string>\n    <string>/path/to/session-memory-extractor.sh</string>\n    <string>--agent</string>\n    <string>main</string>\n</array>\n<key>StartCalendarInterval</key>\n<dict>\n    <key>Weekday</key><integer>1</integer>\n    <key>Hour</key><integer>10</integer>\n    <key>Minute</key><integer>0</integer>\n</dict>\n```\n\n---\n\n## 功能对比\n\n| 功能 | 内置 Compaction | 内置 Dreaming | 本 Skill |\n|------|:---:|:---:|:---:|\n| 从 .jsonl 提炼内容 | ❌ | ❌ | ✅ |\n| 写入 memory/ | 仅 compaction 时 | 仅 light 阶段 | ✅ |\n| 提炼后删除原始文件 | ❌ | ❌ | ✅ |\n| 释放磁盘空间 | ❌ | ❌ | ✅ |\n| 支持 dry-run 预览 | ❌ | ❌ | ✅ |\n\n---\n\n## 文件结构\n\n```\nsession-memory-extractor/\n├── SKILL.md                    ← 本文件\n├── session-memory-extractor.sh  ← 主入口\n├── run_extractor.py            ← Python 处理器\n├── extract_session.py          ← AI 提炼\n└── feishu_notify.py           ← 飞书通知\n```\n\nFile v1.0.0:_meta.json\n\n{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.0\",\n  \"publishedAt\": 1779274101847\n}","readmeExcerpt":"Skill: Session Memory Extractor Owner: lmqiang-711 Summary: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-22T05:06:51.758Z | user v1.0.6: 提炼失败的 session 文件自动 Quarantine，彻底杜绝数据静默丢失。 - 引入隔离机制：只有提炼成功并检测到 __EXTRACT_OK__ marker 后才写 memory/ 并删除原始文件。 - 提炼失败或无效结构（内容","codeSnippets":[],"executableExamples":[{"language":"bash","snippet":"bash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview"},{"language":"bash","snippet":"bash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --parallel 3"},{"language":"text","snippet":"扫描 session 目录 → AI 提炼关键内容 → 写入 memory/ → 删除原始文件"},{"language":"bash","snippet":"cd ~/.openclaw/workspace/skills/session-memory-extractor\ncp config.env.example config.env"},{"language":"bash","snippet":"# 模型（默认 MiniMax-M2）\nEXTRACTION_MODEL=MiniMax-M2\n\n# API Key 来源：auth_profiles（默认，从 auth-profiles.json 自动读）\nAPI_KEY_SOURCE=auth_profiles\n\n# 保留天数\nMIN_AGE_DAYS=7\n\n# 飞书通知（可选）\nNOTIFY_TARGET=ou_your_open_id_here\nNOTIFY_ENABLED=false"},{"language":"bash","snippet":"# 完整提取 + 清理\nbash session-memory-extractor.sh --agent main\n\n# 预览模式（只提炼，不删除）\nbash session-memory-extractor.sh --agent main --dry-run\n\n# 自定义保留天数\nbash session-memory-extractor.sh --agent main --min-age 14"}],"parameters":null,"dependencies":[],"permissions":[],"extractedFiles":[{"path":"SKILL.md","content":"---\nname: Session Memory Extractor\nslug: session-memory-extractor\nversion: 1.0.6\nhomepage: https://clawhub.ai/hasakyi/session-memory-extractor\ndescription: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。\nchangelog: \"v1.0.6: 安全加固-提炼失败的文件 Quarantine 不删除（__EXTRACT_OK__ marker 验证 + quarantine.log 审计）；v1.0.5: 修复审计问题-统一preview/dry-run语义+强化隐私保护建议+收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.4: 安全修复-收窄触发词避免误触发+删除歧义别名SME+强化删除前确认；v1.0.3: 修复飞书通知提取数为0的bug（key名extractions→results）；修复预览大小显示0B的bug（stat -f %s→-f %z）；飞书通知增加内容示例展示（3条snippet）；v1.0.2: 支持config.env配置化、快速预览、并行处理、自然语言触发、飞书通知\"\nmetadata: {\"clawhub\":{\"emoji\":\"🧠\",\"requires\":{\"bins\":[\"python3\"]},\"os\":[\"linux\",\"darwin\",\"win32\"],\"configPaths\":[\"~/.openclaw/workspace/skills/session-memory-extractor/\"]}}\n---\n\n# Session Memory Extractor\n\n> cn: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失。\n>\n> en: OpenClaw's answer to Claude-Mem (71k GitHub stars): AI-scans old .jsonl/.trajectory.jsonl files, extracts decisions and facts into memory/, then safely deletes raw files. Extract first, cleanup second — context preserved, disk freed.\n\n---\n\n## When to Use\n\n用户**明确要求**提炼 session 记忆时，触发本 skill：\n\n| 用户说（中文） | 用户说（英文） | 含义 |\n|---------------|---------------|------|\n| 用 session-memory-extractor 提炼 session 记忆 | use session-memory-extractor to extract session memories | 运行提炼 |\n| 提炼旧 session 记忆 | extract memories from old sessions | 运行提炼 |\n| 运行 session-memory-extractor | run session-memory-extractor | 运行提炼 |\n\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n**⚠️ 以下宽泛表达不触发技能（避免误触发导致数据丢失）：**\n- ❌「整理 session 记忆」\n- ❌「清理 session 文件」\n- ❌「整理记忆」\n- ❌「清理文件」\n- ❌「SME」单独使用\n\n## 触发命令\n\n识别到上述语句后，**先运行预览**，不直接执行删除：\n```bash\nbash ~/.openclaw/workspace/skills/session-memory-extractor/session-memory-extractor.sh --agent main --preview\n```\n\n**参数说明：**\n\n| 参数 | 作用 |\n|------|------|\n| `--preview` | 仅扫描并显示统计数字（多少文件、多大空间、最早/最新日期），**不提炼、不删除、不修改任何数据** |\n| `--dry-run` | 完整执行一次提炼（写入 memory/），但**不删除**原始文件，适合验证提炼质量 |\n| `--parallel N` | 并行数，建议 3-5 |\n| `--min-age 14` | 自定义保留天数 |\n\n**⚠️ 确认步骤（必须严格执行）：**\n1. 预览完成后，向用户展示扫描结果\n2. 告知将执行的操作及风险：\n   - **提炼内容**：将提取到 `memory/`，供后续 session 查阅\n   - **删除原始文件**：提炼成功的 `.jsonl` 原始文件将被永久删除，**无法恢复**\n   - **提炼失败的文件**：v1.0.6+ 自动 Quarantine（重命名为 `.quarantined-<reason>-<ts>.jsonl`），原文件**保留不删**，记录到 `reports/quarantine.log`\n   - **隐私风险**：session 中可能包含密码、密钥、敏感对话等，提炼内容会写入 memory/，存在隐私泄露风险\n3. 等待用户**明确输入 `YES`（大写）**后，才执行提炼\n4. 提炼完成后，询问是否删除原始文件，需用户再次**输入 `YES`（大写）**确认删除\n\n**⚠️ v1.0.6 安全保证：**\n提炼失败的 session **绝对不会被静默删除**。三种隔离机制：\n1. **marker 验证**：`extract_session.py` 输出 `__EXTRACT_OK__` marker，runner 必须看到这个 marker 才认定提炼成功\n2. **内容验证**：提取内容必须 ≥ 50 字符且至少包含 1 个结构化标记（`[FACT]` / `[LEARN]` / `[TODO]` / `[INSIGHT]` / `[NOTE]` / `[REFERENCE]` / `[DECISION]`），否则视为无效\n3. **Quarantine**：失败的 session 文件被重命名（不删除），保留在 sessions 目录里供事后审查；同时写入 `reports/quarantine.log` 包含失败原因\n\n可用的 Quarantine reason：\n- `no_marker`：API 调"},{"path":"_meta.json","content":"{\n  \"ownerId\": \"kn7emzyk3y4chttgn07ehpxrz584s5vc\",\n  \"slug\": \"session-memory-extractor\",\n  \"version\": \"1.0.6\",\n  \"publishedAt\": 1782104811758\n}"},{"path":"skill-card.md","content":"## Description:\n\nScans old OpenClaw session files, uses AI to extract durable decisions, preferences, facts, and tasks into memory/, then cleans up source session files while quarantining failed extractions.\n\nThis skill is ready for commercial/non-commercial use.\n\n## Publisher:\n\n[lmqiang-711](https://clawhub.ai/user/lmqiang-711)\n\n### License/Terms of Use:\n\nMIT-0\n\n## Use Case:\n\nDevelopers and OpenClaw users use this skill to convert older .jsonl and .trajectory.jsonl session history into persistent memory entries before removing or quarantining the original session files.\n\n### Deployment Geography for Use:\n\nGlobal\n\n## Known Risks and Mitigations:\n\nRisk: Private session history may be sent to MiniMax and persisted into memory files.\n\nMitigation: Use only on agents whose old sessions are acceptable for external processing, run preview or dry-run first, and review or skip sessions that may contain secrets or sensitive business content.\n\nRisk: Normal execution can permanently remove raw session history after writing summarized memories.\n\nMitigation: Keep backups, use dry-run review workflows before normal execution, and confirm that quarantine logs preserve failed extraction cases for audit.\n\nRisk: Feishu notifications can expose extracted summaries to unintended recipients.\n\nMitigation: Keep Feishu notifications disabled unless the recipient or webhook target is trusted and verified.\n\n## Reference(s):\n\n- [ClawHub skill page](https://clawhub.ai/lmqiang-711/skills/session-memory-extractor)\n- [ClawHub metadata homepage](https://clawhub.ai/hasakyi/session-memory-extractor)\n\n## Skill Output:\n\n**Output Type(s):** [Text, Markdown, Files, Shell commands, Configuration]\n\n**Output Format:** [Markdown memory entries, console summaries, JSON reports, and optional notification text]\n\n**Output Parameters:** [1D]\n\n**Other Properties Related to Output:** [May send session content to MiniMax, append extracted memories to memory/YYYY-MM-DD.md, write quarantine audit logs, and delete successfully processed raw session files.]\n\n## Skill Version(s):\n\n1.0.6 (source: frontmatter and server release metadata)\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":"OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。 Skill: Session Memory Extractor Owner: lmqiang-711 Summary: OpenClaw 版 Claude-Mem：自动扫描旧 Session 文件，AI 提炼决策、偏好、事实，追加写入 memory/；同步清理 .jsonl + .trajectory.jsonl，释放数百 MB 磁盘。提炼比清理先跑，记忆不丢失；提炼失败的文件自动 Quarantine 不删，避免静默丢数据。 Tags: latest:1.0.6 Version history: v1.0.6 | 2026-06-22T05:06:51.758Z | user v1.0.6: 提炼失败的 session 文件自动 Quarantine，彻底杜绝数据静默丢失。 - 引入隔离机制：只有提炼成功并检测到 __EXTRACT_OK__ marker 后才写 memory/ 并删除原始文件。 - 提炼失败或无效结构（内容","editorialQuality":{"score":100,"threshold":65,"status":"ready","wordCount":1128,"uniquenessScore":52,"reasons":[]}},"media":{"evidence":{"source":"no-media","verified":false,"confidence":"low","updatedAt":"2026-10-11T07:57:09.341Z","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-11T07:57:09.341Z","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-11T10:50:16.938Z","emptyReason":null},"items":[{"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-10-09T19:11:12.944Z","createdAt":"2026-02-25T03:38:16.584Z","downloads":null},{"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":"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"}]}}}