Anleitung

So bringst du ein Live-Python-Skript auf eine Stream-Deck-Taste

Ein Stream Script läuft weiter und gibt eine Zeile aus, sobald sich die Taste ändern soll. Beschreibe die Taste und lass einen KI-Agenten das Skript schreiben, oder folge selbst den Regeln für ausgegebene Zeilen.

Plattform
Windows, macOS
Stream-Deck-Software
ab 7.6

Voraussetzungen

Betriebssystem
Angabe: Windows 11 (64-Bit, Intel/AMD) oder macOS ab 13
Stream-Deck-Software
Angabe: Stream-Deck-Software ab Version 7.6

Schritte

Die Info-Leiste zeigt das Ergebnis eines vom Agenten geschriebenen Skripts: release-watch.py meldet build 4812 passed
  1. Installiere das Plugin (Einrichtung von Arise Python Commander) und ziehe dann Stream Script auf eine Taste oder eine Neo-Info-Leiste.

  2. Klappe im Inspector "Ask an AI agent to build this" auf.

  3. Sag unter Description, was die Taste zeigen soll, zum Beispiel "the temperature outside, blue when it's below freezing".

  4. Drück Copy prompt. Der Prompt enthält die Skriptregeln, die Größe der Taste und die Lieferschritte, nie deinen Push-Token.

  5. Füge ihn in einen Agenten auf demselben Rechner ein, der Dateien lesen und Links öffnen kann, etwa Claude Code.

  6. Dein Agent kann schreiben, testen und lokal liefern. Erfolg hängt von Fähigkeiten und Datenzugriff ab. Die Lieferung speichert eine Inline-Kopie.

  7. Drück die Taste einmal. Sie zeigt live, dann jede ausgegebene Zeile. Eine Info-Leiste startet ohne Druck.

Was ein Stream Script ausgibt

Gib pro Update eine kurze Zeile aus. "Show example Python stream" im Inspector öffnet ein funktionierendes Skript.

print("...", flush=True)
Wirkung: Nutze flush=True oder sys.stdout.flush() für sofortige Zeilen. Sonst kann Python die Ausgabe bis später oder zum Prozessende puffern.
Reiner Text
Wirkung: Wird zum Wert, etwa ok oder 23,5 Grad. Eine Zeile gleich Match value 1 oder 2 zeigt ihr Bild.
progress:42|Syncing, progress=42, 75% | Uploading
Wirkung: Ein Balken, Prozentwert auf 0 bis 100 begrenzt.
Eine data:image/...-URI, rohes <svg>-Markup oder JSON {"image": "..."}
Wirkung: Malt die ganze Fläche: 144x144 auf einer Taste, 232x50 auf der Info-Leiste.
layout=radial; oder color=orange; vor einer Zeile
Wirkung: Wählt das Layout (nur bei Auto detect) oder färbt diese Aktualisierung um. Auf der Info-Leiste füllt color=0:#ff0000,1:#0000ff; den Balken.
Alles auf stderr
Wirkung: Färbt die Taste rot. Schreib Diagnosen in eine Datei.
Das Skript endet
Wirkung: Zeigt "done" (ohne Ausgabe) oder "ended" (mit Ausgabe). Auf einer Taste startet ein Druck es neu.

Script Canvas: mal die Taste selbst

Ein Python-Skript malt eine Pixel-Art-Blume auf eine Taste und eine Reihe aus fünf Blumen über die Neo-Info-Leiste
  • Jede ausgegebene Zeile ist ein Frame: eine data:image/...-URI, rohes <svg>-Markup oder JSON wie {"image": "...", "title": "..."}.
  • Gib einem SVG width und height, sonst nimmt das Plugin die Größe der viewBox, ersatzweise 144x144.
  • Das Skript startet, sobald die Taste erscheint. Andere Zeilen werden ignoriert, Debug-Ausgaben verschwinden also.
  • Das Plugin schreibt {"event": "ready"} beim Start und {"event": "keyDown"} bei jedem Druck auf stdin. Lesen ist optional.
  • stdin blockiert: Lies es in einem Hintergrund-Thread und gib die Frames weiter aus der Hauptschleife aus.
  • Beendet sich das Skript, zeigt die Taste stopped, und ein Druck startet es neu. Alles auf stderr zeigt einen Fehler.

Fehlerbehebung

Die Taste bleibt auf "live" und aktualisiert sich nie.
Mögliche Ursache: Die Ausgabe ist möglicherweise gepuffert und erreicht das Plugin deshalb nicht sofort.
Lösung: Nutze flush=True bei jedem print oder rufe sys.stdout.flush() auf.
Die Taste zeigt sofort "done" oder "ended".
Mögliche Ursache: Das Skript hat sich beendet.
Lösung: Halte es in einer Schleife.
Die Taste zeigt einen Fehler, obwohl das Skript funktioniert.
Mögliche Ursache: Es wurde etwas auf stderr geschrieben, auch eine harmlose Warnung.
Lösung: Schreib Diagnosen stattdessen in eine Datei.
Ein Inline-Skript findet seine Dateien oder Imports nicht.
Mögliche Ursache: __file__ zeigt auf das temporäre Skript, nicht aufs Projekt. Relative Pfade nutzen das Plugin-Arbeitsverzeichnis; Projektdateien/Module werden nicht mitkopiert.
Lösung: Nutze absolute Pfade; dateibasierte Skripte finden Projektdateien über __file__.
Der Agent kann das Skript nicht liefern.
Mögliche Ursache: Ein Chat im Browser kann ein Skript schreiben, es aber nicht auf die Taste legen.
Lösung: Füge das Skript selbst in "Script text" ein oder nimm einen Agenten, der auf diesem Rechner läuft.

Nicht weitergekommen? Schreib uns

Wie es weitergeht

Arise Python Commander

  • Windows, macOS
  • ab 7.6

Nicht weitergekommen? Schreib uns