Files
openclaw/TOOLS.md

185 lines
7.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# TOOLS.md - Local Notes
Skills define _how_ tools work. This file is for _your_ specifics — the stuff that's unique to your setup.
## What Goes Here
Things like:
- Camera names and locations
- SSH hosts and aliases
- Preferred voices for TTS
- Speaker/room names
- Device nicknames
- Anything environment-specific
## Examples
```markdown
### Cameras
- living-room → Main area, 180° wide angle
- front-door → Entrance, motion-triggered
### SSH
- home-server → 192.168.1.100, user: admin
### TTS
- Preferred voice: "Nova" (warm, slightly British)
- Default speaker: Kitchen HomePod
```
## Why Separate?
Skills are shared. Your setup is yours. Keeping them apart means you can update skills without losing your notes, and share skills without leaking your infrastructure.
---
Add whatever helps you do your job. This is your cheat sheet.
### Paperless-ngx
- URL: https://docs.home.kies-media.de/
- User: greggy
- Credentials in `.bashrc`/`.profile` (`$PAPERLESS_USER`, `$PAPERLESS_PASS`)
- Dokumenttypen: Rechnungen, Versicherungspolicen, Verträge, wichtige Entscheidungen
- Workflow: Bei Email-Check relevante Dokumente automatisch archivieren
### Google Workspace (gog CLI)
- Version: v0.12.0
- Account: `mkiesewetter9@googlemail.com`
- OAuth authentifiziert für: contacts, calendar
- Keyring-Passwort: `$GOG_KEYRING_PASSWORD` in `.bashrc`/`.profile`
- Befehle:
- Contacts: `gog contacts list --max 20`
- Calendar: `gog calendar events primary --account mkiesewetter9@googlemail.com --from <iso> --to <iso>`
- Kalender-Farben: `gog calendar colors`
### Email (AgentMail)
- Inbox: `max-kies-media-ai-assistent@agentmail.to`
- Name: Max Kies-Media AI Assistent
- API Key: `$AGENTMAIL_API_KEY` in `.bashrc`
- Signatur: "Max von Kies-Media KI-Assistent von Martin"
- Footer in jeder Email:
```
--
Martin Kiesewetter
Tel.: 0176-45853923
Email: mki@kies-media.de
```
- Reply-To: `mki@kies-media.de` verwenden wenn möglich
### OpenRouter
- API Key: `$OPENROUTER_API_KEY` in `.bashrc`
- URL: https://openrouter.ai/api/v1
- ⚠️ **SICHERHEITSREGEL:** Niemals API-Keys, Passwörter, Tokens oder andere geheime Informationen an kostenlose OpenRouter-Modelle (free-Tier) weiterleiten. Diese Modelle können Daten loggen oder für Training nutzen.
- Free-Modelle (z.B. `deepseek/deepseek-v4-flash:free`) nur für unkritische Anfragen nutzen
- Bei Anfragen die Credentials/Secrets enthalten → bezahltes Modell oder lokales Modell verwenden
- ⚠️ **PATCH NACH JEDEM OPENCLAW-UPDATE:** Datei `/usr/lib/node_modules/openclaw/dist/openai-transport-stream-BkI6rJ3U.js` patchen:
- Zeile mit `function flattenStringOnlyCompletionContent(content) {` suchen
- Direkt danach, vor `if (!Array.isArray(content)) return content;`, einfügen: `if (content === null || content === undefined) return "";`
- Grund: DeepSeek V4 Flash (free) akzeptiert kein `null` in message content OpenClaw sendet das aber bei Tool-Result-Nachrichten
- Nach dem Patch: Gateway neu starten
### Git
- Remote: `https://git.home.kies-media.de/greggy/openclaw.git`
- Branch: `master`
- User: `greggy`
- Workspace Repo: `/root/.openclaw/workspace`
- Credentials in `.bashrc`/`.profile`
### TrueNAS Ollama-Server (192.168.8.112)
Zwei separate Ollama-Container mit unterschiedlichen GPUs.
#### AMD-Container (Port 11439)
- URL: `http://192.168.8.112:11439/v1` (HTTP, kein Auth, apiKey: `ollama`)
- **GPU:** AMD Radeon RX 7800 XT (Navi 32, Gigabyte, 16GB VRAM)
- **Software:** Ollama
- **Provider-Name:** `TrueNAS - AMD`
- Verfügbare Modelle:
- qwen3:32b (Q4_K_M, 32.8B, 18.8GB)
- qwen3:14b (Q4_K_M, 14.8B, 8.6GB)
- mistral-small3.2 (Q4_K_M, 24.0B, 14.1GB) Multimodal (Text+Vision), 128K Context, Tool-Calling, Apache 2.0
- gpt-oss:20b (MXFP4, 20.9B, 12.8GB) OpenAI Open-Weight, MoE (~3.6B active/token), Tool-Use, Chat+Coding
- **Aktuell:** qwen3:32b lädt die vollen 16GB VRAM → kein Platz für zweites Modell parallel
- ⚠️ **Einschränkung:** 14b/32b können Befehle/Tool-Results nicht korrekt verarbeiten der ~26k Token System-Prompt überfordert die Modelle
- **Verwendung:** Notfall-Fallback wenn Cloud-Provider down einfache Textantworten gehen, aber keine Tool-Nutzung
- Alias: `Qwen3-14b-Truenas` / `Qwen3-32b-Truenas` / `Mistral-Small-Truenas` / `GPT-OSS-Truenas`
#### NVIDIA-Container (Port 11434)
- URL: `http://192.168.8.112:11434/v1` (HTTP, kein Auth, apiKey: `ollama`)
- **GPU:** NVIDIA RTX 3060 Ti Lite Hash Rate (GA104, 8GB VRAM)
- **Software:** Ollama
- Verfügbare Modelle: qwen3:32b, qwen3:14b, qwen3:8b, mistral-small3.2, llama3, gpt-oss:20b
- ⚠️ **8GB VRAM-Limit:** qwen3:8b (5.2GB) oder llama3 (4.7GB) passen problemlos; qwen3:14b knapp (9.3GB, evtl. partial offload)
- **Verwendung:** Kleine lokale Modelle für einfache Tasks
### TrueNAS Server (192.168.8.112)
**Hardware:**
- Mainboard: Supermicro H12SSL-i (Milan, Dual-Sockel-fähig)
- CPU: AMD EPYC 7C13 (64 Cores)
- RAM: 512 GB DDR4 2666 MHz
- GPU: NVIDIA RTX 3060 Ti Lite Hash Rate (8 GB VRAM)
- HBA: LSI SAS 9300-16i (IT Mode, 12 Gbit/s, 16 Ports, 2× SAS3008 via PLX PEX 8724 Switch)
- Netzwerk: Mellanox ConnectX-2 MNPA19-XTR (10 GbE SFP+, PCIe x8)
- Netzwerk: 2× Broadcom BCM5720 Gigabit Ethernet (onboard)
- IPMI/BMC: ASPEED Graphics (Remote Management)
- NVMe: WD Black SN850X 1TB (boot-pool)
**Storage (Pool: Main):**
- 1× WD Black SN850X 1TB NVMe (boot-pool)
- 2× TeamGroup T253 512GB SSD (sdd, sdf)
- 2× Seagate Exos X18 16TB HDD 7200rpm (sdg, sdh) ST16000NM000J
- 2× Toshiba MG08 16TB HDD 7200rpm (sdi, sdj) MG08ACA16TE
- 2× HGST Ultrastar 8TB HDD 7200rpm (sdk, sdc) HUH721008ALE600
- 2× Toshiba 8TB HDD 7200rpm (sdb, sde) HDWG480
- 1× Seagate Exos X18 18TB HDD 7200rpm (sda, unassigned) ST18000NM000J
**ZFS-Layout (Main-Pool):**
- 2× RAIDZ1 VDEVs (je 5 HDDs, 1 Parität pro VDEV)
- 1× Mirror SLOG (2× 512GB SSD als ZIL)
- Effektiv: ~102 TB nutzbar von ~128 TB roh
- Belegt: 65.3 TB (64%), Frei: 36.6 TB (Stand: Mai 2026)
- **Zusätzlich:** 18TB Seagate Exos X18 (sda) nicht zugewiesen, S.M.A.R.T. ✅ gesund
- ⚠️ RAIDZ1 bei 16TB-Platten: nur single parity
### TrueNAS SMB (192.168.8.112)
- Über WireGuard erreichbar: `192.168.8.112`
- Credentials in `.bashrc`: `$TRUENAS_SMB_USER`, `$TRUENAS_SMB_PASS`, `$TRUENAS_SMB_HOST`
- SMB-Credentials-Datei: `/root/.smb-credentials` (für fstab)
- Shares: Filme, ix-applications, martin, isos, Spiele, Programme, Audiobooks, Google, Musik, Familiensachen, Lara, Luisa, openclaw
- SMB-Befehl: `smbclient //$TRUENAS_SMB_HOST/<share> -U $TRUENAS_SMB_USER%$TRUENAS_SMB_PASS`
- Shares auflisten: `smbclient -L $TRUENAS_SMB_HOST -U $TRUENAS_SMB_USER%$TRUENAS_SMB_PASS`
### OpenClaw Arbeitsbereich (TrueNAS)
- SMB-Share: `//192.168.8.112/openclaw` → gemountet auf `/mnt/openclaw-smb`
- Workspace-Spiegel: `/mnt/openclaw-smb/workspace/`
- Auto-Mount via `/etc/fstab` (credentials: `/root/.smb-credentials`)
- Sync-Scripts:
- `scripts/sync-to-truenas.sh` synct Workspace zum TrueNAS
- `scripts/commit-and-sync.sh` git commit + push + sync zu TrueNAS
- Workflow: Nach Datei-Änderungen → `bash scripts/commit-and-sync.sh`
### Landingpage Testumgebung
- **Server:** Apache auf dem OpenClaw-Server (lokal)
- **DocumentRoot:** `/var/www/test/html`
- **URL (localhost):** `http://localhost:6427/`
- **URL (extern):** `http://178.104.150.0:6427/`
- **Port:** 80 + 6427
- **Deploy:** Branch klonen → rsync nach `/var/www/test/html/`
- **Repo:** `greggy/landingpage-haus-schleusingen`
- ⚠️ **Nach jedem Deploy:** URL als klickbarer Link im Chat posten: http://178.104.150.0:6427/
- **⚠️ Wichtig:** Feature-Branches werden VOR dem Merge auf die Testumgebung deployed. Nach PR-Merge ist kein erneuter Deploy nötig main ist dann automatisch auf dem gleichen Stand.
### Exec-Timeouts (Konventionen)
- Kurze CLI-Abfragen: **150 Sekunden**
- Python-Skripte: **300 Sekunden**
- Browser-Vorgänge: **300 Sekunden**