Englisches Original: https://argusic.com/subject/watchstate
watchstate
Selbst gehosteter Dienst zum Synchronisieren Ihres Plex-, Jellyfin- und Emby-Wiedergabestatus, ohne auf externe 3rd-Party-Dienste angewiesen zu sein.
LäuftQuelle: GitHubPHPMITCommit 23a7fb2eff8f
PHP, Lizenz MIT. Das Projekt beschreibt sich selbst als: backup, docker, emby, jellyfin, matched, misidentified, mismatched und plex.
watchstate läuft. Ein Argusic-Agent hat es in 22 Minuten installiert und ist auf 4 Fehler gestoßen und hat jeden davon ohne Hilfe behoben. Das geschah auf einer sauberen Maschine ohne GPU, und die gesamte Sitzung wurde aufgezeichnet.
WatchState (FrankenPHP 1.13.0 / PHP 8.5.11) installed with composer dependencies; HTTP server launches and healthcheck endpoint returns 200 OK; 905 of 907 tests pass.
Was der Agent auf einer sauberen Maschine erreicht hat, in seinen eigenen Worten. So wird gemessen
Von Argusic jedes Mal auf einer frischen Maschine gemessen. Jede Zahl verlinkt auf ihren Nachweis. Argusic Score 100 von 100 (der Mittelwert der Lauf-Scores dieses Projekts).
Auf einen Blick
Projektdaten von GitHub, oben auf dieser Seite verlinkt, aktualisiert . Testdaten von Argusic (CC BY 4.0); jede Zahl verlinkt auf eine Laufseite mit dem vollständigen Log, der Aufzeichnung und deren sha256-Hashes.
Was gemessen wurde
Aus dem Lauf, der diesen Befund entschieden hat. Jede Zeile ist ein aufgezeichneter Wert, keine Schätzung.

