Zum Inhalt springen

Auto-Capture-KI-Provider

Auto-Capture führt eine Hintergrund-KI-Anfrage aus, um technische Arbeit zusammenzufassen und als Memory zu speichern. Es braucht eine der Provider-Konfigurationen unten.

Empfohlen: Einen Provider nutzen, der in opencode bereits authentifiziert ist und strukturierte Ausgabe unterstützt:

"opencodeProvider": "anthropic",
"opencodeModel": "claude-haiku-4-5-20251001",

Das Plugin stellt strukturierte Output-Requests an die Session-API von opencode, statt Provider-Endpoints direkt aufzurufen, sodass opencode Auth, Token-Refresh und Provider-Routing besitzt. Der Provider-Name muss einem Eintrag aus opencode providers list entsprechen, und das gewählte Modell muss strukturierte JSON-Ausgabe über opencode unterstützen.

Optional eine Reasoning-Variante des Modells mit "opencodeVariant": "xhigh" pinnen (z. B. für grok-4.7). Sie gilt für die internen LLM-Aufrufe des Plugins (Auto-Capture-Zusammenfassungen, Profil-Lernen, Profil-Cleanup), auch wenn opencodeModel "inherit" ist, sodass Hintergrundarbeit ein anderes Reasoning-Level als die interaktive Sitzung nutzen kann.

Langsame Reasoning-Modelle (oder sehr große Profil-Prompts) können das Standard-Budget von 90 s für strukturierte Ausgabe überschreiten. "opencodeTimeoutMs" (Millisekunden) setzen, um es für interne Structured-Output-Aufrufe (Auto-Capture-Zusammenfassungen, Profil-Lernen) zu verlängern — z. B. "opencodeTimeoutMs": 180000 für 3 Minuten. Werte werden auf 10000..600000 geklemmt; der Standard bleibt 90000. Numerische Strings werden coerced. Profil-Cleanup nutzt ein separates, längeres Timeout.

Unterstützte Provider: jeder von opencode providers list gelistete Provider (z. B. anthropic, openai, github-copilot, …).

Wenn opencodeProvider und opencodeModel gesetzt sind, haben sie Vorrang vor den manuellen memoryProvider-Einstellungen unten.

Sitzungsmodell folgen: "opencodeModel": "inherit" setzen, um zur Aufrufzeit ein konkretes OpenCode-Modell statt einer gepinnten ID zu nutzen. Für Auto-Capture wird jeder Prompt über den chat.params-Hook aufgezeichnet und der Capture-Request wiederverwendet Provider/Modell dieses Prompts. Für Profil-Lernen und andere Structured-Output-Pfade (die nicht an eine einzelne User-Nachricht gebunden sind) nutzt inherit zuerst das zuletzt vom Host über chat.params / den V2-Context-Hook gemeldete Modell und fällt danach auf die Recent-Liste in OpenCodes model.json zurück, falls vorhanden (bevorzugt den konfigurierten opencodeProvider). OpenCode v2 schreibt model.json nicht mehr; dort ist das In-Process-Sitzungsmodell der primäre Fallback. Das wörtliche Modell-ID inherit zu senden ist nie gültig und verursachte zuvor ProviderModelNotFoundError: Model not found: <provider>/inherit auf diesen Pfaden. opencodeProvider bleibt als normale Config-Gate erforderlich.

Fallback: Manuelle API-Konfiguration (wenn opencodeProvider nicht genutzt wird):

"memoryProvider": "openai-chat",
"memoryModel": "gpt-4o-mini",
"memoryApiUrl": "https://api.openai.com/v1",
"memoryApiKey": "sk-...",

API-Key-Formate:

"memoryApiKey": "sk-..."
"memoryApiKey": "file://~/.config/opencode/api-key.txt"
"memoryApiKey": "env://OPENAI_API_KEY"

