Vor einiger Zeit stieß ich immer wieder auf dasselbe Problem: Ich hatte eine Menge Notizen, Spezifikationen und Markdown-Dokumente auf meinem Laptop, aber wenn ich ChatGPT öffnete und Fragen dazu stellte, wusste das Modell natürlich nicht, dass sie existieren. Dateien per Copy-Paste zu übertragen war mühsam; manuelles Hochladen einzeln war auch nicht viel besser. Also habe ich ein kleines CLI-Tool gebaut, das mir die lästige Arbeit abnimmt: openai-folder-sync, ein Kommandozeilen-Tool, das ein lokales Verzeichnis mit einem OpenAI Vector Store synchronisiert, sodass diese Dateien als durchsuchbarer Kontext für ChatGPT verfügbar sind.
OpenAIs Dateisuche basiert auf einem Vector Store. Man fügt Dateien in einen Store ein, diese werden in Embeddings umgewandelt, und Assistenten (oder ChatGPT über verbundene Tools) können Antworten basierend auf diesen Dateien abrufen und untermauern. Das ist ein sauberes Modell, aber es setzt voraus, dass man daran denkt, seine Dateien hochzuladen und zu pflegen. Ein Synchronisierungsschritt – der einen Ordner spiegelt, der einem ohnehin wichtig ist – kommt dem im Alltag näher.
openai-folder-sync durchsucht ein Verzeichnis auf deinem Rechner, filtert Dateien nach Endungen und lädt sie in einen bestehenden Vector Store hoch. Du kannst es einmal ausführen, um einen Store zu füllen, oder regelmäßig (z. B. per Cron-Job), um deine Wissensbasis aktuell zu halten. Es gibt außerdem eine Option, Git-Metadaten (Branch und Commit) in die hochgeladenen Inhalte einzubetten, sodass du genau weißt, aus welcher Version ChatGPT etwas zitiert.
md,txt,pdf)--git-info)Repo: https://github.com/JensWalter/openai-folder-sync
Es ist in Rust geschrieben und wird über Cargo installiert:
cargo install --git https://github.com/JensWalter/openai-folder-sync.git
Cargo baut das Binary und legt es in deinem PATH ab.
Usage
Du benötigst einen OpenAI API-Schlüssel und eine bestehende Vector Store-ID (die sieht aus wie vs_…). Dann zeigst du das CLI auf deinen Ordner:
openai-folder-sync \
--vector-store 'vs_ABCDEFGHIJK' \
--local-dir '/Users/jens/tmp/wiki/content' \
--extensions md
Möchtest du während der Entwicklung lieber über Cargo laufen lassen?
cargo run -- \
--vector-store 'vs_ABCDEFGHIJK' \
--local-dir '/Users/jens/tmp/wiki/content' \
--extensions md
Die meisten Flags können auch über Umgebungsvariablen gesetzt werden:
export OPENAI_API_KEY=sk-...
export VECTOR_STORE=vs_ABCDEFGHIJK
export LOCAL_DIR=/Users/jens/tmp/wiki/content
export EXTENSIONS=md,txt,pdf
export GIT_INFO=true
openai-folder-sync
Common flags
--vector-store / VECTOR_STORE – Zielstore-ID
--local-dir / LOCAL_DIR – zu synchronisierender Ordner
--extensions / EXTENSIONS – kommaseparierte Liste
--git-info / GIT_INFO – Git-Metadaten einbeziehen (true|false)
--help – alle Optionen anzeigen
Sobald die Dateien im Vector Store sind, können ChatGPT (oder deine Assistants API Apps) relevante Ausschnitte aus diesen Dateien abrufen, während sie deine Fragen beantworten. Das heißt, du kannst Fragen stellen wie „Was stand im Vorschlag zum Migrationszeitplan?“ und das Modell holt den passenden Kontext aus deinen synchronisierten Dokumenten – Copy-Paste ist nicht mehr nötig. Dein Ordner wird so effektiv zu einer lebendigen Wissensbasis.
Ich habe aktuell keine weiteren Pläne für dieses Tool. Wenn dir etwas fehlt, öffne einfach ein Issue oder einen PR.
⸻
Wenn du es ausprobieren möchtest, enthält das Repository Installations- und Nutzungsdetails sowie die Hilfsausgabe. Ich habe es gebaut, um meinen eigenen Workflow zu vereinfachen; wenn es dir einige Copy-Paste-Marathons erspart und ChatGPT hilft, aus deinen realen Dokumenten zu antworten, ist das ein Gewinn. Viel Erfolg beim Synchronisieren!