# Zed mit OpenCheese

> Zeds Agent-Panel mit OpenCheese verbinden: openai_compatible-Anbieter in settings.json, API-Schlüssel im Schlüsselbund oder OPEN_CHEESE_API_KEY, Standardmodell.
>
> Webseite: https://opencheese.dev/de/docs/zed/ · Alle Seiten der Doku: https://opencheese.dev/de/docs.md

Das Agent-Panel von Zed erreicht OpenCheese über einen `openai_compatible`-Anbieter in Zeds
`settings.json` und spricht die Chat-Completions-API von OpenAI unter
`https://api.opencheese.dev/v1`.

## 1. settings.json öffnen

Zed speichert alle Benutzereinstellungen in einer einzigen Datei. Öffne sie über die Befehlspalette
mit **zed: open settings file** oder bearbeite sie direkt:

| System | Datei |
| --- | --- |
| macOS und Linux | `~/.config/zed/settings.json` |
| Windows | `%APPDATA%\Zed\settings.json` |

Ergänze die Datei, statt sie zu ersetzen: Sie enthält auch dein Theme, deine Tastenbelegung, deine
Schriftarten und deine Language Server.

## 2. Den Anbieter hinzufügen

Die Seite **Konfiguration** im Dashboard generiert im Tab **Zed** diesen Block mit allen Modellen
deines Tarifs und den Limits jedes einzelnen. Von Hand sieht ein Modell so aus:

```json
{
  "language_models": {
    "openai_compatible": {
      "OpenCheese": {
        "api_url": "https://api.opencheese.dev/v1",
        "available_models": [
          {
            "name": "MODEL_ID",
            "display_name": "Model name",
            "max_tokens": 1000000,
            "max_output_tokens": 131000,
            "max_completion_tokens": 126000,
            "reasoning_effort": "low",
            "capabilities": {
              "tools": true,
              "images": true,
              "parallel_tool_calls": false,
              "prompt_cache_key": true,
              "chat_completions": true,
              "interleaved_reasoning": false,
              "max_tokens_parameter": true
            }
          }
        ]
      }
    }
  }
}
```

- `api_url` behält sein `/v1`: Zed hängt `/chat/completions` selbst an.
- Hat die Datei schon einen Abschnitt `language_models`, füge nur den Eintrag `OpenCheese` in dessen
  Objekt `openai_compatible` ein.
- `max_tokens` ist das Kontextfenster des Modells und `max_output_tokens` seine längste Antwort: Nimm
  beide aus `context_window` und `max_output_tokens` in [`/v1/models`](https://opencheese.dev/de/docs/models.md). Jedes
  Modell braucht beide, sonst lehnt Zed den ganzen Anbieter ab.
- `reasoning_effort` muss einer der Werte `none`, `minimal`, `low`, `medium`, `high`, `xhigh` oder
  `max` sein; bei jedem anderen Wert lehnt Zed den ganzen Anbieter ab. Lass das Feld bei einem
  Modell ohne Stufen weg.
- Lass `prompt_cache_key` eingeschaltet: Damit erscheint jeder Zed-Thread im Dashboard als eine
  Sitzung.
- `images` ist nur bei Modellen `true`, deren `modalities.input` `image` enthält.

## 3. Zed den API-Schlüssel geben

Der Schlüssel kommt nie in die `settings.json`: Zed hat dort kein Feld dafür. Entweder:

1. Öffne das Agent-Panel, führe **agent: open settings** aus, suche **OpenCheese** unter
   LLM Providers, füge den Schlüssel in das Feld API key ein und drücke Enter. Zed speichert ihn im
   Schlüsselbund deines Systems.
2. Oder setze die Umgebungsvariable, die Zed für diesen Anbieter liest:

```bash
export OPEN_CHEESE_API_KEY='YOUR_OPENCHEESE_API_KEY'
```

Achte auf den Unterstrich: Zed bildet den Namen aus der Anbieter-ID und zerlegt `OpenCheese` in
`OPEN_CHEESE`. `OPENCHEESE_API_KEY` wird nie gelesen. Außerdem hat die Variable Vorrang vor dem
Schlüsselbund: Entferne sie und starte Zed neu, wenn du später den Schlüssel wechselst.

## 4. Ein OpenCheese-Modell wählen (optional)

Zed behält das Modell, das zuvor ausgewählt war. Um ein OpenCheese-Modell zum Standard für neue
Threads zu machen, füge Folgendes in die Datei ein:

```json
{
  "agent": {
    "default_model": {
      "provider": "OpenCheese",
      "model": "MODEL_ID"
    }
  }
}
```

`provider` ist die reine Anbieter-ID, ohne das Präfix `openai_compatible/`. Starte Zed neu oder lade
das Fenster neu, nachdem du `settings.json` bearbeitet hast.

## Fehlerbehebung

- **Überhaupt keine OpenCheese-Modelle**: Das JSON ist fehlerhaft, oder ein Modelleintrag hat kein
  `max_tokens` oder einen unbekannten `reasoning_effort`. Kopiere den generierten Block
  erneut, statt ihn von Hand zu reparieren.
- **Modelle erscheinen, aber jede Anfrage schlägt fehl**: Der Schlüssel ist nie bei Zed angekommen;
  wiederhole Schritt 3.
- **Das Modell wird nicht verwendet**: Die Anbieter-ID muss in beiden Blöcken `OpenCheese` lauten,
  genau gleich geschrieben.