Manuelle memoryProvider-Modi:

  • openai-chat: OpenAI-Chat-Completions-kompatible API mit Tool-/Function-Calling. Kann mit kompatiblen Proxies wie LiteLLM nur funktionieren, wenn das gewählte Upstream-Modell und der Proxy Tool-Calls erhalten.
  • openai-responses: OpenAI Responses API mit Function-Call-Ausgabe.
  • anthropic: Anthropic Messages API mit Tool Use.
  • minimax: MiniMax Anthropic-Messages-kompatibler Endpoint. memoryApiUrl auf den globalen Endpoint (https://api.minimax.io) oder den China-Endpoint (https://api.minimax.cn) setzen; der Pfad /anthropic/v1/messages und der Header x-api-key werden automatisch angewendet. MiniMax-M3.1-Flash (empfohlen) oder MiniMax-M3 verwenden, beide mit 1.000.000-Token-Kontext. Flash denkt immer; optional memoryExtraParams auf { "output_config": { "effort": "max" } } setzen mit low, medium, high, xhigh oder max (Standard). Flash lehnt deaktiviertes Thinking und Effort none ab und unterstützt kein service_tier. M3-Thinking ist auf diesem Endpoint standardmäßig aus; aktivieren mit { "thinking": { "type": "adaptive" } }. Modell-IDs bleiben explizit konfiguriert; vorhandene Custom- oder Legacy-IDs werden unverändert durchgereicht. Siehe die MiniMax-Kompatibilitätsreferenz.
  • orcarouter: OpenAI-kompatibles Model-Gateway mit namenspaced Model-IDs. memoryApiUrl und memoryModel sind optional — sie defaulten auf https://api.orcarouter.ai/v1 und orcarouter/auto (ein Routing-Alias, der pro Request ein fähiges Modell wählt). Wenn du memoryModel setzt, eine namenspaced ID wie openai/gpt-5.5 oder deepseek/deepseek-v4-flash verwenden; OrcaRouter lehnt bare Modellnamen ab. Beispiel:
    "memoryProvider": "orcarouter",
    "memoryApiKey": "<OrcaRouter API key>",
    OrcaRouter betreibt auf demselben Endpoint auch Gateway-Level-Zero-Trust-Security für KI-Agenten — prüft jeden Prompt/jede Response und steuert jeden Tool-Call auf Default-Deny-Basis, ohne Änderungen am Anwendungscode.
  • atlas-cloud: OpenAI-kompatibles Chat-Completions-Preset für Atlas Cloud. memoryApiUrl und memoryModel sind optional — sie defaulten auf https://api.atlascloud.ai/v1 und deepseek-ai/deepseek-v4-pro. Fehlt memoryApiKey, wird ATLASCLOUD_API_KEY aus der Umgebung verwendet. Beispiel:
    "memoryProvider": "atlas-cloud",
    "memoryApiKey": "env://ATLASCLOUD_API_KEY",
    Wenn dieser Provider gewählt ist, werden Auto-Capture- / Profil-Prompts, Modellantworten und relevanter Gesprächskontext an https://api.atlascloud.ai übertragen.
  • cheaper-inference: OpenAI-kompatibles Chat-Completions-Preset für Cheaper Inference. memoryApiUrl und memoryModel sind optional — sie defaulten auf https://api.cheaperinference.com/v1 und gpt-5.4-mini. Fehlt memoryApiKey, wird CHEAPER_INFERENCE_API_KEY aus der Umgebung verwendet. Beispiel:
    "memoryProvider": "cheaper-inference",
    "memoryApiKey": "env://CHEAPER_INFERENCE_API_KEY",
    Wenn dieser Provider gewählt ist, werden Auto-Capture- / Profil-Prompts, Modellantworten und relevanter Gesprächskontext an https://api.cheaperinference.com übertragen.
  • api-route: OpenAI-kompatibles Chat-Completions-Preset für API Route. memoryApiUrl und memoryModel sind optional — sie defaulten auf https://global.api-route.com/v1 und gpt-6.1-sol. Fehlt memoryApiKey, wird API_ROUTE_API_KEY aus der Umgebung verwendet. Beispiel:
    "memoryProvider": "api-route",
    "memoryApiKey": "env://API_ROUTE_API_KEY",
    Wenn dieser Provider gewählt ist, werden Auto-Capture- / Profil-Prompts, Modellantworten und relevanter Gesprächskontext an https://global.api-route.com übertragen.
  • runcrate: OpenAI-kompatibles Chat-Completions-Preset für Runcrate. memoryApiUrl und memoryModel sind optional — sie defaulten auf https://api.runcrate.ai/v1 und deepseek-ai/DeepSeek-V4.1-Flash. Fehlt memoryApiKey, wird RUNCRATE_API_KEY aus der Umgebung verwendet. Beispiel:
    "memoryProvider": "runcrate",
    "memoryApiKey": "env://RUNCRATE_API_KEY",
    Wenn dieser Provider gewählt ist, werden Auto-Capture- / Profil-Prompts, Modellantworten und relevanter Gesprächskontext an https://api.runcrate.ai übertragen.
  • cloudgpu: OpenAI-kompatibles Chat-Completions-Preset für CloudGPU. memoryApiUrl und memoryModel sind optional — sie defaulten auf https://cloudgpu.app/v1 und deepseek-v4.1-flash. Fehlt memoryApiKey, wird CLOUDGPU_API_KEY aus der Umgebung verwendet (Key erstellen unter https://cloudgpu.app/api/console; API-Doku: https://cloudgpu.app/api/docs). Beispiel:
    "memoryProvider": "cloudgpu",
    "memoryApiKey": "env://CLOUDGPU_API_KEY",
    Wenn dieser Provider gewählt ist, werden Auto-Capture- / Profil-Prompts, Modellantworten und relevanter Gesprächskontext an https://cloudgpu.app übertragen.

Fehlerbehebung:

  • Auto-Capture-Fehler blockieren die manuelle Nutzung des memory-Tools nicht.
  • Meldet Auto-Capture, dass ein Provider nicht verbunden ist, den Provider-Namen mit opencode providers list bestätigen und diesen Provider zuerst in opencode konfigurieren.
  • Gibt ein Proxy oder Custom-Provider Klartext statt strukturierter/Tool-Ausgabe zurück, ein anderes Modell/einen anderen Provider wählen oder einen der manuellen Provider-Modi oben nutzen.
  • Für Modelle, die temperature ablehnen, bei manueller API-Konfiguration "memoryTemperature": false hinzufügen.
  • Für Modelle, die erzwungene Tool-Calls ablehnen (tool_choice: "required", z. B. manche Thinking-Modi), bei openai-chat / orcarouter / atlas-cloud / cheaper-inference / api-route / runcrate / cloudgpu "forceToolChoice": false hinzufügen.
  • Bei opencodeProvider / opencodeModel (z. B. DeepSeek V4 Thinking) sendet OpenCode weiterhin erzwungenes tool_choice für strukturierte Ausgabe. opencode-mem deaktiviert Thinking auf dem internen Agenten opencode-mem-structured (und wendet das in chat.params nach Variant-Merge erneut an), damit Auto-Capture und Profil-Lernen abschließen können. Dein interaktiver Chat-Agent bleibt unverändert. Scheitert Capture weiterhin mit einem Thinking-/tool_choice-Fehler, für opencodeModel ein Non-Thinking-Modell wählen oder einen vollständigen manuellen Fallback konfigurieren (memoryModel + memoryApiUrl).
  • opencode-claude-auth / Claude Code: Auto-Capture nutzt OpenCode mit deinem authentifizierten anthropic-Provider. Erzwungenes format: json_schema loopt oft mit Claude-Auth, daher nutzt opencode-mem einen Auth-erhaltenden Text-JSON-Pfad für opencodeProvider: "anthropic" (keine erzwungenen StructuredOutput-Tools; Antwort wird mit Zod geparst). Ein Step-Watchdog bricht runaway interne Sitzungen nach 2 Schritten weiterhin ab. Scheitert Capture weiterhin, einen vollständigen manuellen Anthropic-API-Key-Fallback konfigurieren (memoryProvider: "anthropic" + memoryModel + memoryApiUrl + memoryApiKey) — Claude Pro/Max OAuth lässt sich außerhalb von OpenCode nicht wiederverwenden.
  • Nicht unterstützte Plattformen: Intel Mac (darwin/x64) wird nicht unterstützt — @tursodatabase/database und feste onnxruntime-node-Releases (gepinnt 1.31.1) liefern kein natives x64-Binding. Apple Silicon, Linux oder Windows nutzen, oder einen Remote-Embedding-Endpoint über embeddingApiUrl + embeddingApiKey. MLX wird nicht unterstützt.