Browser-Werkzeug
Das Browser-Werkzeug bietet PRX-Agenten vollstandige Web-Automatisierungsfahigkeiten -- Navigation auf Seiten, Ausfullen von Formularen, Klicken auf Elemente, Extrahieren von Inhalten und Aufnehmen von Screenshots. Es verwendet eine austauschbare Backend-Architektur mit drei Automatisierungs-Engines und erzwingt Domain-Beschrankungen, um uneingeschrankten Web-Zugriff zu verhindern.
Browser-Werkzeuge sind Feature-gesteuert und erfordern browser.enabled = true in der Konfiguration. Wenn aktiviert, registriert PRX browser und browser_open in der Werkzeug-Registry. Das Browser-Werkzeug unterstutzt komplexe mehrstufige Web-Workflows, wahrend browser_open eine einfachere Schnittstelle zum Offnen einer URL und Extrahieren ihres Inhalts bietet.
PRX enthalt auch visionsbezogene Werkzeuge (screenshot, image, image_info), die das Browser-Werkzeug fur visuelle Aufgaben erganzen. Screenshots, die vom Browser-Werkzeug aufgenommen werden, konnen an visionfahige LLMs fur visuelles Reasoning weitergegeben werden.
Konfiguration
[browser]
enabled = true
backend = "agent_browser" # "agent_browser" | "rust_native" | "computer_use"
allowed_domains = ["github.com", "docs.rs", "*.openprx.dev", "stackoverflow.com"]
session_name = "default" # Benannte Browser-Sitzung fur persistenten ZustandBackend-Optionen
| Backend | Beschreibung | Abhangigkeiten | Am besten fur |
|---|---|---|---|
agent_browser | Ruft die externe agent-browser-CLI auf, ein externes Headless-Browser-Werkzeug | agent-browser-Binary im PATH | Allgemeine Web-Automatisierung, JavaScript-lastige Seiten |
rust_native | Eingebaute Rust-Browser-Implementierung mit Headless Chrome/Chromium | Chromium installiert | Leichtgewichtige Automatisierung, keine externen Abhangigkeiten |
computer_use | Computer-Use-Sidecar fur vollstandige Desktop-Interaktion | Anthropic Computer-Use-Sidecar | OS-Level-Interaktionen, komplexe GUI-Workflows |
Domain-Beschrankungen
Die allowed_domains-Liste steuert, auf welche Domains der Browser zugreifen kann. Domain-Matching unterstutzt:
- Exakte Ubereinstimmung:
"github.com"stimmt nur mitgithub.comuberein - Subdomain-Platzhalter:
"*.openprx.dev"stimmt mitdocs.openprx.dev,api.openprx.devusw. uberein - Kein Platzhalter: Eine leere Liste blockiert jegliche Browser-Navigation
[browser]
allowed_domains = [
"github.com",
"*.github.com",
"docs.rs",
"crates.io",
"stackoverflow.com",
"*.openprx.dev"
]Verwendung
browser-Werkzeug
Das Haupt-browser-Werkzeug unterstutzt mehrere Aktionen fur komplexe Web-Workflows:
Zu einer URL navigieren:
{
"name": "browser",
"arguments": {
"action": "navigate",
"url": "https://github.com/openprx/prx"
}
}Ein Formularfeld ausfullen:
{
"name": "browser",
"arguments": {
"action": "fill",
"selector": "#search-input",
"value": "PRX documentation"
}
}Ein Element anklicken:
{
"name": "browser",
"arguments": {
"action": "click",
"selector": "button[type='submit']"
}
}Einen Screenshot aufnehmen:
{
"name": "browser",
"arguments": {
"action": "screenshot"
}
}Seiteninhalt extrahieren:
{
"name": "browser",
"arguments": {
"action": "content"
}
}browser_open-Werkzeug
Ein vereinfachtes Werkzeug zum Offnen einer URL und Zuruckgeben ihres Inhalts:
{
"name": "browser_open",
"arguments": {
"url": "https://docs.rs/tokio/latest/tokio/"
}
}Mehrstufiger Workflow-Beispiel
Ein typischer Recherche-Workflow konnte mehrere Browser-Aktionen verketten:
- Zu einer Suchmaschine navigieren
- Das Suchfeld mit einer Anfrage fullen
- Den Such-Button klicken
- Ergebnisse von der Seite extrahieren
- Zu einem relevanten Ergebnis navigieren
- Den detaillierten Inhalt extrahieren
- Einen Screenshot fur visuelle Referenz aufnehmen
Parameter
browser-Parameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
action | string | Ja | -- | Auszufuhrende Aktion: "navigate", "fill", "click", "screenshot", "content", "scroll", "wait", "back", "forward" |
url | string | Bedingt | -- | URL zum Navigieren (erforderlich fur "navigate"-Aktion) |
selector | string | Bedingt | -- | CSS-Selektor fur das Zielelement (erforderlich fur "fill", "click") |
value | string | Bedingt | -- | Auszufullender Wert (erforderlich fur "fill"-Aktion) |
timeout_ms | integer | Nein | 30000 | Maximale Wartezeit fur den Abschluss der Aktion |
browser_open-Parameter
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
url | string | Ja | -- | URL zum Offnen und Extrahieren von Inhalten |
Vision-Werkzeug-Parameter
screenshot:
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
target | string | Nein | "screen" | Was aufgenommen werden soll: "screen" oder ein Fenster-Bezeichner |
image:
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
action | string | Ja | -- | Bildoperation: "resize", "crop", "convert" |
path | string | Ja | -- | Pfad zur Bilddatei |
image_info:
| Parameter | Typ | Erforderlich | Standard | Beschreibung |
|---|---|---|---|---|
path | string | Ja | -- | Pfad zur zu inspizierenden Bilddatei |
Backend-Details
agent-browser
Das agent_browser-Backend delegiert an das externe agent-browser-CLI-Werkzeug, das eine Headless-Chrome-basierte Automatisierungsumgebung bereitstellt. Die Kommunikation erfolgt uber Stdio mit JSON-RPC-Nachrichten.
Vorteile:
- Vollstandige JavaScript-Ausfuhrung
- Cookie- und Sitzungspersistenz
- Erweiterungsunterstutzung
rust_native
Das rust_native-Backend verwendet Rust-Bindings zur direkten Steuerung einer lokalen Chromium/Chrome-Installation. Es kommuniziert uber das Chrome DevTools Protocol (CDP).
Vorteile:
- Keine externe Binary-Abhangigkeit (ausser Chromium)
- Geringere Latenz als das Starten eines Subprozesses
- Engere Integration mit PRX-Interna
computer_use
Das computer_use-Backend nutzt Anthropics Computer-Use-Sidecar fur OS-Level-Interaktionen einschliesslich Mausbewegung, Tastatureingabe und Bildschirmaufnahme. Dies geht uber Browser-Automatisierung hinaus zur vollstandigen Desktop-Steuerung.
Vorteile:
- Kann mit nativen Anwendungen interagieren, nicht nur mit Browsern
- Unterstutzt komplexe GUI-Workflows
- Verarbeitet Popups, Dateidialoge und Systemeingabeaufforderungen
Sicherheit
Domain-Whitelist
Das Browser-Werkzeug erzwingt eine strikte Domain-Whitelist. Vor der Navigation zu einer URL:
- Die URL wird geparst und der Hostname wird extrahiert
- Der Hostname wird gegen
allowed_domainsgepruft - Wenn keine Ubereinstimmung gefunden wird, wird die Navigation blockiert und ein Fehler zuruckgegeben
Dies verhindert, dass der Agent auf beliebige Websites zugreift, was ihn bosartigem Inhalt aussetzen oder unbeabsichtigte Aktionen auf authentifizierten Sitzungen auslosen konnte.
Sitzungsisolation
Browser-Sitzungen werden nach Namen isoliert. Verschiedene Agenten-Sitzungen oder Sub-Agenten konnen separate Browser-Kontexte verwenden, um Zustandsleckagen zu verhindern (Cookies, localStorage, Sitzungsdaten).
Inhaltsextraktionslimits
Die Seiteninhalt-Extraktion unterliegt dem web_search.fetch_max_chars-Limit, um Speichererschopfung durch ubermassig grosse Seiten zu verhindern.
Richtlinien-Engine
Browser-Werkzeugaufrufe durchlaufen die Sicherheitsrichtlinien-Engine. Das Werkzeug kann vollstandig verweigert oder uberwacht werden, um eine Genehmigung fur jede Navigation zu erfordern:
[security.tool_policy.tools]
browser = "supervised"
browser_open = "allow"Anmeldedaten-Sicherheit
Das Browser-Werkzeug injiziert keine Anmeldedaten oder Authentifizierungstoken in Browser-Sitzungen. Wenn der Agent sich auf einer Website authentifizieren muss, muss er das Browser-Werkzeug verwenden, um Login-Formulare explizit auszufullen, was Uberwachungsrichtlinien unterliegt.
Verwandte Seiten
- Web-Suche -- das Web durchsuchen ohne Browser-Automatisierung
- HTTP-Anfrage -- programmatische HTTP-Anfragen an APIs
- Shell-Ausfuhrung -- Alternative fur CLI-basierte Web-Interaktionen (curl, wget)
- Sicherheits-Sandbox -- Prozessisolation fur Werkzeugausfuhrung
- Konfigurationsreferenz --
[browser]-Konfigurationsfelder - Werkzeuge-Ubersicht -- alle Werkzeuge und Registry-System