mirror of
https://github.com/tiennm99/goclaw.git
synced 2026-10-03 07:12:50 +00:00
fix: Correct provider type seeding and add missing env vars for all channels
- Fix seedManagedData() hardcoding openai_compat for all non-Anthropic providers; now uses resolveProviderType() mapping to correct store constants (gemini_native, minimax_native, etc.) — fixes model listing in web UI for Gemini - Rename GOCLAW_FEISHU_* env vars to GOCLAW_LARK_* (Lark is the global brand) - Add WhatsApp env override (GOCLAW_WHATSAPP_BRIDGE_URL) and auto-enable - Add missing env vars to docker-compose.yml (Cohere, Perplexity, Lark, Zalo, WhatsApp) - Update .env.example with all providers/channels, remove unnecessary GOCLAW_PROVIDER - Add Cohere and Perplexity to prepare-env.sh provider detection Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
1 parent
fcaf3531ba
commit
7450e7014a
5 files changed
+64
-12
No files matched your search
+17
-3
@@ -4,12 +4,20 @@
|
||||
# Required: at least one LLM provider API key.
|
||||
# Auto-generated by prepare-env.sh: GOCLAW_GATEWAY_TOKEN, GOCLAW_ENCRYPTION_KEY.
|
||||
|
||||
# --- LLM Provider (at least one required) ---
|
||||
GOCLAW_PROVIDER=
|
||||
GOCLAW_MODEL=
|
||||
# --- LLM Provider (at least one API key required) ---
|
||||
# Provider is auto-detected from API keys. Default model is chosen per provider.
|
||||
# GOCLAW_MODEL= # Optional: override default model
|
||||
GOCLAW_OPENROUTER_API_KEY=
|
||||
GOCLAW_ANTHROPIC_API_KEY=
|
||||
GOCLAW_OPENAI_API_KEY=
|
||||
GOCLAW_MINIMAX_API_KEY=
|
||||
GOCLAW_GROQ_API_KEY=
|
||||
GOCLAW_DEEPSEEK_API_KEY=
|
||||
GOCLAW_GEMINI_API_KEY=
|
||||
GOCLAW_MISTRAL_API_KEY=
|
||||
GOCLAW_XAI_API_KEY=
|
||||
GOCLAW_COHERE_API_KEY=
|
||||
GOCLAW_PERPLEXITY_API_KEY=
|
||||
|
||||
# --- Gateway ---
|
||||
GOCLAW_GATEWAY_TOKEN=
|
||||
@@ -18,6 +26,12 @@ GOCLAW_ENCRYPTION_KEY=
|
||||
# --- Channels (optional) ---
|
||||
GOCLAW_TELEGRAM_TOKEN=
|
||||
GOCLAW_DISCORD_TOKEN=
|
||||
GOCLAW_LARK_APP_ID=
|
||||
GOCLAW_LARK_APP_SECRET=
|
||||
# GOCLAW_LARK_ENCRYPT_KEY=
|
||||
# GOCLAW_LARK_VERIFICATION_TOKEN=
|
||||
GOCLAW_ZALO_TOKEN=
|
||||
# GOCLAW_WHATSAPP_BRIDGE_URL=
|
||||
|
||||
# --- Database (only for non-Docker deployments) ---
|
||||
# Docker Compose auto-builds this from POSTGRES_USER/PASSWORD/DB.
|
||||
|
||||
+29
-4
@@ -66,10 +66,7 @@ func seedManagedData(dsn string, cfg *config.Config) error {
|
||||
continue
|
||||
}
|
||||
|
||||
providerType := "openai_compat"
|
||||
if name == "anthropic" {
|
||||
providerType = "anthropic_native"
|
||||
}
|
||||
providerType := resolveProviderType(name)
|
||||
|
||||
p := &store.LLMProviderData{
|
||||
Name: name,
|
||||
@@ -314,6 +311,34 @@ func resolveProviderAPIKey(cfg *config.Config, providerName string) string {
|
||||
}
|
||||
}
|
||||
|
||||
// resolveProviderType maps a provider name to its store.Provider* type constant.
|
||||
func resolveProviderType(name string) string {
|
||||
switch name {
|
||||
case "anthropic":
|
||||
return store.ProviderAnthropicNative
|
||||
case "gemini":
|
||||
return store.ProviderGeminiNative
|
||||
case "minimax":
|
||||
return store.ProviderMiniMax
|
||||
case "openrouter":
|
||||
return store.ProviderOpenRouter
|
||||
case "groq":
|
||||
return store.ProviderGroq
|
||||
case "deepseek":
|
||||
return store.ProviderDeepSeek
|
||||
case "mistral":
|
||||
return store.ProviderMistral
|
||||
case "xai":
|
||||
return store.ProviderXAI
|
||||
case "cohere":
|
||||
return store.ProviderCohere
|
||||
case "perplexity":
|
||||
return store.ProviderPerplexity
|
||||
default:
|
||||
return store.ProviderOpenAICompat
|
||||
}
|
||||
}
|
||||
|
||||
// resolveProviderAPIBase returns the default API base URL for known providers.
|
||||
func resolveProviderAPIBase(providerName string) string {
|
||||
switch providerName {
|
||||
|
||||
@@ -40,9 +40,17 @@ services:
|
||||
- GOCLAW_GEMINI_API_KEY=${GOCLAW_GEMINI_API_KEY:-}
|
||||
- GOCLAW_MISTRAL_API_KEY=${GOCLAW_MISTRAL_API_KEY:-}
|
||||
- GOCLAW_XAI_API_KEY=${GOCLAW_XAI_API_KEY:-}
|
||||
- GOCLAW_COHERE_API_KEY=${GOCLAW_COHERE_API_KEY:-}
|
||||
- GOCLAW_PERPLEXITY_API_KEY=${GOCLAW_PERPLEXITY_API_KEY:-}
|
||||
# Channels
|
||||
- GOCLAW_TELEGRAM_TOKEN=${GOCLAW_TELEGRAM_TOKEN:-}
|
||||
- GOCLAW_DISCORD_TOKEN=${GOCLAW_DISCORD_TOKEN:-}
|
||||
- GOCLAW_LARK_APP_ID=${GOCLAW_LARK_APP_ID:-}
|
||||
- GOCLAW_LARK_APP_SECRET=${GOCLAW_LARK_APP_SECRET:-}
|
||||
- GOCLAW_LARK_ENCRYPT_KEY=${GOCLAW_LARK_ENCRYPT_KEY:-}
|
||||
- GOCLAW_LARK_VERIFICATION_TOKEN=${GOCLAW_LARK_VERIFICATION_TOKEN:-}
|
||||
- GOCLAW_ZALO_TOKEN=${GOCLAW_ZALO_TOKEN:-}
|
||||
- GOCLAW_WHATSAPP_BRIDGE_URL=${GOCLAW_WHATSAPP_BRIDGE_URL:-}
|
||||
# Debug
|
||||
- GOCLAW_TRACE_VERBOSE=${GOCLAW_TRACE_VERBOSE:-0}
|
||||
volumes:
|
||||
|
||||
@@ -108,10 +108,11 @@ func (c *Config) applyEnvOverrides() {
|
||||
envStr("GOCLAW_TELEGRAM_TOKEN", &c.Channels.Telegram.Token)
|
||||
envStr("GOCLAW_DISCORD_TOKEN", &c.Channels.Discord.Token)
|
||||
envStr("GOCLAW_ZALO_TOKEN", &c.Channels.Zalo.Token)
|
||||
envStr("GOCLAW_FEISHU_APP_ID", &c.Channels.Feishu.AppID)
|
||||
envStr("GOCLAW_FEISHU_APP_SECRET", &c.Channels.Feishu.AppSecret)
|
||||
envStr("GOCLAW_FEISHU_ENCRYPT_KEY", &c.Channels.Feishu.EncryptKey)
|
||||
envStr("GOCLAW_FEISHU_VERIFICATION_TOKEN", &c.Channels.Feishu.VerificationToken)
|
||||
envStr("GOCLAW_LARK_APP_ID", &c.Channels.Feishu.AppID)
|
||||
envStr("GOCLAW_LARK_APP_SECRET", &c.Channels.Feishu.AppSecret)
|
||||
envStr("GOCLAW_LARK_ENCRYPT_KEY", &c.Channels.Feishu.EncryptKey)
|
||||
envStr("GOCLAW_LARK_VERIFICATION_TOKEN", &c.Channels.Feishu.VerificationToken)
|
||||
envStr("GOCLAW_WHATSAPP_BRIDGE_URL", &c.Channels.WhatsApp.BridgeURL)
|
||||
|
||||
// TTS secrets
|
||||
envStr("GOCLAW_TTS_OPENAI_API_KEY", &c.Tts.OpenAI.APIKey)
|
||||
@@ -132,6 +133,9 @@ func (c *Config) applyEnvOverrides() {
|
||||
if c.Channels.Feishu.AppID != "" && c.Channels.Feishu.AppSecret != "" {
|
||||
c.Channels.Feishu.Enabled = true
|
||||
}
|
||||
if c.Channels.WhatsApp.BridgeURL != "" {
|
||||
c.Channels.WhatsApp.Enabled = true
|
||||
}
|
||||
|
||||
// Allow overriding default provider/model
|
||||
envStr("GOCLAW_PROVIDER", &c.Agents.Defaults.Provider)
|
||||
|
||||
+2
-1
@@ -85,7 +85,8 @@ fi
|
||||
has_provider=false
|
||||
for key in GOCLAW_OPENROUTER_API_KEY GOCLAW_ANTHROPIC_API_KEY GOCLAW_OPENAI_API_KEY \
|
||||
GOCLAW_MINIMAX_API_KEY GOCLAW_GROQ_API_KEY GOCLAW_DEEPSEEK_API_KEY \
|
||||
GOCLAW_GEMINI_API_KEY GOCLAW_MISTRAL_API_KEY GOCLAW_XAI_API_KEY; do
|
||||
GOCLAW_GEMINI_API_KEY GOCLAW_MISTRAL_API_KEY GOCLAW_XAI_API_KEY \
|
||||
GOCLAW_COHERE_API_KEY GOCLAW_PERPLEXITY_API_KEY; do
|
||||
val="$(get_env_val "$key")"
|
||||
if [ -n "$val" ]; then
|
||||
has_provider=true
|
||||
|
||||
Reference in new issue
Block a user