MiniMax M3.1 Flash di OpenCode: konfigurasi teruji dan panggilan tool
Konfigurasi OpenCode v2.2.3 yang diuji dengan MiniMax M3.1 Flash: JSON provider lengkap, jejak panggilan tool sungguhan, dan error yang memutus kelanjutan.
Di halaman ini
- Yang perlu disiapkan
- Konfigurasi OpenCode V2 yang kami uji
- Jalankan dengan key di shell server
- Periksa siklus baca, tulis, dan uji
- Atur effort, konteks, dan batas output
- Perbaiki error key, ID model, dan lanjutan
- Biaya, izin, dan langkah berikutnya
- Pertanyaan umum
- Apakah konfigurasi ini cocok untuk OpenCode V1?
- Apakah opencode --standalone models butuh filter provider?
- Bisakah saya mengirim gambar atau PDF ke model ini lewat OmniaKey?
- Bisakah max_tokens dinaikkan di atas 4096?
- Sumber yang diperiksa
MiniMax M3.1 Flash berjalan di OpenCode v2.2.3 lewat provider khusus yang kompatibel dengan OpenAI. Nama model persisnya di OpenCode adalah omniakey/minimax-m3.1-flash, Base URL-nya https://api.omniakey.com/v1, dan konfigurasi di bawah menyelesaikan tugas repositori sungguhan pada 12 November 2026: lima pembacaan, satu penulisan, satu node --test, dan 12 dari 12 tes lulus.
OpenCode berbicara dalam format OpenAI Chat Completions dengan provider khusus, dan OmniaKey menyajikan format itu di /v1. Semuanya muat dalam satu file proyek, tetapi tiga hal menentukan berhasil atau tidaknya: ID model harus sama dengan ejaan OmniaKey, key harus sampai ke proses server OpenCode, dan konfigurasi provider harus mempertahankan field penalaran antar panggilan tool.
Yang perlu disiapkan
Gunakan OpenCode V2. Versi yang diuji adalah v2.2.3. V2 menaruh provider khusus di objek providers tingkat atas; contoh V1 memakai bentuk lain. Periksa dokumentasi provider V2 dan opencode --version sebelum menyalin konfigurasi.
- OpenCode: v2.2.3, diuji 12 November 2026.
- ID model di OmniaKey:
minimax-m3.1-flash. - Referensi di OpenCode:
omniakey/minimax-m3.1-flash.
Buat key OmniaKey dan simpan di OMNIAKEY_API_KEY. JSON di bawah hanya menyebut nama variabel dan tidak pernah memuat rahasianya. Pilih repositori kecil yang sudah punya perintah tes; pengujian memakai contoh Node dengan src/normalize.js, satu file tes, dan skrip tes.
API milik MiniMax memakai ID dengan huruf campur MiniMax-M3.1-Flash. OmniaKey memakai huruf kecil minimax-m3.1-flash. Di opencode.jsonc, tulis ID huruf kecil OmniaKey di kedua tempat, yaitu kunci peta models dan modelID; huruf besar-kecil yang berbeda tidak cocok dengan ID OmniaKey.
Jika masih memilih model, ulasan MiniMax M3.1 Flash memuat benchmark, informasi rilis, dan penalaran yang selalu aktif.
Konfigurasi OpenCode V2 yang kami uji
Letakkan file ini di akar proyek sebagai opencode.jsonc. Ini bentuk publik dari konfigurasi yang dipakai saat pengujian.
{
"$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"}
]
}
Array env memberi tahu OpenCode variabel kredensial mana yang dibaca: OMNIAKEY_API_KEY berasal dari lingkungan proses server. modelID adalah ID yang dikirim ke OmniaKey, sedangkan kunci di peta models adalah ID yang dipakai OpenCode dalam referensi provider/model. Membiarkan keduanya minimax-m3.1-flash menghindari pencarian yang ambigu.
Blok limit dan capabilities menggantikan asumsi bawaan OpenCode untuk model yang tidak dikenal. Tanpa itu, OpenCode menganggap konteks 200.000 token dan input gambar. Halaman model OmniaKey mencantumkan konteks 1M token dan tidak mencantumkan entri visi, jadi konfigurasi menetapkan batas konteks 1.000.000 dan input hanya teks. Angka 1M adalah jendela yang dipublikasikan, bukan ukuran yang dihabiskan tugas kecil ini.
Blok body memuat dua nilai yang diuji: effort penalaran medium dan batas max_tokens 4096. Daftar effort di capabilities adalah lima tingkat yang dijelaskan panduan MiniMax; yang dipakai dalam tes adalah medium.
Blok permissions sengaja sempit untuk repo demo. Semua ditolak lebih dulu, lalu membaca, glob, dan grep, edit src/normalize.js, perintah node --test, dan git diff diizinkan. Direktori eksternal tetap ditolak. Ganti path dan perintah dengan aturan proyek Anda. Izin edit atau shell yang luas memberi agen jauh lebih banyak akses daripada yang dibutuhkan tugas terbatas.
Jalankan dengan key di shell server
OpenCode biasanya memulai atau menemukan server latar belakang bersama. Server itu menyimpan sesi, konfigurasi, dan eksekusi tool, serta membaca variabel env provider dari lingkungan prosesnya sendiri. Key yang di-export di terminal lain tidak sampai ke sana. Dokumentasi CLI OpenCode menjelaskan server bersama dan opsi --standalone.
Untuk percobaan pertama yang bisa diprediksi, pakai server privat dari shell yang memiliki key:
export OMNIAKEY_API_KEY="your-omniakey-api-key"
opencode --standalone models
Perintah models yang diuji tidak memakai argumen provider. Perintah itu menampilkan omniakey/minimax-m3.1-flash. Lalu jalankan satu tugas. Pengujian memakai argumen model ini dan blok prompt di bawah; ganti penanda dengan teks persisnya:
# Replace <task prompt> with the text from the prompt block below.
opencode --standalone run --model omniakey/minimax-m3.1-flash '<task prompt>'
Opsi --standalone memulai server privat dari shell itu, sehingga server mewarisi key dan membaca konfigurasi proyek. Server bersama yang dimulai lebih dulu hanya melihat lingkungannya sendiri. Baris key di atas adalah penanda; file konfigurasi tetap tanpa rahasia.
Jika server bersama sudah berjalan di lingkungan yang punya OMNIAKEY_API_KEY, Anda boleh memakainya. Bila lingkungan itu tidak jelas, server privat adalah jalur yang bisa direproduksi.
Periksa siklus baca, tulis, dan uji
Contoh Node kecil cukup untuk melihat apakah panggilan tool berfungsi. Contoh itu punya src/normalize.js dengan stub yang hanya mengurutkan, file tes berisi 12 kasus, dan skrip node --test. Sebelum perbaikan, 3 tes lulus dan 9 gagal.
Ini prompt yang dipakai saat pengujian, tanpa perubahan:
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.
Pengujian menghasilkan tujuh operasi tool dalam enam permintaan HTTP, semuanya mengembalikan 200:
| Tool | Jumlah | Cakupan |
|---|---|---|
read | 5 | Daftar repo, sumber, direktori tes, package.json, file tes |
write | 1 | src/normalize.js |
shell | 1 | node --test |
Giliran pertama mengirim dua pembacaan paralel, satu untuk daftar repositori dan satu untuk sumber. Dua giliran berikutnya membaca direktori tes, file paket, dan file tes. Penulisan mengganti sumber. Panggilan shell menjalankan tes. Total waktunya 70,172 detik.
Panggilan tes di dalam siklus melaporkan:
ℹ tests 12
ℹ suites 0
ℹ pass 12
ℹ fail 0
ℹ cancelled 0
ℹ skipped 0
ℹ todo 0
ℹ duration_ms 52.316459
Jawaban terakhir menyebut file yang berubah dan hasil 12/12. Enam blok usage berjumlah 20.739 token input, termasuk pembacaan prefiks dari cache, dan 803 token output. Completion terpanjang 363 token, jadi batas 4096 tidak pernah tercapai.
Proses penerusan lokal mengirim body permintaan dan respons streaming ke OmniaKey tanpa perubahan. Ini satu tugas kecil: buktinya siklus baca, tulis, dan uji berjalan di repositori ini, bukan perbandingan kecepatan atau kualitas kode secara luas.
Atur effort, konteks, dan batas output
Penalaran wajib pada M3.1 Flash. Panduan pembuatan teks MiniMax menyatakan model selalu berpikir, dan referensi API kompatibel OpenAI mengembalikan HTTP 400 jika klien mengirim thinking: {"type": "disabled"} atau reasoning_effort: "none". Biarkan penalaran aktif dan turunkan effort saat ingin giliran lebih pendek.
| Pengaturan | Nilai teruji | Yang dikendalikan |
|---|---|---|
reasoning_effort | medium | Seberapa banyak model berpikir sebelum menjawab |
max_tokens | 4096 | Batas output klien per panggilan |
limit.context | 1000000 | Jendela konteks yang dipublikasikan |
reasoning_effort menerima low, medium, high, xhigh, dan max; bila dihilangkan, panduan MiniMax menyebut defaultnya max. Medium cukup untuk tugas terbatas ini. Menurunkan effort memperpendek penalaran, tetapi tidak mematikannya.
Kontrol sampling tidak berpengaruh pada model ini. Referensi API MiniMax menyatakan M3.1 Flash selalu memakai 1 dan 0,95, jadi menghapus temperature dan top_p lebih bersih daripada menyetel nilai yang diabaikan.
Konteks 1M token berasal dari halaman model OmniaKey dan panduan MiniMax. Batas output 4096 adalah batas pengaman sisi klien yang dipilih untuk pengujian ini, bukan maksimum yang dipublikasikan penyedia. Token penalaran ikut dihitung dalam batas itu, sehingga giliran berpikir panjang bisa berakhir dengan finish_reason: "length" dan teks akhir sedikit atau kosong. Turunkan effort lebih dulu, lalu naikkan batas jika tugas butuh ruang lebih.
Perbaiki error key, ID model, dan lanjutan
Pengujian yang berhasil tidak menghasilkan error. Daftar ini mengikuti dokumentasi OpenCode dan MiniMax yang ditautkan. Base URL persisnya https://api.omniakey.com/v1.
| Gejala | Yang diperiksa | Perbaikan |
|---|---|---|
401 atau 403 | Apakah OMNIAKEY_API_KEY ada di lingkungan server? | Export di shell yang menjalankan OpenCode atau pakai --standalone; jangan taruh key di JSON. |
Model unavailable atau model tidak ditemukan | Apakah kunci peta dan modelID sama-sama minimax-m3.1-flash? | Perbaiki ejaan dan huruf besar-kecil; jangan pakai ID MiniMax-M3.1-Flash dari penyedia; pastikan provider aktif. |
404 dari gateway | Apakah settings.baseURL persis alamat OmniaKey? | Tulis Base URL persis di atas, hapus path tambahan. |
400 soal adaptive thinking | Apakah klien mengirim penalaran nonaktif atau reasoning_effort: "none"? | Hapus dan turunkan effort. |
| Berhenti setelah panggilan tool pertama | Apakah field penalaran diatur? Apakah riwayat memuatnya? | Setel reasoningField ke "reasoning_content" dan ulangi prompt yang sama. |
Konten kosong, finish_reason: "length" | Apakah penalaran menghabiskan batas output? | Turunkan effort dulu, lalu naikkan max_tokens. |
| Error konteks pada prompt 300K | Apakah OpenCode masih memakai default 200K? | Setel limit.context ke 1000000 dan pendekkan prompt. |
| Input gambar atau PDF gagal | Apakah halaman OmniaKey mencantumkan visi? | Kirim teks saja dan ubah file lebih dulu. |
Kegagalan lanjutan bisa berasal dari konfigurasi meski terlihat seperti masalah model. Referensi API MiniMax meminta respons assistant lengkap ditambahkan ke giliran berikutnya, termasuk tool_calls dan penalaran dalam reasoning_content. Pengaturan reasoningField OpenCode membaca field itu dari stream dan mengembalikannya saat mengirim riwayat.
Dalam pengujian ini, setiap permintaan lanjutan membawa field reasoning_content pada pesan panggilan tool assistant, keenam permintaan selesai, dan setiap hasil tool masuk ke giliran berikutnya.
Biaya, izin, dan langkah berikutnya
OmniaKey menagih per token sesuai tarif terbaru di halaman model. Enam panggilan di sini memakai 20.739 token input, termasuk pembacaan prefiks dari cache, dan 803 token output. Untuk memperkirakan tugas serupa, pisahkan penggunaan menjadi input tanpa cache, input yang dibaca dari cache, dan output, lalu kalikan tiap bagian dengan tarif terbarunya. Total input saja tidak bisa dikalikan dengan satu tarif.
Di repositori Anda, mulai dari aturan tolak semua dan tambahkan hanya folder dan perintah yang dibutuhkan tugas. Pertahankan izin edit pada file yang diubah tugas dan izin shell pada perintah tes. Bagian inilah yang ditulis ulang per proyek; blok provider dan model bisa tetap seperti adanya.
Pola key dan Base URL yang sama berlaku untuk klien lain. Panduan penyiapan Claude Code dari OmniaKey membahas klien itu, dan dokumentasi agen koding memuat langkah per tool.
Pertanyaan umum
Apakah konfigurasi ini cocok untuk OpenCode V1?
Versi yang diuji adalah OpenCode v2.2.3 dan konfigurasi memakai objek providers bentuk jamak dari V2. Halaman V1 memakai bentuk lain, jadi periksa versi sebelum menyalinnya ke instalasi lama.
Apakah opencode --standalone models butuh filter provider?
Tidak. Perintah yang diuji persis opencode --standalone models, tanpa argumen provider. Perintah itu menampilkan omniakey/minimax-m3.1-flash.
Bisakah saya mengirim gambar atau PDF ke model ini lewat OmniaKey?
Halaman model OmniaKey tidak mencantumkan visi dan konfigurasi yang diuji hanya menyatakan input teks. Kirim teks dan ubah gambar atau PDF lebih dulu. Model asal MiniMax menerima gambar, tetapi itu tidak menambah input gambar ke halaman model OmniaKey.
Bisakah max_tokens dinaikkan di atas 4096?
Ya, batas sisi klien bisa dinaikkan. 4096 adalah nilai yang diuji dan halaman saat ini tidak menyebut maksimum tetap untuk model ini. Penalaran ikut dihitung dalam batas, jadi perhatikan potongan karena panjang atau konten kosong; turunkan effort dulu, lalu naikkan batas.
Sumber yang diperiksa
- OpenCode Providers — diperiksa 12 November 2026
- OpenCode Models — diperiksa 12 November 2026
- OpenCode CLI — diperiksa 12 November 2026
- Panduan pembuatan teks MiniMax — diperiksa 12 November 2026
- Referensi API kompatibel OpenAI MiniMax — diperiksa 12 November 2026
- OmniaKey: MiniMax M3.1 Flash — diperiksa 12 November 2026
Model di artikel ini
Artikel terkait
Ulasan MiniMax M3.1 Flash: benchmark, kecepatan, dan bedanya dengan M3
Setengah harga M3 per token dan skor indeks lebih tinggi, tetapi model ini selalu berpikir. Kami menjalankan keduanya berdampingan pada lima panggilan.
LLM terbaik untuk coding agent pada 2026: Claude vs GPT vs Gemini
Perbandingan LLM untuk coding agent pada 2026: Claude, GPT, dan Gemini dalam tool use, context, dan biaya, serta alasan routing lebih baik daripada memilih satu model.
Cara mengatur Claude Code dengan API OmniaKey
Arahkan Claude Code ke titik akhir asli Anthropic OmniaKey — dua variabel lingkungan, model Claude yang tidak pernah ditukar secara diam-diam, penagihan per token tanpa paket bulanan.