Doku: fremde Laufzeiten und Egress-Proxy - Umsetzung, Befunde, Einrichtung (#712)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
Richard
2026-09-25 23:18:19 +02:00
co-authored by Claude Opus 5.5
parent d37fe91b37
commit 036d56ff04
3 changed files with 136 additions and 0 deletions
+56
View File
@@ -317,6 +317,62 @@ Beispiel: Claude Sonnet, typischer Run (5000 in, 1000 out):
---
## 5a. Fremde Laufzeit: ein Agent in Claude Code (#712)
Ein Agent kann statt in unserer Engine in **Claude Code** arbeiten (gedacht für die
Entwicklungsabteilung) oder in einem **Befehl**. Er läuft dann in der Sandbox auf einer
Kopie seines Arbeitsbereichs. Was er ändert, liegt danach als Vorschlag unter
`Agents/Agent-<id>/proposals/<lauf>/` und wird **nicht** übernommen. Taskboard und Kollegen
erreicht er nur über den MCP-Server der Instanz. Hintergrund: Organisation-Konzept,
Abschnitt 7a.
**Voraussetzungen (nur Linux):**
1. `bubblewrap` ist installiert (`apt install bubblewrap`). Die Karte „Laufzeit“ in der
Agentenansicht meldet „Die Sandbox ist bereit“. Ohne Sandbox laufen fremde Laufzeiten
gar nicht, sie fallen auch nicht auf die native Engine zurück.
2. Claude Code ist für den Benutzer installiert, unter dem die Instanz läuft. Mit dem
nativen Installer liegt es unter `~/.local/bin/claude` und wird dort gefunden. Bei einer
npm-Installation kommen das Programm und Node in `claudeCode.executable` bzw.
`claudeCode.readOnlyPaths` der `instance.json`.
3. Das Konto (Karte „Laufzeit“ → „Bearbeiten“, gilt für die ganze Instanz):
- **API-Schlüssel (Voreinstellung):** am besten ein eigener Schlüssel in einem
Anthropic-Workspace mit Ausgabengrenze. Der Schlüssel ist im Lauf für Claude Code
lesbar, denn es muss ihn benutzen.
- **Abo:** ein Token aus `claude setup-token`, erzeugt auf einem Rechner, an dem du
angemeldet bist. Das Abo teilt sein Kontingent mit deiner eigenen Nutzung, und ob es
ein Agentensystem betreiben darf, regeln seine Bedingungen.
**Der Agent** (Karte „Laufzeit“ oder `AgentSettings.json`):
```json
"runtime": {
"kind": "claude-code",
"allowedTools": ["Read", "Edit", "Write", "Glob", "Grep", "mcp__clawd"],
"maxTurns": 30,
"timeoutMinutes": 30,
"egress": ["pypi.org", "files.pythonhosted.org"]
}
```
- `allowedTools` leer lassen heißt: die obige Voreinstellung. `Bash` erlaubt die Shell
**in der Sandbox**. WebFetch und WebSearch sind immer verboten.
- `egress` nennt Hosts, die der Lauf zusätzlich zur API erreichen darf. Es gilt nur HTTPS
und nur an öffentliche Adressen.
- `model` des Agenten wird an Claude Code weitergegeben (`anthropic/claude-sonnet-5` wird
zu `claude-sonnet-5`). Ein Modell eines anderen Anbieters wird ignoriert; dann gilt die
Voreinstellung von Claude Code.
Beim Befehl (`"kind": "command"`, dazu `command` und `arguments`) kommt die Nachricht über
stdin, und was der Befehl ausgibt, ist das Ergebnis. Den MCP-Server erreicht er mit
`$CLAWD_HELPER --mcp-bridge --socket $CLAWD_MCP_SOCKET`; das Token liegt in
`$CLAWD_MCP_TOKEN_FILE`.
**Verbrauch:** Jeder Lauf steht in `RunUsage` mit Laufzeit und Token. Auf dem Abo kostet
er 0 $ und ist als Abo-Lauf markiert, verbraucht aber Kontingent.
---
## 6. Kritische Analyse: Ist die Idee umsetzbar?
Vor dem Aufbau einer Instanz systematisch prüfen: