
Semantische Suche über Videos mit Gemini Embedding 2 oder Qwen3-VL.
Semantische Suche über Videomaterial. Gib ein, wonach du suchst, und erhalte einen zugeschnittenen Clip zurück.
[!IMPORTANT] Offizielle Quelle: github.com/ssrajadh/sentrysearch ist die einzige offizielle Heimat von SentrySearch. Andere Websites, die dieses Projekt erneut veröffentlichen oder spiegeln, sind nicht mit dem Betreuer verbunden oder von ihm unterstützt; lade immer von diesem Repository herunter.
Sprachen: Englisch · 简体中文
Neu: SentrySearch Codebase-Walkthrough-Video
Die Pipeline:
SentrySearch teilt deine Videos in überlappende Chunks auf, bettet jeden Chunk als Video mithilfe von Googles Gemini Embedding API, Alibaba DashScope (qwen-cloud) oder einem lokalen Qwen3-VL-Modell ein und speichert die Vektoren in einer lokalen ChromaDB-Datenbank. Wenn du suchst, wird deine Textabfrage (oder dein Bild, siehe Suche nach Bild) in denselben Vektorraum eingebettet und mit den gespeicherten Video-Embeddings abgeglichen. Der beste Treffer wird automatisch aus der Originaldatei ausgeschnitten und als Clip gespeichert.
macOS/Linux:```bash curl -LsSf https://astral.sh/uv/install.sh | sh
**Windows:**```powershell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
> **Erfordert Python 3.11 oder 3.12** (PyTorch-Räder unterstützen noch nicht 3.13+). Falls Ihr Standard-Python neuer ist, installieren Sie ein verwaltetes 3.12 und fixieren Sie die Tool-Installation:
> ```bash
> uv python install 3.12
> uv tool install --python 3.12 .
> ```
3. Richten Sie Ihren API-Schlüssel ein (oder [verwenden Sie stattdessen ein lokales Modell](#local-backend-no-api-key-needed)) — **nur für das standardmäßige Gemini-Backend erforderlich**; überspringen Sie dies, wenn Sie `--backend local` oder `--backend qwen-cloud` mit `DASHSCOPE_API_KEY` in `.env` verwenden.```bash
sentrysearch init
Dies fordert zur Eingabe Ihres Gemini API key auf, schreibt ihn in .env und validiert ihn mit einem Test-Embedding.
5. Suche:```bash
sentrysearch search "red truck running a stop sign"
ffmpeg wird für das Aufteilen und Trimmen von Videos benötigt. Wenn Sie es nicht systemweit installiert haben, wird das gebündelte imageio-ffmpeg automatisch verwendet.
Manuelle Einrichtung: Wenn Sie
sentrysearch initnicht verwenden möchten, können Sie.env.examplein.envkopieren und Ihren Schlüssel manuell von aistudio.google.com/apikey hinzufügen.
$ sentrysearch init
Enter your Gemini API key (get one at https://aistudio.google.com/apikey): ****
Validating API key...
Setup complete. You're ready to go — run sentrysearch index <directory> to get started.
Wenn ein Schlüssel bereits konfiguriert ist, werden Sie gefragt, ob Sie ihn überschreiben möchten.
> **Tipp:** Legen Sie unter [aistudio.google.com/billing](https://aistudio.google.com/billing) ein Ausgabenlimit fest, um versehentliche Mehrausgaben zu vermeiden.
### Indexmaterial```bash
$ sentrysearch index /path/to/video/footage
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 1/4]
Indexing file 1/3: front_2024-01-15_14-30.mp4 [chunk 2/4]
...
Indexed 12 new chunks from 3 files. Total: 12 chunks from 3 files.
Options:
--chunk-duration 30 — Sekunden pro Chunk--overlap 5 — Überlappung zwischen Chunks--no-preprocess — Überspringen der Herunterskalierung/Bildratenreduzierung (rohe Chunks senden)--target-resolution 480 — Zielhöhe in Pixeln für die Vorverarbeitung--target-fps 5 — Zielbildrate für die Vorverarbeitung--no-skip-still — alle Chunks einbetten, auch ohne visuelle Änderung--backend local — ein lokales Modell anstelle von Gemini verwenden (Details unten)$ sentrysearch search "red truck running a stop sign" #1 [0.87] front_2024-01-15_14-30.mp4 @ 02:15-02:45 #2 [0.74] left_2024-01-15_14-30.mp4 @ 02:10-02:40 #3 [0.61] front_2024-01-20_09-15.mp4 @ 00:30-01:00
Saved clip: ./match_front_2024-01-15_14-30_02m15s-02m45s.mp4
Falls der Ähnlichkeitswert des besten Ergebnisses unter dem Konfidenzschwellwert (Standard 0.41) liegt, werden Sie vor dem Kürzen aufgefordert:```
No confident match found (best score: 0.28). Show results anyway? [y/N]:
Mit --no-trim werden Ergebnisse mit niedriger Konfidenz mit einem Hinweis statt einer Eingabeaufforderung angezeigt.
Optionen: --results N, --output-dir DIR, --no-trim zum Überspringen des automatischen Trimmens, --threshold 0.5 zum Anpassen der Konfidenzgrenze, --save-top N zum Speichern der oberen N Clips anstelle des besten Treffers, --dedupe zum Verwerfen von Ergebnissen, die einer höher bewerteten Auswahl zu ähnlich sind (verhindert, dass fast identische Blöcke desselben Ereignisses die Liste füllen), und --rerank, um ein VLM zu bitten, die zurückgegebenen Kandidaten vor dem Trimmen neu zu bewerten. Backend und Modell werden automatisch aus dem Index erkannt — geben Sie --backend oder --model nur zum Überschreiben an.```bash
sentrysearch search "red truck" --save-top 5 --dedupe 0.9
sentrysearch search "pedestrian crossing behind the car" --rerank --results 10
Das `--dedupe`-Wert ist eine Cosinus-Ähnlichkeitsobergrenze (0–1). Alle Ergebnisse, deren Ähnlichkeit zu einem bereits beibehaltenen, höher bewerteten Ergebnis diesen Wert überschreitet, werden verworfen. Niedrigere Werte sind strenger: `0.8` erfordert, dass Ergebnisse sehr unterschiedlich sind, `0.95` entfernt nur fast identische Abschnitte. `0.9` ist ein guter Standardwert.
`--rerank` extrahiert jeden zurückgegebenen Kandidaten-Clip, sendet ihn zusammen mit der Abfrage an ein VLM und sortiert wahrscheinliche visuelle Übereinstimmungen vor reinen Einbettungsergebnissen. Gemini- und qwen-cloud-Suchen verwenden Gemini 2.5 Flash für das Reranking; lokale Suchen verwenden einen lokalen Qwen3-VL Instruct Reranker. Wenn das Reranking nicht ausgeführt werden kann oder ein Kandidat nicht bewertet werden kann, behält SentrySearch die nach Einbettung sortierten Ergebnisse bei, anstatt die Suche fehlschlagen zu lassen.
### Suche nach Bild
Verwenden Sie ein Referenzbild als Abfrage – nützlich, um „Clips zu finden, die so aussehen", wenn die Beschreibung der Szene in Worten umständlich ist (ein Screenshot eines bestimmten Autos, ein Referenzframe aus einem anderen Video usw.).```bash
$ sentrysearch img ~/Downloads/image.jpg
#1 [0.72] 2026-03-12_10-44-17-left_repeater.mp4 @ 00:00-00:30
#2 [0.69] 2026-03-12_10-44-17-left_repeater.mp4 @ 00:25-00:55
#3 [0.67] 2026-02-12_20-02-15-front.mp4 @ 00:00-00:18
Saved clip: ./match_2026-03-12_10-44-17-left_repeater_00m00s-00m30s.mp4
Das Bild wird in denselben Vektorraum wie die indizierten Video-Chunks eingebettet und nach Kosinus-Ähnlichkeit eingestuft. Die Bildsuche unterstützt --results, --threshold, --save-top, --dedupe, --overlay, --no-trim, --backend und --model.
Unterstützte Formate: JPG, PNG, WEBP, GIF, HEIC/HEIF auf dem Gemini-Backend; das lokale Backend akzeptiert zusätzlich alles, was PIL dekodieren kann (BMP, TIFF, usw.).
Hinweis: Die Bildsuche liefert visuell ähnliche Treffer, nicht unbedingt dasselbe Objekt. Eine Abfrage nach einer roten Limousine kann andere rote Limousinen mit ähnlicher Form liefern — passen Sie Ihre Erwartungen entsprechend an.
Sie wissen nicht, wonach Sie suchen sollen? sentrysearch highlights ordnet die auffälligsten Clips in Ihrem Index nach Rang – Chunks, deren Einbettungen weit von allem anderen entfernt sind – und schneidet sie automatisch zu. Gut zum Überfliegen eines frischen Datensatzes von Aufnahmen.```bash
$ sentrysearch highlights -n 3
#1 [0.165] 2026-02-12_20-02-15-back.mp4 @ 00:00-00:18
#2 [0.163] 2026-02-12_20-02-15-right_repeater.mp4 @ 00:00-00:18
#3 [0.149] 2026-02-12_20-02-15-front.mp4 @ 00:00-00:18
...
Scoring methods (`--method`):
- **`knn`** (Standard) — mittlere Kosinusdistanz zu den *k* nächsten Nachbarn eines Clips. Robust; zeigt Aufnahmen ohne nahe Zwillinge an.
- **`centroid`** — Distanz zum Mittelwert des Index. Am günstigsten, tendenziell auf das unterrepräsentierte ausgerichtet.
- **`lof`** — Local Outlier Factor. Am besten, wenn der Index mehrere verschiedene "normale" Modi hat (Tag vs. Nacht vs. Garage).
Verfeinerungsoptionen:
- `--against "<query>"` — bewertet Anomalien *relativ zu* einer Abfrage. Mit `--against-mode within` (Standard) werden Anomalien unter den besten Treffern der Abfrage eingestuft ("die seltsamen Fußgänger in Fußgängeraufnahmen"). Mit `--against-mode global` werden Aufnahmen gefunden, die der Abfrage entsprechen, *aber* sich vom Rest des Index unterscheiden ("seltene Ereignisse dieser Art").
- `--dedupe 0.9` — verwirft Ergebnisse, die einem höher eingestuften Treffer zu ähnlich sind (Standard 0,9 Kosinus-Ähnlichkeit). Verhindert, dass nahezu doppelte Frames die Liste füllen.
- `--exclude-baseline` — verwirft die Hälfte des Index, die dem Zentroid am nächsten ist, bevor die Bewertung erfolgt. Nützlich, wenn der Index von sich wiederholendem "langweiligem" Filmmaterial dominiert wird.
- `-k, --neighbors 10` — *k* für `knn`/`lof`.
- `--no-trim` — gibt die Rangliste aus, ohne Aufnahmen zu schreiben.
> **Achtung:** Statistisch anomal ≠ interessant. Sensorstörungen, Objektivreflexe, Nachtaufnahmen in einem überwiegend tageslichtbasierten Index und der einsame Garagenclip werden alle hoch eingestuft. Verwenden Sie `--exclude-baseline` und `--dedupe`, um das Rauschen zu filtern, oder `--against`, um das Thema einzuschränken.
### Qwen Cloud (Alibaba DashScope)
Verwenden Sie das optionale **qwen-cloud** Backend für [DashScope](https://www.alibabacloud.com/help/en/model-studio/qwen-api-via-dashscope) / Model Studio multimodale Embeddings (Standardmodell `qwen3-vl-embedding`, überschreibbar mit `--dashscope-model` oder `DASHSCOPE_EMBEDDING_MODEL`):```bash
uv tool install ".[qwen-cloud]"
export DASHSCOPE_API_KEY=...
sentrysearch index /path/to/footage --backend qwen-cloud
sentrysearch search "your query" --backend qwen-cloud
Video-Uploads: Lokale Chunk-Dateien werden an das von DashScope verwaltete temporäre OSS durch das offizielle Python SDK gesendet, bevor die API sie verarbeitet (die HTTP-API erwartet eine URL; das SDK übernimmt den Upload für Sie).
Indizieren und durchsuchen Sie mit einem lokalen Qwen3-VL-Embedding-Modell anstelle der Gemini-API. Kostenlos, privat und läuft vollständig auf Ihrem Rechner. Für die beste Suchqualität verwenden Sie das Gemini-Backend – das lokale 8B-Modell ist eine solide Alternative, wenn Sie eine Offline-/private Suche benötigen, und das 2B-Modell ist ein Fallback, wenn die Hardware 8B nicht unterstützt.
Das Modell wird automatisch anhand Ihrer Hardware erkannt — qwen8b für NVIDIA-GPUs und Macs mit 24 GB+ RAM, qwen2b für kleinere Macs und reine CPU-Systeme. Sie können dies mit --model qwen2b oder --model qwen8b überschreiben. Wählen Sie eine Installation basierend auf Ihrer Hardware:
Funktioniert nicht gut: Intel Macs und Rechner ohne dedizierte GPU. Diese fallen auf CPU mit float32 zurück — zu langsam und speicherhungrig für den praktischen Einsatz. Verwenden Sie stattdessen das Gemini-API-Backend (Standard).
Nicht sicher? Auf dem Mac verwenden Sie
".[local]". Auf NVIDIA verwenden Sie".[local-quantized]"— 4-Bit-Quantisierung funktioniert auf der breitesten Palette von NVIDIA-Hardware mit minimalem Qualitätsverlust. (bitsandbytes erfordert CUDA und funktioniert nicht auf Mac/MPS.)
Python-Version: PyTorch-Wheels hinken neuen Python-Versionen hinterher, daher erfordert das lokale Backend Python 3.11 oder 3.12. Wenn Ihr Standard-Python 3.13+ ist, installieren Sie ein verwaltetes 3.12 und binden Sie die Tool-Installation daran fest:```bash uv python install 3.12 uv tool install --python 3.12 ".[local]"
**Mac-Voraussetzung:** Installieren Sie das systemweite FFmpeg (der Videoprozessor des lokalen Modells benötigt es — das Gemini-Backend verwendet stattdessen ein gebündeltes ffmpeg):```bash
brew install ffmpeg
Indizieren mit --backend local und suchen — keine zusätzlichen Flags erforderlich:```bash
sentrysearch index /path/to/footage --backend local
sentrysearch search "car running a red light"
Der Suchbefehl erkennt automatisch das Backend und das Modell aus dem, womit Sie indexiert haben. Sie können auch `--model` als Kurzform verwenden — es impliziert `--backend local`:```bash
sentrysearch index /path/to/footage --model qwen2b # same as --backend local --model qwen2b
sentrysearch search "car running a red light" # auto-detects local/qwen2b from index
Optionen:
--model qwen2b — kleineres Modell, geringere Qualität, benötigt aber nur ~6 GB Arbeitsspeicher (akzeptiert auch vollständige HuggingFace-IDs)--quantize / --no-quantize — 4-Bit-Quantisierung erzwingen oder deaktivieren (Standard: automatische Erkennung, ob bitsandbytes installiert ist)Hinweise:
--rerank lädt zusätzlich zum Embedding-Modell ein separates Qwen3-VL Instruct-Modell herunter (Qwen/Qwen3-VL-8B-Instruct oder Qwen/Qwen3-VL-2B-Instruct).Das lokale Backend bleibt schnell und speichereffizient durch einige sich verstärkende Techniken:
fps=1.0, max_frames=32). Ein 30-Sekunden-Chunk erzeugt ~30 Frames — nicht hunderte.Mit alledem können Sie mit ~2-5s pro Chunk auf einer A100 und ~3-8s auf einer T4 rechnen. Auf einer 4090 sollte das 8B-Modell in bf16 im niedrigen einstelligen Bereich pro Chunk liegen.
Geschwindigkeit, Standort und Uhrzeit auf zugeschnittene Clips einbrennen:```bash sentrysearch search "car cutting me off" --overlay
Dies extrahiert Telemetriedaten aus Tesla-Dashcam-Dateien (Geschwindigkeit, GPS) und rendert ein HUD-Overlay. Das Overlay zeigt:
- **Oben Mitte:** Geschwindigkeit und MPH-Beschriftung auf einer hellgrauen Karte
- **Unter der Karte:** Datum und Uhrzeit (12-Stunden-Format mit AM/PM)
- **Oben links:** Stadt und Straßenname (per Reverse-Geocoding)

Anforderungen:
- Tesla-Firmware 2025.44.25 oder neuer, HW3+
- SEI-Metadaten sind nur in Fahrvideos vorhanden (nicht im Park-/Sentry-Modus)
- Reverse-Geocoding verwendet die [OpenStreetMap Nominatim API](https://nominatim.openstreetmap.org/) über geopy (optional)
Installation mit Tesla-Overlay-Unterstützung:```bash
uv tool install ".[tesla]"
Without geopy, the overlay still works but omits the city/road name.
Source: teslamotors/dashcam
SentryMerge ist ein verwandtes Tool, das automatisch ein einzelnes kameraübergreifendes Video eines Ereignisses aus einem SentrySearch-Ergebnis ausschneidet. Jedes Mal, wenn sentrysearch search ausgeführt wird, speichert es die Ergebnisliste in ~/.sentrysearch/last_search.json zwischen; SentryMerge greift diese über --last auf, wählt das beste Multi-Kamera-Clip-Set aus, fragt ein VLM nach subsekundenbasierten Sichtbarkeitsbereichen pro Kamera und fügt ein framegenaueres Video zusammen, das dem Subjekt über die Kameras hinweg folgt:```bash
sentrysearch search ""
sentrymerge --last # → merge.mp4
`--last` funktioniert ohne erneute Durchführung der Suche; `sentrymerge --query "..."` führt die Suche im Hintergrund erneut durch. Siehe die [SentryMerge README](https://github.com/ssrajadh/sentrymerge#readme) für Installationsanweisungen, VLM-Backend-Optionen (Gemini / OpenAI / lokales Qwen) und das modulare Kamera-Konfigurationssystem für Nicht-Tesla-Dashcams.
### Schwärzung mit SentryBlur
[SentryBlur](https://github.com/ssrajadh/sentryblur) ist ein Schwesterwerkzeug zur lokalen Gesichts-, Kennzeichen- und natürlichsprachlichen Schwärzung von Videos. Jedes Mal, wenn `sentrysearch search` einen Clip speichert, wird der Pfad in `~/.sentrysearch/last_clip.json` zwischengespeichert; SentryBlur greift darüber via `--last` darauf zu, sodass Suchen-dann-Schwärzen zwei Befehle sind und keine Pfadübergabe erforderlich ist:```bash
sentrysearch search "car cuts me off"
sentryblur prompt --last "road signs" # → match_<...>_blurred.mp4
sentryblur faces --last and sentryblur plates --last funktionieren auf dieselbe Weise. Wählen Sie faces oder plates für schnelle CPU-Detektoren; verwenden Sie prompt "<text>" für beliebige Objekte (Telefonbildschirme, Monitore, Namensschilder) — prompt erfordert eine NVIDIA GPU oder Apple Silicon. Siehe SentryBlur README für Installationsanweisungen und Hardwarehinweise.
sentrysearch stats
sentrysearch remove path/to/footage
sentrysearch reset
#### Fehlgeschlagene Chunks und erneute Versuche
Wenn ein Chunk nach mehreren Versuchen nicht eingebettet werden kann, zeichnet SentrySearch ihn in einer Dead-Letter-Queue (DLQ) unter `~/.sentrysearch/dlq.json` auf und fährt mit der Indizierung des restlichen Filmmaterials fort. Chunks landen dort normalerweise aufgrund wiederholter vorübergehender API/Backend-Fehler, Decoder-Fehlern für eine bestimmte Datei, fehlender Dateien oder Speicherüberläufen. Permanent wirkende Fehler wie fehlende Dateien, Decodierungsfehler und OOM werden sofort aufgezeichnet, da ein erneuter Versuch desselben Chunks mit denselben Einstellungen wahrscheinlich nicht helfen wird.
Fehlgeschlagene Chunks inspizieren:```bash
sentrysearch dlq list
Wiederholen Sie sie beim nächsten Indexdurchlauf:```bash sentrysearch index /path/to/footage --retry-failed
Leere die DLQ ohne erneuten Versuch:```bash
sentrysearch dlq clear
Standardmäßig überspringen zukünftige sentrysearch index-Durchläufe Chunks, die sich bereits in der DLQ befinden, damit Sie nicht wiederholt für Fehler bezahlen oder darauf warten müssen. Verwenden Sie --retry-failed, nachdem Sie das Quellproblem behoben, Modell-/Backend-Einstellungen geändert oder Speicher freigegeben haben.
SentrySearch hält lokale Zustände unter ~/.sentrysearch/:
Fügen Sie --verbose zu einem der Befehle hinzu, um Debug-Informationen zu erhalten (Embedding-Dimensionen, API-Antwortzeiten, Ähnlichkeitswerte).
Sowohl Gemini Embedding 2 als auch Qwen3-VL-Embedding können nativ Video einbetten – rohe Videopixel werden in denselben Vektorraum wie Textabfragen projiziert. Es gibt keine Transkription, keine Bildunterschriften, keinen Text als Vermittler. Eine Textabfrage wie "red truck at a stop sign" ist auf Vektorebene direkt mit einem 30-Sekunden-Videoclip vergleichbar. Das macht die semantische Suche in Sekundenbruchteilen über Stunden von Filmmaterial praktikabel.
Die Indizierung einer Stunde Filmmaterial kostet mit der Gemini-Embedding-API etwa $2.84 (Standardeinstellungen: 30s-Chunks, 5s-Überlappung):
1 Stunde = 3.600 Sekunden Video = 3.600 vom Modell verarbeitete Frames. 3.600 Frames × $0,00079 = ~$2,84/Std
Die Gemini-API extrahiert und tokenisiert nativ genau 1 Frame pro Sekunde aus hochgeladenen Videos, unabhängig von der tatsächlichen Bildrate der Datei. Der Vorverarbeitungsschritt (der Chunks über ffmpeg auf 480p bei 5fps herunterskaliert) ist eine lokale/Bandbreiten-Optimierung – er hält die Payload-Größen klein, damit API-Anfragen schnell sind und kein Timeout auftritt – ändert aber nicht die Anzahl der Frames, die die API verarbeitet.
Zwei integrierte Optimierungen helfen, die Kosten auf unterschiedliche Weise zu senken:
Suchanfragen sind vernachlässigbar (nur Text-Embedding).
DashScope berechnet multimodales Embedding in CNY pro 1.000 Eingabe-Tokens, nach Modalität. Für das Standardmodell qwen3-vl-embedding liegen die veröffentlichten Preise von Alibaba (überprüfen Sie das unten verlinkte Dokument für Ihre Region und etwaige Aktualisierungen) in etwa bei:
Die Indizierung sendet Video-Chunks (Video-Modalität); jede search-/img-Abfrage besteht meist aus Text- oder Bild-Tokens, die pro Token günstiger sind als Video. Ihre tatsächlichen Kosten sind die von DashScope zurückgegebenen Token-Anzahlen für jeden API-Aufruf (abhängig von Auflösung, Dauer, Sampling wie DASHSCOPE_VIDEO_FPS usw.) – es gibt keinen festen „$ pro Stunde Filmmaterial“ wie den veröffentlichten USD-Preis pro Frame von Gemini, ohne Ihren Arbeitsaufwand zu messen.
Alibaba dokumentiert auch eine kostenlose Token-Zulage (z. B. 1M Tokens innerhalb eines begrenzten Zeitraums nach der Aktivierung); bestätigen Sie dies auf der Seite DashScope Multimodales Embedding – Abrechnung und Messung und in der Model Studio / Abrechnungskonsole, da Preise, Regionen und Aktionen sich ändern.
Diese Flags betreffen das Chunking und die Vorverarbeitung für beide (Gemini und qwen-cloud):
--chunk-duration / --overlap – längere Chunks mit weniger Überlappung = weniger API-Aufrufe = geringere Kosten--no-skip-still – jeden Chunk einbetten, auch wenn nichts passiert--target-resolution / --target-fps – Vorverarbeitungsqualität anpassen--no-preprocess – rohe Chunks an die API sendenDas lokale Backend kann während der Indizierung und Suche Warnungen ausgeben. Diese sind kosmetischer Natur und beeinflussen die Ergebnisse nicht:
MPS: nonzero op is not natively supported – Eine bekannte PyTorch-Einschränkung auf Apple Silicon. Die Operation fällt für einen Schritt auf die CPU zurück; alles andere bleibt auf der GPU. Keine Auswirkung auf die Ausgabequalität.video_reader_backend torchcodec error, use torchvision as default – torchcodec findet kein kompatibles FFmpeg unter macOS. Der Videoprozessor fällt automatisch auf torchvision zurück. Dies ist erwartet und liefert identische Ergebnisse.You are sending unauthenticated requests to the HF Hub – Das Modell wird ohne Token von Hugging Face heruntergeladen. Die Downloadgeschwindigkeiten können etwas niedriger sein, aber das Modell lädt einwandfrei. Setzen Sie die Umgebungsvariable HF_TOKEN, um dies zu unterdrücken, falls es Sie stört.--no-skip-still, wenn Sie jeden Chunk indiziert haben möchten.Dies funktioniert mit .mp4- und .mov-Filmmaterial, nicht nur mit dem Tesla Sentry Mode. Der Verzeichnisscanner findet rekursiv beide Dateitypen unabhängig von der Ordnerstruktur.
ffmpeg im PATH oder verwenden Sie gebündeltes ffmpeg über imageio-ffmpeg (standardmäßig installiert)brew install ffmpeg (vom Videodecoder benötigt)| Hardware | Installationsbefehl | Automatisch erkanntes Modell | Hinweise |
|---|
| Apple Silicon, 24 GB+ RAM | uv tool install ".[local]" | qwen8b | Volles float16 über MPS |
| Apple Silicon, 16 GB RAM | uv tool install ".[local]" | qwen2b | 8B passt nicht; 2B verwendet ~6 GB |
| Apple Silicon, 8 GB RAM | uv tool install ".[local]" | qwen2b | Knapp — möglicherweise Swap unter Last; Gemini-API stattdessen empfohlen |
| NVIDIA, 18 GB+ VRAM | uv tool install ".[local]" | qwen8b | Volle bf16-Präzision (CUDA-Wheels werden automatisch auf Linux/Windows bezogen) |
| NVIDIA, 8–16 GB VRAM | uv tool install ".[local-quantized]" | qwen8b | 4-Bit-Quantisierung (~6–8 GB) |
| Pfad | Geschrieben von | Verwendet für | Kann gelöscht werden? |
|---|
db/ | sentrysearch index | ChromaDB-Vektorindex für Ihr eingebettetes Filmmaterial. | Ja, aber dies löscht den Index. Führen Sie sentrysearch index <verzeichnis> erneut aus, bevor Sie erneut suchen. |
.env | sentrysearch init | Speichert Ihren Gemini-API-Schlüssel für das Standard-Backend. | Ja, aber Gemini-gestützte Befehle werden Sie bitten, den Schlüssel erneut zu konfigurieren. |
dlq.json | Fehlgeschlagene sentrysearch index-Chunks | Dead-Letter-Queue, die von sentrysearch dlq list überprüft und mit --retry-failed wiederholt wird. | Ja. Das Löschen vergisst fehlgeschlagene Chunks, sodass zukünftige Index-Durchläufe sie als neue Arbeit erneut versuchen können. |
last_clip.json | Befehle, die einen Clip speichern (search, img, highlights, overlay) | Ermöglicht SentryBlur, den zuletzt gespeicherten Clip mit sentryblur ... --last zu verwenden. | Ja. Nur die --last-Übergabe geht verloren; gespeicherte MP4-Dateien werden nicht gelöscht. |
last_search.json | sentrysearch search, img und highlights | Ermöglicht SentryMerge, die aktuellste Ergebnisliste mit sentrymerge --last zu verwenden. | Ja. Nur die --last-Übergabe geht verloren; der Suchindex bleibt unverändert. |
history | sentrysearch shell | Readline-Befehlshistorie für die interaktive Shell. | Ja. Die Shell startet beim nächsten Mal mit leerer Historie. |