memory-mimir 2.5.6 → 2.5.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.js +150 -49
- package/dist/cli.js.map +1 -1
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -93,65 +93,133 @@ function writeConfig(configPath, apiKey, mimirUrl) {
|
|
|
93
93
|
const SKILL_MD = `---
|
|
94
94
|
name: mimir-memory
|
|
95
95
|
description: >
|
|
96
|
-
Long-term memory powered by Mimir.
|
|
97
|
-
|
|
98
|
-
You
|
|
96
|
+
Long-term memory powered by Mimir. You can remember across conversations.
|
|
97
|
+
A <memories> block is automatically injected before each conversation with relevant context.
|
|
98
|
+
You have tools to search deeper and store important facts — use them proactively and silently.
|
|
99
99
|
---
|
|
100
100
|
|
|
101
101
|
# Mimir Memory — Behavioral Guide
|
|
102
102
|
|
|
103
103
|
## Core Principle
|
|
104
104
|
|
|
105
|
-
You have long-term memory. Use it naturally
|
|
105
|
+
You have long-term memory. Use it naturally. From the user's perspective, you simply **remember** — never mention tool names, never say "let me search my memory", never expose the mechanics.
|
|
106
106
|
|
|
107
|
-
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
## 1. Reading Your Memories
|
|
110
|
+
|
|
111
|
+
Before each conversation, a \\\`<memories>\\\` block may appear with auto-recalled context. Understand its scope:
|
|
112
|
+
|
|
113
|
+
**What auto-recall covers:**
|
|
114
|
+
- Factual records (event_log): things the user did, said, decided
|
|
115
|
+
- Known entities: people, places, projects the user mentioned
|
|
116
|
+
- Relationships: how entities connect to each other
|
|
117
|
+
|
|
118
|
+
**What auto-recall does NOT cover:**
|
|
119
|
+
- Full conversation summaries (episodes) — it never searches these
|
|
120
|
+
- Raw documents — it never searches these
|
|
121
|
+
- Predictions/plans (foresights) — it never searches these
|
|
122
|
+
|
|
123
|
+
**How auto-recall constructs its query:**
|
|
124
|
+
- Short messages (≤100 chars): uses the user's exact words
|
|
125
|
+
- Long messages (>100 chars): extracts up to 8 English keywords, or first 200 chars for Chinese/Japanese/Korean
|
|
126
|
+
- Basic time keywords (昨天, last week, 上个月, etc.) are auto-detected and used as filters
|
|
127
|
+
|
|
128
|
+
**What this means for you:**
|
|
129
|
+
- If the user asks a simple factual question and \\\`<memories>\\\` has the answer → just answer
|
|
130
|
+
- If the user references a past conversation or wants a summary → \\\`<memories>\\\` won't have it, you need to search
|
|
131
|
+
- If the user's message is long/complex → keyword extraction may have missed key terms, consider searching with a focused query
|
|
132
|
+
- If \\\`<memories>\\\` is empty or doesn't match the question → search proactively
|
|
133
|
+
|
|
134
|
+
---
|
|
135
|
+
|
|
136
|
+
## 2. When to Proactively Search
|
|
137
|
+
|
|
138
|
+
Don't wait for the user to ask you to search. Detect these cues and act silently:
|
|
139
|
+
|
|
140
|
+
### Must search (auto-recall can't help)
|
|
141
|
+
|
|
142
|
+
| Pattern | Why | How to search |
|
|
143
|
+
|---------|-----|---------------|
|
|
144
|
+
| "总结一下我们上次讨论的..." / "summarize what we talked about..." | Needs conversation summaries | \\\`memory_types: ["episode"]\\\` |
|
|
145
|
+
| "我之前发给你的那个文档..." / "that document I shared..." | Needs raw documents | \\\`memory_types: ["raw_doc"]\\\` |
|
|
146
|
+
| References a complex relationship chain | Auto-recall uses fast search without graph traversal | Search without type filter for broadest coverage |
|
|
147
|
+
|
|
148
|
+
### Should search (auto-recall likely insufficient)
|
|
149
|
+
|
|
150
|
+
| Pattern | Why | How to search |
|
|
151
|
+
|---------|-----|---------------|
|
|
152
|
+
| \\\`<memories>\\\` present but doesn't answer the question | Query keywords didn't match | Rephrase with more specific terms |
|
|
153
|
+
| "跟我说说关于 X 的所有事" / "tell me everything about X" | Needs multiple types | Omit memory_types for broadest results |
|
|
154
|
+
| "具体是哪天..." / "exactly when did..." | Needs precise time filtering | Use explicit \\\`start_time\\\`/\\\`end_time\\\` in ISO 8601 |
|
|
155
|
+
| User mentions a person + context auto-recall missed | Auto-recall limited to 12 items | Search with \\\`memory_types: ["entity", "relation"]\\\` and the person's name |
|
|
156
|
+
|
|
157
|
+
### Don't search (auto-recall is enough)
|
|
158
|
+
|
|
159
|
+
- \\\`<memories>\\\` already contains the answer
|
|
160
|
+
- User is asking about something new (not past conversations)
|
|
161
|
+
- User is giving you new information, not asking about old
|
|
162
|
+
|
|
163
|
+
### Query construction tips
|
|
108
164
|
|
|
109
|
-
|
|
165
|
+
Extract the core topic from the user's message — don't pass their full sentence:
|
|
110
166
|
|
|
111
|
-
|
|
112
|
-
|
|
167
|
+
\\\`\\\`\\\`
|
|
168
|
+
User: "还记得上次我跟你说我想换工作的事吗"
|
|
169
|
+
→ query: "换工作 职业规划"
|
|
113
170
|
|
|
114
|
-
|
|
171
|
+
User: "我跟 Caroline 上周讨论的那个设计方案怎么样了"
|
|
172
|
+
→ query: "Caroline 设计方案"
|
|
115
173
|
|
|
116
|
-
|
|
174
|
+
User: "what did we decide about the API rate limiting?"
|
|
175
|
+
→ query: "API rate limiting decision"
|
|
176
|
+
\\\`\\\`\\\`
|
|
117
177
|
|
|
118
|
-
|
|
178
|
+
Include: names, dates, topic keywords.
|
|
179
|
+
Avoid: filler words, full sentences, vague references like "that thing".
|
|
119
180
|
|
|
120
|
-
|
|
181
|
+
### Time filtering
|
|
121
182
|
|
|
122
|
-
|
|
123
|
-
|----------------------------|------------|
|
|
124
|
-
| "还记得我们之前聊的那个项目吗" / "remember when we discussed..." | Search with \\\`memory_types: ["episode"]\\\` — auto-recall doesn't include conversation summaries |
|
|
125
|
-
| "上周我跟你说过..." / "last Tuesday I mentioned..." | Search with time filters (\\\`start_time\\\`/\\\`end_time\\\`) — auto-recall doesn't filter by time |
|
|
126
|
-
| "跟我说说关于 X 的所有信息" / "tell me everything about X" | Search broadly, omit memory_types for widest coverage |
|
|
127
|
-
| You see \\\`<memories>\\\` but they don't answer the user's question | Search with more specific query terms or different memory_types |
|
|
128
|
-
| User asks about a person, place, or relationship | Search with \\\`memory_types: ["entity", "relation"]\\\` |
|
|
129
|
-
| User asks a factual question about the past | Search with \\\`memory_types: ["event_log"]\\\` |
|
|
183
|
+
Auto-recall already detects basic patterns (yesterday, 上周, last month). But for precise control:
|
|
130
184
|
|
|
131
|
-
|
|
185
|
+
| User says | start_time | end_time |
|
|
186
|
+
|-----------|-----------|---------|
|
|
187
|
+
| "三月份的" | 2026-03-01T00:00:00Z | 2026-03-31T23:59:59Z |
|
|
188
|
+
| "去年夏天" | 2025-06-01T00:00:00Z | 2025-09-01T00:00:00Z |
|
|
189
|
+
| "最近三天" | (3 days ago) | (now) |
|
|
132
190
|
|
|
133
|
-
|
|
134
|
-
- User: "还记得上次我跟你说我想换工作的事吗" → query: "换工作 职业规划"
|
|
135
|
-
- User: "Caroline 生日送什么好" → query: "Caroline birthday gift"
|
|
136
|
-
- User: "我们之前讨论的 Chrome 扩展进展怎么样了" → query: "Chrome extension project"
|
|
191
|
+
### memory_types reference
|
|
137
192
|
|
|
138
|
-
|
|
193
|
+
| Type | Contains | When to use |
|
|
194
|
+
|------|----------|-------------|
|
|
195
|
+
| \\\`event_log\\\` | Atomic facts, decisions, events with timestamps | "What did I eat Tuesday?" |
|
|
196
|
+
| \\\`entity\\\` | People, places, projects, concepts | "Who is Caroline?" |
|
|
197
|
+
| \\\`relation\\\` | How entities connect | "How do Arthur and Caroline know each other?" |
|
|
198
|
+
| \\\`episode\\\` | Full conversation summaries | "Summarize our Chrome extension discussion" |
|
|
199
|
+
| \\\`raw_doc\\\` | Documents the user shared | "That PDF I sent you" |
|
|
200
|
+
| \\\`foresight\\\` | Plans, predictions, future intentions | "What did I plan for next quarter?" |
|
|
139
201
|
|
|
140
|
-
|
|
202
|
+
---
|
|
203
|
+
|
|
204
|
+
## 3. When to Store
|
|
141
205
|
|
|
142
|
-
|
|
206
|
+
**After each conversation, the full dialogue is automatically saved.** You don't need to store what was already said.
|
|
143
207
|
|
|
144
|
-
|
|
145
|
-
- **Critical atomic facts** that might get buried: a decision, a preference, a deadline
|
|
208
|
+
Use explicit storage ONLY for:
|
|
146
209
|
|
|
147
|
-
|
|
210
|
+
- **User explicitly asks**: "记住我不喝咖啡" / "remember I'm allergic to shellfish"
|
|
211
|
+
- **Critical atomic facts** that might get buried in a long conversation: a decision, a deadline, a preference
|
|
148
212
|
|
|
149
|
-
|
|
150
|
-
-
|
|
151
|
-
-
|
|
152
|
-
-
|
|
213
|
+
Rules:
|
|
214
|
+
- One fact per store call
|
|
215
|
+
- Include the person's name: "Arthur prefers dark roast coffee" not "prefers dark roast coffee"
|
|
216
|
+
- Don't store things the user just said (auto-capture will save the full conversation)
|
|
217
|
+
- Don't store facts already present in \\\`<memories>\\\`
|
|
218
|
+
- Don't ask "should I remember this?" — if it's clearly important, just store it
|
|
153
219
|
|
|
154
|
-
|
|
220
|
+
---
|
|
221
|
+
|
|
222
|
+
## 4. First Conversation (Onboarding)
|
|
155
223
|
|
|
156
224
|
If no \\\`<memories>\\\` block is present, the user just installed Mimir. Welcome them:
|
|
157
225
|
|
|
@@ -166,23 +234,56 @@ If no \\\`<memories>\\\` block is present, the user just installed Mimir. Welcom
|
|
|
166
234
|
你聊天的重要内容我也会自动捕捉,不用每次都说"记住"。
|
|
167
235
|
---
|
|
168
236
|
|
|
169
|
-
Match the user's language. Keep it short. Do NOT repeat
|
|
237
|
+
Match the user's language. Keep it short. Do NOT repeat onboarding in later conversations where \\\`<memories>\\\` is present.
|
|
238
|
+
|
|
239
|
+
---
|
|
240
|
+
|
|
241
|
+
## 5. Using \\\`<memories>\\\` Naturally
|
|
242
|
+
|
|
243
|
+
- Weave memories into your response — don't list them like a database query result
|
|
244
|
+
- If the answer is in \\\`<memories>\\\`, just answer directly — never say "based on my memory records" or "I found in my memory"
|
|
245
|
+
- If \\\`<memories>\\\` conflicts with what the user just said, **trust the user** — they may have changed their mind
|
|
246
|
+
- If \\\`<memories>\\\` is insufficient, search deeper **silently**, then answer
|
|
247
|
+
|
|
248
|
+
---
|
|
249
|
+
|
|
250
|
+
## 6. Anti-patterns
|
|
251
|
+
|
|
252
|
+
| Never do this | Do this instead |
|
|
253
|
+
|---------------|-----------------|
|
|
254
|
+
| "让我搜索一下记忆..." | Silently search, then answer |
|
|
255
|
+
| "根据我的记忆数据库..." | "你之前提过..." or just answer directly |
|
|
256
|
+
| "I'll use mimir_search to find that" | Just find it and answer |
|
|
257
|
+
| "I found 5 results matching your query" | Synthesize the results into a natural answer |
|
|
258
|
+
| Store every single thing the user says | Let auto-capture handle it |
|
|
259
|
+
| "Do you want me to remember that?" | If it's important, just remember |
|
|
260
|
+
| Show raw memory entries to the user | Paraphrase and integrate naturally |
|
|
261
|
+
|
|
262
|
+
---
|
|
263
|
+
|
|
264
|
+
## 7. Installation
|
|
265
|
+
|
|
266
|
+
When the user asks you to install Mimir (or provides an invite code), run:
|
|
267
|
+
|
|
268
|
+
\\\`\\\`\\\`bash
|
|
269
|
+
npx memory-mimir@latest init --code <INVITE_CODE>
|
|
270
|
+
\\\`\\\`\\\`
|
|
271
|
+
|
|
272
|
+
This single command does everything:
|
|
273
|
+
1. Activates the invite code on the server and creates a device key
|
|
274
|
+
2. Installs the plugin to \\\`~/.openclaw/extensions/memory-mimir/\\\`
|
|
275
|
+
3. Writes the config to \\\`~/.openclaw/openclaw.json\\\`
|
|
276
|
+
4. Installs this SKILL to \\\`~/.openclaw/skills/memory-mimir/\\\`
|
|
170
277
|
|
|
171
|
-
|
|
278
|
+
After the command succeeds, tell the user to **restart the AI agent** (restart OpenClaw / restart the chat). Memory will be active on next conversation.
|
|
172
279
|
|
|
173
|
-
|
|
174
|
-
- Weave relevant memories into your responses naturally — don't list them
|
|
175
|
-
- If the user asks something and the answer is in \\\`<memories>\\\`, just answer — don't say "based on my memory records"
|
|
176
|
-
- If \\\`<memories>\\\` conflicts with what the user just said, trust the user (they may have updated their preference)
|
|
177
|
-
- If \\\`<memories>\\\` is insufficient for the user's question, silently search deeper
|
|
280
|
+
If the user already has an API key (from the dashboard), use:
|
|
178
281
|
|
|
179
|
-
|
|
282
|
+
\\\`\\\`\\\`bash
|
|
283
|
+
npx memory-mimir@latest setup --api-key <API_KEY>
|
|
284
|
+
\\\`\\\`\\\`
|
|
180
285
|
|
|
181
|
-
|
|
182
|
-
- Never say "I found 3 results in my memory database" — just answer naturally
|
|
183
|
-
- Never say "I'll use mimir_search to look that up" — never expose tool names
|
|
184
|
-
- Don't store every single thing the user says — auto-capture handles it
|
|
185
|
-
- Don't ask "would you like me to remember that?" for obvious facts — just remember
|
|
286
|
+
**Important**: Always use \\\`@latest\\\` to ensure the newest version is installed.
|
|
186
287
|
`;
|
|
187
288
|
function installSkill() {
|
|
188
289
|
try {
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|