From 27c04a28748c20b5400d7edf58fba92d46ae8355 Mon Sep 17 00:00:00 2001 From: duffyduck Date: Wed, 13 May 2026 03:16:20 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20README=20+=20issue=20=E2=80=94=20Memory?= =?UTF-8?q?-Anhaenge=20mit=20Vision-Pipeline=20(Stufen=20A-E=20+=20attach?= =?UTF-8?q?=5Fpaths)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit issue.md: neuer Block "Memory-Anhaenge mit Vision (Stufe A-E + attach_paths)" mit den 7 Punkten (Storage-Layer, Backend-Endpoints, Diagnostic-UI, App-UI, System-Prompt-Integration, Vision via Read- Tool, attach_paths fuer einarmigen memory_save+attach-Workflow). README.md: Diagnostic-Gehirn-Tab-Beschreibung um πŸ“Ž-Anhaenge erweitert, plus neuer Roadmap-Eintrag "Memory-Anhaenge mit Vision-Pipeline" der das End-to-End-Erlebnis erklaert (User-Foto β†’ ARIA liest via Read β†’ extrahiert Kennzeichen/Marken/Texte β†’ speichert als Memory mit Foto- Anhang β†’ spaetere Detail-Fragen lassen ARIA das Bild nochmal lesen). Co-Authored-By: Claude Opus 4.7 (1M context) --- README.md | 3 ++- issue.md | 10 ++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 61377be..df0dd75 100644 --- a/README.md +++ b/README.md @@ -317,7 +317,7 @@ Erreichbar unter `http://:3001`. Teilt das Netzwerk mit der Bridge. ### Tabs - **Main**: Brain/RVS/Proxy-Status, Chat-Test, "ARIA denkt..."-Indikator, End-to-End-Trace, Container-Logs -- **Gehirn**: Memory-Browser (Vector-DB), Suche mit zwei Modi (**πŸ“ Wortlich** = Substring-Match Default + **🧠 Semantisch** mit Score-Threshold), **Advanced Search** (aufklappbares Panel, beliebig viele AND/OR-verknuepfte Felder, + Button fuer mehr Zeilen), Type+Pinned-Filter (greifen auch in der Suche), klappbare Type-Kategorien (Default eingeklappt), Add/Edit/Delete mit Category-Autosuggest, β„Ή-Info-Modal das erklaert welche Types FEST in den Prompt vs. Cold Memory wandern. **πŸ“„ Druckansicht** (Strg+P β†’ PDF). Konversation-Status mit Destillat-Trigger, **Token/Call-Metrics mit Subscription-Quota-Tracking**, Bootstrap & Migration (3 Wiederherstellungs-Wege), Gehirn-Export/Import (tar.gz) +- **Gehirn**: Memory-Browser (Vector-DB), Suche mit zwei Modi (**πŸ“ Wortlich** = Substring-Match Default + **🧠 Semantisch** mit Score-Threshold), **Advanced Search** (aufklappbares Panel, beliebig viele AND/OR-verknuepfte Felder, + Button fuer mehr Zeilen), Type+Pinned-Filter (greifen auch in der Suche), klappbare Type-Kategorien (Default eingeklappt), Add/Edit/Delete mit Category-Autosuggest, **πŸ“Ž Anhaenge** pro Memory (Bilder/PDFs/...): Upload + Thumbnail-Vorschau + Lightbox + LΓΆsch-Button, πŸ“ŽN-Badge in der Liste, automatischer Cleanup beim Memory-Delete. β„Ή-Info-Modal das erklaert welche Types FEST in den Prompt vs. Cold Memory wandern. **πŸ“„ Druckansicht** (Strg+P β†’ PDF). Konversation-Status mit Destillat-Trigger, **Token/Call-Metrics mit Subscription-Quota-Tracking**, Bootstrap & Migration (3 Wiederherstellungs-Wege), Gehirn-Export/Import (tar.gz) - **Skills**: Liste aller Skills mit Logs pro Run, Activate/Deactivate, Export/Import als tar.gz, "von ARIA"-Badge fuer selbst gebaute - **Trigger**: passive Aufweck-Quellen. **Timer** (einmalig, ISO-Timestamp oder via `in_seconds` als Server-Berechnung) + **Watcher** (recurring, mit Condition + Throttle). Liste aktiver Trigger + Logs pro Feuer-Event. Modal mit Type-Dropdown, Live-Anzeige aller verfuegbaren Condition-Variablen (`disk_free_gb`, `hour_of_day`, `current_lat/lon`, `last_user_message_ago_sec`, …) und Condition-Funktionen (`near(lat, lon, m)` fuer GPS-Geofencing). Sicherer Condition-Parser via Python `ast` (Whitelist, kein `eval`). Der System-Prompt enthaelt zusaetzlich einen `## Aktuelle Zeit`-Block (UTC + Europa/Berlin) damit ARIA Timer-Zeitpunkte korrekt setzen kann. - **Dateien**: Browser fuer `/shared/uploads/` mit Multi-Select + "Alle markieren" + Bulk-Download (ZIP bei 2+) + Bulk-Delete. Live-Update der Chat-Bubbles beim Delete. @@ -870,6 +870,7 @@ docker exec aria-brain curl localhost:8080/memory/stats - [x] **Phase B Punkt 5:** Triggers-System (passive Aufweck-Quellen β€” Timer + Watcher mit safe Condition-Parser, GPS-near(), Diagnostic Trigger-Tab, kontinuierliches GPS-Tracking in der App fuer Use-Cases wie Blitzer-Warner). Inklusive Brain β†’ Bridge HTTP-Push (Port 8090 intern) damit Trigger-Antworten ueber RVS in App + Diagnostic + TTS landen. - [x] **Proxy Tool-Use durchreichen**: claude-max-api-proxy patcht via eigene Adapter (`proxy-patches/`) den `tools`/`tool_calls`-Roundtrip β€” Claude Code rief vorher ihre internen Tools (Bash, sleep) statt der ARIA-Brain-Tools (trigger_timer, skill_*, ...). Jetzt funktioniert Tool-Use End-to-End. - [x] **Single Source of Truth β€” Qdrant**: `memory_save`-Tool fuer ARIA, Claude-Code-Auto-Memory abgeklemmt (tmpfs ueber `~/.claude/projects` im Proxy-Container), `brain-import/` zum reinen Drop-Folder degradiert, Cold-Memory mit Score-Threshold (0.30) gegen Embedder-Noise/Crosstalk, Diagnostic-Gehirn-UI mit Wortlich-/Semantisch-Suche, Advanced Search (AND/OR mit + Button), Memory-Druckansicht, Muelltonne pro Chat-Bubble. DB ist jetzt durchgaengig die einzige Wissensquelle, kein paralleles File-Memory mehr. +- [x] **Memory-Anhaenge mit Vision-Pipeline**: Pro Memory koennen Bilder/PDFs/beliebige Dateien angehaengt werden (unter `/shared/memory-attachments//`, max 20 MB). Diagnostic-UI mit Thumbnail-Vorschau + Lightbox, App `memory_saved`-Bubble mit Tap-to-Load via RVS, System-Prompt zeigt Anhang-Pfade. **ARIA sieht Bilder echt** via Claude Code's eingebautes multi-modales `Read`-Tool β€” kein Proxy-Patch noetig. `memory_save` hat `attach_paths`-Parameter sodass ARIA ein User-Foto im selben Tool-Call lesen, Infos extrahieren (Kennzeichen, Marken, Texte) und als Memory + Anhang persistieren kann. Bilder bleiben am Memory haengen β€” bei spaeteren Detail-Fragen liest ARIA das Bild einfach nochmal. - [x] Sprachmodell-Setting wieder funktional (brainModel in runtime.json statt aria-core) - [x] App-Chat-Sync: kompletter Server-Sync bei Reconnect (Server = Source of Truth) + chat_cleared Live-Update. Lokal-only Bubbles (Skill-Notifications, laufende Voice ohne STT) bleiben erhalten. - [x] App: Chat-Suche mit Next/Prev Navigation statt Filter diff --git a/issue.md b/issue.md index 4683c14..99f8298 100644 --- a/issue.md +++ b/issue.md @@ -297,6 +297,16 @@ Skills mit Tool-Use. - [x] **Gehirn-Kategorien standardmaessig eingeklappt**: Beim ersten Aufruf alle Type-Sections collapsed, Stefan klappt gezielt auf was er sehen will. State persistiert in localStorage - [x] **Klappbare Type-Header + Category-AutoSuggest + Info-Modal**: Type-Header (β–Ό/β–Ά) klappbar, Category-Feld im Neu/Edit-Modal mit ``-Vorschlaegen aller existierenden Categories, β„Ή-Button-Modal erklaert welche Types FEST im System-Prompt vs. Cold Memory sind +### Memory-Anhaenge mit Vision (Stufe A-E + attach_paths) + +- [x] **Anhaenge an Memory-Eintraege** β€” Bilder/PDFs/beliebige Dateien koennen an jede Memory gehaengt werden, liegen physisch unter `/shared/memory-attachments//`. Cleanup beim Memory-Delete automatisch. Limit 20 MB pro Datei +- [x] **Backend-Endpoints**: GET/POST/DELETE `/memory/{id}/attachments[/...]`, plus Multipart-Upload-Variante `/upload` fuer Browser-FormData (Base64-Upload sprengt bei grossen Files Bash's ARG_MAX, multipart ist sauberer). Diagnostic-Proxy mit dynamischem Timeout (120s fuer /attachments, 60s sonst) +- [x] **Diagnostic-UI**: Memory-Modal hat Upload-Block (multiple File-Picker), Thumbnail-Vorschau bei Bildern + πŸ“„-Icon bei Files, Klick auf Bild β†’ Lightbox, πŸ—‘ pro Anhang. Memory-Liste zeigt πŸ“ŽN-Badge wenn N > 0 Anhaenge +- [x] **App-UI**: `memory_saved`-Bubble zeigt Anhaenge als Tap-Reihen. Tap β†’ `file_request` ueber RVS β†’ Bridge laedt + bei Bildern Vollbild-Modal, bei anderen Intent-Picker. `file_response`-Handler matched zusaetzlich `memorySaved.attachments[].path` +- [x] **System-Prompt-Integration**: `_attachments_line` in `prompts.py` haengt nach Hot/Cold-Memory-Eintraegen eine `πŸ“Ž Anhaenge: foo.jpg (...) β€” Pfad: ...`-Zeile an. Bei `image/*` zusaetzlich Hinweis β€žBilder kannst du via `Read ` direkt ansehen β€” Claude Code Read ist multi-modal-faehig" +- [x] **ARIA sieht Bilder echt** β€” Stufe E ohne Proxy-Patch: Claude Code's `Read`-Tool ist bereits multi-modal. ARIA ruft `Read /shared/memory-attachments//foto.jpg` β†’ Vision-Modell beschreibt das Bild, ARIA antwortet mit den extrahierten Infos. End-to-End getestet mit Cessna-Foto: ARIA hat D-ECSW-Kennung aus dem Bild gelesen, F172-Variante erkannt (Reims-Aviation), EDWM-ICAO fuer Mariensiel selbst dazu kombiniert. **Persistent**: Bild bleibt am Memory, bei spaeteren Detail-Fragen (β€žwie viele Fenster?") kann ARIA das Bild nochmal lesen ohne dass User es re-uploaden muss +- [x] **`memory_save` mit `attach_paths`** β€” ARIA kann beim Speichern selber Bilder anhaengen. Pfade aus `/shared/uploads/` (z.B. ein User-Foto aus dem Chat) werden serverseitig nach `/shared/memory-attachments//` kopiert. Pfadschutz auf Whitelist-Prefixes (kein Root-FS-Zugriff). Tool-Description weist explizit an: erst `Read ` (Vision-Beschreibung), dann `memory_save(content=, attach_paths=[])` β€” End-to-End-Workflow in einer Tool-Call-Sequenz + ### DB als Single Source of Truth - [x] **`brain-import/` als Drop-Folder** statt aktive Saat: Inhalt komplett gitignored, nur `.gitkeep` + README im Repo. Stefan kippt MDs rein wenn er was migrieren will, klickt im Diagnostic β€žMigration aus brain-import/", fertig. Alte AGENT.md/BOOTSTRAP.md aus dem Repo geworfen (waren teils OpenClaw-Altlasten)