helios-remote/SKILL.md

4.4 KiB

Skill: helios-remote

Hinweis: Dieses Repo enthält außer diesem Skill noch Rust-Code (Client, Server) und Assets. Die anderen Dateien und Ordner im Repo sind für den Skill nicht relevant - nicht lesen, nicht anfassen.

Steuere PCs die über den Helios Remote Relay-Server verbunden sind.

Wann nutzen

Wenn Moritz sagt, dass ich etwas auf einem verbundenen PC tun soll:

  • "Mach auf meinem PC..."
  • "Schau mal was auf dem Rechner läuft..."
  • "Nimm einen Screenshot von..."
  • "Klick auf X, tippe Y..."
  • Allgemein: Remote-Zugriff auf einen PC der gerade online ist

Setup

  • Script: skills/helios-remote/remote.py
  • Config: skills/helios-remote/config.env (URL + API-Key, nicht ändern)
  • SKILL_DIR=/home/moritz/.openclaw/workspace/skills/helios-remote

Wichtige Regeln

  • Vor destruktiven Aktionen (Wallpaper, Registry, Systemeinstellungen, Dateien löschen) immer erst den aktuellen Zustand lesen und merken!
  • Wallpaper auslesen: (Get-ItemProperty 'HKCU:\Control Panel\Desktop').WallPaper
  • Label-Routing: session_id kann UUID oder Label-Name sein → einfach "Moritz PC" verwenden

Befehle

SKILL_DIR=/home/moritz/.openclaw/workspace/skills/helios-remote

# Sessions
python $SKILL_DIR/remote.py sessions
python $SKILL_DIR/remote.py server-version
python $SKILL_DIR/remote.py version "Moritz PC"

# Screenshot → /tmp/helios-remote-screenshot.png
# IMMER screenshot-window bevorzugen (spart Bandbreite)!
python $SKILL_DIR/remote.py screenshot-window "Moritz PC" "chrome"   # aktives Fenster by title
python $SKILL_DIR/remote.py screenshot "Moritz PC"                    # nur wenn kein Fenster bekannt

# Shell-Befehl (PowerShell, kein wrapper nötig)
python $SKILL_DIR/remote.py exec "Moritz PC" "Get-Process"
python $SKILL_DIR/remote.py exec "Moritz PC" "hostname"
# Mit längerer Timeout für Downloads etc. (default: 30s)
python $SKILL_DIR/remote.py exec "Moritz PC" --timeout 600 "Invoke-WebRequest -Uri https://... -OutFile C:\file.zip"

# Mausklick / Text tippen
python $SKILL_DIR/remote.py click "Moritz PC" 960 540
python $SKILL_DIR/remote.py type "Moritz PC" "Hello World"

# Fenster (nur sichtbare werden angezeigt)
python $SKILL_DIR/remote.py windows "Moritz PC"
python $SKILL_DIR/remote.py find-window "Moritz PC" "chrome"
python $SKILL_DIR/remote.py focus "Moritz PC" <window_id>
python $SKILL_DIR/remote.py maximize "Moritz PC" <window_id>
python $SKILL_DIR/remote.py minimize-all "Moritz PC"

# Programm starten (fire-and-forget)
python $SKILL_DIR/remote.py run "Moritz PC" notepad.exe

# User um etwas bitten (zeigt MessageBox, blockiert bis OK)
python $SKILL_DIR/remote.py prompt "Moritz PC" "Bitte klicke auf Speichern, dann OK"
python $SKILL_DIR/remote.py prompt "Moritz PC" "UAC-Dialog erscheint gleich - bitte bestätigen" --title "Aktion erforderlich"

# Clipboard
python $SKILL_DIR/remote.py clipboard-get "Moritz PC"
python $SKILL_DIR/remote.py clipboard-set "Moritz PC" "Text in Zwischenablage"

# Dateien hoch-/runterladen
python $SKILL_DIR/remote.py upload "Moritz PC" /tmp/local.txt "C:\Users\Moritz\Desktop\remote.txt"
python $SKILL_DIR/remote.py download "Moritz PC" "C:\Users\Moritz\file.txt" /tmp/downloaded.txt

# Label setzen
python $SKILL_DIR/remote.py label "Moritz PC" "Neues Label"

Typischer Workflow: UI-Aufgabe

  1. screenshot → Bildschirm anschauen
  2. find-window → Fenster-ID holen
  3. focus → Fenster in den Vordergrund
  4. exec / click / type → Aktion ausführen
  5. screenshot → Ergebnis prüfen

Warten bis ein Fenster erscheint (z.B. nach Programmstart)

python $SKILL_DIR/remote.py wait-for-window "Moritz PC" "notepad" --timeout 10

Status: Relay + remote.py + Client-Commit vergleichen (sind alle in sync?)

python $SKILL_DIR/remote.py status "Moritz PC"

Client-Log (letzte 100 Zeilen, --lines für mehr)

python $SKILL_DIR/remote.py logs "Moritz PC" python $SKILL_DIR/remote.py logs "Moritz PC" --lines 200


## ⚠️ Klick-Regel (wichtig!)

**Niemals blind klicken.** Pixel-Koordinaten aus Screenshots sind unzuverlässig.

Wenn ich auf einen Button oder UI-Element klicken muss:
1. Erst `prompt` benutzen um Moritz zu bitten es selbst zu klicken
2. Dann weitermachen sobald er OK drückt

```bash
python $SKILL_DIR/remote.py prompt "Moritz PC" "Bitte klicke auf [Speichern], dann OK drücken"

Ausnahme: wenn ich die exakten Koordinaten eines Elements kenne (z.B. durch wiederholte Nutzung desselben UIs).