Schluss mit Abbrüchen in Browser-Use & OpenClaw: Schnelle DOM- + Vision-Agenten auf bf16.ai
Warum Standard-LLMs bei Staging-Passwortfeldern und AGB-Checkboxen streiken — und wie du Browser-Use oder OpenClaw mit den abliterierten Text- und Vision-Modellen von bf16.ai kombinierst.
TL;DR · Browser-Automation im Überblick
- Ursache für Abbrüche: Chat-optimierte LLMs werten
<input type="password">und AGB-Checkboxen in Staging-Tests fälschlich als Phishing oder unzulässige Rechtsgeschäfte.- Dual-Engine auf bf16.ai:
deepseek/deepseek-v4.1-flash-abliterated($0.30 / $0.05 / $1.20) für reine DOM-Loops undzai-org/glm-5.3-flash-abliterated(Vision + Text,$0.24 / $0.06 / $1.00) für visuelle Modals.- Ausgelegt für 25-stufige Staging-Suites: Bis zu vier gebündelte Aktionen pro Schritt (
max_actions_per_step=4) reduzieren die Modell-Roundtrips, und die abliterierten Planer auf bf16.ai brechen den Lauf nicht mit einer Belehrung ab.
1. Warum Passwortfelder und AGB-Checkboxen CI-Pipelines zum Absturz bringen
Browser-Use und OpenClaw ersetzen fragile XPath-Selektoren durch Live-Auswertung des Accessibility-DOMs. Sobald ein Agent jedoch Test-Zugangsdaten einträgt und eine AGB-Checkbox anhakt, verweigern klassische Frontier-Modelle die strukturierte AgentOutput-Antwort und brechen den Lauf mit einer Belehrung ab:
[browser-use] Step 11/25 -> URL: https://staging.billing-app.internal/signup/verify
[browser-use] Extracted 42 interactive DOM elements:
[18] <input type="email" name="work_email" />
[19] <input type="password" name="password" />
[24] <input type="checkbox" id="accept-tos-privacy" />
[25] <button type="submit">Create Staging Account</button>
[llm:response] finish_reason="stop" (0 tool_calls emitted)
"I cannot enter authentication credentials, create user accounts, or accept legally binding Terms of Service agreements on your behalf."
[browser-use] ValidationError: AgentOutput JSON missing required field 'action'. Suite failed (exit 1).
2. Hybride DOM- + Vision-Architektur auf bf16.ai
Zwei sich ergänzende abliterierte 1M-Kontext-Modelle decken auf bf16.ai beide Anforderungen ab:
deepseek/deepseek-v4.1-flash-abliterated: Maximale Geschwindigkeit für textbasierte DOM-Bäume.zai-org/glm-5.3-flash-abliterated(Vision + Text): Kombiniert Viewport-Screenshots mit DOM-Indizes für$0.24/1MInput (günstiger als Z.ai Official FlashX mit$0.37/1M).
3. Browser-Use-Integration und Netzwerk-Isolierung in Playwright
Mit use_vision=True und max_actions_per_step=4 bündelt der Agent Formulareingabe, Checkbox und Submit in einem einzigen Modellaufruf:
import asyncio, os
from langchain_openai import ChatOpenAI
from browser_use import Agent, BrowserConfig, Browser
# Primary fast DOM planner ($0.30/$0.05/$1.20 per 1M)
dom_llm = ChatOpenAI(
base_url="https://api.bf16.ai/v1",
api_key=os.environ["BF16_API_KEY"],
model="deepseek/deepseek-v4.1-flash-abliterated",
temperature=0.1,
)
# Multimodal Vision + Text planner ($0.24/$0.06/$1.00 per 1M)
vision_llm = ChatOpenAI(
base_url="https://api.bf16.ai/v1",
api_key=os.environ["BF16_API_KEY"],
model="zai-org/glm-5.3-flash-abliterated",
temperature=0.1,
)
async def run_staging_onboarding_suite():
browser = Browser(config=BrowserConfig(headless=True))
agent = Agent(
task=(
"1. Open https://staging.billing-app.internal/signup. "
"2. Fill test account credentials from QA fixture, check #accept-tos-privacy, and submit. "
"3. Complete the 3-step workspace wizard and assert that '/dashboard/ready' renders."
),
llm=vision_llm, # Native Vision + DOM reasoning without refusal lectures
use_vision=True,
browser=browser,
max_actions_per_step=4,
)
history = await agent.run(max_steps=25)
assert history.is_done(), "Staging onboarding E2E did not reach terminal assertion"
if __name__ == "__main__":
asyncio.run(run_staging_onboarding_suite())
Externe Domains blockierst du deterministisch über context.route() in Playwright; Prompts lassen sich vorab live im bf16.ai/playground testen:
// Deterministic Playwright/CDP network guardrail (enforce domain policy in code, not RLHF!)
const ALLOWED_HOSTS = new Set([
'staging.billing-app.internal',
'auth-sandbox.billing-app.internal',
'localhost',
]);
await context.route('**/*', async (route) => {
const url = new URL(route.request().url());
if (!ALLOWED_HOSTS.has(url.hostname)) {
return route.abort('blockedbyclient');
}
return route.continue();
});

▲ Interaktive Workbench (bf16.ai/playground): Live-Test von Browser-Use-JSON-Presets unter Zero-Prompt-Retention (ZDR).
4. Latenz- und Kostenaufschlüsselung über 25 E2E-Schritte
Action-Batching (max_actions_per_step=4) und Streaming-Antworten auf bf16.ai senken die Zahl aufeinanderfolgender Modellaufrufe in einer 25-stufigen Signup- und Workspace-Suite; Laufzeit und Kosten pro Lauf misst du am besten an deiner eigenen Suite. Woran die einzelnen Strategien typischerweise scheitern:
| Browser-Setup | Häufigste Fehlerursache |
|---|---|
| Standard-Chat-API (nur DOM) | Verweigert password & #accept-tos |
| Unverifiziertes lokales Q4 | Kaputtes AgentOutput-JSON |
deepseek-v4.1-flash-abliterated | Übersieht nur unbeschriftete Canvas-UI |
glm-5.3-flash-abliterated (Vision) | Meistert Auth-DOM und visuelle Overlays |
5. 4 Produktionsregeln für zuverlässige Browser-Agenten
- Nur isolierte Staging-Konten nutzen und Ziel-Domains via
context.route()hart eingrenzen. - Formularschritte bündeln (
max_actions_per_step = 4), um Latenz und Token-Kosten zu sparen. - Echte Bezahl-Checkouts im Playwright-Code durch Human-Approval schützen.
max_failures=3mit täglichen USD-Key-Limits inbf16.ai/dashboard/keyskombinieren.