Tidak Ada Deskripsi

Paul Klumpp 89a63dc783 docs: Add README and expanded AGENTS.md with global install instructions 1 Minggu lalu
.opencode 511d2eafeb feat: Working model discovery - 900 models registered in OmniRoute provider 1 Minggu lalu
.gitignore 2abf48f2c4 feat: Add OpenCode v2 model discovery plugin as plain JS 1 Minggu lalu
AGENTS.md 89a63dc783 docs: Add README and expanded AGENTS.md with global install instructions 1 Minggu lalu
README.md 89a63dc783 docs: Add README and expanded AGENTS.md with global install instructions 1 Minggu lalu
opencode.jsonc 511d2eafeb feat: Working model discovery - 900 models registered in OmniRoute provider 1 Minggu lalu

README.md

opencode-openai-discovery

Ein OpenCode v2 Plugin, das automatisch alle Modelle eines OpenAI-kompatiblen API-Endpunkts (GET /v1/models) entdeckt und als wählbare Modelle unter dem Provider OmniRoute registriert.

Getestet mit OpenCode v2.0.32 – alle 900 Modelle eines lokalen Gateways erscheinen in der Modellauswahl.

Wie es funktioniert

OpenCode startet
  └─ lädt Plugin (Konvention: .opencode/plugins/<name>/)
      └─ setup(ctx)
          └─ fetch http://localhost:20128/v1/models   → 900 Modelle
              └─ ctx.provider.transform(editor)
                  ├─ Provider "OmniRoute" existiert?  → Modelle mergen
                  └─ sonst                            → Provider + Modelle anlegen

Das Plugin erstellt den Provider selbst (inkl. baseURL/apiKey) – eine Provider-Definition in der opencode.jsonc ist deshalb nicht nötig. Wichtig: Das Plugin füllt alle Pflichtfelder des Model.Info-Schemas (modelID, providerID, capabilities.tools, variants, cost, limit, time.released, status, enabled) – fehlt eines davon, verwirft OpenCode die Modelle still (typisches Symptom: Plugin lädt ohne Fehler, aber keine Modelle erscheinen).

Installation (projektlokal)

Die Dateien einfach ins Projekt kopieren:

<projekt>/
└── .opencode/plugins/opencode-openai-discovery/
    ├── index.ts        # Plugin-Code (wird von OpenCode automatisch transpiliert)
    ├── package.json
    └── tsconfig.json

Fertig. Kein Eintrag in irgendeiner Config nötig – OpenCode lädt Plugins aus .opencode/plugins/ automatisch, sobald ein Client das Projektverzeichnis öffnet. Änderungen an index.ts werden per File-Watcher sofort neu geladen (Hot-Reload, kein Neustart).

Endpunkt anpassen: Konstanten am Kopf von index.ts editieren (PROVIDER_ID, BASE_URL, API_KEY).

Installation (global, alle Projekte)

Weg 1 – Globales Plugin-Verzeichnis (Konvention):

~/.opencode/plugins/opencode-openai-discovery/
├── index.ts
├── package.json
└── tsconfig.json

OpenCode überwacht ~/.opencode/ ebenfalls (siehe Server-Logs: watcher subscribe path=/home/paul/.opencode). Gleiche Struktur wie projektlokal, das Plugin ist dann in jedem Projekt aktiv.

Weg 2 – Über die globale Config (~/.config/opencode/opencode.jsonc), falls das Verzeichnis-Layout nicht greift:

{
  "$schema": "https://opencode.ai/config.json",
  "plugins": [
    {
      "package": "file:///home/paul/dev2/opencode-openai-compat-with-model-discovery/.opencode/plugins/opencode-openai-discovery"
    }
  ]
}

Das v2-Schema erlaubt "plugins": [ "<package-string>" | { "package": "...", "options": {...} } ]. Es referenziert das Plugin dann direkt am Quelldort – praktisch, wenn man das Plugin-Verzeichnis nicht kopieren will.

Verifizieren

opencode models | grep -c "^OmniRoute/"
# → 900

Falls nichts erscheint: Server hart neu starten (ein hängender Zombie-Prozess cache alte Plugin-Stände):

pkill -f "opencode serve"
opencode models

Debug-Tipps siehe AGENTS.md.

Historie / Abgrenzung

Dieses Plugin ersetzt das fehlfunktionale opencode-models-discovery (niemals erfolgreich gelaufen; AggregateError beim Build, modelsDiscovery- Config-Feld existiert im v2-Schema nicht). Es wird nicht verwendet.