docs: update README + SKILL.md with prompt, timeout, all current commands

This commit is contained in:
Helios Agent 2026-03-03 16:08:02 +01:00
parent 537ed95a3c
commit 7ddaf5ddfe
No known key found for this signature in database
GPG key ID: C8259547CD8309B5
2 changed files with 53 additions and 69 deletions

View file

@ -140,7 +140,9 @@ python remote.py exec "Moritz PC" whoami
```bash
python remote.py sessions # list sessions
python remote.py screenshot <session> # capture screenshot → /tmp/helios-remote-screenshot.png
python remote.py exec <session> <command...> # run shell command
python remote.py exec <session> <command...> # run shell command (PowerShell, no wrapper needed)
python remote.py exec <session> --timeout 600 <command...> # with custom timeout (seconds, default: 30)
python remote.py prompt <session> "Please click Save, then OK" # ask user to do something manually
python remote.py click <session> <x> <y> # mouse click
python remote.py type <session> <text> # keyboard input
python remote.py windows <session> # list windows

View file

@ -8,99 +8,81 @@ 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..."
- "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)
- **Abhängigkeit:** `pip install requests` (falls fehlt)
- `SKILL_DIR=/home/moritz/.openclaw/workspace/skills/helios-remote`
## Label-Routing
## Wichtige Regeln
`session_id` kann ein UUID oder ein Label-Name sein. Falls kein UUID, wird der Name in der Session-Liste nachgeschlagen:
```bash
python $SKILL_DIR/remote.py screenshot "Moritz PC" # sucht nach Label
```
- **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-Verzeichnis
SKILL_DIR=/home/moritz/.openclaw/workspace/skills/helios-remote
# Alle verbundenen Sessions anzeigen
# Sessions
python $SKILL_DIR/remote.py sessions
python $SKILL_DIR/remote.py server-version
python $SKILL_DIR/remote.py version "Moritz PC"
# Session benennen
python $SKILL_DIR/remote.py label <session_id> "Moritz-Laptop"
# Screenshot → /tmp/helios-remote-screenshot.png
python $SKILL_DIR/remote.py screenshot "Moritz PC"
# Screenshot machen → /tmp/helios-remote-screenshot.png
python $SKILL_DIR/remote.py screenshot <session_id>
# 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"
# Shell-Befehl ausführen
python $SKILL_DIR/remote.py exec <session_id> whoami
python $SKILL_DIR/remote.py exec <session_id> ls -la ~/Desktop
# Mausklick / Text tippen
python $SKILL_DIR/remote.py click "Moritz PC" 960 540
python $SKILL_DIR/remote.py type "Moritz PC" "Hello World"
# Mausklick senden
python $SKILL_DIR/remote.py click <session_id> 960 540
# Text tippen
python $SKILL_DIR/remote.py type <session_id> "Hello World"
# Fenster auflisten
python $SKILL_DIR/remote.py windows <session_id>
# Fenster nach Titel suchen (case-insensitive substring)
python $SKILL_DIR/remote.py find-window <session_id> "chrome"
# Alle Fenster minimieren
python $SKILL_DIR/remote.py minimize-all <session_id>
# Fenster fokussieren / maximieren
python $SKILL_DIR/remote.py focus <session_id> <window_id>
python $SKILL_DIR/remote.py maximize <session_id> <window_id>
# 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 <session_id> notepad.exe
python $SKILL_DIR/remote.py run <session_id> "C:\Program Files\app.exe" --arg1
python $SKILL_DIR/remote.py run "Moritz PC" notepad.exe
# Clipboard lesen / setzen
python $SKILL_DIR/remote.py clipboard-get <session_id>
python $SKILL_DIR/remote.py clipboard-set <session_id> "Text in die Zwischenablage"
# 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"
# Datei hoch-/runterladen
python $SKILL_DIR/remote.py upload <session_id> /tmp/local.txt "C:\Users\User\Desktop\remote.txt"
python $SKILL_DIR/remote.py download <session_id> "C:\Users\User\file.txt" /tmp/downloaded.txt
# 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"
```
## Beispiel-Workflow
## Typischer Workflow: UI-Aufgabe
1. Sessions abfragen um die Session-ID zu finden:
```bash
python $SKILL_DIR/remote.py sessions
```
→ Ausgabe z.B.: `a1b2c3d4-... [Moritz-Laptop] (Windows 11)`
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
2. Screenshot machen und anzeigen:
```bash
python $SKILL_DIR/remote.py screenshot a1b2c3d4-...
# → /tmp/helios-remote-screenshot.png
```
Dann mit `Read` tool oder als Bild an Moritz senden.
## Wenn etwas geklickt werden muss das ich nicht finde
3. Etwas ausführen:
```bash
python $SKILL_DIR/remote.py exec a1b2c3d4-... tasklist
```
## Fehlerbehandlung
Das Script gibt bei Fehlern immer aus:
- HTTP-Status + Reason
- Vollständige URL
- Response Body
Keine unklaren Fehlermeldungen - alles ist beschreibend.
```bash
python $SKILL_DIR/remote.py prompt "Moritz PC" "Bitte klicke auf [X], dann drücke OK"
```
→ Warte auf ACK, dann weitermachen.