TL;DR
Konfigurasikan CometAPI sekali di OpenCode, lalu pilih Claude, GPT, atau DeepSeek untuk tugas pemrograman Anda. Panduan ini memperluas panduan integrasi resmi CometAPI OpenCode menjadi penyiapan proyek lengkap: satu kunci API CometAPI, satu berkas konfigurasi dengan tiga contoh model, perintah untuk mengganti model, serta tugas JavaScript kecil dengan pemeriksaan yang dapat diulang.
Poin Penting
- Penyiapan OpenCode untuk CometAPI memerlukan ID penyedia, URL dasar API, kredensial, dan ID model.
- Gunakan {env:COMETAPI_KEY} untuk menjaga kunci API tetap tidak muncul dalam opencode.json.
- Daftarkan contoh Claude, GPT, dan DeepSeek dalam satu opencode.json; ketiganya menggunakan kunci dan gateway CometAPI yang sama.
- Ganti penyedia/model terpilih di OpenCode tanpa memperoleh kunci Anthropic, OpenAI, dan DeepSeek secara terpisah.
- Waspadai variabel lingkungan yang hilang, rute API yang tidak cocok, dan prompt persetujuan yang dapat terlihat seperti permintaan macet.
Apa itu OpenCode dan Mengapa Menggunakannya dengan CometAPI?
OpenCode adalah agen pengodean sumber terbuka dengan antarmuka terminal, aplikasi desktop, dan ekstensi IDE. Di sebuah proyek, ia dapat menjelaskan kode yang ada, merencanakan perubahan, mengedit berkas, dan menjalankan perintah sesuai izin yang dikonfigurasi. Tutorial ini menggunakan alur kerja terminal: berikan agen sebuah tugas pemrograman kecil, tinjau tindakan yang diusulkan, dan verifikasi berkas yang dihasilkan dengan uji lokal. Lihat dokumentasi resmi OpenCode untuk instalasi dan penggunaan.
CometAPI menyediakan lapisan akses model. Alur kerja multi-model biasanya melibatkan pengelolaan kredensial, penagihan, dan pengaturan koneksi di berbagai pemasok. Dengan merutekan model yang didukung melalui satu akun CometAPI, proyek ini memiliki kunci dan URL dasar bersama, sementara OpenCode mempertahankan repositori dan instruksi tugas. Ini berguna saat membandingkan model pada tugas yang sama atau mengubah model terpilih tanpa mengatur ulang proyek. Gateway agregasi bersifat opsional: akses langsung pemasok mungkin sesuai untuk alur kerja satu penyedia atau persyaratan kontraktual tertentu. Keuntungannya di sini adalah akses multi-penyedia yang lebih sederhana; format API, perilaku model, dan kompatibilitas alat tetap memerlukan validasi terpisah.
CometAPI mendukung Chat Completions yang kompatibel dengan OpenAI dan juga mengekspos format API lainnya. Integrasi resmi memilih adaptor untuk setiap format. Di sini, Claude Sonnet 5 menggunakan Messages, GPT-6.1 Sol menggunakan Responses, dan DeepSeek V4.1 Flash menggunakan Chat Completions, mengikuti contoh yang ditautkan di bawah. Semua permintaan tetap menuju CometAPI dengan kunci yang sama. Nama pemasok dan format API menggambarkan hal yang berbeda; satu model tidak boleh diasumsikan menerima setiap format.
| Konfigurasi | API Claude Sonnet 5 di CometAPI | API GPT-6.1 Sol di CometAPI | API DeepSeek V4.1 Flash di CometAPI |
|---|---|---|---|
| Penyedia model | Anthropic | OpenAI | DeepSeek |
| ID model | claude-sonnet-5 | gpt-6.1-sol | deepseek-v4.1-flash |
| ID penyedia OpenCode | cometapi-messages | cometapi-responses | cometapi-chat |
| Format API yang digunakan | Messages | Responses/ chat | Chat Completions |
| Adapter | @ai-sdk/anthropic | @ai-sdk/openai | @ai-sdk/openai-compatible |
Apa yang Diperlukan Sebelum Mengonfigurasi CometAPI di OpenCode?
Gunakan terminal, Node.js dengan npm, akun CometAPI dengan akses API dan saldo tersedia, serta direktori proyek sekali pakai. Contoh Bash berlaku untuk macOS, Linux, atau WSL; contoh PowerShell yang diberi label menggunakan sintaks Windows. Node.js juga harus tersedia dalam sesi yang sama untuk pemeriksaan JavaScript di akhir panduan ini.
Panduan ini menggunakan gaya konfigurasi OpenCode 1. Dokumentasi resmi membedakan OpenCode 1 dari OpenCode 2; keduanya menggunakan perintah opencode. Catat opencode --version sebelum memulai dan gunakan dokumentasi konfigurasi untuk versi mayor tersebut. Alur kerja tiga model di bawah ini adalah panduan integrasi dengan hasil yang diharapkan, bukan klaim uji ujung-ke-ujung yang selesai.
Catat CLI Anda, Node.js, npm, sistem operasi, dan tanggal pengujian saat menjalankan contoh. Penggunaan API ditagihkan ke akun CometAPI Anda. Perintah di bawah adalah panduan langsung dengan hasil yang diharapkan; tidak ada keluaran model atau keberhasilan integrasi tiga model yang diklaim.
node --versionnpm --versionopencode --version
Bagaimana Mengonfigurasi CometAPI di OpenCode Langkah demi Langkah?
Langkah 1: Instal OpenCode
Instal paket npm resmi jika OpenCode belum tersedia. Instalasi tanpa pin mengikuti rilis paket saat ini; catat versi yang terinstal sebelum menggunakan konfigurasi. Jika Anda perlu mereproduksi lingkungan panduan sumber, versi CLI yang dinyatakan adalah 1.18.16.
Instal OpenCode CLI dan tampilkan versinya.
npm install -g opencode-aiopencode --version
Buka terminal baru jika executable tidak ditemukan setelah instalasi. Lanjutkan di dalam direktori proyek sekali pakai sehingga tugas agen pertama memiliki batas yang jelas.
Buat dan masuk ke direktori proyek.
mkdir cometapi-opencode-democd cometapi-opencode-demo
Langkah 2: Buat Kunci API CometAPI
Hasilkan kunci API dari akun CometAPI Anda dan setel di terminal yang sama yang digunakan untuk memulai OpenCode. Ganti placeholder secara lokal. Jangan commit kunci, menempelkannya ke prompt, atau menyertakannya dalam log yang dibagikan.
Variabel ini berlaku untuk shell saat ini dan proses yang diluncurkan darinya. Jangan tangkap layar token nyata. Pemeriksaan berikut melaporkan apakah variabel ada tanpa mencetak nilainya.
Setel kunci CometAPI untuk sesi Bash saat ini.
export COMETAPI_KEY="YOUR_COMETAPI_KEY"
Setel kunci CometAPI untuk sesi PowerShell saat ini.
$env:COMETAPI_KEY = "YOUR_COMETAPI_KEY"test -n "$COMETAPI_KEY" && printf "COMETAPI_KEY is set\n" || printf "COMETAPI_KEY is missing\n"if ([string]::IsNullOrWhiteSpace($env:COMETAPI_KEY)) { "COMETAPI_KEY is missing"} else { "COMETAPI_KEY is set"}
Langkah 3: Buat opencode.json
Buat opencode.json di root proyek, atau gunakan ~/.config/opencode/opencode.json untuk membuat entri tersedia di seluruh proyek. Berkas proyek menjaga tutorial ini tetap mandiri. Gunakan satu objek provider yang berisi tiga entri di bawah; jika objek provider sudah ada, gabungkan entri-entri tersebut alih-alih membuat kunci JSON duplikat.
Untuk field yang konflik, konfigurasi proyek mengesampingkan konfigurasi global; field yang tidak konflik dipertahankan. Berkas OPENCODE_CONFIG kustom dimuat di antara konfigurasi global dan proyek. Periksa rantai prioritas yang didokumentasikan jika ada pengaturan terkelola atau inline.
Simpan konfigurasi lengkap berikut sebagai opencode.json. Setiap penyedia membaca COMETAPI_KEY dari lingkungan. Model default sengaja dihilangkan agar Anda dapat memilih secara eksplisit salah satu dari tiga contoh.
Variasi Flash menjadikan contoh DeepSeek V4.1 yang diminta eksplisit. Pertahankan GPT pada adaptor Responses untuk penggunaan alat; panduan DeepSeek CometAPI mendokumentasikan rute Chat Completions yang digunakan di sini. Periksa kembali ketersediaan model dan izin di akun Anda sebelum menjalankan contoh.
{ "$schema": "https://opencode.ai/config.json", "provider": { "cometapi-messages": { "npm": "@ai-sdk/anthropic", "name": "CometAPI Claude", "options": { "baseURL": "https://api.cometapi.com/v1", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "claude-sonnet-5": { "name": "Claude Sonnet 5" } } }, "cometapi-responses": { "npm": "@ai-sdk/openai", "name": "CometAPI GPT", "options": { "baseURL": "https://api.cometapi.com/v1", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "gpt-6.1-sol": { "name": "GPT-6.1 Sol" } } }, "cometapi-chat": { "npm": "@ai-sdk/openai-compatible", "name": "CometAPI DeepSeek", "options": { "baseURL": "https://api.cometapi.com/v1", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "deepseek-v4.1-flash": { "name": "DeepSeek V4.1 Flash" } } } }, "permission": { "edit": "ask", "shell": "ask" }}
baseURL yang benar: https://api.cometapi.com/v1. baseURL yang salah: https://api.cometapi.com/v1/chat/completions. Adaptor menambahkan path endpoint. Gabungkan contoh ini ke opencode.json yang ada tanpa menghapus pengaturan yang tidak terkait.
Pengaturan edit dan shell meminta persetujuan untuk perubahan berkas dan perintah di bawah aturan izin OpenCode saat ini. Jalankan contoh pengodean secara interaktif dan inspeksi permintaan tersebut. OpenCode juga mewarisi akses sistem operasi dari proses peluncurnya; gunakan direktori sekali pakai untuk latihan ini.
Langkah 4: Periksa Koneksi Gateway
Penyiapan dan verifikasi Gemini opsional disediakan setelah pemeriksaan koneksi tiga model di bawah.
Contoh HTTP di bawah memeriksa entri DeepSeek Chat Completions secara langsung. Ini berguna untuk mengisolasi koneksi gateway dari OpenCode. Claude dan GPT menggunakan rute adaptor yang dipilih pada langkah berikutnya; mengubah ID model di dalam permintaan HTTP ini tidak secara otomatis mengubah protokolnya.
Kirim permintaan Chat Completions minimal dari Bash.
curl --silent --show-error \ --output response.json \ --write-out "HTTP %{http_code}\n" \ https://api.cometapi.com/v1/chat/completions \ -H "Authorization: Bearer $COMETAPI_KEY" \ -H "Content-Type: application/json" \ -d '{"model":"deepseek-v4.1-flash","messages":[{"role":"user","content":"Reply with a short greeting."}]}'
Perintah ini menggunakan opsi write-out dan output curl untuk memisahkan status HTTP dari response.json. Transfer yang berhasil masih dapat berisi kesalahan HTTP, jadi periksa status yang dicetak dan isi JSON. Ini menghindari ketergantungan pada --fail-with-body, yang membutuhkan curl 7.76.0 atau lebih baru.
Kirim permintaan yang sama dari PowerShell tanpa quoting JSON khusus shell.
$body = @{ model = "deepseek-v4.1-flash" messages = @(@{ role = "user"; content = "Reply with a short greeting." })} | ConvertTo-Json -Depth 4$response = Invoke-WebRequest -UseBasicParsing -Method Post ` -Uri "https://api.cometapi.com/v1/chat/completions" ` -Headers @{ Authorization = "Bearer $env:COMETAPI_KEY" } ` -ContentType "application/json" ` -Body $body$response.Content | Set-Content -Encoding UTF8 response.json"HTTP $($response.StatusCode)"
Pada kesalahan HTTP, PowerShell dapat menimbulkan pengecualian sebelum dua baris terakhir berjalan. Tangkap status dan detail kesalahan yang disunting dari kegagalan tersebut; jangan catat sebagai respons berhasil.
Hasil yang diharapkan untuk permintaan DeepSeek: HTTP 200 dan teks tidak kosong di choices[0].message.content. Periksa response.json yang disimpan alih-alih menerima HTTP 200 saja. Penambahan berikut menunjukkan bentuk respons dan cara memeriksa ketiga rute yang dikonfigurasi. Contoh bersifat ilustratif; revisi ini tidak mengklaim hasil uji CometAPI langsung. Permintaan hanya teks tidak memvalidasi streaming atau panggilan alat.
Bentuk respons DeepSeek ilustratif: sapaan, nilai usage, dan field lain bergantung pada permintaan sebenarnya. JSON berikut sengaja dipersingkat, bukan respons API yang ditangkap.
{"choices":[{"message":{"role":"assistant","content":"Hello!"}}]}
Setelah permintaan HTTP yang benar-benar berhasil, baris status harus terbaca HTTP 200 dan response.json harus berisi teks assistant yang tidak kosong. Simpan status dan body aktual untuk sesi Anda; jangan menyalin contoh sebagai bukti uji.
Langkah 5: Beralih Antara Claude, GPT, dan DeepSeek
Perintah pada langkah ini seharusnya mengembalikan penanda assistant yang diminta. Teks assistant ilustratif, dengan banner terminal, waktu, dan metadata dihilangkan:
Claude: CLAUDE_READYGPT: GPT_READYDeepSeek: DEEPSEEK_READY
Baris ini hanya menunjukkan konten yang diharapkan. Ini bukan transkrip terminal. Catat keluaran aktual dan status keluar proses untuk setiap penyedia; penanda yang hilang atau permintaan gagal memerlukan investigasi.
Mulai di direktori yang berisi opencode.json. Daftar model untuk setiap penyedia yang dikonfigurasi, lalu buat permintaan teks singkat ke setiap entri. Perintah ini mengubah model dan adaptor terpilih; kunci CometAPI dan URL dasar tetap sama.
Gunakan perintah ini untuk memeriksa bahwa ketiga entri terlihat dan dapat mengembalikan teks.
opencode models cometapi-messagesopencode models cometapi-responsesopencode models cometapi-chatopencode run --model cometapi-messages/claude-sonnet-5 "Reply exactly with: CLAUDE_READY"opencode run --model cometapi-responses/gpt-6.1-sol "Reply exactly with: GPT_READY"opencode run --model cometapi-chat/deepseek-v4.1-flash "Reply exactly with: DEEPSEEK_READY"
Untuk peralihan interaktif, mulai opencode, masukkan /models, dan pilih CometAPI Claude, CometAPI GPT, atau CometAPI DeepSeek. OpenCode menggunakan pasangan penyedia/model entri tersebut. Anda tidak memerlukan tiga akun pemasok atau tiga kunci API. Dengan konfigurasi berbasis lingkungan ini, jangan gunakan /connect untuk memasok kredensial kedua; COMETAPI_KEY yang hilang harus diperbaiki di shell peluncuran.
Hasil yang diharapkan: setiap permintaan singkat mengembalikan penanda yang diminta. Catat hasil aktual untuk setiap model. Entri model yang terlihat mengonfirmasi pendaftaran; respons teks yang berhasil mengonfirmasi jalur permintaan tersebut. Keduanya saja tidak membuktikan bahwa alat berkas bekerja.
Gemini menggunakan penyedia dan protokol terpisah. Pertahankan entri Claude, GPT, dan DeepSeek di atas; gabungkan entri berikut ke objek provider yang ada. baseURL di bawah mengikuti konfigurasi CometAPI yang disediakan pengulas. Konfirmasikan rute dan akses model saat ini di akun CometAPI Anda sebelum digunakan.
Adaptor Google mendukung baseURL kustom dan mengirim apiKey menggunakan x-goog-api-key. Lihat referensi penyedia AI SDK Google resmi. Ini mengonfirmasi pengaturan adaptor; tidak membuktikan bahwa model Gemini tertentu diaktifkan pada gateway CometAPI.
{ "provider": { "cometapi-gemini": { "npm": "@ai-sdk/google", "name": "CometAPI Gemini", "options": { "baseURL": "https://api.cometapi.com/v1beta", "apiKey": "{env:COMETAPI_KEY}" }, "models": { "YOUR_GEMINI_MODEL_ID": { "name": "CometAPI Gemini (account-selected model)" } } } }}
Ganti YOUR_GEMINI_MODEL_ID pada kunci JSON dan perintah di bawah dengan ID model Gemini tepat yang diaktifkan untuk akun CometAPI Anda. Itu adalah placeholder, bukan ID model nyata. Gabungkan entri penyedia ini tanpa menduplikasi kunci provider tingkat atas, dan mulai OpenCode dari shell yang sama tempat COMETAPI_KEY disetel.
opencode models cometapi-geminiopencode run --model cometapi-gemini/YOUR_GEMINI_MODEL_ID "Reply exactly with: GEMINI_READY"
Teks assistant yang diharapkan: GEMINI_READY. Model yang terdaftar mengonfirmasi pendaftaran lokal; menerima penanda mengonfirmasi permintaan teks. Simpan respons dan status keluar aktual. Untuk memvalidasi alat pengodean, luncurkan opencode --model cometapi-gemini/YOUR_GEMINI_MODEL_ID dalam direktori sekali pakai yang baru dan ulangi tugas greet.cjs/check.cjs di bawah. Keberhasilan teks saja tidak memverifikasi streaming, pengeditan, atau panggilan alat.
Bagaimana Menjalankan Tugas Pengodean dengan Claude, GPT, dan DeepSeek?
Gunakan tugas kecil yang sama untuk setiap model: buat fungsi greeting, tambahkan assertion, dan jalankan. Simpan tiga direktori baru agar model kedua tidak sekadar menggunakan ulang berkas yang dibuat oleh model pertama. Ini memeriksa alur kerja integrasi tanpa mengubah artikel menjadi peringkat kinerja.
Simpan prepare-runs.cjs di samping opencode.json dan jalankan sekali. Ini membuat tiga direktori baru dan menyalin hanya konfigurasi bersama. Ini berhenti jika ada direktori target yang sudah ada, sehingga pekerjaan sebelumnya tidak ditimpa.
const fs = require("node:fs");const path = require("node:path");const root = __dirname;const names = ["claude-demo", "gpt-demo", "deepseek-demo"];const config = path.join(root, "opencode.json");if (!fs.existsSync(config)) throw new Error("Missing opencode.json");for (const name of names) { if (fs.existsSync(path.join(root, name))) { throw new Error(`Directory already exists: ${name}`); }}for (const name of names) { const dir = path.join(root, name); fs.mkdirSync(dir); fs.copyFileSync(config, path.join(dir, "opencode.json"));}node prepare-runs.cjscd claude-demoopencode --model cometapi-messages/claude-sonnet-5# After exiting OpenCode:cd ..cd gpt-demoopencode --model cometapi-responses/gpt-6.1-sol# After exiting OpenCode:cd ..cd deepseek-demoopencode --model cometapi-chat/deepseek-v4.1-flash# After exiting OpenCode:cd ..
Jalankan salah satu sesi berikut secara bergantian, mulai dari direktori proyek induk. Keluar dari sesi sebelum beralih ke contoh berikutnya. Di setiap sesi, kirimkan tugas yang sama di bawah dan tinjau pengeditan serta perintah yang diusulkan. Node.js harus tersedia untuk proses yang meluncurkan OpenCode.
Minta agen untuk membuat dan memverifikasi fungsi JavaScript kecil.
Create greet.cjs in this directory.Export a function named greet(name) that returns "Hello, " + name + "!".Create check.cjs using node:assert/strict.Assert that greet("Ada") equals "Hello, Ada!".Run node check.cjs and report its actual exit status.Do not modify opencode.json or unrelated files.
Hasil yang diharapkan: agen meminta persetujuan yang dikonfigurasi, membuat kedua berkas, dan menyelesaikan node check.cjs dengan status keluar 0. Catat apa yang sebenarnya terjadi. Periksa berkas dan jalankan ulang pemeriksaan sendiri; klaim keberhasilan dalam prosa tidak cukup. Jika panggilan alat ditolak atau salah bentuk, selidiki kompatibilitas rute terpisah dari persetujuan yang tertunda.
Berkas Referensi dan Verifikasi Lokal
Berkas berikut adalah implementasi referensi dari tugas yang diminta. Berkas ini ditulis langsung untuk panduan ini; berkas ini tidak disajikan sebagai artefak yang dihasilkan model. Mencocokkan perilaku yang dapat diamati merupakan kondisi penerimaan untuk menjalankan agen Anda.
function greet(name) { return "Hello, " + name + "!";}module.exports = { greet };const assert = require("node:assert/strict");const { greet } = require("./greet.cjs");assert.equal(greet("Ada"), "Hello, Ada!");node check.cjsprintf "exit=%s\n" "$?"node check.cjs"exit=$LASTEXITCODE"
Pemeriksaan referensi lokal: Windows, Node.js v24.19.0, 22 Oktober 2026; node check.cjs mengembalikan status keluar 0 tanpa keluaran standar. Ini hanya memeriksa dua berkas referensi. Ini tidak memverifikasi instalasi OpenCode, akses CometAPI, prompt persetujuan, atau panggilan alat model.
| Run | Entri model terpilih | Apa yang dicatat |
|---|---|---|
| Claude | cometapi-messages/claude-sonnet-5 | Respons, berkas yang dibuat, persetujuan, kode exit |
| GPT | cometapi-responses/gpt-6.1-sol | Respons, berkas yang dibuat, persetujuan, kode exit |
| DeepSeek | cometapi-chat/deepseek-v4.1-flash | Respons, berkas yang dibuat, persetujuan, kode exit |
Simpan satu catatan hasil per model: penyedia/model terpilih, apakah respons diterima, apakah greet.cjs dan check.cjs dibuat, apakah persetujuan muncul, dan kode keluar node check.cjs. Catat kegagalan sebagai kegagalan; jangan menyimpulkan lulus dari implementasi referensi.
Lindungi Kredensial dan Verifikasi Keandalan
Simpan COMETAPI_KEY dalam variabel lingkungan ketimbang berkas konfigurasi atau log bersama. Biarkan persetujuan pengeditan berkas dan perintah shell tetap aktif, dan uji konfigurasi baru dalam proyek sekali pakai.
Verifikasi permintaan API langsung, respons OpenCode, dan alur kerja pengeditan berkas secara terpisah. Catat kesalahan dan hasil uji, ulangi hanya kegagalan sementara, dan inspeksi ruang kerja sebelum mengulang tugas yang terputus.
CometAPI menyederhanakan peralihan antar model, tetapi OpenCode tidak secara otomatis menyediakan failover lintas model melalui konfigurasi ini. Jika sebuah model menjadi tidak tersedia, pilih secara manual model lain yang telah diverifikasi dan ulangi pemeriksaan penerimaan.
Berapa Biaya Menggunakan Opencode dengan CometAPI?
Harga CometAPI, dan bagaimana struktur penagihannya
CometAPI menawarkan harga pay-as-you-go tanpa biaya langganan bulanan, menagih hanya untuk penggunaan API aktual. Tarif model resminya umumnya 20% lebih rendah daripada harga standar penyedia, dengan diskon volume tambahan tersedia. Pengembang dapat mengakses Claude, GPT, DeepSeek, dan model lainnya melalui satu akun, membayar berdasarkan konsumsi token model yang dipilih. Periksa halaman harga CometAPI untuk tarif terbaru.
Untuk permintaan tanpa caching atau biaya tambahan:
Biaya = (Token input × Tarif input + Token output × Tarif output) / 1.000.000
Sebagai contoh, pada tarif hipotetis $1/M token input dan $4/M token output, menggunakan 20.000 token input dan 2.000 token output menelan biaya $0,028. Ini adalah tarif ilustratif, bukan harga model aktual.
Catat penggunaan token, total biaya API, waktu eksekusi, dan hasil uji untuk setiap tugas. Untuk mengurangi biaya, batasi konteks yang tidak perlu, gunakan prompt yang ringkas, hindari permintaan gagal berulang, dan pilih model berbiaya lebih rendah ketika memenuhi persyaratan kualitas yang sama.
Strategi Optimasi Biaya API OpenCode
Untuk mengurangi biaya OpenCode tanpa mengorbankan kualitas pengodean, fokus pada pemilihan model, efisiensi token, dan permintaan API yang tidak perlu.
- Pilih model yang tepat: Gunakan model berbiaya rendah seperti DeepSeek untuk tugas pengodean rutin, dan cadangkan Claude atau GPT untuk debug, refactoring, dan penalaran yang kompleks.
- Kurangi konsumsi token: Buat prompt ringkas, berikan hanya berkas proyek yang relevan, dan hindari berulang kali mengirim konteks repositori berukuran besar.
- Gunakan caching prompt: Manfaatkan fitur caching yang didukung untuk konteks berulang, seperti instruksi proyek dan referensi kode, guna mengurangi biaya input.
- Hindari retry yang tidak perlu: Perbaiki kesalahan konfigurasi dan autentikasi sebelum mencoba ulang, dan tinjau keluaran sebelumnya untuk mencegah pekerjaan duplikat.
- Pantau pengeluaran aktual: Lacak penggunaan token, biaya API, dan penyelesaian tugas yang berhasil melalui CometAPI. Bandingkan biaya per tugas yang berhasil alih-alih hanya harga token.
Dikombinasikan dengan harga pay-as-you-go CometAPI yang didiskon, praktik ini membantu pengembang mengendalikan pengeluaran sambil mempertahankan kinerja pengodean yang andal di OpenCode.
Bagaimana Memperluas Konfigurasi CometAPI?
Untuk menambahkan model lain, tempatkan ID model di bawah penyedia yang mendukung format API yang dibutuhkannya, atau tambahkan entri penyedia baru dengan adaptor yang diperlukan. Lalu pilih penyedia/model tersebut melalui /models. Simpan kredensial di COMETAPI_KEY dan pertahankan entri yang ada agar peralihan tetap menjadi operasi seleksi.
Panduan resmi mencakup empat format API, termasuk Gemini. Artikel ini menggunakan tiga entri yang dibutuhkan untuk Claude, GPT, dan DeepSeek. Jika beberapa model yang dipilih mendukung Chat Completions, mereka dapat berbagi satu peta models cometapi-chat. Jangan memindahkan rute khusus Responses atau Messages ke peta tersebut hanya untuk mengurangi jumlah entri.
Pilih adaptor berdasarkan rute yang ingin Anda panggil, dan model berdasarkan tugas pemrograman. Perubahan pemasok tidak memerlukan kunci CometAPI baru; perubahan format API memerlukan adaptor yang cocok yang dikonfigurasi.
Bagaimana Menangani Masalah CometAPI di OpenCode?
Ikuti tahap pertama yang gagal: permintaan HTTP → penyedia OpenCode → alat berkas. Jika HTTP gagal, periksa kredensial, akses model, dan detail endpoint. Jika HTTP berhasil tetapi OpenCode gagal, periksa konfigurasi dan lingkungan peluncuran. Jika keduanya berhasil untuk teks tetapi tindakan berkas gagal, periksa izin dan kompatibilitas panggilan alat.
| Gejala | Pemeriksaan pertama | Tindakan selanjutnya | Perintah diagnostik / bukti |
|---|---|---|---|
| Respons 401 | Nilai kunci dan header Authorization | Setel kunci di terminal saat ini; periksa spasi yang tidak disengaja. | Periksa keberadaan variabel tanpa mencetak kunci; simpan status HTTP dan kesalahan yang disunting. |
| 403 atau pembatasan akun | Body error dan izin akun | Konfirmasikan akses model dan status akun di CometAPI. | Simpan kesalahan respons tersunting dan konfirmasikan akses akun. |
| Respons 404 | Host, path endpoint, dan ID model | Bandingkan permintaan dengan dokumentasi API model yang dipilih. | Bandingkan response.json dengan model dan endpoint yang diminta. |
| Model tidak ada di OpenCode | Direktori proyek dan konfigurasi penyedia | Periksa JSON valid dan nama penyedia/model yang sesuai; mulai ulang setelah mengedit. | Jalankan opencode models cometapi-chat, opencode models cometapi-messages, dan opencode models cometapi-responses; catat opencode --version. |
| Teks berfungsi, alat gagal | Respons panggilan alat dan kompatibilitas rute | Verifikasi dukungan rute; bedakan panggilan alat yang ditolak dari prompt persetujuan. | Bandingkan permintaan teks singkat dengan tindakan alat yang gagal; simpan error. |
| Perintah menunggu persetujuan | Sesi interaktif dan pengaturan izin | Tinjau dan setujui tindakan yang dimaksud; jangan menganggap permintaan tertunda sebagai outage API. | Gunakan sesi interaktif; catat tindakan yang diminta dan hasil persetujuan. |
| 429 atau kesalahan server sementara | Detail error dan batas penggunaan | Kurangi konkurensi permintaan; ikuti panduan retry alih-alih mencoba ulang terus menerus. | Simpan status HTTP dan panduan retry; kurangi konkurensi. |
Saat berbagi masalah, sertakan versi OpenCode, sistem operasi, ID model, path endpoint, dan teks error yang disunting. Kecualikan kunci API dan konten repositori privat. Simpan permintaan terkecil yang mereproduksi kegagalan sehingga kegagalan konfigurasi dan alat dapat diselidiki terpisah.
FAQ
Mengapa OpenCode kehilangan kunci CometAPI saya di terminal baru?
Perintah export dan PowerShell di atas menyetel variabel lingkungan untuk sesi saat ini dan proses anaknya. Terminal yang dibuka terpisah atau editor yang sudah berjalan mungkin tidak mewarisinya. Setel kunci di lingkungan yang meluncurkan OpenCode dan mulai ulang proses tersebut. Untuk penyiapan persisten, gunakan manajemen kredensial lingkungan Anda alih-alih menanamkan rahasia dalam berkas repositori.
Apakah OpenCode memuat COMETAPI_KEY dari berkas .env secara otomatis?
Ekspresi {env:COMETAPI_KEY} membaca lingkungan proses. Hanya membuat berkas .env tidak memastikan variabel telah dimuat. Gunakan shell Anda atau pemuat lingkungan yang dikonfigurasi secara eksplisit sebelum memulai OpenCode. Diagnosa nilai kosong pada proses peluncuran alih-alih menganggap penyedia tidak tersedia.
Dapatkah konfigurasi global OpenCode mengubah penyiapan proyek ini?
OpenCode menggabungkan konfigurasi alih-alih mengganti setiap berkas lebih awal. Berkas proyek mengesampingkan field yang tumpang tindih di berkas global, sementara pengaturan global yang tidak terkait tetap ada. Berkas OPENCODE_CONFIG kustom dimuat di antara keduanya. Jika perilaku berbeda di berbagai repositori, bandingkan sumber-sumber ini dan pengaturan terkelola atau inline alih-alih mengasumsikan berkas lokal adalah satu-satunya input.
Apakah menyegarkan daftar model OpenCode memungkinkan akses CometAPI?
Tidak. Opsi penyegaran model memperbarui cache models.dev; ini tidak memberikan akses akun atau membuktikan endpoint menerima ID model. Entri yang dikonfigurasi manual dapat terlihat sebelum permintaan berhasil. Gunakan permintaan aktual untuk memeriksa rute dan konsultasikan pengaturan akun CometAPI untuk pembatasan akses.
Mengapa curl berfungsi sementara OpenCode tidak dapat memanggil CometAPI?
Kedua proses mungkin memuat kredensial berbeda, menggunakan ID model yang berbeda, atau mengirim bentuk permintaan yang berbeda. Pertama jalankan ulang prompt teks singkat dari terminal yang sama dengan permintaan HTTP yang berhasil. Kemudian bandingkan base URL penyedia, adaptor, dan model terpilih. Jika teks sederhana berfungsi tetapi tugas agen gagal, simpan kesalahan terkait alat secara terpisah; konektivitas HTTP saja tidak menunjukkan kompatibilitas alat.
Kesimpulan
Anda kini memiliki satu opencode.json dengan contoh Claude, GPT, dan DeepSeek, kredensial CometAPI bersama, dan perintah untuk mengganti model aktif. Gunakan permintaan teks singkat untuk memeriksa akses, lalu jalankan tugas pembuatan berkas yang sama di direktori terpisah untuk memverifikasi alur kerja pengodean. Simpan hasil yang diamati beserta detail lingkungan Anda sebelum menerapkan penyiapan ini ke repositori yang lebih besar.
