## Voice Pipeline (P3) - Replace openWakeWord daemon with Wyoming Satellite approach - Add Wyoming Satellite service on port 10700 for HA voice pipeline - Update setup.sh with cross-platform sed compatibility (macOS/Linux) - Add version field to Kokoro TTS voice info - Update launchd service loader to use Wyoming Satellite ## Home Assistant Integration (P4) - Add custom conversation agent component (openclaw_conversation) - Fix: Use IntentResponse instead of plain strings (HA API requirement) - Support both HTTP API and CLI fallback modes - Config flow for easy HA UI setup - Add OpenClaw bridge scripts (Python + Bash) - Add ha-ctl utility for HA entity control - Fix: Use context manager for token file reading - Add HA configuration examples and documentation ## Infrastructure - Add mem0 backup automation (launchd + script) - Add n8n workflow templates (morning briefing, notification router) - Add VS Code workspace configuration - Reorganize model files into categorized folders: - lmstudio-community/ - mlx-community/ - bartowski/ - mradermacher/ ## Documentation - Update PROJECT_PLAN.md with Wyoming Satellite architecture - Update TODO.md with completed Wyoming integration tasks - Add OPENCLAW_INTEGRATION.md for HA setup guide ## Testing - Verified Wyoming services running (STT:10300, TTS:10301, Satellite:10700) - Verified OpenClaw CLI accessibility - Confirmed cross-platform compatibility fixes
37 lines
928 B
Python
37 lines
928 B
Python
import os
|
|
from mem0 import Memory
|
|
|
|
config = {
|
|
"vector_store": {
|
|
"provider": "chroma",
|
|
"config": {
|
|
"collection_name": "homeai_memory",
|
|
"path": os.path.expanduser("~/.openclaw/memory/chroma/"),
|
|
}
|
|
},
|
|
"llm": {
|
|
"provider": "ollama",
|
|
"config": {
|
|
"model": "qwen2.5:7b",
|
|
"ollama_base_url": "http://localhost:11434",
|
|
}
|
|
},
|
|
"embedder": {
|
|
"provider": "ollama",
|
|
"config": {
|
|
"model": "nomic-embed-text",
|
|
"ollama_base_url": "http://localhost:11434",
|
|
}
|
|
}
|
|
}
|
|
|
|
m = Memory.from_config(config)
|
|
|
|
# Test storing a memory
|
|
result = m.add("The user's favorite color is blue.", user_id="aodhan")
|
|
print(f"Store result: {result}")
|
|
|
|
# Test searching for the memory
|
|
search_results = m.search("What is the user's favorite color?", user_id="aodhan")
|
|
print(f"Search results: {search_results}")
|