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 —, wird die Datei auf dem eigenen VPS deines Agenten gespeichert und nirgendwo sonst. Dort bleibt sie, solange du willst, und das LLM bekommt eine eigens dafür aufbereitete Arbeitskopie.
Das ist eine leise Designentscheidung mit lauten Folgen. Es lohnt sich, sie auszubuchstabieren, denn hier unterscheidet sich mintbot besonders deutlich vom üblichen LLM-Chat für Endnutzer.
Der Ablauf von Anfang bis Ende¶
-
Der Upload kommt auf dem Agenten-VPS an. Eine ins Web-Panel gezogene PDF geht direkt auf deinen VPS. Ein Foto oder eine Datei aus Telegram holt der mintbot-Bot bei Telegram ab und reicht sie sofort an deinen VPS weiter — nur durchgeleitet, nie zentral gespeichert. Die lokale API des Agenten 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 nach
/var/lib/mintbot-agent/uploads/<shard>/<sha256>.<ext>. Ein Eintrag im lokalen Katalog hält Quelle (telegram / panel / api), Uploader-ID, MIME-Typ und Originaldateinamen fest. Schickst du dieselbe Datei zweimal, wird sie trotzdem nur einmal gespeichert.Arbeitet die Unterhaltung in einem Projekt, legt der Agent außerdem eine Kopie im Ordner
uploads/dieses Projekts ab, damit er direkt neben den übrigen Projektdateien damit arbeiten kann. -
Das Original ist unantastbar. Ab diesem Punkt verändert nichts innerhalb von mintbot die gespeicherte Datei. Adapter, die sie für das LLM aufbereiten, erzeugen nur Arbeitskopien — verkleinerte JPEGs, dekodierten Text. Das bytegenaue Original bleibt auf der Platte, bis du es 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 eigens aufbereitete Version. Wenn der Agent dem LLM die Datei zeigt, wählt ein kleiner Dispatcher anhand von MIME-Typ und Dateiendung den passenden Adapter:
Adapter Verarbeitet Was das Modell bekommt Bild JPG, PNG, WebP, GIF, HEIC (iPhone), AVIF, TIFF, BMP Auf 1568 px an der langen Kante verkleinert, als JPEG q85 neu kodiert und direkt in die Anfrage eingebettet. Das Dekodieren läuft in einem separaten, kurzlebigen Prozess mit einem auf deinen VPS abgestimmten Speicherbudget, sodass ein riesiges Foto den Agenten nicht ausbremst PDF .pdfbis 32 MBAls natives PDF eingebettet — Claude liest Text und Layout direkt. Eine größere PDF bleibt auf der Platte, und der Agent zieht den Text selbst heraus (z. B. mit pdftotext)Text .txt,.md,.csv,.json,.yaml,.svg, Quellcode (.py,.js,.ts,.go,.rs, …), Logs, DiffsAls UTF-8 dekodiert (latin-1 als Fallback) und bis 500 KB eingebettet; eine längere Datei wird dort abgeschnitten, das vollständige Original bleibt auf der Platte Audio .mp3,.ogg,.opus,.m4a,.wav,.flac,.aacSprachnachrichten aus Telegram und vom Mikrofon im Panel kommen bereits transkribiert an. Eine Audiodatei wird noch nicht automatisch transkribiert — der Agent bekommt ihren Speicherort und Anweisungen und transkribiert sie, wenn du ihn darum bittest Video .mp4,.mov,.webm,.mkv,.aviNoch keine automatische Auswertung. Auf Wunsch installiert der Agent ffmpeg(und sagt dir vorher, wie viel Speicherplatz das kostet) und zieht Einzelbilder oder die Tonspur selbst herausOffice-Dokumente .docx,.xlsx,.pptx, ältere.doc/.xls/.ppt,.odt,.ods,.odpNoch keine automatische Auswertung. Auf Wunsch installiert der Agent eine kleine Lesebibliothek und zieht den Text heraus Unbekannt Alles andere Ein Hinweis mit Name, Typ, Größe und Speicherort der Datei sowie ihren ersten Bytes in Hex — genug, damit das Modell die Datei erkennt und sie bei Bedarf mit seinen Werkzeugen öffnet Jede Arbeitskopie wird neben dem Original als
<sha256>.cache/v<N>.jsonzwischengespeichert, sodass das Modell die Datei beim zweiten Mal sofort hat. Ändert sich ein Adapter, baut sich der Cache von selbst neu auf. -
Keine ablaufenden URLs im Modellkontext. Wenn ein Bild oder eine PDF ans LLM geht, wird es in dieselbe Anfrage eingebettet — keine URL, die später einen 404 liefert, kein signierter Link mit Ablaufzeit. Wo 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, landet die Datei im 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 behält für jedes Foto eine dauerhafte file_id, aber der Download-Link, den ein Bot dafür bekommt, ist nur etwa eine Stunde lang garantiert gültig. Bots, die nur diesen Link aufbewahren, liefern für das Foto von gestern einen 404. mintbot kopiert die Bytes in dem Moment, in dem eine Datei ankommt, ins Archiv deines Agenten — und wenn du auf ein älteres Foto antwortest, holt er es über die dauerhafte file_id erneut. Ab dann 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, 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 verkleinerte JPEG, Textleser UTF-8, PDF-Leser natives PDF. Handys können HEIC hochladen, und es funktioniert einfach — der Bilddecoder lädt das HEIF-Plugin von Pillow, und die Magic-Byte-Prüfung erkennt Handys, die den Upload fälschlich als
application/octet-streamkennzeichnen.
Wo du deine Dateien verwaltest¶
Das Web-Panel des Agenten hat einen Dateimanager unter Einstellungen → Dateimanager. Er zeigt den gesamten Agenten-VPS; das Upload-Archiv unter /var/lib/mintbot-agent/uploads/ ist der Teil, den deine Unterhaltungen füllen. Dort kannst du:
- Ordner durchsuchen und Dateien herunterladen, umbenennen, verschieben oder löschen
- Ordner anlegen
- Neue Dateien per Drag-and-drop hochladen — in Blöcken übertragen, bis 4 GB pro Datei
- Kleine Textdateien (bis 1 MB) direkt im Browser bearbeiten
Größengrenzen: Eine Datei, die du im Chat anhängst, darf bis zu 500 MB groß sein; Telegram lässt Bots Dateien nur bis 20 MB abrufen; der Dateimanager nimmt bis 4 GB pro Datei an. Darüber hinaus ist die einzige Grenze deine Festplatte — mintbot lässt immer etwas Platz frei, damit der Server weiterläuft. Wird die Platte voll, sagt dir der Agent Bescheid und verlinkt direkt auf den Dateimanager, damit du Platz schaffen kannst — oder du bittest den Agenten einfach, alte Dateien zu löschen.
Löschst du eine Datei im Dateimanager, wird sie von der Platte entfernt, und der Agent kann sie dem LLM nicht mehr zeigen. Das macht das Original zu „deinem“: Nur du darfst es löschen.
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. Viele der interessanteren Fähigkeiten von mintbot bauen auf diesem Fundament auf.