Skip to content

feat: add kimi coding plan provider#49

Open
underworld14 wants to merge 2 commits into
anvie:mainfrom
underworld14:feat/kimi-coding-plan-provider
Open

feat: add kimi coding plan provider#49
underworld14 wants to merge 2 commits into
anvie:mainfrom
underworld14:feat/kimi-coding-plan-provider

Conversation

@underworld14

@underworld14 underworld14 commented May 24, 2026

Copy link
Copy Markdown

feat: add kimi coding plan provider

Ringkasan
Menambahkan dukungan untuk Moonshot Kimi Coding Plan sebagai provider LLM baru di Evonic.
Perubahan

  • backend/llm_client.py — User-Agent masquerade untuk endpoint api.kimi.com. Endpoint ini memfilter akses berdasarkan User-Agent (hanya menerima kimi-cli, opencode, claude-code, pi, hermes-agent). Request ke base URL yang mengandung api.kimi.com sekarang otomatis mengirim User-Agent: KimiCLI/1.5.
  • backend/setup.py — Menambahkan provider preset kimi_coding:
  • Base URL: https://api.kimi.com/coding/v1
  • Model default: kimi-for-coding
  • default_thinking: true (Kimi coding model bersifat always-thinking, API menolak request tanpa reasoning_content di pesan assistant)
  • routes/models.py — Menambahkan kimi_coding ke daftar provider valid pada API CRUD model.
  • unit_tests/test_kimi_provider.py — Unit test untuk logika _build_request_headers yang memastikan:
  • Endpoint Kimi mendapat UA KimiCLI/1.5
  • Endpoint non-Kimi tidak terpengaruh
  • Subpath di bawah api.kimi.com juga tercakup

Catatan
Kunci API yang diperlukan adalah sk-kimi-… (Moonshot API key). Setup wizard dan reconfigure sudah otomatis mengaktifkan thinking=1 untuk provider ini.

@underworld14

Copy link
Copy Markdown
Author

need help review mas @anvie . Terimakasih banyak

@anvie

anvie commented May 30, 2026

Copy link
Copy Markdown
Owner

Terima kasih buat PR-nya, ada beberapa hal:

  1. Route api_test_model di routes/models.py tidak ikut diupdate dengan Kimi UA header. Jadi tombol "Test Connection" dari web UI akan gagal untuk provider kimi_coding. Ini bug sungguhan, wajib diperbaiki sebelum merge.
  2. Custom UA untuk Kimi di-hardcode di dalam _build_request_headers() di modul generic backend/llm_client.py. Ini melanggar open-closed principle. Untuk sekarang bisa diterima, tapi tolong tambahkan komentar FIXME di atas function tersebut supaya orang berikutnya tidak asal nambahin if provider satu per satu. Nanti kalau sudah ada 3-4 provider yang butuh custom header, saatnya dipindah ke hook.
  3. Perubahan formatting (reformat dict, reformat function signature) kecampur dalam commit yang sama dengan perubahan fungsional. Tidak fatal, tapi kurang rapi — sebaiknya commit terpisah.
  4. Pengecekan substring "api.kimi.com" in base_url sebaiknya diganti pakai urllib.parse.urlparse agar lebih aman dari false match.

lainnya udah oke, tapi perbaiki item nomor 1, tambahkan komentar FIXME untuk item 2, ganti substring check jadi urlparse untuk item 4, dan PR siap merge.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants