feat(settings): refactor agent auth modes and add model provider authentication

- Split env vars and config file persistence into separate save operations
- Add model_provider_id field to agent_setting for tracking selected provider
- Add "Model Provider" auth mode for Claude Code, Codex CLI, and Gemini CLI
- Add "Custom Endpoint" auth mode for Claude Code (previously only official subscription)
- Unify auth mode labels across all three agents (official subscription / custom endpoint / model provider)
- When model provider is selected, fill api_url and api_key into env and config automatically
- Resolve model provider credentials at ACP connect time as a backend fallback
- Clear provider deletion cascades to agent_setting.model_provider_id
- Claude Code writes API credentials to config.env (ANTHROPIC_BASE_URL / ANTHROPIC_AUTH_TOKEN)
- Codex: switching auth modes patches config.toml instead of clearing it
- Add i18n keys for new auth modes in all 10 supported languages

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
xintaofei
2026-04-06 22:10:18 +08:00
parent d28c54a038
commit b64976e4d6
24 changed files with 1269 additions and 276 deletions

View File

@@ -565,7 +565,18 @@
"gatewayTokenHint": "가능하면 평문 토큰 대신 token-file을 사용하세요. openclaw CLI로 설정하세요.",
"sessionKeyHint": "선택 사항입니다. gateway 세션 키를 지정합니다. 비워두면 격리된 세션이 자동 할당됩니다."
},
"authModeOfficialSubscription": "공식 구독",
"authModeCustomEndpoint": "사용자 정의 엔드포인트",
"authModeCustomEndpointHint": "API URL과 API Key를 수동으로 구성하여 사용자 정의 엔드포인트에 연결합니다.",
"authModeModelProvider": "모델 공급자",
"modelProvider": "모델 공급자",
"modelProviderHint": "구성된 모델 공급자의 API URL 및 API Key를 사용합니다.",
"selectModelProvider": "모델 공급자 선택",
"noModelProviderAvailable": "이 에이전트에 구성된 모델 공급자가 없습니다. 모델 공급자 설정에서 추가하세요.",
"claude": {
"authMode": "인증 방식",
"officialSubscription": "공식 구독",
"officialSubscriptionHint": "Anthropic 공식 구독 사용, API Key 불필요.",
"mainModel": "메인 모델",
"reasoningModel": "추론 모델 (thinking)",
"haikuDefaultModel": "기본 Haiku 모델",
@@ -624,7 +635,8 @@
"configSavedHint": "기존 세션은 다시 열어야 적용됩니다",
"saveConfigManagementFailed": "구성 관리 저장 실패",
"clineSaved": "Cline 설정 저장됨",
"saveClineFailed": "Cline 설정 저장 실패"
"saveClineFailed": "Cline 설정 저장 실패",
"modelProviderRequired": "저장하기 전에 모델 공급자를 선택하세요."
},
"version": {
"statusLabel": "버전 상태",