MiniMax M3.1 Flash in OpenCode: getestetes Setup und echte Tool-Aufrufe
Eine geprüfte OpenCode-Konfiguration für MiniMax M3.1 Flash: vollständiges Provider-JSON, ein echter Tool-Aufruf und die Fehler, die eine Fortsetzung abbrechen.
Auf dieser Seite
- Was Sie vor dem Start brauchen
- Die getestete OpenCode-V2-Konfiguration
- Starten Sie mit dem Key in der Shell des Servers
- Lese-, Schreib- und Testlauf prüfen
- Effort, Kontext und Ausgabelimit bewusst setzen
- Key-, Modell-ID- und Fortsetzungsfehler beheben
- Kosten, Rechte und nächste Schritte
- Häufige Fragen
- Ist diese Konfiguration mit OpenCode V1 kompatibel?
- Braucht opencode --standalone models einen Provider-Filter?
- Kann ich Bilder oder PDFs über OmniaKey an dieses Modell senden?
- Kann ich max_tokens über 4096 erhöhen?
- Geprüfte Quellen
MiniMax M3.1 Flash läuft in OpenCode v2.2.3 über einen eigenen OpenAI-kompatiblen Provider. Der exakte Modellname in OpenCode lautet omniakey/minimax-m3.1-flash, die Base URL ist https://api.omniakey.com/v1. Mit der Konfiguration unten lief am 12. November 2026 eine echte Repository-Aufgabe durch: fünf Lesezugriffe, ein Schreibzugriff, ein node --test-Lauf und 12 von 12 bestandenen Tests.
OpenCode spricht mit einem eigenen Provider das OpenAI-Chat-Completions-Format, und OmniaKey liefert dieses Format unter /v1. Die Einrichtung passt in eine Projektdatei, doch drei Punkte entscheiden über den Erfolg: Die Modell-ID muss der Schreibweise von OmniaKey entsprechen, der Key muss den Serverprozess von OpenCode erreichen, und die Provider-Konfiguration muss das Reasoning-Feld über Tool-Aufrufe hinweg erhalten.
Was Sie vor dem Start brauchen
Verwenden Sie OpenCode V2. Getestet wurde v2.2.3. V2 legt eigene Provider in ein providers-Objekt auf oberster Ebene; V1-Beispiele haben eine andere Form. Prüfen Sie deshalb vor dem Kopieren die Provider-Dokumentation für V2 und opencode --version.
- OpenCode: v2.2.3, getestet am 12. November 2026.
- Modell-ID bei OmniaKey:
minimax-m3.1-flash. - Referenz in OpenCode:
omniakey/minimax-m3.1-flash.
Legen Sie einen OmniaKey-Key an und speichern Sie ihn in OMNIAKEY_API_KEY. Das JSON unten nennt nur den Variablennamen und enthält nie das Geheimnis. Nehmen Sie ein kleines Repository mit vorhandenem Testbefehl; der Testlauf nutzte ein Node-Beispiel mit src/normalize.js, einer Testdatei und einem Testskript.
Die eigene API von MiniMax verwendet die gemischte Schreibweise MiniMax-M3.1-Flash. OmniaKey verwendet das kleingeschriebene minimax-m3.1-flash. In opencode.jsonc tragen Sie an beiden Stellen, dem Schlüssel in der models-Map und modelID, die kleingeschriebene ID von OmniaKey ein; eine andere Schreibweise trifft die ID von OmniaKey nicht.
Wenn Sie noch ein Modell auswählen, finden Sie im Testbericht zu MiniMax M3.1 Flash Benchmarks, Angaben zum Start und das immer aktive Reasoning.
Die getestete OpenCode-V2-Konfiguration
Legen Sie diese Datei als opencode.jsonc im Projektstamm ab. Es ist die öffentliche Form der im Lauf verwendeten Konfiguration.
{
"$schema": "https://opencode.ai/config.json",
"model": "omniakey/minimax-m3.1-flash",
"share": "disabled",
"update": "disable",
"warming": false,
"snapshots": false,
"enabled_providers": ["omniakey"],
"providers": {
"omniakey": {
"name": "OmniaKey",
"env": ["OMNIAKEY_API_KEY"],
"package": "@opencode/ai/providers/openai-compatible",
"settings": {
"baseURL": "https://api.omniakey.com/v1"
},
"models": {
"minimax-m3.1-flash": {
"modelID": "minimax-m3.1-flash",
"name": "MiniMax M3.1 Flash",
"body": {
"reasoning_effort": "medium",
"max_tokens": 4096,
"stream_options": {"include_usage": true}
},
"limit": {
"context": 1000000,
"output": 4096
},
"capabilities": {
"tools": true,
"input": ["text"],
"output": ["text"],
"freeform": [],
"reasoning": {
"supported": true,
"effort": ["low", "medium", "high", "xhigh", "max"]
}
},
"compatibility": {
"reasoningField": "reasoning_content",
"requireReasoning": true,
"maxTokensField": "max_tokens"
}
}
}
}
},
"permissions": [
{"action": "*", "resource": "*", "effect": "deny"},
{"action": "read", "resource": "*", "effect": "allow"},
{"action": "glob", "resource": "*", "effect": "allow"},
{"action": "grep", "resource": "*", "effect": "allow"},
{"action": "edit", "resource": "src/normalize.js", "effect": "allow"},
{"action": "shell", "resource": "node --test", "effect": "allow"},
{"action": "shell", "resource": "git diff *", "effect": "allow"},
{"action": "external_directory", "resource": "*", "effect": "deny"}
]
}
Das env-Array sagt OpenCode, welche Variable mit den Zugangsdaten gelesen wird: OMNIAKEY_API_KEY kommt aus der Umgebung des Serverprozesses. modelID ist die ID, die an OmniaKey geht; der Schlüssel in der models-Map ist die ID, die OpenCode in provider/model-Referenzen verwendet. Wenn beide minimax-m3.1-flash lauten, bleibt die Suche eindeutig.
Die Blöcke limit und capabilities ersetzen die Standardannahmen von OpenCode für ein unbekanntes Modell. Ohne sie nimmt OpenCode 200.000 Token Kontext und Bildeingabe an. Die Modellseite von OmniaKey nennt für dieses Modell 1 Mio. Token Kontext und keinen Vision-Eintrag. Die Konfiguration setzt das Kontextlimit deshalb auf 1.000.000 und die Eingabe auf Text. Die 1 Mio. sind das veröffentlichte Fenster, nicht eine Größe, die diese kleine Aufgabe ausgereizt hat.
Der body-Block enthält die beiden Werte aus diesem Lauf: mittleres Reasoning und ein max_tokens-Limit von 4096. Die Effort-Liste in capabilities sind die fünf Stufen aus dem MiniMax-Leitfaden; verwendet wurde medium.
Der permissions-Block ist für das Demo-Repository absichtlich eng. Er verweigert alles und erlaubt danach Lesen, glob und grep, eine Bearbeitung von src/normalize.js, den Befehl node --test und git diff ohne weitere Rechte. Externe Verzeichnisse bleiben gesperrt. Ersetzen Sie Dateipfade und Befehle durch die Regeln Ihres Projekts. Eine pauschale Freigabe für Bearbeitung oder Shell gibt dem Agenten viel mehr Zugriff, als eine begrenzte Aufgabe braucht.
Starten Sie mit dem Key in der Shell des Servers
OpenCode startet normalerweise einen gemeinsamen Hintergrundserver oder verwendet einen bereits laufenden. Dieser Server hält Sitzungen, Konfiguration und Tool-Ausführung und liest die env-Variablen des Providers aus seiner eigenen Prozessumgebung. Ein Key, der in einem anderen Terminal exportiert wurde, erreicht ihn nicht. Die OpenCode-CLI-Dokumentation beschreibt den gemeinsamen Server und die Option --standalone.
Für einen vorhersehbaren ersten Lauf nehmen Sie einen privaten Server aus einer Shell mit dem Key:
export OMNIAKEY_API_KEY="your-omniakey-api-key"
opencode --standalone models
Der getestete models-Befehl nimmt kein Provider-Argument. Er listet omniakey/minimax-m3.1-flash. Starten Sie dann eine Aufgabe. Der Testlauf nutzte dieses Modellargument und den Prompt-Block unten; ersetzen Sie den markierten Platzhalter durch den exakten Text:
# Replace <task prompt> with the text from the prompt block below.
opencode --standalone run --model omniakey/minimax-m3.1-flash '<task prompt>'
Die Option --standalone startet einen privaten Server aus dieser Shell, sodass er den Key erbt und die Projektkonfiguration liest. Ein früher gestarteter gemeinsamer Server sieht nur seine eigene Umgebung. Die Key-Zeile oben ist ein Platzhalter; die Konfigurationsdatei enthält weiterhin kein Geheimnis.
Wenn bereits ein gemeinsamer Server in einer Umgebung mit OMNIAKEY_API_KEY läuft, können Sie ihn verwenden. Ist diese Umgebung unklar, ist der private Server der reproduzierbare Weg.
Lese-, Schreib- und Testlauf prüfen
Ein kleines Node-Beispiel reicht, um zu sehen, ob Tool-Aufrufe funktionieren. Das Beispiel hatte src/normalize.js mit einem Stub, der nur sortierte, eine Testdatei mit 12 Fällen und ein node --test-Skript. Vor der Korrektur bestanden 3 Tests, 9 schlugen fehl.
Dies ist der im Lauf verwendete Prompt, unverändert:
Fix src/normalize.js in this small JavaScript repository. Read the source and existing tests, then implement normalizeIntervals: accept valid half-open numeric intervals [start,end], drop empty intervals, sort them, and merge overlapping or touching ranges. Return fresh arrays without mutating the input. Do not change tests or configuration. Run `node --test` and summarize the result. Work only in this repository; do not read any credentials, network resources or files outside it. Use at most 8 tool calls.
Der Lauf ergab sieben Tool-Operationen über sechs HTTP-Anfragen, die alle mit 200 antworteten:
| Werkzeug | Anzahl | Wofür |
|---|---|---|
read | 5 | Repo-Liste, Quelle, Testverzeichnis, package.json, Testdatei |
write | 1 | src/normalize.js |
shell | 1 | node --test |
Der erste Turn schickte zwei Lesezugriffe parallel, einen für die Repo-Liste und einen für die Quelle. Die nächsten zwei Turns lasen Testverzeichnis, Paketdatei und Testdatei. Der Schreibzugriff ersetzte die Quelle. Der Shell-Aufruf startete die Tests. Der Lauf dauerte 70,172 Sekunden.
Der Testaufruf innerhalb der Schleife meldete:
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 52.316459
Die abschließende Antwort nannte die geänderte Datei und das Ergebnis 12/12. Die sechs usage-Blöcke summieren sich auf 20.739 Eingabe-Token, einschließlich der im Cache gelesenen Präfixe, und 803 Ausgabe-Token. Die größte Completion hatte 363 Token, das Limit von 4096 wurde also nie erreicht.
Ein lokaler Weiterleitungsprozess schickte Anfragekörper und gestreamte Antwort unverändert an OmniaKey. Das ist eine kleine Aufgabe: Sie zeigt, dass der Lese-, Schreib- und Testlauf in diesem Repository funktioniert, und ist kein breiter Geschwindigkeits- oder Codequalitätsvergleich.
Effort, Kontext und Ausgabelimit bewusst setzen
Bei M3.1 Flash ist Reasoning Pflicht. Der Textgenerierungs-Leitfaden von MiniMax sagt, das Modell denke immer, und die OpenAI-kompatible API-Referenz antwortet mit HTTP 400, wenn ein Client thinking: {"type": "disabled"} oder reasoning_effort: "none" sendet. Lassen Sie das Reasoning an und senken Sie den Effort, wenn Sie einen kürzeren Turn wollen.
| Einstellung | Getesteter Wert | Was sie steuert |
|---|---|---|
reasoning_effort | medium | Wie viel das Modell vor der Antwort denkt |
max_tokens | 4096 | Ausgabelimit des Clients pro Aufruf |
limit.context | 1000000 | Veröffentlichtes Kontextfenster |
reasoning_effort akzeptiert low, medium, high, xhigh und max; ohne Angabe gilt laut MiniMax-Leitfaden max. Für diese begrenzte Aufgabe reichte medium. Ein niedrigerer Effort verkürzt das Denken, schaltet es aber nicht ab.
Die Sampling-Parameter bewirken bei diesem Modell nichts. Laut API-Referenz von MiniMax verwendet M3.1 Flash immer 1 und 0.95; temperature und top_p zu entfernen ist sauberer, als Werte zu justieren, die ignoriert werden.
Der Kontext von 1 Mio. Token stammt von der Modellseite von OmniaKey und aus dem MiniMax-Leitfaden. Die 4096 Ausgabe-Token sind ein Sicherheitslimit des Clients für diesen Lauf, kein veröffentlichtes Maximum des Anbieters. Reasoning-Token zählen auf dieses Limit, daher kann ein langer Denk-Turn mit finish_reason: "length" und wenig oder keinem Text enden. Senken Sie zuerst den Effort und erhöhen Sie das Limit erst, wenn die Aufgabe mehr Platz braucht.
Key-, Modell-ID- und Fortsetzungsfehler beheben
Der erfolgreiche Lauf erzeugte keine Fehler. Diese Liste folgt der verlinkten Dokumentation von OpenCode und MiniMax. Die exakte Base URL lautet https://api.omniakey.com/v1.
| Symptom | Prüfen | Behebung |
|---|---|---|
401 oder 403 | Steht OMNIAKEY_API_KEY in der Umgebung des Servers? | In der Shell exportieren, die OpenCode startet, oder --standalone nutzen; den Key aus dem JSON heraushalten. |
Model unavailable oder Modell nicht gefunden | Lauten Map-Schlüssel und modelID beide minimax-m3.1-flash? | Schreibweise und Groß-/Kleinschreibung korrigieren; nicht die Upstream-ID MiniMax-M3.1-Flash verwenden; prüfen, ob der Provider aktiv ist. |
404 vom Gateway | Ist settings.baseURL genau der OmniaKey-Endpunkt? | Die exakte Base URL von oben eintragen und jeden zusätzlichen Pfad entfernen. |
400 zu adaptive thinking | Hat ein Client Reasoning deaktiviert oder reasoning_effort: "none" gesendet? | Entfernen und stattdessen den Effort senken. |
| Stoppt nach dem ersten Tool-Aufruf | Ist das Reasoning-Feld gesetzt? Enthält es die Historie? | reasoningField auf "reasoning_content" setzen und denselben Prompt wiederholen. |
Leerer Inhalt, finish_reason: "length" | Verbraucht das Denken das Ausgabelimit? | Zuerst den Effort senken, dann max_tokens erhöhen. |
| Kontextfehler bei einem 300K-Prompt | Nutzt OpenCode noch den 200K-Standard? | limit.context auf 1000000 setzen und den Prompt kürzen. |
| Bildeingabe oder PDF schlägt fehl | Listet die OmniaKey-Seite Vision? | Nur Text senden und die Datei vorher umwandeln. |
Eine Fortsetzung kann in der Konfiguration scheitern, auch wenn es nach einem Modellproblem aussieht. Die API-Referenz von MiniMax verlangt, die vollständige Assistant-Antwort an spätere Turns anzuhängen, einschließlich tool_calls und des in reasoning_content zurückgegebenen Denkens. Die reasoningField-Einstellung von OpenCode liest dieses Feld aus dem Stream und stellt es beim Senden der Historie wieder her.
In diesem Lauf trug jede Folgeanfrage das Feld reasoning_content an den Assistant-Nachrichten mit Tool-Aufruf, alle sechs Anfragen liefen durch, und jedes Tool-Ergebnis floss in den nächsten Turn.
Kosten, Rechte und nächste Schritte
OmniaKey rechnet pro Token zu den aktuellen Tarifen auf der Modellseite ab. Die sechs Aufrufe hier nutzten 20.739 Eingabe-Token, einschließlich der im Cache gelesenen Präfixe, und 803 Ausgabe-Token. Für eine ähnliche Aufgabe teilen Sie die Nutzung in ungecachte Eingabe, Cache-gelesene Eingabe und Ausgabe und multiplizieren jeden Teil mit seinem aktuellen Tarif. Die Eingabesumme allein lässt sich nicht mit einem einzigen Tarif multiplizieren.
Beginnen Sie in Ihrem Repository mit der Alles-verweigern-Regel und ergänzen Sie nur die Ordner und Befehle, die die Aufgabe braucht. Lassen Sie die Bearbeitungsrechte auf den Dateien, die die Aufgabe ändert, und die Shell-Rechte auf dem Testbefehl. Diesen Teil schreiben Sie pro Projekt neu; die Provider- und Modellblöcke können bleiben, wie sie sind.
Dasselbe Muster aus Key und Base URL gilt für andere Clients. Die Einrichtungsanleitung für Claude Code von OmniaKey behandelt diesen Client, und die Dokumentation zu Coding-Agenten listet die Schritte pro Werkzeug.
Häufige Fragen
Ist diese Konfiguration mit OpenCode V1 kompatibel?
Getestet wurde OpenCode v2.2.3, und die Konfiguration nutzt das providers-Objekt von V2. V1-Seiten haben eine andere Form; prüfen Sie die Version, bevor Sie sie in eine ältere Installation kopieren.
Braucht opencode --standalone models einen Provider-Filter?
Nein. Der getestete Befehl lautet genau opencode --standalone models, ohne Provider-Argument. Er listet omniakey/minimax-m3.1-flash.
Kann ich Bilder oder PDFs über OmniaKey an dieses Modell senden?
Die Modellseite von OmniaKey nennt keinen Vision-Eintrag, und die getestete Konfiguration deklariert nur Texteingabe. Senden Sie Text und wandeln Sie Bilder oder PDFs vorher um. Das Upstream-Modell von MiniMax akzeptiert Bilder, doch das fügt der OmniaKey-Modellseite keine Bildeingabe hinzu.
Kann ich max_tokens über 4096 erhöhen?
Ja, das Client-Limit lässt sich erhöhen. 4096 war der getestete Wert, und die aktuellen Seiten nennen kein festes Maximum für dieses Modell. Das Denken zählt auf das Limit, achten Sie also auf einen Längenabbruch oder leeren Inhalt; senken Sie zuerst den Effort und erhöhen Sie dann das Limit.
Geprüfte Quellen
- OpenCode Providers — geprüft am 12. November 2026
- OpenCode Models — geprüft am 12. November 2026
- OpenCode CLI — geprüft am 12. November 2026
- MiniMax-Leitfaden zur Textgenerierung — geprüft am 12. November 2026
- MiniMax-Referenz zur OpenAI-kompatiblen API — geprüft am 12. November 2026
- OmniaKey: MiniMax M3.1 Flash — geprüft am 12. November 2026
Modelle in diesem Artikel
Verwandte Artikel
MiniMax M3.1 Flash im Test: Benchmarks, Tempo und Vergleich mit M3
Halber Preis pro Token und ein höherer Indexwert, doch jeder Aufruf denkt zuerst. Wir haben beide Modelle in fünf Aufgaben direkt gegeneinander laufen lassen.
Bestes LLM für Coding-Agenten 2026: Claude vs. GPT vs. Gemini
LLMs für Coding-Agenten 2026 im Vergleich: Claude, GPT und Gemini bei Tool-Nutzung, Kontext und Kosten. Warum Routing oft besser ist als ein einzelnes Modell.
Claude Code mit der OmniaKey API einrichten
Verbinden Sie Claude Code mit dem Anthropic-nativen Endpunkt von OmniaKey – zwei Umgebungsvariablen, Claude-Modelle, die niemals stillschweigend ausgetauscht werden, Abrechnung pro Token ohne monatlichen Plan.