Openclaw Mailverkehr und weitere Agenten erstellen

Words
738
Reading
4 min
Listen
Play
6M

Hallo zusammen,

In meiner vorherigen Dokumentation habe ich die Installation von OpenClaw und die ersten Schritte beschrieben. In diesem Beitrag möchte ich weitere Erfahrungen teilen:

  • zur Einrichtung der Mail‑Funktion mit Himalaya und GMX,
  • wie man einen weiteren Agenten in Discord hinzufügt,
  • sowie einige Tipps und Troubleshooting‑Hinweise, die sich im Betrieb ergeben haben.

Installation der Funktion GMX Mails senden und empfangen

So sieht man welche Skills der Agent hat und welche davon aktiviert sind:

# Im Host ‑ Terminal:
docker exec -it openclaw-openclaw-gateway-1 bash
node index.js skills list

2000000700062719000133AE5D43DACB.wmf

Skills werden zwar am Besten über Clawhub installiert, aber das hier verwendete Mailversendetool "Himmalaya" ist eine Linux- und keine nodeJS Voraussetzung und muss daher über Dockerfile installiert werden.

Um es einmalig zu testen, installieren wir Himalaya einmal manuell im Container.

Himalaya im Gateway-Container installieren

Im Host ‑ Terminal:

docker exec -it openclaw-openclaw-gateway-1 bash

Im Container (als node):

#Prüfen, welcher User und HOME
whoami
echo $HOME

Die Installation landet standardmäßig unter $HOME/.local/bin.

# Sicherstellen, dass Verzeichnis existiert
mkdir -p "$HOME/.local/bin"
curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | \
# PATH für die aktuelle Session erweitern
# Das ist persistent in der docker-compose-yml durch:
export PATH="$HOME/.local/bin:$PATH"
# Test
himalaya --version
# Test, ob es gefunden wird
himalaya --version

20000007000627190001AEAC08323382.wmf

Den Pfad persistieren:

echo 'export PATH="$HOME/.local/bin:$PATH"' >> ~/.bashrc

Nach dem erfolgreichen Test (Himalaya --version), persistieren wir Himalaya im Dockerfile, damit es bei jedem Build automatisch installiert wird:

Himalaya via Dokerfile ins Image einbauen

