44 "cell_type" : " markdown" ,
55 "metadata" : {},
66 "source" : [
7- " # 🧠 Episodic Memory Demo\n " ,
7+ " # \ud83e\udde0 Episodic Memory Demo\n " ,
88 " \n " ,
99 " > **Give your agents memory that persists and learns.**\n " ,
1010 " \n " ,
3232 " \n " ,
3333 " ```\n " ,
3434 " Traditional DB: Episodic Memory:\n " ,
35- " ┌─────────────┐ ┌─────────────┐ \n " ,
36- " │ UPDATE ✓ │ │ APPEND ONLY │ \n " ,
37- " │ DELETE ✓ │ │ NO UPDATE │ \n " ,
38- " │ MODIFY ✓ │ │ NO DELETE │ \n " ,
39- " └─────────────┘ └─────────────┘ \n " ,
40- " ↓ ↓ \n " ,
35+ " \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \u250c\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2510 \n " ,
36+ " \u2502 UPDATE \u2713 \u2502 \u2502 APPEND ONLY \u2502 \n " ,
37+ " \u2502 DELETE \u2713 \u2502 \u2502 NO UPDATE \u2502 \n " ,
38+ " \u2502 MODIFY \u2713 \u2502 \u2502 NO DELETE \u2502 \n " ,
39+ " \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \u2514\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2518 \n " ,
40+ " \u2193 \u2193 \n " ,
4141 " Audit gaps Full history\n " ,
4242 " State bugs Time-travel OK\n " ,
4343 " ```\n " ,
5858 "metadata" : {},
5959 "outputs" : [],
6060 "source" : [
61- " !pip install agent-os emk --quiet"
61+ " !pip install -e ../.. emk --quiet"
6262 ]
6363 },
6464 {
9191 " # Store it (immutable - can never be changed)\n " ,
9292 " store.store(episode)\n " ,
9393 " \n " ,
94- " print(\" ✅ Episode stored!\" )\n " ,
94+ " print(\" \u2705 Episode stored!\" )\n " ,
9595 " print(f\" ID: {episode.id}\" )\n " ,
9696 " print(f\" Timestamp: {episode.timestamp}\" )\n " ,
9797 " print(f\" Goal: {episode.goal}\" )"
142142 " \n " ,
143143 " for ep in episodes:\n " ,
144144 " store.store(ep)\n " ,
145- " print(f\" ✅ Stored: {ep.goal[:40]}...\" )\n " ,
145+ " print(f\" \u2705 Stored: {ep.goal[:40]}...\" )\n " ,
146146 " \n " ,
147- " print(f\"\\ n📊 Total episodes in memory: {len(store)}\" )"
147+ " print(f\"\\ n\ud83d\udcca Total episodes in memory: {len(store)}\" )"
148148 ]
149149 },
150150 {
165165 " # Get all episodes\n " ,
166166 " all_episodes = store.list_all()\n " ,
167167 " \n " ,
168- " print(\" 📜 All Episodes:\" )\n " ,
168+ " print(\" \ud83d\udcdc All Episodes:\" )\n " ,
169169 " print(\" -\" * 60)\n " ,
170170 " for ep in all_episodes:\n " ,
171- " status = \" ❌ \ " if \" FAILED\" in ep.result else \" ✅ \"\n " ,
171+ " status = \" \u274c \ " if \" FAILED\" in ep.result else \" \u2705 \"\n " ,
172172 " print(f\" {status} {ep.timestamp.strftime('%Y-%m-%d %H:%M')} | {ep.goal[:40]}\" )"
173173 ]
174174 },
191191 " query = \" How to optimize slow database queries?\"\n " ,
192192 " similar = store.retrieve(query=query, k=3)\n " ,
193193 " \n " ,
194- " print(f\" 🔍 Query: {query}\" )\n " ,
195- " print(\"\\ n📚 Relevant memories:\" )\n " ,
194+ " print(f\" \ud83d\udd0d Query: {query}\" )\n " ,
195+ " print(\"\\ n\ud83d\udcda Relevant memories:\" )\n " ,
196196 " print(\" -\" * 60)\n " ,
197197 " for ep in similar:\n " ,
198- " print(f\"\\ n🎯 Goal: {ep.goal}\" )\n " ,
198+ " print(f\"\\ n\ud83c\udfaf Goal: {ep.goal}\" )\n " ,
199199 " print(f\" Action: {ep.action}\" )\n " ,
200200 " print(f\" Learning: {ep.reflection}\" )"
201201 ]
229229 " )\n " ,
230230 " \n " ,
231231 " store.store(failed_episode)\n " ,
232- " print(\" ❌ Failure recorded!\" )\n " ,
232+ " print(\" \u274c Failure recorded!\" )\n " ,
233233 " print(f\" Reason: {failed_episode.failure_reason}\" )"
234234 ]
235235 },
242242 " # Retrieve both successes and failures\n " ,
243243 " patterns = store.retrieve_with_anti_patterns()\n " ,
244244 " \n " ,
245- " print(\" 📊 Memory Analysis:\" )\n " ,
246- " print(f\" ✅ Successes: {len(patterns['successes'])}\" )\n " ,
247- " print(f\" ❌ Failures: {len(patterns['failures'])}\" )\n " ,
245+ " print(\" \ud83d\udcca Memory Analysis:\" )\n " ,
246+ " print(f\" \u2705 Successes: {len(patterns['successes'])}\" )\n " ,
247+ " print(f\" \u274c Failures: {len(patterns['failures'])}\" )\n " ,
248248 " \n " ,
249249 " if patterns['failures']:\n " ,
250- " print(\"\\ n⚠️ Things to avoid:\" )\n " ,
250+ " print(\"\\ n\u26a0\ufe0f Things to avoid:\" )\n " ,
251251 " for fail in patterns['failures']:\n " ,
252- " print(f\" • {fail.goal}: {fail.failure_reason}\" )"
252+ " print(f\" \u2022 {fail.goal}: {fail.failure_reason}\" )"
253253 ]
254254 },
255255 {
278278 " # Run compression\n " ,
279279 " result = compressor.compress_old_episodes()\n " ,
280280 " \n " ,
281- " print(\" 🌙 Sleep Cycle Complete!\" )\n " ,
281+ " print(\" \ud83c\udf19 Sleep Cycle Complete!\" )\n " ,
282282 " print(f\" Episodes processed: {result['episodes_processed']}\" )\n " ,
283283 " print(f\" Rules generated: {result['rules_generated']}\" )\n " ,
284284 " print(f\" Storage saved: {result['storage_saved_percent']}%\" )"
291291 "outputs" : [],
292292 "source" : [
293293 " # View generated rules\n " ,
294- " print(\" 📖 Semantic Rules (distilled knowledge):\" )\n " ,
294+ " print(\" \ud83d\udcd6 Semantic Rules (distilled knowledge):\" )\n " ,
295295 " print(\" -\" * 60)\n " ,
296296 " for rule in result['rules']:\n " ,
297- " print(f\"\\ n• {rule['pattern']}\" )\n " ,
298- " print(f\" → {rule['insight']}\" )"
297+ " print(f\"\\ n\u2022 {rule['pattern']}\" )\n " ,
298+ " print(f\" \u2192 {rule['insight']}\" )"
299299 ]
300300 },
301301 {
328328 " \n " ,
329329 " # 2. Build context from past experiences\n " ,
330330 " context = \"\\ n\" .join([\n " ,
331- " f\" Past: {ep.goal} → {ep.reflection}\" \n " ,
331+ " f\" Past: {ep.goal} \u2192 {ep.reflection}\" \n " ,
332332 " for ep in relevant\n " ,
333333 " ])\n " ,
334334 " \n " ,
348348 " \n " ,
349349 " # Execute\n " ,
350350 " result = await kernel.execute(learning_agent, \" Optimize the sales dashboard\" )\n " ,
351- " print(f\"\\ n📤 Result: {result}\" )"
351+ " print(f\"\\ n\ud83d\udce4 Result: {result}\" )"
352352 ]
353353 },
354354 {
370370 " for f in [\" demo_memory.jsonl\" , \" agent_memories.jsonl\" ]:\n " ,
371371 " if os.path.exists(f):\n " ,
372372 " os.remove(f)\n " ,
373- " print(f\" 🗑️ Removed {f}\" )"
373+ " print(f\" \ud83d\uddd1\ufe0f Removed {f}\" )"
374374 ]
375375 },
376376 {
432432 },
433433 "nbformat" : 4 ,
434434 "nbformat_minor" : 4
435- }
435+ }
0 commit comments