101 lines
3.9 KiB
Markdown
101 lines
3.9 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
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
|
|
python $SKILL_DIR/remote.py screenshot "Moritz PC"
|
|
|
|
# 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
|
|
```
|
|
|
|
## ⚠️ 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).
|