mirror of
https://github.com/Jeuners/agenttwo-tools.git
synced 2026-09-09 15:02:31 +02:00
feat: Bilder im Chat (Vision)
qwen3.5 meldet die Fähigkeit "vision", die bisher ungenutzt blieb. Bilder lassen sich jetzt per Button, Zwischenablage (⌘V) oder Drag & Drop anhängen; eine Nachricht darf auch nur aus einem Bild bestehen. - images.ts: Validierung vor dem Speichern — maximal 4 Bilder je Nachricht, je 6 MB, Typ per Magic Bytes statt per Dateiendung (PNG/JPEG/GIF/WebP). Der WebSocket bekommt dazu ein maxPayload von 32 MB, vorher war er unbegrenzt und Bilder machen Nachrichten deutlich größer. - db.ts: Spalte images samt Migration für bestehende Datenbanken aus agenttwo - ollama.ts: images-Feld je Message; openrouter.ts: OpenAI-Format mit image_url, MIME aus den Magic Bytes statt fest image/png - Composer: Vorschau mit Entfernen-Button, Fehlermeldung bei zu großen oder nicht unterstützten Dateien; ChatMessage zeigt Bilder in der Historie - Bilder wandern in die Chat-Historie und werden bei Folgefragen erneut mitgeschickt, damit Rückfragen zum selben Bild funktionieren Getestet gegen das laufende Modell: ein rendertes PNG (roter Kreis auf weiß) wird korrekt als japanische Flagge beschrieben. Validierung geprüft gegen 5 Bilder, Textdatei mit Bildnamen, kaputtes base64 und 7-MB-Blob — alle abgelehnt. Nebenbei: Branding in UI, Titel und Serverlog auf agenttwo-tools umgestellt. Die localStorage-Keys bleiben unverändert, sonst gingen gespeicherte Einstellungen verloren. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01S1NXUpHbxTusqQmsjrFfbU
This commit is contained in:
parent
e48228c570
commit
adb57ae6e3
17 changed files with 616 additions and 71 deletions
26
README.md
26
README.md
|
|
@ -1,7 +1,7 @@
|
|||
# agenttwo-tools
|
||||
|
||||
> Fork von [agenttwo](https://github.com/Jeuners/agenttwo). Die Basis bleibt dort
|
||||
> unverändert; hier kommen Tool-Calling und Vision dazu. Läuft auf eigenen Ports
|
||||
> unverändert; hier kommen Vision (fertig) und Tool-Calling (geplant) dazu. Läuft auf eigenen Ports
|
||||
> (Backend 8788, Frontend 5174), damit beide Projekte parallel laufen können.
|
||||
> Fixes aus der Basis lassen sich per `git cherry-pick` aus dem Remote
|
||||
> `upstream` übernehmen.
|
||||
|
|
@ -91,6 +91,30 @@ Weitere optionale Variablen mit ihren Defaults:
|
|||
| `PIPER_MODEL` | `server/voices/de_DE-thorsten-high.onnx` |
|
||||
| `ALLOWED_ORIGINS` | (leer — siehe Sicherheit) |
|
||||
|
||||
## Bilder (Vision)
|
||||
|
||||
`qwen3.5` bringt die Fähigkeit `vision` mit, deshalb versteht der Chat Bilder.
|
||||
Anhängen geht auf drei Wegen: Button 🖼 im Composer, Einfügen aus der
|
||||
Zwischenablage (⌘V) oder Drag & Drop auf die Eingabezeile. Eine Nachricht darf
|
||||
auch nur aus einem Bild bestehen.
|
||||
|
||||
Bilder werden zusammen mit der Nachricht in der SQLite-Datei abgelegt und bei
|
||||
Folgefragen erneut mitgeschickt, sodass Rückfragen zum selben Bild funktionieren.
|
||||
Für Ollama gehen sie als `images: [base64]` raus, für OpenRouter im
|
||||
OpenAI-Format als `image_url` mit data-URL — der MIME-Typ wird dabei aus den
|
||||
Magic Bytes bestimmt.
|
||||
|
||||
Grenzen (`server/src/images.ts`): maximal 4 Bilder pro Nachricht, je 6 MB,
|
||||
nur PNG, JPEG, GIF und WebP. Der Typ wird an den Magic Bytes geprüft, nicht am
|
||||
angegebenen Dateinamen; der WebSocket hat dafür ein Payload-Limit von 32 MB.
|
||||
|
||||
Ob das eingestellte Modell Bilder kann, verrät:
|
||||
|
||||
```bash
|
||||
curl -s http://localhost:11434/api/show -d '{"name":"qwen3.5:latest"}' \
|
||||
| python3 -c "import json,sys; print(json.load(sys.stdin)['capabilities'])"
|
||||
```
|
||||
|
||||
## Sicherheit
|
||||
|
||||
Der Server hat **keine Authentifizierung** und lauscht deshalb bewusst nur auf
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue