feat: add OpenClaw skill (remote.py + SKILL.md + config.env.example)
This commit is contained in:
parent
4bad20a24c
commit
fdd2124da8
3 changed files with 527 additions and 0 deletions
106
skills/SKILL.md
Normal file
106
skills/SKILL.md
Normal file
|
|
@ -0,0 +1,106 @@
|
|||
# Skill: helios-remote
|
||||
|
||||
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..."
|
||||
- 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)
|
||||
|
||||
## Label-Routing
|
||||
|
||||
`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
|
||||
```
|
||||
|
||||
## Befehle
|
||||
|
||||
```bash
|
||||
# Skill-Verzeichnis
|
||||
SKILL_DIR=/home/moritz/.openclaw/workspace/skills/helios-remote
|
||||
|
||||
# Alle verbundenen Sessions anzeigen
|
||||
python $SKILL_DIR/remote.py sessions
|
||||
|
||||
# Session benennen
|
||||
python $SKILL_DIR/remote.py label <session_id> "Moritz-Laptop"
|
||||
|
||||
# Screenshot machen → /tmp/helios-remote-screenshot.png
|
||||
python $SKILL_DIR/remote.py screenshot <session_id>
|
||||
|
||||
# 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 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>
|
||||
|
||||
# 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
|
||||
|
||||
# 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"
|
||||
|
||||
# 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
|
||||
```
|
||||
|
||||
## Beispiel-Workflow
|
||||
|
||||
1. Sessions abfragen um die Session-ID zu finden:
|
||||
```bash
|
||||
python $SKILL_DIR/remote.py sessions
|
||||
```
|
||||
→ Ausgabe z.B.: `a1b2c3d4-... [Moritz-Laptop] (Windows 11)`
|
||||
|
||||
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.
|
||||
|
||||
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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue