Projektorganisation
Zwei-Phasen-Reorganisation des AI-Plattform-Ökosystems (April 2026)
Diese Seite dokumentiert die grundlegende Neustrukturierung des AI-Plattform-Ökosystems, die im April 2026 in zwei Phasen abgeschlossen wurde. Sie beschreibt Ausgangslage, Designprinzipien und konkrete Implementierung beider Phasen.
Ausgangslage: Das flache 2026project-Verzeichnis
Bis April 2026 lagen alle 47 aktiven ai-*-Pakete flach in einem einzigen Dropbox-synchronisierten Verzeichnis:
~/Library/CloudStorage/Dropbox/202x/2026project/
ai-agenda/
ai-apple/
ai-apple-documents/
ai-argument/
ai-audio/
ai-biblatex/
ai-chroma/
ai-classifypdf/
... (insgesamt 47 Pakete)
Diese Struktur hatte mehrere Schwachstellen:
Keine funktionale Gruppierung. Ein Werkzeug zur E-Mail-Verwaltung (ai-korrespondenz) lag neben einem Forschungsprojekt (ai-nepi2) neben einem Infrastrukturpaket (ai-core).
Dropbox-Synchronisationsoverhead. Alle 47 Pakete wurden auf alle Dropbox-Maschinen synchronisiert, obwohl etwa 40 % nur auf mac-studio benötigt werden. Datenpfade (Audio, Video, PDAI-Sammlungen) erhöhten den Sync-Overhead massiv.
Skalierungsproblem. Bei 47 Paketen und weiterem Wachstum wird eine flache Liste unhandhabbar.
Phase 1: Domänen-Reorganisation (April 14–15, 2026)
Vorarbeit: Datentrennung (Tier-1-Separation)
388 GB schwere Nutzdaten wurden aus 2026project/ auf das dedizierte Datenvolume /Volumes/PDAI-1/2026projectdata/ verschoben:
| Paket | Verschobene Daten | Ersetzt durch |
|---|---|---|
ai-apple |
App-Daten | Symlink → PDAI-1 |
ai-apple-documents |
Dokumentarchiv | Symlink → PDAI-1 |
ai-classifypdf |
Klassifizierungscache | Symlink → PDAI-1 |
ai-eventjournal |
Journal-Einträge | Symlink → PDAI-1 |
ai-exo |
Modelldaten | Symlink → PDAI-1 |
ai-nepi2 |
Konferenzmaterial | Symlink → PDAI-1 |
ai-voicememo |
Audiodateien | Symlink → PDAI-1 |
repository2.0 |
Repository-Daten | Symlink → PDAI-1 |
Nach dieser Operation hatte die interne SSD 968 GB freien Speicher (vorher: 19 GB).
Designprinzipien
1. Domänenorientierte Hierarchie statt flacher Liste.
2. Physische Trennung mit logischer Kontinuität — Backward-Compat-Symlinks in 2026project/ für bestehenden Code.
3. Maschinenlesbare Kataloge (index.duckdb je Domäne).
4. Analoges Muster zu ai-privat (schon früher angelegt als Vorlage).
Neue Domänenstruktur
graph TD
home["~/ (Home-Verzeichnis)"]
home --> aiPrivat["ai-privat/\nPersönlich, Syncthing"]
home --> aiPlatform["ai-platform/\nKoordination, Git-repo"]
home --> aiAgents["ai-agents/\n40 Werkzeugpakete"]
home --> aiScholarly["ai-scholarly/\n21 Forschungsprojekte"]
home --> aiPublication["ai-publication/\narXiv-Register"]
aiAgents --> infra["infrastructure/ (9)"]
aiAgents --> docproc["document-processing/ (10)"]
aiAgents --> comm["communication/ (6)"]
aiAgents --> media["media/ (3)"]
aiAgents --> apple["apple/ (2)"]
aiAgents --> dataml["data-ml/ (4)"]
aiAgents --> mgmt["management/ (6)"]
aiScholarly --> sundial["ai-sundial3d/ → PDAI-1"]
aiScholarly --> research["research/ → PDAI-1"]
aiScholarly --> projects["projects/ → PDAI-1"]
aiPublication --> arxiv["arxiv/\nai-arxiv-project/\npapers/ Symlinks"]
Die 47 Pakete wurden physisch verschoben; an den alten 2026project/-Pfaden wurden 47 Backward-Compat-Symlinks angelegt.
Phase 2: De-Dropbox-Refactor (April 17, 2026)
Problem: fileproviderd-CPU-Loop
Nach Phase 1 traversierte fileproviderd (Dropbox-File-Provider) die 47 Symlinks in 2026project/ rekursiv durch alle .venv/-Verzeichnisse — eine effektive Baumgröße von ~3.4 TB. fileproviderd lief über 2 Tage bei 98.8 % CPU.
Lösung: Encapsulation + direkte LaunchAgents
Schritt 1 — Alle Domänen direkt nach $HOME bewegt:
Alle fünf Domänen liegen als echte Verzeichnisse direkt im Home-Verzeichnis — kein Encapsulation-Wrapper, kein Doppel-Traversal:
~/ai-mac-studio/platform/ (real directory)
~/ai-mac-studio/agents/ (real directory)
~/ai-mac-studio/scholarly/ (real directory)
~/ai-mac-studio/publication/ (real directory)
~/ai-mac-studio/privat/ (real directory)
Schritt 2 — 13 LaunchAgents direkt umschreiben:
Alle LaunchAgents wurden von Dropbox-Pfaden auf direkte ~/ai-mac-studio/…-Pfade umgestellt (backup → sed → plutil-Validierung → bootout/bootstrap):
| Dienst | Pakete |
|---|---|
| ai-viewer | 8 Kollektion-Plists |
| ai-voicememo | 2 Plists |
| ai-cluster | 2 Plists |
| ai-index | 1 Plist |
Schritt 3 — 47 Compat-Symlinks entfernen:
Die 47 Symlinks in 2026project/ wurden in ein Backup-Verzeichnis verschoben: ~/.local/share/ai-platform/2026project-symlink-backup-20260417/
Danach las lsof -p $(pgrep fileproviderd) keine ai-mac-studio/-Pfade mehr.
Schritt 4 — ~45 GB Bulk-Daten externalisieren:
| Lokaler Pfad | Ziel | Größe |
|---|---|---|
~/ai-mac-studio/scholarly/research |
PDAI-1/ai-scholarly/research | ~20 GB |
~/ai-mac-studio/scholarly/ai-sundial3d |
PDAI-1/ai-scholarly/ai-sundial3d | ~14 GB |
~/ai-mac-studio/scholarly/projects |
PDAI-1/ai-scholarly/projects | ~5.8 GB |
~/ai-mac-studio/scholarly/ai-applevoicerecorder |
PDAI-1/ai-scholarly/ai-applevoicerecorder | ~2.4 GB |
~/ai-mac-studio/agents/communication/ai-mail |
PDAI-1/ai-agents/communication/ai-mail | ~1.6 GB |
~/ai-mac-studio/agents/document-processing/ai-ocr-dev |
PDAI-1/ai-agents/document-processing/ai-ocr-dev | ~1.7 GB |
Schritt 5 — Stale .venv-Shebangs reparieren:
Die virtuellen Umgebungen von ai-voicememo, ai-viewer und ai-cluster hatten noch hartcodierte Shebangs auf den alten Dropbox-Python-Interpreter-Pfad. Alle drei wurden mit uv sync neu erstellt.
Schritt 6 — lib/env.py refaktoriert:
Neue Package-Registry indiziert Pakete direkt aus den Domain-Verzeichnissen. PROJECT_BASE auf mac-studio zeigt nun auf $HOME (kein Dropbox-Pfad mehr). DROPBOX_ROOT ist auf mac-studio entfernt.
Ergebnis
| Aspekt | Vorher | Nachher |
|---|---|---|
| fileproviderd | 98.8 % CPU, 2+ Tage | Normal (nach Restart) |
| LaunchAgents | Via 2026project/-Symlinks | Direkt → ~/ai-mac-studio/agents/ ~/ai-mac-studio/platform/ |
| Dropbox-Abhängigkeit | 47 Compat-Symlinks | Keine |
| Symlinks am Home-Root | 5 ai-* Symlinks | Keine — echte Verzeichnisse |
| Lokaler Freispeicher | ~19 GB | ~83 GB (nach Externalisierung) |
ai-agents: 40 Werkzeugpakete in 7 Kategorien
~/ai-mac-studio/agents/
infrastructure/ Core-Plattform, Orchestrierung, Scheduling
document-processing/ OCR, PDF, PDAI, Typesetting-Pipeline
communication/ E-Mail, Korrespondenz, Sprache, Reporting
media/ Audio-, Video-, Fotoverarbeitung
apple/ Apple-Device- und Document-Integration
data-ml/ Vektorspeicher, Indexing, Inference
management/ Kalender, Journale, Tasks, Memos
infrastructure (9 Pakete)
| Paket | Funktion | Port |
|---|---|---|
ai-core |
Gemeinsame AI-Clients, PDAI-Schema, Orchestrator | — |
ai-cluster |
Verteilter Task-Dispatch über Tailscale | 5830 |
ai-machine-registry |
Maschinenregistrierung und -verwaltung | — |
ai-scheduler |
PDAI-Task-Warteschlange, OCR-Koordination | 8200 |
projects-dev |
Dev-Register: Scan + Audit aller Sektionen, Hub /admin/register |
5050 |
ai-symphony |
Multi-Agenten-Orchestrierung | — |
ai-sync |
Synchronisationsverwaltung | — |
ai-skills |
Skill-System-Dokumentation | — |
ai-instructions |
29 gemeinsame Jinja2-Instruktions-Templates | — |
document-processing (10 Pakete)
| Paket | Funktion | Port |
|---|---|---|
ai-scholar |
PDAI-OCR, Übersetzung, Segmentierung | — |
ai-classifypdf |
PDF-Ernte, Klassifizierung in PDAI-1 | — |
ai-viewer |
PDAI-Dokumentbetrachter (Web) | 5100 |
ai-ocr |
OCR-Utilities | — |
ai-ocr-dev |
OCR-Entwicklung und Tests | — |
ai-lector |
Dokumentlesen und -analyse | — |
ai-scanner |
Dokumentscanner | — |
ai-translation |
Übersetzungspipeline | — |
ai-biblatex |
BibLaTeX-Parse, -Export, DBLP | — |
ai-schriftsetzer |
Typesetting-Werkzeuge | — |
communication (6 Pakete)
| Paket | Funktion | Port |
|---|---|---|
ai-korrespondenz |
Korrespondenzverwaltung | 5300 |
ai-mail |
E-Mail-Verwaltung | — |
ai-reporter |
Sprachaufnahme-Transkription und Toolchain | 5510/5520 |
ai-dialog |
Sprachgesteuerter Text-Revisionsworkflow | — |
ai-speechdialog |
Sprachdialog-System | — |
ai-dictation |
Sprachdiktat | — |
management (6 Pakete)
| Paket | Funktion | Port |
|---|---|---|
ai-agenda |
Meeting-Agenda-Verwaltung | — |
ai-eventjournal |
Event-Journal-Verwaltung | — |
ai-task |
Aufgabenverwaltung | — |
ai-lacie |
LaCie-Laufwerksverwaltung | — |
ai-voicememo |
Sprachmemo-Transkription und Klassifizierung | 5200 |
ai-scholarly: 21 Forschungsprojekte
~/ai-mac-studio/scholarly/ fasst alle laufenden Forschungsprojekte zusammen. Die Bulk-Daten (~42 GB) liegen auf PDAI-1; die lokalen Pfade sind Symlinks.
~/ai-mac-studio/scholarly/
ai-sundial3d/ → /Volumes/PDAI-1/2026projectdata/ai-scholarly/ai-sundial3d
ai-applevoicerecorder/ → /Volumes/PDAI-1/2026projectdata/ai-scholarly/ai-applevoicerecorder
research/ → /Volumes/PDAI-1/2026projectdata/ai-scholarly/research
projects/ → /Volumes/PDAI-1/2026projectdata/ai-scholarly/projects
ai-publication: Publikationsregister
~/ai-mac-studio/publication/ enthält das kanonische ai-arxiv-Projekt und Symlinks zu den Paper-Verzeichnissen in ai-scholarly.
~/ai-mac-studio/publication/
arxiv/
ai-arxiv-project/ Katalog, Werkzeuge, Website
papers/ Symlinks → ai-scholarly/*/arxiv/
DuckDB-Katalog und MCP-Server
~/ai-mac-studio/agents/index.duckdb (40 Einträge)
~/ai-mac-studio/scholarly/index.duckdb (21 Einträge)
~/ai-mac-studio/publication/index.duckdb ( 7 Einträge)
python3 ~/ai-mac-studio/agents/index_catalog.py # alle drei Domänen neu indexierenDer MCP-Server ai-catalog ist in ~/.cursor/mcp.json registriert.
Datenschicht: PDAI-1-Volume
/Volumes/PDAI-1/
2026projectdata/ Nutzdaten der ai-*-Pakete (via Symlinks referenziert)
pdai-collections/ PDAI-Dokumentsammlungen (Euler, Kepler, Kirch, …)
editions/ 11 Editionen
Zeitachse
| Datum | Schritt |
|---|---|
| 2026-02 | ~/ai-mac-studio/privat/ erstellt (PrivatKanzlei, Syncthing) |
| 2026-03 | Tier-1-Datentrennung: 388 GB auf PDAI-1 ausgelagert |
| 2026-04-14 | INQUA-Archivierung auf 2025Berlin abgeschlossen |
| 2026-04-15 | Phase 1: Domain-Verzeichnisse angelegt; 47 Pakete mit Compat-Symlinks verschoben; DuckDB-Kataloge und MCP-Server in Betrieb |
| 2026-04-17 | Phase 2: Domänen direkt nach $HOME bewegt (kein Encapsulation-Wrapper); 13 LaunchAgents direkt umgeschrieben; 47 Compat-Symlinks entfernt; ~45 GB externalisiert; Dropbox komplett aus dem Ökosystem entfernt |
Letzte Aktualisierung: 2026-04-17