7.3 KiB
7.3 KiB
MEMORY.md — Nox 🌑
Christophe
- Habite Montlieu-La-Garde, Charente-Maritime (17), axe Bordeaux-Angoulême N10
- Fuseau horaire : Europe/Paris
- Langue : français
Home Assistant
- URL : http://192.168.1.40:8123
- Lumières :
light.dimmer_2→ Entréelight.bar→ Barlight.bibliotheque→ Bibliothèquelight.dimmer_salon→ Salonlight.mezzanine→ Mezzanine
- Caméras :
camera.onvif_ptz→ Caméra Extérieur (double vue, couleur, parking/cour)camera.fi9821ep→ Caméra Salon (Foscam, intérieur)camera.camera_ndeg7→ Caméra n°7 (intérieur, sous-sol/atelier)camera.camera_jarnac_rdc_7→ Caméra Jarnac RDC 7 (intérieur)camera.foscam→ Foscam (intérieur, entrée/pièce de vie)camera.klipper_webcam→ Ender 3 Webcam (imprimante 3D)camera.predator_predator→ Predatorcamera.nono_none→ Nono
- Media Players :
media_player.shield→ SHIELD CUISINEmedia_player.android_tv_cuisine→ Android TV Cuisinemedia_player.shield_salon→ SHIELD SALONmedia_player.android_tv_salon→ Android TV Salonmedia_player.denon_avr_x3400h→ Denon AVR-X3400H
Proxmox
- URL : https://192.168.1.250:8006
- Token : variable d'env
PVE_TOKEN(formatroot@pam!openclaw=<uuid>) — déjà dans .env + docker-compose override - Accès API :
curl -sk -H "Authorization: PVEAPIToken=$PVE_TOKEN" "$PVE_URL/api2/json/nodes" - Parser JSON avec Node.js (pas jq — permission denied dans le conteneur)
- Nodes : mini-pc, ts-651, pve, z820
Proxmox Backup Server (PBS)
- URL : https://192.168.1.91:8007
- Token : variables d'env
PBS_TOKEN_ID+PBS_TOKEN_SECRET— déjà dans .env + docker-compose override - Accès API :
curl -sk -H "Authorization: PBSAPIToken=$PBS_TOKEN_ID:$PBS_TOKEN_SECRET" "$PBS_URL/api2/json/status/datastore-usage" - Datastore :
backups_on_ts651(1.26 TB total)
Outils & Préférences
- Génération d'images : utiliser fal.ai (FAL_KEY), PAS OpenAI
fal-ai/flux/schnell— génération rapide, bon pour photos/artfal-ai/nano-banana-pro— Gemini 3 Pro Image, bon pour affiches/texte/édition d'images
- Captures d'écran : utiliser Playwright Chrome CLI (
/home/node/.cache/ms-playwright/chromium-1208/chrome-linux64/chrome --headless --no-sandbox --disable-gpu --disable-dev-shm-usage --screenshot=...) car l'outil browser fait des captures blanches (modeattachOnly)- Toujours sauvegarder dans le workspace (
/home/node/.openclaw/workspace/) —/tmpest bloqué par la sécurité OpenClaw pour l'envoi de fichiers via Telegram - Les erreurs
dbusen conteneur sont normales et sans impact - Pour interagir avec une page (cliquer sur cookies, boutons...) : utiliser Playwright Node.js installé dans le workspace (
/home/node/.openclaw/workspace/node_modules/playwright) avecexecutablePathpointant vers le chrome Playwright
- Toujours sauvegarder dans le workspace (
- TTS : Edge, voix fr-FR-VivienneMultilingualNeural
- Transcription audio : Groq Whisper
Anytype
- Instance self-hosted : http://192.168.1.150:31009
- Espace principal : OpenClaw (id:
bafyreigt3wmpnm2qduzijfubftw5ixrhqfrjrc2yi6hq2e4cpw6yer7hqq.25d1im923toai) - Skill custom dans
/home/node/.openclaw/workspace/skills/anytype/ - Utiliser cet espace pour tout ce qui concerne Christophe et moi
- Images : ✅ ÇA MARCHE ! Anytype télécharge et internalise les images depuis une URL externe
- Méthode : inclure
dans lebodymarkdown lors d'un POST (création d'objet) - Anytype récupère l'image, lui donne un ID interne (
bafyrei...) et la sert viahttp://127.0.0.1:47800/image/<id> - L'image doit être accessible depuis le serveur Anytype (même réseau local)
- PATCH : utiliser le champ
"markdown"(PAS"body") pour modifier le contenu existant ! - Le format icon doit être
{"format":"emoji","name":"🧪"}et non une string simple - POST (création) : utiliser
"body"pour le contenu - PATCH (modification) : utiliser
"markdown"pour le contenu
- Méthode : inclure
CopyParty (stockage fichiers)
- URL : http://192.168.1.150:3923
- Upload simple via
curl -X PUT "http://192.168.1.150:3923/<chemin>" --data-binary @fichier - Pas d'authentification requise
- Dossier
/anytype/créé pour les fichiers liés à Anytype - Utilisable pour héberger images, schémas, etc. avec lien direct
Podcasts & Vidéos — Transcription
- Je peux récupérer et transcrire des podcasts/vidéos en ligne
- Méthode :
- Utiliser Playwright pour intercepter les requêtes réseau et trouver l'URL du fichier audio (.mp3)
- Télécharger le MP3 avec
curl -sL -A "Mozilla/5.0..." -H "Referer: <site>" <url> -o fichier.mp3 - Transcrire avec Groq Whisper :
curl -X POST https://api.groq.com/openai/v1/audio/transcriptions -H "Authorization: Bearer $GROQ_API_KEY" -F "file=@fichier.mp3" -F "model=whisper-large-v3-turbo" -F "language=fr" -F "response_format=text"
- Testé avec succès sur BFM Business / Simplecast (podcasts hébergés sur simplecastaudio.com)
- Sauvegarder les fichiers dans le workspace, pas dans /tmp
- YouTube : utiliser yt-dlp (binaire dans
/home/node/.openclaw/workspace/yt-dlp)- Transcript via API YouTube (sous-titres auto) :
yt-dlp --write-auto-sub --skip-download --sub-lang fr -o workspace/transcript <url> - Audio pour Whisper :
yt-dlp -x --audio-format mp3 -o workspace/audio.mp3 <url>
- Transcript via API YouTube (sous-titres auto) :
Mémoire Vectorielle (Qdrant)
- Collection :
nox-memorysur Qdrant (http://192.168.1.150:6333) - Stack Portainer :
qdrant(anciennementkilocode-qdrant, renommé 2026-02-22) - Script :
/home/node/.openclaw/workspace/nox-memory.js - Modèle :
text-embedding-3-small(OpenAI, 1536 dims, Cosine) - Accès :
node fetchnatif (Node 22) — curl bloqué par sandbox OpenClaw, mais node fetch fonctionne ✅ - Réseau Docker : le stack doit avoir un réseau
bridgeen plus deswag_lanpour être accessible depuis le LXC - Usage :
node nox-memory.js add "texte" --type fact|semantic|preference|episodic --tags "t1,t2" --importance 1-5 node nox-memory.js search "question naturelle" [--limit 5] [--type fact] node nox-memory.js list [--type fact] [--limit 20] node nox-memory.js stats node nox-memory.js import-md MEMORY.md - MEMORY.md importé (9 chunks, 2026-02-22)
- Utiliser en priorité pour les recherches contextuelles (memory_search reste utile pour le démarrage de session)
- ⚠️ Qdrant charge ~34 collections KiloCode au démarrage → ~30s avant d'être prêt
Leçons apprises
- Toujours prendre un snapshot du LXC 145 (
mini-pc) avant toute modification de config ou installation qui pourrait casser OpenClaw- Commande :
curl -sk -X POST -H "Authorization: PVEAPIToken=$PVE_TOKEN" -H "Content-Type: application/json" -d '{"snapname":"<nom>","description":"<desc>"}' "$PVE_URL/api2/json/nodes/mini-pc/lxc/145/snapshot"
- Commande :
- Toujours vérifier les
friendly_namedans HA pour trouver les entités - Les skills custom sont dans
/home/node/.openclaw/workspace/skills/ - curl est bloqué dans le sandbox OpenClaw pour certaines destinations réseau, mais node fetch (Node 22) fonctionne — utiliser node pour les requêtes HTTP internes quand curl échoue