Zum Inhalt springen

Warum das Terminal?

Ein Terminal-Agent ist ein Unix-Prozess wie jeder andere. Er liest stdin, schreibt stdout, und lässt sich mit dem gesamten Unix-Toolset verketten:

Terminal-Fenster
# Log-Anomalien in Echtzeit analysieren
tail -f /var/log/app.log | claude -p "Slack me if error rate exceeds 5/min"
# Sicherheits-Review aller geänderten Dateien
git diff main --name-only | claude -p "review for OWASP Top 10 vulnerabilities"
# Automatische Übersetzung in CI/CD
claude -p "translate all new strings in i18n/ to French and open a PR"
# Bulk-Refactoring mit Filter
grep -r "deprecated_api()" src/ -l | claude -p "replace with new_api(), run tests"

Kein GUI-Button kann diese Flexibilität replizieren. Was ein Terminal-Agent nicht direkt kann, kombiniert er mit grep, jq, awk, curl oder jedem anderen CLI-Tool.

Browser-basierte IDEs und Electron-Apps bauen Abstraktionsschichten zwischen Agent und System:

GUI-IDE: Agent → IDE API → virtuelles FS → echtes FS
Terminal: Agent → echtes FS

Der Unterschied ist praktisch:

  • Env-Vars: Terminal-Agents erben die echte Shell-Umgebung — $DATABASE_URL, $AWS_PROFILE, $KUBECONFIG funktionieren sofort, ohne manuelle Konfiguration
  • Filesystem: Kein virtueller Mount, kein Sync-Delay — Änderungen sind sofort in git status sichtbar
  • Prozesse: ps aux, lsof, netstat liefern echten System-Zustand
  • Netzwerk: Echte Netzwerk-Interfaces, SSH-Agent-Forwarding, VPN-Kontext

Das Problem aller zustandslosen LLMs: Jede neue Session beginnt bei null. Terminal-Agents lösen das mit einer Datei:

projekt/
└── CLAUDE.md ← automatisch in jede Session geladen

Was einmal gelernt wurde, bleibt permanent:

## Bekannte Fehler / Nie wieder
- NIE direkt auf main pushen — immer PR via claude/[feature] Branch
- db.session.commit() IMMER in try/except — deadlock-Erfahrung aus 2026-02-15
- pytest läuft NUR mit `crawler/bin/.venv/bin/pytest` — nicht system-pytest

GUI-IDEs bieten Kontext-Speicherung, aber keine git-versionierte, team-teilbare Wissensbasis die mit dem Repo reist.

Ein Terminal-Agent braucht keinen aktiven Nutzer:

.github/workflows/review.yml
- name: AI Security Review
run: |
git diff origin/main --name-only | \
claude -p "review for SQL injection, XSS, and hardcoded secrets. Exit 1 if critical found."
Terminal-Fenster
# Cron-Job: täglicher Dependency-Check
0 9 * * 1 cd /app && claude -p "check for outdated dependencies with CVEs, create issue if found"

Headless-Betrieb auf SSH-Servern, in Docker-Containern, auf CI-Agents: kein Display erforderlich, kein Browser-Kontext, kein Electron.

Gemessen auf einem Linux-Server mit 4 vCPUs:

UmgebungRAM-BaselineCPU-IdleSSH-fähig
VS Code (Electron)~800 MB3–8%Nein
Cursor~900 MB4–10%Nein
Claude Code (Terminal)~50 MB<1%Ja
Gemini CLI~40 MB<1%Ja

Terminal-Agents laufen auf Raspberry Pis, Hetzner-VMs mit 2 GB RAM, in Alpine-Containern. Die Rechenleistung geht ins Modell — nicht in die GUI.

Mehrere Terminals = mehrere Agenten, koordiniert ohne API:

Terminal 1: Gemini CLI (Scanner)
└── scannt src/ → schreibt in postbox/todo.md
Terminal 2: Claude Code (Fixer)
└── liest postbox/todo.md → fixt → committed → schreibt done.md
Terminal 3: ZED/Grok (Koordinator)
└── prüft cron.md → eskaliert fällige Tasks

Kein Shared Memory, kein Message Broker, keine API-Calls zwischen Agenten. Nur das Dateisystem als gemeinsamer State — debuggbar, versioniert, tool-agnostisch.

Das ist das Postbox Pattern. Es funktioniert mit jedem Terminal-Agent.

Fairness: Für bestimmte Workflows sind GUI-IDEs überlegen.

SzenarioTerminalGUI-IDE
Diff-Review mit viel Context
Pair-Programming (Echtzeit)
Onboarding neuer Entwickler
CI/CD-Integration
SSH-Server-Betrieb
Pipe-Composability
Multi-Agent-Koordination
RAM-Effizienz

Pragmatisches Fazit: Professionelle Setups nutzen beides. Claude Code im Terminal für Automatisierung, Batch-Tasks und CI — ZED/Cursor für interaktive Entwicklung mit visuellem Feedback. Die Tools schließen sich nicht aus; sie ergänzen sich.