chore: import upstream snapshot with attribution
This commit is contained in:
+192
@@ -0,0 +1,192 @@
|
||||
---
|
||||
summary: "Kimi provider notes: cookie auth, quotas, and rate-limit parsing."
|
||||
read_when:
|
||||
- Adding or modifying the Kimi provider
|
||||
- Debugging Kimi cookie import or usage parsing
|
||||
- Adjusting Kimi menu labels or settings
|
||||
---
|
||||
|
||||
# Kimi Provider
|
||||
|
||||
Tracks usage for [Kimi For Coding](https://www.kimi.com/code) in CodexBar.
|
||||
|
||||
## Features
|
||||
|
||||
- Displays weekly request quota (from membership tier)
|
||||
- Shows current 5-hour rate limit usage
|
||||
- API-key, Kimi Code CLI, automatic cookie, and manual cookie authentication methods
|
||||
- Automatic refresh countdown
|
||||
|
||||
## Setup
|
||||
|
||||
Choose one of four authentication methods:
|
||||
|
||||
### Method 1: Kimi Code API Key (Recommended)
|
||||
|
||||
Create an API key in the [Kimi Code Console](https://www.kimi.com/code/console), then save it in CodexBar:
|
||||
|
||||
```bash
|
||||
codexbar config set-api-key --provider kimi --api-key "kimi-api-key-here"
|
||||
```
|
||||
|
||||
Or provide it through the environment:
|
||||
|
||||
```bash
|
||||
export KIMI_CODE_API_KEY="kimi-code-api-key-here"
|
||||
```
|
||||
|
||||
CodexBar calls `GET https://api.kimi.com/coding/v1/usages` with the API key. Set
|
||||
`KIMI_CODE_BASE_URL` only when testing a compatible HTTPS proxy or alternate host with an explicit API key.
|
||||
CodexBar never forwards a Kimi Code CLI credential to an endpoint override.
|
||||
|
||||
### Method 2: Kimi Code CLI
|
||||
|
||||
If you are signed in with the official Kimi Code CLI, Auto mode can reuse its fresh access token from
|
||||
`~/.kimi-code/credentials/kimi-code.json`. CodexBar sends the same device identity headers as the CLI,
|
||||
including the local hostname, OS details, and stable `~/.kimi-code/device_id` value. If that device ID is
|
||||
missing, CodexBar creates it with private file permissions to match the official client.
|
||||
|
||||
CodexBar treats CLI-owned authentication as read-only: it never uses the refresh token and never rewrites
|
||||
the credential file. When the access token expires, sign in again with Kimi Code CLI or configure an API
|
||||
key. Set `KIMI_CODE_HOME` only when the official CLI uses a non-default home directory.
|
||||
|
||||
Custom `KIMI_CODE_BASE_URL`, `KIMI_CODE_OAUTH_HOST`, and `KIMI_OAUTH_HOST` values disable CLI credential
|
||||
reuse; use an explicit API key for endpoint-override testing.
|
||||
|
||||
### Method 3: Automatic Browser Import
|
||||
|
||||
**No setup needed!** If you're already logged in to Kimi in Arc, Chrome, Safari, Edge, Brave, or Chromium:
|
||||
|
||||
1. Open CodexBar settings → Providers → Kimi
|
||||
2. Set "Cookie source" to "Automatic"
|
||||
3. Enable the Kimi provider toggle
|
||||
4. CodexBar will automatically find your session
|
||||
|
||||
**Note**: Requires Full Disk Access to read browser cookies (System Settings → Privacy & Security → Full Disk Access → CodexBar).
|
||||
|
||||
### Method 4: Manual Token Entry
|
||||
|
||||
For advanced users or when automatic import fails:
|
||||
|
||||
1. Open CodexBar settings → Providers → Kimi
|
||||
2. Set "Cookie source" to "Manual"
|
||||
3. Visit `https://www.kimi.com/code/console` in your browser
|
||||
4. Open Developer Tools (F12 or Cmd+Option+I)
|
||||
5. Go to **Application** → **Cookies**
|
||||
6. Copy the `kimi-auth` cookie value (JWT token)
|
||||
7. Paste it into the "Auth Token" field in CodexBar
|
||||
|
||||
### Cookie Environment Variable
|
||||
|
||||
Alternatively, set the `KIMI_AUTH_TOKEN` environment variable:
|
||||
|
||||
```bash
|
||||
export KIMI_AUTH_TOKEN="jwt-token-here"
|
||||
```
|
||||
|
||||
## Authentication Priority
|
||||
|
||||
When multiple sources are available, CodexBar uses this order:
|
||||
|
||||
1. API key (`providers[].apiKey` or `KIMI_CODE_API_KEY`) in Auto mode
|
||||
2. Fresh Kimi Code CLI access token (`~/.kimi-code/credentials/kimi-code.json`)
|
||||
3. Manual cookie/token (from Settings UI) when web fallback is used
|
||||
4. Cookie environment variable (`KIMI_AUTH_TOKEN`)
|
||||
5. Browser cookies (Arc → Chrome → Safari → Edge → Brave → Chromium)
|
||||
|
||||
**Note**: Browser cookie import requires Full Disk Access permission.
|
||||
|
||||
## API Details
|
||||
|
||||
### Kimi Code API key
|
||||
|
||||
**Endpoint**: `GET https://api.kimi.com/coding/v1/usages`
|
||||
|
||||
**Authentication**: Bearer token (from `providers[].apiKey`, `KIMI_CODE_API_KEY`, or a fresh Kimi Code CLI credential)
|
||||
|
||||
**Response**:
|
||||
```json
|
||||
{
|
||||
"usage": {
|
||||
"limit": "2048",
|
||||
"used": "214",
|
||||
"remaining": "1834",
|
||||
"resetTime": "2026-01-09T15:23:13.716839300Z"
|
||||
},
|
||||
"limits": [{
|
||||
"window": {"duration": 300, "timeUnit": "TIME_UNIT_MINUTE"},
|
||||
"detail": {
|
||||
"limit": "200",
|
||||
"used": "139",
|
||||
"remaining": "61",
|
||||
"resetTime": "2026-01-06T13:33:02.717479433Z"
|
||||
}
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
### Kimi web cookie fallback
|
||||
|
||||
**Endpoint**: `POST https://www.kimi.com/apiv2/kimi.gateway.billing.v1.BillingService/GetUsages`
|
||||
|
||||
**Authentication**: Bearer token (from `kimi-auth` cookie)
|
||||
|
||||
**Response**:
|
||||
```json
|
||||
{
|
||||
"usages": [{
|
||||
"scope": "FEATURE_CODING",
|
||||
"detail": {
|
||||
"limit": "2048",
|
||||
"used": "214",
|
||||
"remaining": "1834",
|
||||
"resetTime": "2026-01-09T15:23:13.716839300Z"
|
||||
},
|
||||
"limits": [{
|
||||
"window": {"duration": 300, "timeUnit": "TIME_UNIT_MINUTE"},
|
||||
"detail": {
|
||||
"limit": "200",
|
||||
"used": "139",
|
||||
"remaining": "61",
|
||||
"resetTime": "2026-01-06T13:33:02.717479433Z"
|
||||
}
|
||||
}]
|
||||
}]
|
||||
}
|
||||
```
|
||||
|
||||
## Membership Tiers
|
||||
|
||||
| Tier | Price | Weekly Quota |
|
||||
|------|-------|--------------|
|
||||
| Andante | ¥49/month | 1,024 requests |
|
||||
| Moderato | ¥99/month | 2,048 requests |
|
||||
| Allegretto | ¥199/month | 7,168 requests |
|
||||
|
||||
All tiers have a rate limit of 200 requests per 5 hours.
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### "Kimi auth token is missing"
|
||||
- Ensure "Cookie source" is set correctly
|
||||
- If using Automatic mode, verify you're logged in to Kimi in your browser
|
||||
- Grant Full Disk Access permission if using browser cookies
|
||||
- Try Manual mode and paste your token directly
|
||||
|
||||
### "Kimi auth token is invalid or expired"
|
||||
- Your token has expired. Paste a new token from your browser
|
||||
- If using Automatic mode, log in to Kimi again in your browser
|
||||
|
||||
### "No Kimi session cookies found"
|
||||
- You're not logged in to Kimi in any supported browser
|
||||
- Grant Full Disk Access to CodexBar in System Settings
|
||||
|
||||
### "Failed to parse Kimi usage data"
|
||||
- The API response format may have changed. Please report this issue.
|
||||
|
||||
## Implementation
|
||||
|
||||
- **Core files**: `Sources/CodexBarCore/Providers/Kimi/`
|
||||
- **UI files**: `Sources/CodexBar/Providers/Kimi/`
|
||||
- **Login flow**: `Sources/CodexBar/KimiLoginRunner.swift`
|
||||
- **Tests**: `Tests/CodexBarTests/KimiProviderTests.swift`
|
||||
Reference in New Issue
Block a user