M1/F2+F4: platform registry, Moonshot API-key channel, dynamic model sync
F2 — fixed three-platform registry in kigi-models: kimi-code (subscription, OAuth bearer, base kigi_env::coding_api_base_url()), moonshot-cn (https://api.moonshot.cn/v1), moonshot-ai (https://api.moonshot.ai/v1) with kimi-k model-prefix filtering. Moonshot API keys via KIGI_MOONSHOT_CN_API_KEY / KIGI_MOONSHOT_AI_API_KEY (+ KIGI_MOONSHOT_API_KEY shared fallback) or ~/.kigi/config.toml; values redacted from logs/display. F4 — model catalog now syncs from GET {base}/models (Bearer auth, wire shape per official kimi-cli: id/context_length/supports_reasoning/ supports_image_in/supports_video_in/display_name) with the official capability-derivation rules (thinking / always_thinking-in-name / kimi-k2 implicit set). Managed keys {platform_id}/{model_id}; default model = first list entry; default thinking iff capabilities contain thinking/always_thinking. Sync failure → last cache; no cache → built-in fallback table seeded from ids sourced in official kimi-cli (kimi-for-coding, kimi-k2-turbo-preview, kimi-k2-thinking-turbo). 401 during sync forces one token refresh and retries. Model resolution priority preserved: CLI > env > config > server > fallback. Grok model artifacts (grok-4*/grok-build catalog, tier gating remnants) removed from non-test code. All first-party endpoints re-verified live: device_authorization mints real codes; /models on all three platforms answers with real API auth errors when unauthenticated. Gates: check/clippy --all-targets 0/0, fmt clean, deny ok, kigi-shell lib 5136 green, kigi-tui lib 6819 green, kigi-models 8.
This commit is contained in:
@@ -32,6 +32,46 @@ stores is touched.
|
||||
Authentication and inference against Kimi Code (milestone M1), the
|
||||
compatibility surface (M2), and release distribution (M3) are in progress.
|
||||
|
||||
## Providers and API keys
|
||||
|
||||
Kigi talks to a fixed three-platform registry:
|
||||
|
||||
| Platform id | Base URL | Auth |
|
||||
| ------------- | ------------------------------- | --------------------------- |
|
||||
| `kimi-code` | `https://api.kimi.com/coding/v1` | Kimi Code subscription OAuth (`kigi login`) |
|
||||
| `moonshot-cn` | `https://api.moonshot.cn/v1` | Moonshot open-platform API key |
|
||||
| `moonshot-ai` | `https://api.moonshot.ai/v1` | Moonshot open-platform API key |
|
||||
|
||||
Moonshot API keys come from the environment or `~/.kigi/config.toml`
|
||||
(environment wins; values are never logged):
|
||||
|
||||
```sh
|
||||
export KIGI_MOONSHOT_API_KEY=sk-... # applies to both open platforms
|
||||
export KIGI_MOONSHOT_CN_API_KEY=sk-... # platform-scoped, beats the generic name
|
||||
export KIGI_MOONSHOT_AI_API_KEY=sk-...
|
||||
```
|
||||
|
||||
```toml
|
||||
# ~/.kigi/config.toml
|
||||
[platforms.moonshot-cn]
|
||||
api_key = "sk-..."
|
||||
|
||||
[platforms.moonshot-ai]
|
||||
api_key = "sk-..."
|
||||
```
|
||||
|
||||
On login and on startup Kigi syncs each configured platform's model list
|
||||
from `GET {base}/models` and shows the merged catalog in the model picker
|
||||
(catalog keys are `{platform_id}/{model_id}`). If the sync fails, the last
|
||||
cached catalog is used; with no cache, a small built-in fallback list
|
||||
applies. Model selection resolves as
|
||||
`--model` CLI flag > `KIGI_DEFAULT_MODEL` > `[models] default` in
|
||||
config.toml > server-delivered list > built-in fallback.
|
||||
|
||||
`KIGI_CODE_BASE_URL` re-points the subscription platform (useful for
|
||||
testing); `KIGI_MOONSHOT_CN_BASE_URL` / `KIGI_MOONSHOT_AI_BASE_URL` are the
|
||||
equivalent dev/test overrides for the open platforms.
|
||||
|
||||
## Building from source
|
||||
|
||||
```sh
|
||||
|
||||
Reference in New Issue
Block a user