Skip to main content

openmemory

Manage persistent memory via OpenMemory MCP. TRIGGER when: user says "remember this", "save to memory", "store this", "recall", "what do you remember about", "check memory", "forget this", "delete memory", "clean up memory", or when agent forms a stable conclusion worth persisting. DO NOT TRIGGER when: user refers to system RAM, process memory, or asks to directly edit memory/MEMORY.md file.

소스 정보

저장소
CaviraOSS/OpenMemory
최근 소스 활동
2026년 8월 24일 17:07
감지된 SKILL.md 언어
영어
스타
4,476
포크
503

설치 방법

기본적으로 소스를 먼저 확인하는 Prompt가 선택됩니다. 직접 명령으로 전환하거나 로컬 사본을 다운로드할 수도 있습니다.

소스 파일 검토

설치 여부를 결정하기 전에 SKILL.md와 SkillsMP에 표시된 보조 파일을 읽어 보세요.

파일 탐색기
11 개 파일

SKILL.md 표시 중

SKILL.md
소스 지침 · 읽기 전용 미리보기
name
openmemory
description
Manage persistent memory via OpenMemory MCP. TRIGGER when: user says "remember this", "save to memory", "store this", "recall", "what do you remember about", "check memory", "forget this", "delete memory", "clean up memory", or when agent forms a stable conclusion worth persisting. DO NOT TRIGGER when: user refers to system RAM, process memory, or asks to directly edit memory/MEMORY.md file.
# OpenMemory — OpenMemory MCP Operation Playbook ## 1. Overview This skill is the operational playbook for **OpenMemory (MCP)** — a **primary** persistent memory system; the file-based fallback is a **secondary index** only (one-line pointers, no full-text copies). Configure `project_id` based on your workspace (see §4 Step 2). --- ## 2. HARD-GATE <HARD-GATE> Any memory operation (save/query/maintain) MUST first go through OpenMemory MCP before considering any file-based fallback. If the auto-memory system attempts a direct write to a local file first, intercept and redirect to this skill's flow. </HARD-GATE> --- ## 3. Flow Router | Trigger Signal | Route | When | |---|---|---| | User says "remember this", "save to memory", "store this" — or agent forms a stable conclusion worth persisting | **SAVE** | Post-task, or at user request | | User says "recall", "what do you remember about", "check memory" — or agent needs historical context before answering | **QUERY** | Pre-task, or when context is insufficient | | User says "forget this", "delete memory", "clean up memory" — or agent discovers outdated/wrong/duplicated memory | **MAINTAIN** | On discovery or user request | --- ## 4. SAVE Flow (5 Steps) ### Step 1 — Classify sector | Content Type | Sector | Example | |---|---|---| | Events / incidents that happened | `episodic` | "2026-05-20 deployment 回滚" | | Facts / knowledge / decisions / preferences | `semantic` | "服务 A 依赖 服务 B 的 API v2" | | Procedures / methods / rules / constraints | `procedural` | "部署前必须运行测试套件" | | User emotions / reactions / preferences | `emotional` | "用户不喜欢冗长的总结" | | Cross-event patterns / insights | `reflective` | "部署失败通常与配置缓存有关" | ### Step 2 — Choose scope | Question | YES | NO | |---|---|---| | Is this specific to the current workspace/project? | `openmemory_store_project` (project_id: `"{{PROJECT_ID}}"`) | Go to next question | | Is this general engineering knowledge? | `openmemory_store` (global) | Default to project scope | Default bias: **project scope** (`openmemory_store_project`). > **Note:** Set `{{PROJECT_ID}}` to your actual project identifier (e.g. `"my-project"`, `"airflow-agent"`, `"data-platform"`). This is a per-workspace configuration. ### Step 3 — Choose type | Situation | `type` parameter | |---|---| | Narrative knowledge, experiences, preferences | `contextual` | | Structured triples that change over time | `factual` (with `facts` array: `subject`/`predicate`/`object`) | | Both narrative and structured content | `both` | ### Step 4 — Compose tags Attach 2–5 lowercase hyphen-separated tags. Examples: - `deployment`, `rollback`, `incident` - `api`, `dependency`, `architecture` - `user-preference`, `feedback` - `pattern`, `decision`, `architecture` - `workflow`, `ci-cd`, `config` ### Step 5 — Execute 1. Call the appropriate MCP tool (`openmemory_store_project` or `openmemory_store`) with sector, type, tags, and content. 2. Optionally add **one line** in a local index file pointing to the stored memory (never copy the full content). --- ## 5. QUERY Flow (4 Steps) ### Step 1 — Determine query strategy | Need | `type` parameter | `sector` parameter | |---|---|---| | Generic "what do you know about X" | `contextual` | Omit | | "What happened" (events) | `contextual` | `episodic` | | "How to do X" (procedures) | `contextual` | `procedural` | | "Current state / status" | `factual` | Omit | | "What you know + changes over time" | `unified` | Omit | ### Step 2 — Set parameters | Parameter | Value | |---|---| | `project_id` | `"{{PROJECT_ID}}"` (always, for project knowledge) | | `k` (max results) | `8` (default; adjust up for broad searches) | | `min_salience` | Omit or set as needed (higher filters to more relevant results) | ### Step 3 — Execute query Call `openmemory_query` with the determined parameters. ### Step 4 — Reinforce if used If the retrieved memory is directly used in the response, call `openmemory_reinforce` with a boost of `0.05`–`0.1` to strengthen its salience for future sessions. --- ## 6. MAINTAIN Flow (3 Steps) ### Step 1 — Scan Call `openmemory_list` with: - `project_id: "{{PROJECT_ID}}"` (omit for global scope) - `sector` filter (optional) - `limit: 20` (adjust for larger scans) ### Step 2 — Evaluate each entry | Condition | Action | |---|---| | Accurate and still relevant | `openmemory_reinforce` (boost 0.1–0.3) | | Outdated / superseded | `openmemory_delete` then re-store corrected version | | Duplicate (same info, different entry) | Delete the entry with lower `salience` | | Noise / useless | `openmemory_delete` | ### Step 3 — Report Summarize to the user: what was deleted, reinforced, or corrected, and why. --- ## 7. Proactive Behaviors ### Pre-task query Before a non-trivial task, silently query OpenMemory for relevant context. **Do not announce** the query itself — only inform the user if the retrieved memory would affect the task's direction or decisions. ### Post-task save When the task produces a **stable conclusion** (not intermediate noise), save it. Briefly inform the user: > "已存入 openmemory: [one-line summary]" ### Correction on discovery If you notice an existing stored memory is factually wrong, immediately: 1. Delete the incorrect entry. 2. Save the corrected version. 3. Inform the user: "已更新 openmemory: [what changed]" --- ## 8. Decision Flow ```dot digraph memory_flow { rankdir=LR; node [shape=box, style=rounded, fontname="sans-serif"]; edge [fontname="sans-serif", fontsize=10]; trigger [label="🔄 Trigger\n(user signal /\nagent discovery)", shape=ellipse, style=filled, fillcolor="#E8F0FE"]; route [label="Route?", shape=diamond, style=filled, fillcolor="#FFF3CD"]; save [label="SAVE\n1. Classify sector\n2. Choose scope\n3. Choose type\n4. Compose tags\n5. Execute", fillcolor="#D4EDDA"]; query [label="QUERY\n1. Strategy\n2. Parameters\n3. Execute\n4. Reinforce", fillcolor="#CCE5FF"]; maint [label="MAINTAIN\n1. Scan\n2. Evaluate each\n3. Report changes", fillcolor="#F8D7DA"]; done [label="Done", shape=doublecircle, style=filled, fillcolor="#E2E3E5"]; trigger -> route; route -> save [label="SAVE signal"]; route -> query [label="QUERY signal"]; route -> maint [label="MAINTAIN signal"]; save -> done; query -> done; maint -> done; } ``` --- ## 9. Constraints (Anti-Pattern Table) | Anti-Pattern | Correct Practice | |---|---| | Write to a local file first without hitting OpenMemory | **Always go through OpenMemory first** | | Use `contextual` type for everything | Use `factual` (with `facts` array) for structured triples | | Default to `global` scope | **Default to `project` scope** | | Query without `project_id` | Always include `project_id: "{{PROJECT_ID}}"` for project knowledge | | Store conversational history / intermediate noise | **Only store stable conclusions** | | Save without tags | Always attach **2–5 tags** | | Perform memory operations silently | Notify user on save; explicitly state when query returns empty |
GitHub에서 보기