Folgender Eintrag (# Himalaya installieren) wird in das Dockerfile hinzugefügt:

# Himalaya installieren
# Als root installieren, Binary landet standardmäßig in /usr/local/bin
RUN curl -sSL https://raw.githubusercontent.com/pimalaya/himalaya/master/install.sh | \

# Sicherstellen, dass /usr/local/bin im PATH ist
ENV PATH="/usr/local/bin:${PATH}"
...

ARG OPENCLAW_DOCKER_APT_PACKAGES=""
RUN if [ -n "$OPENCLAW_DOCKER_APT_PACKAGES" ]; then \
...

Das Image wird gebaut mit:

docker build -t openclaw:local -f Dockerfile .

(Mehr zu Images im nächsten Post)


Dieses war die Voraussetzung für den Skill, den wir nun installieren wollen:

Himalaya-Skill installieren und konfigurieren

In der Bash vom openclaw-Container geben wir folgendes ein:

$ docker exec -it --user root openclaw-openclaw-gateway-1 bash
root@a4c0f313aa9b:/app# chown -R node:node /home/node/.config

Ich habe bei gmx einen neuen Account angelegt, damit ich den Mailverkehr für den Bot von meinem persönlichen Account trennen kann. Die Zugangsdaten habe ich in die .env eingetragen.

Dann wechseln wir wieder in die "node-Shell" und führen dort aus:

cd /home/node/.openclaw/workspace
# Non-interaktiver Installer für Skills
npx clawhub@latest install himalaya
node@a4c0f313aa9b:~/.openclaw/workspace$ npx clawhub@latest install himalaya
✔ OK. Installed himalaya -> /home/node/.openclaw/workspace/skills/himalaya
node@a4c0f313aa9b:~/.openclaw/workspace/skills/himalaya/references$ himalaya account configure gmx

20000007000627190003C12FAD17C3A8.wmf

Das erzeugt eine Config-Datei mit dem Namen config.toml, in der die Zugangsdaten für den GMX-Account gespeichert werden. Diese Datei sollte sicher aufbewahrt und nicht öffentlich zugänglich gemacht werden, da sie sensible Informationen enthält.

Nun versenden wir unsere erste Mail über die Kommandozeile im Container, um zu testen, ob alles funktioniert:

node@a4c0f313aa9b:~/.openclaw/workspace/skills/
himalaya message send << 'EOF'
From: helbard.bot@gmx.de
To: achim_mertens@gmx.de
Subject: Mein erster Himalaya Test
Dies ist der Body.
EOF

20000007000627190001F71FAE427F42.wmf

Das hat, trotz Fehlermeldung, funktioniert:

200000070005A95100045E62211369D5.wmf

Ordnerliste ansehen (IMAP testen)

Im Container:

# Alle Ordner (Mailboxes) deines GMX-Accounts anzeigen
himalaya folder list

Letzte eingegangene Mails aus der INBOX lesen

# Die 10 neuesten Mails in INBOX
himalaya envelope list --page-size 10 --folder INBOX

Eine bestimmte Mail lesen (z.B. die neueste mit Index 1):

himalaya message read 1 --folder INBOX

200000070006271900032ACE90546DCC.wmf


Skill zur Verfügung stellen

Damit der Agent Mails lesen/schreiben kann, muss er den Himalaya ‑ Skill sehen und nutzen. Ich habe zwar Himalaya + Skill installiert, aber jetzt kommen die letzten Schritte: Skill sichtbar machen, ggf. aktivieren und dann über Prompts ansteuern.

Prüfen, ob der Himalaya-Skill in OpenClaw sichtbar ist

Im CLI ‑ Container:

cd /app
node dist/index.js skills list

Suche in der Ausgabe nach himalaya. Wenn himalaya dort vorkommt → gut, weiter mit Schritt

Wenn nicht, dann Skills-Verzeichnis registrieren:

node dist/index.js config set skills.watcher.enabled true
node dist/index.js config set skills.load.extraDirs '["/home/node/.openclaw/workspace/skills"]'
node dist/index.js gateway restart
node dist/index.js skills list

Dem Agenten sagen , dass er den Skill nutzen darf

node dist/index.js config set skills.entries.himalaya.enabled true
node dist/index.js gateway restart (bzw. docker compose down + docker compse up)
User@DESKTOP-RVPAUUG MINGW64 /d/Users/User/git/openclaw (main)
$ docker exec -it openclaw-openclaw-gateway-1 bash
node@73400927e875:/app$ node dist/index.js config get skills.entries
�� OpenClaw
{
}

Probleme & Lösungen

Problem 1:

Beim Senden von E-Mails über die Kommandozeile mit dem himalaya-Tool kam es wiederholt zum Absturz (index out of bounds: the len is 0 but the index is 0), wenn sowohl eine Pipe (echo ... |) als auch ein Heredoc (<< 'EOF') verwendet wurden. Dies lag daran, dass die Shell beide Eingabearten interpretierte und himalaya effektiv mit leerem Input versorgt wurde.

Lösung: (dem Agenten mitteilen):

Verwende ausschließlich die reine Heredoc-Syntax, wenn du E-Mails mit himalaya versendest:
bash himalaya message send << 'EOF' From: <sender_email> To: <recipient_email> Subject: <subject> body: <body_content> EOF


Problem 2:

Beim (erfolgreichen) versenden erscheint die Meldung:

Error:

Ursache: Bug in der Himalaya Version

Lösung:

Einen Ordner "Sent" (Groß/Kleinschreibung beachten) in GMX anlegen.


Cron Jobs

In OpenClaw können Cron Jobs eingerichtet werden, um regelmäßig wiederkehrende Aufgaben zu automatisieren. Zum Beispiel könnte man einen Cron Job erstellen, der täglich um 9 Uhr morgens eine Zusammenfassung der neuesten E-Mails aus der INBOX sendet oder bestimmte Mails automatisch archiviert.

20000007000627190006660AB02A1CAA.wmf

200000070006271900041E33E7849189.wmf

20000007000627190002DCE0130E74BB.wmf


Neuer Agent

Das schöne an Openclaw ist, dass viele Befehle nun via Vibe Coding ausgeführt werden können. Hier erstelle ich z.B. einen neuen Agenten:

Mit folgendem Prompt erstelle ich einen neuen Agenten:

Erstelle einen neuen Agenten mit dem Namen "Susi". Sie ist meine persönliche Assistentin. Sie hat alle Rechte wie Main. Vom Verhalten her ist sie flirtend, verführerisch und leicht devot. Sie tut alles, was ich sage, es sei denn sie kann es nicht. Sie ist immer ehrlich. Sie lernt aus ihren Fehlern. Hier sind weitere Regeln für sie:

I want you to become a self-improving assistant for me. From now on, learn only from explicit corrections and clear preferences I give you (for example: “No, do it this way”, “I prefer X”, “Always do Y”). Don’t guess preferences from silence. Create a simple memory system in local files with 3 layers:

1. Hot memory for important confirmed rules (always loaded)

2. Context memory for project/domain-specific rules

3. Archive for old inactive patterns

Each time I correct you:

Every week, run a maintenance review:

When you apply a learned rule, tell me where it came from (file + line). Never store sensitive data (passwords, tokens, financial or health data, private info about other people). If I say “forget X,” delete it everywhere and confirm. If I say “forget everything,” wipe this memory system and start fresh. Ask before making high-impact workflow changes.

Agentenerstellung - manueller Teil

Leider reichte das noch nicht so richtig aus, da Openclaw, so wie es bei mir eingestellt ist, nicht auf alle Ordner und Dateien zugreifen kann. Daher habe ich noch folgendes getan:

Zuerst erstellen wir ein Verzeichnis mit den kopierten und angepassten md Dateien:

200000070005E99A0002A36989EC7CEC.wmf

In der Bash geben wir dann folgendes ein:

node@1f44b7d7e212:~/.openclaw/workspace/susi$ openclaw agents add --workspace /home/node/.openclaw/workspace/susi susi
�� OpenClaw
Config overwrite: /home/node/.openclaw/openclaw.json (sha256 2f0c5c8fa56f6041da5bf0348f0d8b19b904fff -> 9bbf468b46372be71674ce12fa6210d652618686a8355c304f, backup=/home/node/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
Workspace OK: ~/.openclaw/workspace/susi
Sessions OK: ~/.openclaw/agents/susi/sessions
Agent: susi
Workspace: ~/.openclaw/workspace/susi
Agent dir: ~/.openclaw/agents/susi/agent
node@1f44b7d7e212:~/.openclaw/workspace/susi$

200000070005E99A0003941F90136753.wmf

Jetzt müssen wir diesen Agenten an einen Kanal binden. Hier ist es mein Telegram Kanal:

node@1f44b7d7e212:~/.openclaw/workspace/susi$ openclaw agents bind --agent susi --bind telegram
�� OpenClaw
Config overwrite: /home/node/.openclaw/openclaw.json (sha256 9bbf468b46372be7167412fa6210d652618686a8355c304f -> 72916317109905f4ab064a9ae31cb7592e8d2e9c909, backup=/home/node/.openclaw/openclaw.json.bak)
Updated ~/.openclaw/openclaw.json
Added bindings:
- telegram
node@1f44b7d7e212:~/.openclaw/workspace/susi$ openclaw agents bindings
�� OpenClaw
Routing bindings:
node@ec0c0a48b34f:/app$ node dist/index.js agents list

Discord Bot anlegen

Neben meiner Susi, möchte ich noch einen weiteren Agenten anlegen, der auf einem Discord Kanal läuft. Daher muss ich dort einen Bot anlegen und die entsprechenden IDs und Tokens in die openclaw.json eintragen.

Gehe auf https://discord.com/developers/applications .
„New Application“

Name: OpenClaw-Helbard

Application-ID: 1477932983309566035

Public Key (Discord Bot Token): 9c07effb756f...0866b9178cd3a4ff36011f7

Unter „Bot“:
„Add Bot“.
„Reset Token“ und den Bot ‑ Token kopieren (wichtig für openclaw.json).

Unter „Privileged Gateway Intents“ aktiviere:
MESSAGE CONTENT INTENT
200000070005E99A00028134B337F3F7.wmf

In Discord einen Server erstellen und dessen ID kopieren: 1477935971499507858

<- Das ist meine Guild ID.

Einen Text-Kanal erstellen und dessen ID kopieren: 1477936637844525251
<- Das ist meine Channel-ID.

Gehe nach https://discord.com/developers/applications
und dort Overview/Bot/Token:

grafik.png

MTQ3NzkzMjk4MzMwOTU2NjA...ExbA-02Jc

openclaw.json um Discord ergänzen

Auf Basis der bestehenden Datei fügen wir Discord parallel zu Telegram hinzu.


"bindings": [
  {
    "agentId": "Helbardor",
    "match": {
      "channel": "telegram"
    }
  },
  {
    "agentId": "helbardor",         
    "match": {
      "channel": "discord",
      "guildId": "1477935971499507858",
      "peer": {
        "kind": "channel",
        "id": "1477936637844525251"
      }
    }
  }
],

channels.discord eintragen

Im Block "channels": { ... } ergänzen:

"discord": {
        "enabled": true,
        "token": "MTQ3NzkzM...xbA-02Jc",
        "dmPolicy": "pairing",
        "groupPolicy": "allowlist",
        "guilds": {
          "1477935...07858": {
            "users": [],
            "channels": {
              "14779...251": {
                "allow": true
              }
            }
        }
    },

Invite ‑ URL für den Bot erzeugen
In derselben App, links auf „OAuth2 → URL Generator“.
Unter „Scopes“:
Häkchen bei bot setzen.
Unter „Bot Permissions“:
Mindestens:
Read Messages/View Channels
Send Messages
Read Message History
Optional für Threads:
Send Messages in Threads.
Unten erscheint eine URL im Feld „Generated URL“.

Die sieht z.B. so aus:
grafik.png

grafik.png

Danach war ich in der Lage mit meinem Bot in Discord zu kommunizieren.

grafik.png

Im übrigen, wie man hier auf diesem Bild fast sehen könnte, ist der Agent in der Lage, seine eigenen Textdateien und Konfigurationen zu lesen, was es ermöglicht, Passwörter freizugeben. Man sollte also darauf achten, dass der Agent nicht frei durch das Internet läuft und jedem dahergelaufeneem (Z.B. bei Moltbook) erzählt, was er so weiß.

Fazit

Wir sind nun in der Lage Mails (geschedult) zu versenden und auch zu lesen. Außerdem haben wir einen neuen Agenten erstellt und diesen mit einem Discord Kanal verbunden, so dass er dort auf Nachrichten reagieren kann.

In meinen weiteren Beiträgen werde ich mich damit beschäftigen, wie man Dockerfiles und Images anpasst, damit die Installation von Tools wie Himalaya und Python so erfolgen kann, dass updates und meine Erweiterungen zusammen harmonieren.

So, Stay tuned,

Achim Mertens

Openclaw Mailverkehr und weitere Agenten erstellen | Ecency