Uebergabe: Stand, offene Punkte, Einstieg fuer den naechsten
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_013VTGjd92LsDDWF3frd9FTB
This commit is contained in:
1 parent
974dfd075b
commit
71dd660d01
3 files changed
+206
-4
No files matched your search
+113
@@ -0,0 +1,113 @@
|
||||
# Übergabe
|
||||
|
||||
Stand **2026-09-09**. Wer hier weitermacht, sollte diese Seite zuerst lesen und
|
||||
danach [`07-mvp-plan.md`](07-mvp-plan.md).
|
||||
|
||||
## Wo das Projekt steht
|
||||
|
||||
Vier von sieben Scheiben des MVP „Clip-Knopf" sind gebaut. Die Kette vom
|
||||
Auslöser bis zum fertigen Short steht **im Code vollständig** — geprüft ist sie
|
||||
überall dort, wo es ohne Abdus Stream-PC ging.
|
||||
|
||||
| Scheibe | Stand | Nachweis |
|
||||
|---|---|---|
|
||||
| S0 Container + Toolchain | fertig | `check-env` ohne harte Fehler |
|
||||
| S1 Einrichtung, Auth, DB, Chat | fertig | Daemon läuft, Chat verbunden, Secrets verschlüsselt |
|
||||
| S2 OBS + `!clip` | Code fertig, **nicht abgenommen** | braucht laufendes OBS |
|
||||
| S3 9:16-Render | fertig | Durchlauf mit künstlicher Aufnahme |
|
||||
| S4 Untertitel | fertig | Durchlauf mit echtem deutschen Clip |
|
||||
| S5 Onboarding + Sichtung | offen | — |
|
||||
| S6 Erstchatter-Begrüßung | offen | — |
|
||||
|
||||
53 Tests, alle grün. Vollständige Liste dessen, was noch fehlt:
|
||||
[`offene-punkte.md`](offene-punkte.md).
|
||||
|
||||
## Was jemand wissen muss, bevor er etwas anfasst
|
||||
|
||||
**Es gibt keine Abhängigkeiten und keinen Build.** Node 24 bringt SQLite,
|
||||
WebSocket, `fetch` und die Ausführung von TypeScript mit. `node docker/entrypoint.ts`
|
||||
läuft direkt. Deshalb gilt: nur *löschbare* TypeScript-Syntax — keine `enum`,
|
||||
keine Parameter-Properties im Konstruktor, keine `namespace`. `erasableSyntaxOnly`
|
||||
in der `tsconfig.json` erzwingt das und hat schon einen echten Fehler gefangen.
|
||||
|
||||
**Alles läuft unter einem Dach**, einem Prozess in einem Container. Schwere
|
||||
Arbeit (ffmpeg, whisper) läuft als Kindprozess und darf abstürzen. Der Ingest
|
||||
darf nie sterben — was er nicht mitschreibt, ist für immer weg.
|
||||
|
||||
**Zugangsdaten kommen aus der Weboberfläche**, nicht aus einer Datei. Sie liegen
|
||||
verschlüsselt in einem Docker-Volume, bewusst außerhalb der Datenbank, weil die
|
||||
gesichert und dabei auf die Windows-Seite kopiert wird.
|
||||
|
||||
**Rohdateien gehören ins Arbeits-Volume**, nicht in den Windows-Bind-Mount. Über
|
||||
die WSL2-Brücke zu encodieren kostet ein Vielfaches. Dagegen habe ich einmal
|
||||
selbst verstoßen — der Fehler fiel erst in S3 auf.
|
||||
|
||||
Die Begründungen stehen in [`decisions/`](decisions/), sechs ADRs. Wer eine
|
||||
davon umwerfen will, sollte sie vorher lesen; jede hat einen Grund, der beim
|
||||
Bauen aufgetaucht ist.
|
||||
|
||||
## Loslegen
|
||||
|
||||
```powershell
|
||||
git clone https://git.zeasy.dev/ZeasyAlex/abdulive.git
|
||||
cd abdulive
|
||||
Copy-Item config\config.example.yaml config\config.yaml
|
||||
|
||||
docker compose build
|
||||
docker compose run --rm toolkit check-env
|
||||
docker compose run --rm toolkit fetch-model # ca. 465 MB
|
||||
docker compose up -d
|
||||
```
|
||||
|
||||
Dann `http://localhost:4792/setup` öffnen. Ausführlich in
|
||||
[`05-setup.md`](05-setup.md).
|
||||
|
||||
Tests:
|
||||
|
||||
```powershell
|
||||
docker run --rm -v "${PWD}:/app" -w /app node:24-bookworm-slim `
|
||||
node --test "packages/**/*.test.ts" "apps/**/*.test.ts"
|
||||
```
|
||||
|
||||
Typprüfung (das Einzige, wofür npm gebraucht wird):
|
||||
|
||||
```powershell
|
||||
docker run --rm -v "${PWD}:/app" -w /tmp node:24-bookworm-slim sh -c `
|
||||
"npm i -s typescript@5.9 @types/node && cd /app && /tmp/node_modules/.bin/tsc --noEmit --typeRoots /tmp/node_modules/@types"
|
||||
```
|
||||
|
||||
## Die drei Dinge, die Abdu tun muss
|
||||
|
||||
1. **Zwei Twitch-Apps anlegen** (dev.twitch.tv/console/apps), Redirect-URI
|
||||
`http://localhost:4792/callback`. Client-ID und Secret danach auf der
|
||||
Einrichtungsseite eintragen — nicht in eine Datei.
|
||||
2. **OBS einrichten**: obs-websocket an (Port 4455), Wiedergabepuffer 90 s,
|
||||
Hotkey auf „Wiedergabepuffer speichern", getrennte Audiospuren.
|
||||
3. **Layout umstellen** nach [`obs-layout.md`](obs-layout.md). Die
|
||||
Ausrichtungsvorlage in OBS über die Szene legen, Quellen einpassen, wieder
|
||||
ausblenden. Danach `calibrate` zur Kontrolle.
|
||||
|
||||
Ohne Punkt 1 liest das Toolkit den Chat anonym mit und kann nichts senden.
|
||||
Ohne Punkt 2 gibt es keine Clips. Ohne Punkt 3 sitzt der Ausschnitt schief.
|
||||
|
||||
## Wo ich weitermachen würde
|
||||
|
||||
**S5.** Nicht wegen des Codes, sondern weil das Werkzeug ohne Einrichtungs-
|
||||
Assistenten und Sichtungsseite für Abdu nicht bedienbar ist. Die Kette
|
||||
funktioniert, aber sie hat noch keine Oberfläche, die jemand ohne Erklärung
|
||||
benutzt. Abnahmekriterium steht im Plan: *Ein Fremder kommt von „nichts
|
||||
eingerichtet" bis zum ersten eigenen Clip, ohne die Dokumentation zu lesen.*
|
||||
|
||||
Davor, wenn Gelegenheit ist: **S2 an einem laufenden OBS abnehmen**. Das ist
|
||||
die einzige ungeprüfte Stelle in der ganzen Kette, und alles Weitere hängt
|
||||
daran.
|
||||
|
||||
## Womit ich nicht zufrieden bin
|
||||
|
||||
Die Untertitel sind brauchbar, nicht gut. `ggml-small` verhört sich hörbar
|
||||
(„Danke" wurde „Dank es"), die Schrift ist unauffällig, und das fortlaufende
|
||||
Einfärben ist nicht der Stil, der auf Shorts trägt. Sechs konkrete
|
||||
Verbesserungen stehen in [`offene-punkte.md`](offene-punkte.md).
|
||||
|
||||
Und: Das Aufräumen im Arbeits-Volume fehlt komplett. Rohdateien sammeln sich
|
||||
unbegrenzt an. Das ist die Lücke, die als Erstes weh tun wird.
|
||||
Reference in new issue
Block a user