# MiniMax M3.1 Flash ve OpenCode: test edilmiş kurulum ve araç çağrıları

> MiniMax M3.1 Flash'ı OpenCode v2.2.3 içinde kurun: tam provider JSON'u, model kimliği, gerçek araç çağrıları ve anahtar ile bağlam hatalarının çözümü.

- Canonical HTML: https://omniakey.com/tr/blog/minimax-m3-1-flash-opencode
- Markdown: https://omniakey.com/tr/blog/minimax-m3-1-flash-opencode.md
- Published: 2026-11-12 (updated 2026-11-12)
- Author: Kiki, COO at OmniaKey
- Language: tr
- Category: API setup
- Reading time: 9 min
- All posts: https://omniakey.com/blog/llms.txt

---

[MiniMax M3.1 Flash](https://omniakey.com/tr/minimax-m3-1-flash), OpenCode v2.2.3 içinde [OpenAI uyumlu özel bir provider](https://opencode.ai/docs/providers/) ile çalışır. OpenCode'daki tam model adı `omniakey/minimax-m3.1-flash`, Base URL `https://api.omniakey.com/v1` ve aşağıdaki yapılandırma 12 Kasım 2026'da gerçek bir depo görevini tamamladı: beş okuma, bir yazma, bir `node --test` çalıştırması ve 12 testin 12'si başarılı.

OpenCode, özel provider ile OpenAI Chat Completions biçimini konuşur; OmniaKey bu biçimi /v1 altında sunar. Kurulum tek bir proje dosyasına sığar, ama üç ayrıntı çalışıp çalışmayacağını belirler: model kimliği OmniaKey'in yazımıyla aynı olmalı, anahtar OpenCode sunucu sürecine ulaşmalı ve provider yapılandırması araç çağrıları arasında modelin akıl yürütme alanını korumalı.

## Başlamadan önce gerekenler

OpenCode V2 kullanın. Test edilen sürüm v2.2.3. V2, özel provider'ları en üst düzeydeki providers nesnesine koyar; V1 örnekleri farklı bir yapı kullanır. Kopyalamadan önce [V2 provider belgelerine](https://opencode.ai/docs/providers/) ve `opencode --version` çıktısına bakın.

- OpenCode: v2.2.3, 12 Kasım 2026'da test edildi.
- OmniaKey model kimliği: `minimax-m3.1-flash`.
- OpenCode'daki başvuru: `omniakey/minimax-m3.1-flash`.

Bir OmniaKey anahtarı oluşturup `OMNIAKEY_API_KEY` içine koyun. Aşağıdaki JSON yalnızca değişken adını yazar, gizli değeri asla içermez. Test komutu hazır olan küçük bir depo seçin; testte `src/normalize.js`, bir test dosyası ve bir test betiği olan Node örneği kullanıldı.

MiniMax'in kendi API'si karışık harfli `MiniMax-M3.1-Flash` kimliğini kullanır. OmniaKey küçük harfli `minimax-m3.1-flash` kullanır. opencode.jsonc içinde hem models haritasındaki anahtara hem `modelID` alanına OmniaKey'in küçük harfli kimliğini yazın; farklı harf büyüklüğü OmniaKey kimliğine uymaz.

Hâlâ model seçiyorsanız [MiniMax M3.1 Flash incelemesi](https://omniakey.com/tr/blog/minimax-m3-1-flash-review) benchmark'ları, çıkış bilgilerini ve her zaman açık akıl yürütmeyi bir arada sunar.

## Test ettiğimiz OpenCode V2 yapılandırması

Bunu proje köküne opencode.jsonc olarak koyun. Çalıştırmada kullanılan yapılandırmanın herkese açık biçimidir.

```json
{
  "$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"}
  ]
}
```

env dizisi OpenCode'a hangi kimlik bilgisi değişkenini okuyacağını söyler: `OMNIAKEY_API_KEY` sunucu sürecinin ortamından gelir. `modelID` OmniaKey'e gönderilen kimliktir; models haritasındaki anahtar ise OpenCode'un provider/model başvurularında kullandığı kimliktir. İkisini de `minimax-m3.1-flash` bırakmak aramayı belirsizlikten çıkarır.

limit ve capabilities blokları [OpenCode'un bilinmeyen model için varsayımlarını](https://opencode.ai/docs/models.md) değiştirir. Aksi hâlde OpenCode 200.000 token bağlam ve görsel giriş varsayar. [OmniaKey model sayfası](https://omniakey.com/tr/minimax-m3-1-flash) bu model için 1M token bağlam yazar ve görme girdisi listelemez; bu yüzden yapılandırma bağlam sınırını 1.000.000, girişi yalnızca metin yapar. 1M, yayımlanmış pencere boyutudur; bu küçük görevin tükettiği bir uzunluk değildir.

body bloğu bu çalıştırmada denenen iki değeri taşır: medium akıl yürütme ve 4096'lık `max_tokens` sınırı. capabilities içindeki effort listesi MiniMax kılavuzunun saydığı beş kademedir; testte medium kullanıldı.

permissions bloğu demo deposu için bilerek dardır. Önce her şeyi reddeder, sonra okuma, glob ve grep, `src/normalize.js` düzenlemesi, `node --test` komutu ve git diff izinlerini verir. Dış dizinleri de reddeder. Dosya yolunu ve komutları kendi projenizin kurallarıyla değiştirin. Geniş bir düzenleme veya shell izni, sınırlı bir görevin ihtiyacından çok daha fazla erişim verir.

## Anahtarı sunucunun kabuğunda çalıştırın

OpenCode genellikle arka planda ortak bir sunucu başlatır veya var olanı bulur. Oturumlar, yapılandırma ve araç çalıştırma bu sunucudadır; provider'ın env değişkenlerini kendi süreç ortamından okur. Başka bir terminalde export edilen anahtar ona ulaşmaz. [OpenCode CLI belgeleri](https://opencode.ai/docs/cli.md) ortak sunucuyu ve `--standalone` seçeneğini anlatır.

Öngörülebilir bir ilk çalıştırma için anahtarın bulunduğu kabuktan özel bir sunucu kullanın:

```bash
export OMNIAKEY_API_KEY="your-omniakey-api-key"
opencode --standalone models
```

Test edilen models komutu provider argümanı almaz. `omniakey/minimax-m3.1-flash` satırını listeler. Ardından bir görev çalıştırın. Testte bu model argümanı ve aşağıdaki prompt bloğu kullanıldı; işaretli yer tutucuyu tam metinle değiştirin:

```bash
# Replace <task prompt> with the text from the prompt block below.
opencode --standalone run --model omniakey/minimax-m3.1-flash '<task prompt>'
```

`--standalone` seçeneği o kabuktan özel bir sunucu başlatır; sunucu anahtarı devralır ve proje yapılandırmasını okur. Daha önce başlatılmış ortak sunucu yalnızca kendi ortamını görür. Yukarıdaki anahtar satırı bir yer tutucudur; yapılandırma dosyasında hâlâ gizli bilgi yoktur.

OMNIAKEY\_API\_KEY bulunan bir ortamda çalışan ortak sunucunuz varsa onu da kullanabilirsiniz. O ortam belirsizse özel sunucu yeniden üretilebilir yoldur.

## Okuma, yazma ve test döngüsünü doğrulayın

Araç çağrılarının çalışıp çalışmadığını görmek için küçük bir Node örneği yeter. Örnekte yalnızca sıralama yapan bir taslakla `src/normalize.js`, 12 vakalık bir test dosyası ve node --test betiği vardı. Düzeltmeden önce 3 test geçiyor, 9 test başarısız oluyordu.

Çalıştırmada kullanılan prompt aynen şöyle:

```prompt
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.
```

Çalıştırma altı HTTP isteğinde yedi araç işlemi üretti; hepsi 200 döndü:

|Araç|Sayı|Kapsam|
|-|-|-|
|`read`|5|Depo listesi, kaynak, test dizini, `package.json`, test dosyası|
|`write`|1|`src/normalize.js`|
|`shell`|1|`node --test`|

İlk tur iki okumayı paralel gönderdi: biri depo listesi, diğeri kaynak için. Sonraki iki tur test dizinini, paket dosyasını ve test dosyasını okudu. Yazma kaynağı değiştirdi. Shell çağrısı testleri çalıştırdı. Toplam süre 70,172 saniye oldu.

Döngü içindeki test çağrısı şunu bildirdi:

```text
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 52.316459
```

Son yanıt değişen dosyayı ve 12/12 sonucunu söyledi. Altı usage bloğu, önbellekten okunan önekler dahil 20.739 giriş tokenı ve 803 çıkış tokenı topluyor. En uzun tamamlama 363 token oldu; 4096 sınırına hiç ulaşılmadı.

Yerel bir aktarma süreci istek gövdesini ve akış yanıtını değiştirmeden OmniaKey'e iletti. Bu küçük bir görev: okuma, yazma ve test döngüsünün bu depoda çalıştığını gösterir; hız veya kod kalitesi açısından geniş bir karşılaştırma değildir.

## Effort, bağlam ve çıktı sınırını ayarlayın

M3.1 Flash'ta akıl yürütme zorunludur. [MiniMax metin üretme kılavuzu](https://platform.minimax.io/docs/guides/text-generation.md) modelin her zaman düşündüğünü söyler; [OpenAI uyumlu API başvurusu](https://platform.minimax.io/docs/api-reference/text-openai-api.md) ise istemci `thinking: {"type": "disabled"}` veya `reasoning_effort: "none"` gönderirse HTTP 400 döndürür. Akıl yürütmeyi açık bırakın, daha kısa tur istediğinizde effort değerini düşürün.

|Ayar|Test edilen değer|Neyi yönetir|
|-|-|-|
|`reasoning_effort`|`medium`|Modelin yanıt öncesi düşünme miktarı|
|`max_tokens`|`4096`|Çağrı başına istemci çıkış sınırı|
|`limit.context`|`1000000`|Yayımlanmış bağlam penceresi|

`reasoning_effort` low, medium, high, xhigh ve max değerlerini alır; boş bırakılırsa [MiniMax kılavuzu](https://platform.minimax.io/docs/guides/text-generation.md) varsayılanın max olduğunu söyler. Bu sınırlı görev için medium yetti. Effort düşürmek düşünmeyi kısaltır, ama tamamen kapatmaz.

Örnekleme ayarları bu modelde işe yaramaz. [MiniMax API başvurusu](https://platform.minimax.io/docs/api-reference/text-openai-api.md) M3.1 Flash'ın her zaman 1 ve 0,95 kullandığını söyler; yok sayılan değerleri ayarlamak yerine temperature ve top\_p alanlarını silmek daha temizdir.

1M token bağlam [OmniaKey model sayfasından](https://omniakey.com/tr/minimax-m3-1-flash) ve [MiniMax kılavuzundan](https://platform.minimax.io/docs/guides/text-generation.md) gelir. 4096 çıkış sınırı bu çalıştırma için seçilmiş istemci güvenlik sınırıdır, sağlayıcının yayımladığı üst değer değildir. Akıl yürütme tokenları da bu sınıra sayılır; uzun bir düşünme turu `finish_reason: "length"` ile ve çok az metinle ya da hiç metin olmadan bitebilir. Önce effort değerini düşürün, görev daha fazla yer istiyorsa sonra sınırı yükseltin.

## Anahtar, model kimliği ve devam hatalarını düzeltin

Başarılı çalıştırmada hata çıkmadı. Bu liste bağlantılı OpenCode ve MiniMax belgelerini izler. Tam Base URL `https://api.omniakey.com/v1` adresidir.

|Belirti|Neyi kontrol etmeli|Çözüm|
|-|-|-|
|`401` veya `403`|Sunucu ortamında `OMNIAKEY_API_KEY` var mı?|OpenCode'u başlatan kabukta export edin veya `--standalone` kullanın; anahtarı JSON dışında tutun.|
|`Model unavailable` veya model bulunamadı|Harita anahtarı ve `modelID` ikisi de `minimax-m3.1-flash` mı?|Yazımı ve harf büyüklüğünü düzeltin; sağlayıcının `MiniMax-M3.1-Flash` kimliğini kullanmayın; provider'ın etkin olduğunu doğrulayın.|
|Ağ geçidinden `404`|`settings.baseURL` tam olarak OmniaKey adresi mi?|Yukarıdaki tam Base URL'yi yazın, fazla yolu kaldırın.|
|adaptive thinking ile ilgili `400`|İstemci düşünmeyi kapattı mı veya `reasoning_effort: "none"` gönderdi mi?|Bunu kaldırın ve effort değerini düşürün.|
|İlk araç çağrısından sonra duruyor|Akıl yürütme alanı ayarlı mı? Geçmişte var mı?|`reasoningField` değerini `"reasoning_content"` yapın ve aynı promptu tekrarlayın.|
|İçerik boş, `finish_reason: "length"`|Düşünme çıkış sınırını tüketiyor mu?|Önce effort değerini düşürün, sonra `max_tokens` değerini yükseltin.|
|300K promptta bağlam hatası|OpenCode hâlâ 200K varsayılanını mı kullanıyor?|`limit.context` değerini `1000000` yapın ve promptu kısaltın.|
|Görsel veya PDF girişi başarısız|OmniaKey sayfası görme girdisi listeliyor mu?|Yalnızca metin gönderin, dosyayı önce dönüştürün.|

Devam sorunu model arızası gibi görünse de yapılandırmadan kaynaklanabilir. [MiniMax API başvurusu](https://platform.minimax.io/docs/api-reference/text-openai-api.md), assistant yanıtının tamamının `tool_calls` ve `reasoning_content` içindeki düşünme dahil sonraki turlara eklenmesini ister. [OpenCode'un reasoningField ayarı](https://opencode.ai/docs/models.md) bu alanı akıştan okur ve geçmişi gönderirken geri koyar.

Bu çalıştırmada her izleme isteği assistant araç çağrısı mesajlarında `reasoning_content` alanını taşıdı, altı isteğin hepsi tamamlandı ve her araç sonucu sonraki tura girdi.

## Maliyet, izinler ve sonraki adımlar

OmniaKey token başına, model sayfasındaki güncel tarifelerle faturalar. Buradaki altı çağrı, önbellekten okunan önekler dahil 20.739 giriş tokenı ve 803 çıkış tokenı kullandı. Benzer bir görevi tahmin etmek için kullanımı önbelleksiz giriş, önbellekten okunan giriş ve çıkış olarak ayırın, her parçayı güncel tarifesiyle çarpın. Giriş toplamı tek bir tarifeyle çarpılamaz.

Kendi deponuzda hepsini reddeden kuraldan başlayın ve yalnızca görevin ihtiyaç duyduğu klasörleri ve komutları ekleyin. Düzenleme iznini görevin değiştirdiği dosyalarda, shell iznini test komutunda tutun. Her projede yeniden yazılan kısım burasıdır; provider ve model blokları olduğu gibi kalabilir.

Aynı anahtar ve Base URL düzeni başka istemcilerde de geçerlidir. OmniaKey'in [Claude Code kurulum rehberi](https://omniakey.com/tr/blog/claude-code-setup) bu istemciyi, [kod ajanları belgeleri](https://docs.omniakey.com/tr/coding) ise araç başına adımları anlatır.

## Sık sorulan sorular

### Bu yapılandırma OpenCode V1 ile uyumlu mu?

Test edilen sürüm OpenCode v2.2.3 ve yapılandırma V2'nin çoğul providers nesnesini kullanıyor. V1 sayfaları farklı bir yapıda; eski bir kuruluma kopyalamadan önce sürümü kontrol edin.

### `opencode --standalone models` bir provider filtresi gerektiriyor mu?

Hayır. Test edilen komut tam olarak `opencode --standalone models`, provider argümanı yok. `omniakey/minimax-m3.1-flash` satırını listeler.

### OmniaKey üzerinden bu modele görsel veya PDF gönderebilir miyim?

OmniaKey model sayfası görme girdisi listelemiyor ve test edilen yapılandırma yalnızca metin girişi bildiriyor. Metin gönderin, görselleri veya PDF'leri önce dönüştürün. MiniMax'in kaynak modeli görselleri kabul eder, ama bu OmniaKey model sayfasına görsel girişi eklemez.

### `max_tokens` değerini 4096'nın üzerine çıkarabilir miyim?

Evet, istemci sınırını yükseltebilirsiniz. 4096 test edilen değerdi ve güncel sayfalar bu model için sabit bir üst sınır belirtmiyor. Düşünme de sınıra sayılır; uzunluktan kesilme veya boş içerik olup olmadığına bakın, önce effort değerini düşürün, sonra sınırı yükseltin.

## Kontrol edilen kaynaklar

- [OpenCode Providers](https://opencode.ai/docs/providers/) — 12 Kasım 2026'da kontrol edildi
- [OpenCode Models](https://opencode.ai/docs/models.md) — 12 Kasım 2026'da kontrol edildi
- [OpenCode CLI](https://opencode.ai/docs/cli.md) — 12 Kasım 2026'da kontrol edildi
- [MiniMax metin üretme kılavuzu](https://platform.minimax.io/docs/guides/text-generation.md) — 12 Kasım 2026'da kontrol edildi
- [MiniMax OpenAI uyumlu API başvurusu](https://platform.minimax.io/docs/api-reference/text-openai-api.md) — 12 Kasım 2026'da kontrol edildi
- [OmniaKey: MiniMax M3.1 Flash](https://omniakey.com/tr/minimax-m3-1-flash) — 12 Kasım 2026'da kontrol edildi
