Wie mintbot mit Dateien umgeht¶
Wenn du deinem mintbot-Agenten ein Foto, ein Dokument, eine Sprachnachricht, eine Tabelle, einen Screenshot oder eine PDF schickst — über Telegram, das Web-Panel oder die API —, dann läuft die Datei auf dem Weg zum Sprachmodell nicht durch die zentrale Infrastruktur von mintbot. Sie landet direkt auf dem eigenen VPS deines Agenten, bleibt dort, solange du willst, und das LLM bekommt eine für sich optimierte Kopie.
Das ist eine leise Designentscheidung mit lauten Folgen. Sie lohnt sich auszubuchstabieren, denn hier unterscheidet sich mintbot am deutlichsten vom üblichen LLM-Chat für Endnutzer.
Der Ablauf von Anfang bis Ende¶
-
Der Upload kommt auf dem Agenten-VPS an. Ein Foto aus Telegram, eine ins Web-Panel gezogene PDF, ein Sprachmemo, ein in den Chat eingefügter Screenshot. Die lokale API des Agenten nimmt die Bytes entgegen, prüft die Magic Bytes, um herauszufinden, was für eine Datei es wirklich ist (Handys und Browser kennzeichnen Dateien erstaunlich oft falsch), bildet einen SHA-256-Hash und schreibt sie unter
/var/lib/mintbot-agent/uploads/<shard>/<sha256>.<ext>auf den eigenen VPS deines Agenten. Ein Eintrag im lokalen Katalog hält Quelle (telegram / panel / api), Uploader-ID, MIME-Typ und Originaldateinamen fest. -
Das Original ist unantastbar. Ab diesem Punkt verändert nichts innerhalb von mintbot die gespeicherte Datei jemals wieder. Adapter, die sie für das LLM aufbereiten, erzeugen nur Arbeitskopien — verkleinerte JPEGs, umkodierten Text, extrahierte Vorschaubilder. Das Byte-für-Byte-Original bleibt auf der Platte, bis du es über den Dateimanager des Agenten löschst. Es gibt keinen zentralen Speicher, keinen Aufbewahrungs-Timer und kein Durchsickern zwischen Agenten: Jeder Agenten-VPS kennt nur die Uploads seines eigenen Besitzers.
-
Das Modell bekommt eine LLM-optimierte Version. Wenn der Agent beschließt, dem LLM die Datei zu zeigen, wählt ein kleiner Dispatcher anhand von MIME-Typ und Dateiendung den passenden Adapter, und der Adapter erzeugt Inhaltsblöcke, die das Modell lesen kann:
Adapter Verarbeitet Ausgabe Image JPG, PNG, WebP, GIF, HEIC (iPhone), AVIF und alles andere, was Pillow öffnen kann Auf 1568 px lange Kante skaliert, als JPEG q85 neu kodiert, base64-inline im Modellkontext PDF .pdf≤ 32 MBBase64-inline als natives PDF (Anthropic-Modelle lesen es direkt) Text .md,.csv,.json,.yaml, Quellcode (.py,.js,.ts,.go,.rs, …), Logs, DiffsUTF-8-dekodiert (latin-1 als Fallback), bis zu einer Größengrenze inline als Text Audio .mp3,.ogg,.opus,.m4a,.wav,.flacTelegram-Sprachnachrichten transkribiert der Bot bereits inline; direkte Uploads bekommen derzeit einen Platzhalter, Whisper-STT folgt in einer späteren Ausbaustufe Video .mp4,.mov,.webm,.mkvVorerst Platzhalter; ffmpeg-Keyframes und Audio-Transkript folgen in einer späteren Ausbaustufe Office docs .docx,.xlsx,.pptx,.odt,.ods,.odpVorerst Platzhalter; native Textextraktion (python-docx / openpyxl / python-pptx) folgt in einer späteren Ausbaustufe Unknown Alles andere Text-Platzhalter: „Der Nutzer hat eine <mime>-Datei angehängt, sie liegt auf der Platte unter Upload-ID<id>“ — so kann das Modell zumindest darüber sprechen, was geschickt wurdeJede Umwandlung wird neben dem Original als
<sha256>.cache/v<N>.jsonzwischengespeichert, sodass die Datei beim zweiten Mal sofort geladen ist. Wird die Adapterversion erhöht, wird der Cache automatisch ungültig. -
Keine ablaufenden URLs im Modellkontext. Wenn ein Bild oder eine PDF ans LLM geht, wird es in derselben Runde base64-inline eingebettet — keine URL, die später ins Leere läuft, kein signierter Link mit Ablaufzeit. Bei größeren Dateien, bei denen das Modell nur einen Verweis braucht, ist die URL eine interne
https://agent<id>.<domain>/<panel_token>/api/local/uploads/<upload_id>/raw— geschützt durch das eigene Panel-Token deines Agenten und gültig, solange die Datei auf der Platte liegt.
Warum das besser ist als der übliche LLM-Chat¶
Wenn du ein Foto in ChatGPT oder eine PDF in Claude.ai hochlädst, wandert die Datei in den Speicher des Anbieters, wird dieser Unterhaltung zugeordnet, und die Aufbewahrungsrichtlinie des Anbieters entscheidet, wann sie verschwindet. Ab einem gewissen Alter ist die Datei weg, selbst wenn du die Unterhaltung, zu der sie gehörte, noch sehen kannst. Ein Anbieterwechsel bedeutet: von vorn anfangen.
Ein bekannter Stolperstein bei Telegram-Bots macht den Unterschied greifbar. Telegram selbst behält für jedes Foto eine permanente file_id, aber Drittanbieter-Bots, die eine Telegram-file_id abrufen, bekommen eine temporäre URL, die nach 24 Stunden abläuft. Ältere Bots, die auf das Foto von gestern verweisen, liefern einen 404. mintbot löst das ein für alle Mal: Sieht es eine Telegram-Datei zum ersten Mal, holt es die Bytes über die dauerhaft gültige file_id neu und kopiert sie ins Archiv deines Agenten. Ab diesem Moment gehört das Foto dir.
Aus diesem Design folgen drei Dinge:
- Die Dateien gehören dir, nicht dem LLM-Anbieter. Wechselst du nächsten Monat von Claude zu GPT-5, kommt deine Dateihistorie unverändert mit, weil sie auf deinem VPS liegt — nicht im Speicher eines Anbieters.
- Du kannst später noch einmal nachfragen. „Vor drei Monaten hast du einen Vertrag für mich analysiert — kannst du ihn mit diesem neuen Entwurf vergleichen?“ funktioniert, weil das Original noch auf der Platte liegt. Im üblichen Chat ist die ältere Datei meist längst weg.
- Das Modell bekommt immer die Version, mit der es am besten arbeiten kann. Vision-Modelle bekommen das skalierte JPEG, Textleser UTF-8, PDF-Leser natives PDF. Handys können HEIC hochladen, und es funktioniert einfach — Pillows HEIF-Plugin wird beim Start geladen, und die Magic-Byte-Prüfung fängt Handys ab, die den Upload fälschlich als
application/octet-streamkennzeichnen.
Wo du deine Dateien verwaltest¶
Das Web-Panel des Agenten hat in der oberen Leiste einen Dateimanager. Er zeigt den gesamten Agenten-VPS, und das Upload-Archiv unter /var/lib/mintbot-agent/uploads/ ist der Teil, den deine Unterhaltungen füllen. Von dort aus kannst du:
- Hochgeladene Dateien umbenennen, löschen oder verschieben
- Sie nach Datum, Quelle oder Dateiname durchsuchen
- Neue Uploads per Drag-and-Drop hinzufügen (in Blöcken übertragen, daher ohne feste Größengrenze — du kannst sehr große Dateien hochladen, bis der freie Speicherplatz deines VPS erschöpft ist)
- Kleine Textdateien direkt bearbeiten
Weil Uploads in Blöcken übertragen werden und direkt auf deinem eigenen VPS landen, ist die einzige Obergrenze für die Dateigröße deine Festplatte — mintbot setzt kein eigenes Limit. Videos, Datensätze oder Disk-Images mit mehreren Gigabyte lassen sich problemlos hochladen, solange Platz auf dem Laufwerk ist. Wird es knapp, kannst du den VPS vergrößern oder im selben Panel alte Dateien aufräumen.
Löschst du eine Datei im Panel, verschwinden sowohl der Blob als auch der Katalogeintrag. Der Agent kann sie dem LLM dann nicht mehr zeigen. Das macht das Original zu „deinem“: Du bist der Einzige, der löschen darf.
Unterm Strich¶
Die meisten LLM-Chat-Produkte behandeln deine Uploads als flüchtigen Gesprächskontext. mintbot behandelt sie als deine Daten — gespeichert auf deinem VPS, in deinem Besitz, bei Bedarf in genau die Form gebracht, die das Modell in diesem Moment braucht. Die meisten der interessanteren Fähigkeiten von mintbot bauen auf diesem Fundament auf.