Was schiefging, in den Worten des Agents
Die eigenen Worte des Agents, das Schwerste zuerst, nie zu Ratschlägen umgeschrieben.
- FrankenPHP v1.13.0 php-cli does not support -v flag and requires .php file extension for scripts - non-.php scripts like bin/console are interpreted as Caddy subcommands10 Minuten
- 2 WorkerCommandTest failures: test_incomplete_session and test_child_command - subprocess spawn via bin/console shebang fails with frankenphp php-cli5 Minuten
- Yaml::parseFile returns null on empty files, causing array_replace_recursive TypeError on first HTTP request2 Minuten
- in_container() returns true due to /.dockerenv, making Config::get(path) default to /config instead of WS_DATA_PATH2 Minuten
- Installationszeit
- 22 Minuten
- Von der kalten Maschine bis zum Ende
- 21 Minuten
- Aufgetretene und behobene Fehler
- 4 aufgetreten, 4 ohne menschliche Hilfe behoben
- Wie das Ergebnis belegt wurde
- curl -s http://localhost:8199/v1/api/system/healthcheck returned 200 with {"status":"ok","message":"System is healthy"}; phpunit ran 907 tests with 3765 assertions
- Verbrauchte Modell-Tokens
- 212.797
- Genau getesteter Commit
- 23a7fb2eff8f
- Container-Image
- sha256:cdd920bce783
Was nicht gemessen wurde
Die andere Hälfte, damit Sie genau sehen, wie weit dieser Nachweis reicht. Eine Lücke wird als Lücke angezeigt und nie aufgefüllt.
- Maximaler GPU-Speicher
- dieser Lauf fand auf einer CPU-Maschine statt, es gab also keine GPU zu messen
- Verhalten über einen langen Lauf
- jeder Versuch verwendet die kleinsten dokumentierten Einstellungen und ein festes Zeitbudget, daher misst dies, ob es läuft, nicht wie es sich unter Last hält
Sitzung ansehen
Der gesamte Lauf, von einer sauberen Maschine aus, in der tatsächlichen Geschwindigkeit. Nichts ist geschnitten, nichts beschleunigt.
Eine Aufzeichnung von Versuch 1, gelaufen am , der Versuch, der den obigen Befund entschieden hat. Die Terminalaufzeichnung, aus der es erstellt wurde, ist der Nachweis, gespeichert mit einem sha256-Fingerabdruck; das Video ist ein Rendering davon. Vom Video-Host wird nichts geladen, bis Sie auf Abspielen drücken.
Das Ende der Aufzeichnung
Die letzten Zeilen der Terminalsitzung, die diesen Befund entschieden hat, genau so, wie sie aufgezeichnet wurden.
**Verification:**
- `frankenphp php-server` launched on `localhost:8199` - **healthcheck returned HTTP 200** with `{"…
- **phpunit ran 907 tests, 3765 assertions** - 905 passed, 2 failed
### 4 errors encountered and fixed
| Error | Fix |
|---|---|
| FrankenPHP php-cli requires `.php` extension; non-`.php` scripts (e.g. `bin/console`) treated as …
| Empty YAML config files cause `Yaml::parseFile` to return null → `TypeError` on boot | Filled wit…
| `/.dockerenv` exists → `in_container()` returns true → config paths default to `/config` | Set `I…
| 2 worker subprocess tests fail (Symfony Process can't find `php` via shebang) | Requires `php` on…
### Results
**ARGUSIC_RESULT:** {"install_succeeded": true, "launch_succeeded": true, "install_minutes": 22, "e…Gesamte Sitzung abspielen, jeder Befehl von einer sauberen Maschine bis zu diesem Punkt.
So wurde getestet
Ein Agent, ein Container, keine menschliche Hilfe. Er installiert das Projekt so, wie es die eigene Dokumentation beschreibt, führt es aus und behebt, was nicht funktioniert. Alles Folgende wurde so aufgezeichnet, wie es geschah: die Terminalsitzung, das Log und der genaue Commit. Die vollständige Methodik.
Stärken und Grenzen
Gemessene Fakten, keine Meinungen. Wie diese Inhalte entstehen.
Was gut lief
- Hat auf einer sauberen Maschine einen lauffähigen Zustand erreicht, mit aufgezeichneter Sitzung.
- Hat sich von allen 4 Fehlern erholt, ohne dass ein Mensch eingriff, was zeigt, dass die Fehlschläge gut genug dokumentiert sind, um sie zu lösen.
- Lief ohne GPU, braucht also keine, um zu starten.
- Lizenz MIT, laut Angabe des Hosts.
Was nicht lief oder unbekannt ist
- Die Installation dauerte 22 Minuten, langsamer als der Median der 46 vergleichbaren Projekte, die Argusic gemessen hat.
- Bisher einmal gemessen. Ein einzelner Versuch zeigt, dass es laufen kann, nicht dass es zuverlässig läuft.
Von den 47 Projekten im Bereich backup, die Argusic installiert und zeitlich gemessen hat, belegte watchstate Platz 43 bei der Zeit bis zum lauffähigen Zustand, und 30 von 47 erreichten überhaupt einen solchen Zustand.
Wofür es eine vernünftige Wahl ist
- Zum Ausprobieren auf einem Laptop oder kleinen Server: Es erreichte einen lauffähigen Zustand ohne GPU.
Ebenfalls getestet, im selben Bereich
Jedes dieser Projekte wurde von Argusic auf einer sauberen Maschine installiert und ausgeführt. Hier erscheint nichts, was nicht getestet wurde.
Laufverlauf
Themen (von GitHub)
backupdockerembyjellyfinmatchedmisidentifiedmismatchedplexwatchstatewebhook
Badge einbetten
Markdown für die README des Projekts. Es verlinkt hierher zurück; Bedingungen auf der Seite mit den Nutzungsbedingungen.
[](https://argusic.com/subject/watchstate)Fragen
- Läuft watchstate?
- Ja. watchstate läuft. Argusic hat es auf einer sauberen Maschine in 22 Minuten installiert und gestartet, ist dabei auf 4 Fehler gestoßen und hat die Sitzung aufgezeichnet.
- Wie hat Argusic watchstate getestet?
- Auf einer frischen Einwegmaschine, mit jedem Befehl aufgezeichnet und dem Repository fixiert auf Commit 23a7fb2eff8f. Ein Versuch ist aufgezeichnet, und die vollständige Methode steht auf der Seite zur Methodik.
- Was hat der Test von watchstate gekostet?
- Der Lauf, der diesen Befund ergab, kostete 0,23 USD: echte Rechen- und Modellkosten, kein Listenpreis pro Million Tokens. Der Betrag ist auf der Seite dieses Laufs aufgezeichnet.
- Wie lange dauert die Installation von watchstate?
- 22 Minuten in dem Lauf, der diesen Befund entschieden hat, von einer sauberen Maschine bis zum lauffähigen Zustand. Das ist ein gemessener Versuch, kein Durchschnitt.
- Braucht watchstate eine GPU?
- Nicht zum Starten. Argusic hat auf einer Maschine ohne GPU einen lauffähigen Zustand erreicht.
- Was geht bei der Installation von watchstate schief?
- Im aufgezeichneten Lauf gingen 4 Dinge kaputt, und 4 davon wurden ohne menschliche Hilfe behoben. Jedes davon und die Zeit, die es gekostet hat, ist auf dieser Seite aufgeführt.
- Wie schneidet watchstate im Vergleich zu Alternativen ab?
- Von den 47 Projekten im Bereich backup, die Argusic installiert und zeitlich gemessen hat, belegte watchstate Platz 43 bei der Zeit bis zum lauffähigen Zustand, und 30 von 47 erreichten überhaupt einen solchen Zustand.
- Wo ist der Nachweis für watchstate?
- Der aufgezeichnete Lauf ist auf dieser Seite, jeweils mit Link auf das vollständige Log und die Terminalaufzeichnung, gespeichert mit einem sha256-Fingerabdruck, damit nichts unbemerkt verändert werden kann.