Tempo fa mi capitava spesso lo stesso problema: avevo un sacco di appunti, specifiche e documenti markdown sul mio portatile, ma quando aprivo ChatGPT e gli facevo domande su quei contenuti, il modello ovviamente non sapeva che esistessero. Copiare e incollare i file era noioso; caricarli manualmente uno per uno non era molto meglio. Così ho costruito un piccolo CLI che fa la parte noiosa per me: openai-folder-sync, uno strumento da riga di comando che sincronizza una directory locale in un OpenAI Vector Store, in modo che quei file diventino contesto ricercabile per ChatGPT.
La ricerca di file di OpenAI è costruita attorno a uno store vettoriale. Aggiungi file a uno store, vengono processati in embedding, e gli assistant (o ChatGPT tramite strumenti collegati) possono recuperare e ancorare le risposte usando quei file. È un modello pulito, ma presuppone che ti ricorderai di caricare e mantenere il tuo insieme di file. Un passaggio di sincronizzazione — che rispecchia una cartella a cui tieni già — è più vicino a come lavoriamo giorno per giorno.
openai-folder-sync scansiona una directory sul tuo computer, filtra i file per estensione e li invia a uno store vettoriale esistente. Puoi eseguirlo una volta per popolare uno store, oppure aggiungerlo alla tua routine (es. un cron job) per mantenere aggiornata la tua base di conoscenza. C’è anche un’opzione per incorporare i metadati git (branch e commit) nel contenuto caricato, così quando ChatGPT cita qualcosa, sai esattamente da quale versione proviene.
md,txt,pdf)--git-info)Repo: https://github.com/JensWalter/openai-folder-sync
È scritto in Rust e si installa tramite Cargo:
cargo install --git https://github.com/JensWalter/openai-folder-sync.git
Cargo compila e piazza il binario openai-folder-sync nella tua PATH.
Uso
Ti servirà una chiave API OpenAI e un ID di vector store esistente (assomiglia a vs_…). Poi punta il CLI alla tua cartella:
openai-folder-sync \
--vector-store 'vs_ABCDEFGHIJK' \
--local-dir '/Users/jens/tmp/wiki/content' \
--extensions md
Preferisci eseguirlo tramite Cargo durante lo sviluppo?
cargo run -- \
--vector-store 'vs_ABCDEFGHIJK' \
--local-dir '/Users/jens/tmp/wiki/content' \
--extensions md
La maggior parte delle opzioni può anche essere impostata tramite variabili d’ambiente:
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
Opzioni comuni
--vector-store / VECTOR_STORE – ID dello store di destinazione
--local-dir / LOCAL_DIR – cartella da sincronizzare
--extensions / EXTENSIONS – lista separata da virgola
--git-info / GIT_INFO – includi metadati git (true|false)
--help – mostra tutte le opzioni
Una volta che i file sono in uno store vettoriale, ChatGPT (o le tue app API Assistants) può recuperare spezzoni rilevanti di quei file mentre risponde alle tue domande. Questo significa che puoi chiedere cose come “Cosa diceva la proposta sulla timeline della migrazione?” e il modello estrarrà il contesto rilevante dai tuoi documenti sincronizzati — niente copia-incolla necessario. La tua cartella diventa effettivamente una base di conoscenza viva.
--git-info tagga il testo caricato con i metadati dei commit, rendendo le risposte più facili da verificare e tracciare.Al momento non ho ulteriori piani per questo strumento. Se pensi che manchi qualcosa, apri pure un issue o una PR.
⸻
Se vuoi provare, il repository include dettagli di installazione e uso oltre all’output di help. L’ho creato per semplificare il mio flusso di lavoro; se ti risparmia qualche maratona di copia-incolla e aiuta ChatGPT a rispondere dai tuoi documenti reali, è già un successo. Buona sincronizzazione!