From 920e30a241313544ad735f78e0d5590f1a0b9c1f Mon Sep 17 00:00:00 2001 From: lxowalle <83055338+lxowalle@users.noreply.github.com> Date: Tue, 17 Feb 2026 21:31:54 +0800 Subject: [PATCH 1/4] fix:pr-272 reverted the changes from pr-227 (#361) --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index 9786b30bb..bb31243dd 100644 --- a/Makefile +++ b/Makefile @@ -39,6 +39,8 @@ ifeq ($(UNAME_S),Linux) ARCH=amd64 else ifeq ($(UNAME_M),aarch64) ARCH=arm64 + else ifeq ($(UNAME_M),loongarch64) + ARCH=loong64 else ifeq ($(UNAME_M),riscv64) ARCH=riscv64 else @@ -84,6 +86,7 @@ build-all: generate @mkdir -p $(BUILD_DIR) GOOS=linux GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-amd64 ./$(CMD_DIR) GOOS=linux GOARCH=arm64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-arm64 ./$(CMD_DIR) + GOOS=linux GOARCH=loong64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-loong64 ./$(CMD_DIR) GOOS=linux GOARCH=riscv64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-linux-riscv64 ./$(CMD_DIR) GOOS=darwin GOARCH=arm64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-darwin-arm64 ./$(CMD_DIR) GOOS=windows GOARCH=amd64 $(GO) build $(LDFLAGS) -o $(BUILD_DIR)/$(BINARY_NAME)-windows-amd64.exe ./$(CMD_DIR) From 2f24be6c59cb6fe1edb32e86b05a44947bdc0158 Mon Sep 17 00:00:00 2001 From: likeaturtle Date: Tue, 17 Feb 2026 22:31:19 +0800 Subject: [PATCH 2/4] add Volcengine LLM (doubao) support --- config/config.example.json | 4 ++++ pkg/config/config.go | 2 ++ pkg/providers/http_provider.go | 18 ++++++++++++++++++ 3 files changed, 24 insertions(+) diff --git a/config/config.example.json b/config/config.example.json index 7cd0ab8c6..0a3af40f3 100644 --- a/config/config.example.json +++ b/config/config.example.json @@ -113,6 +113,10 @@ "ollama": { "api_key": "", "api_base": "http://localhost:11434/v1" + }, + "volcengine": { + "api_key": "", + "api_base": "" } }, "tools": { diff --git a/pkg/config/config.go b/pkg/config/config.go index 1d34f56f3..82a9a82a3 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -179,6 +179,7 @@ type ProvidersConfig struct { Moonshot ProviderConfig `json:"moonshot"` ShengSuanYun ProviderConfig `json:"shengsuanyun"` DeepSeek ProviderConfig `json:"deepseek"` + VolcEngine ProviderConfig `json:"volcengine"` GitHubCopilot ProviderConfig `json:"github_copilot"` } @@ -317,6 +318,7 @@ func DefaultConfig() *Config { Nvidia: ProviderConfig{}, Moonshot: ProviderConfig{}, ShengSuanYun: ProviderConfig{}, + VolcEngine: ProviderConfig{}, }, Gateway: GatewayConfig{ Host: "0.0.0.0", diff --git a/pkg/providers/http_provider.go b/pkg/providers/http_provider.go index 4cf2c6db2..72e7b05cf 100644 --- a/pkg/providers/http_provider.go +++ b/pkg/providers/http_provider.go @@ -332,6 +332,15 @@ func CreateProvider(cfg *config.Config) (LLMProvider, error) { } return NewGitHubCopilotProvider(apiBase, cfg.Providers.GitHubCopilot.ConnectMode, model) + case "volcengine", "doubao": + if cfg.Providers.VolcEngine.APIKey != "" { + apiKey = cfg.Providers.VolcEngine.APIKey + apiBase = cfg.Providers.VolcEngine.APIBase + if apiBase == "" { + apiBase = "https://ark.cn-beijing.volces.com/api/v3" + } + } + } } @@ -418,6 +427,15 @@ func CreateProvider(cfg *config.Config) (LLMProvider, error) { apiBase = "http://localhost:11434/v1" } fmt.Println("Ollama apiBase:", apiBase) + + case (strings.Contains(lowerModel, "doubao") || strings.HasPrefix(model, "doubao") || strings.Contains(lowerModel, "volcengine")) && cfg.Providers.VolcEngine.APIKey != "": + apiKey = cfg.Providers.VolcEngine.APIKey + apiBase = cfg.Providers.VolcEngine.APIBase + proxy = cfg.Providers.VolcEngine.Proxy + if apiBase == "" { + apiBase = "https://ark.cn-beijing.volces.com/api/v3" + } + case cfg.Providers.VLLM.APIBase != "": apiKey = cfg.Providers.VLLM.APIKey apiBase = cfg.Providers.VLLM.APIBase From 6cd419b6e27272b5f377912fe0972d2033df4cd6 Mon Sep 17 00:00:00 2001 From: likeaturtle Date: Tue, 17 Feb 2026 22:49:43 +0800 Subject: [PATCH 3/4] Fix the case sensitivity issue when automatically recognizing VolcEngine LLM model names. --- pkg/providers/http_provider.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkg/providers/http_provider.go b/pkg/providers/http_provider.go index 72e7b05cf..04bad928a 100644 --- a/pkg/providers/http_provider.go +++ b/pkg/providers/http_provider.go @@ -428,7 +428,7 @@ func CreateProvider(cfg *config.Config) (LLMProvider, error) { } fmt.Println("Ollama apiBase:", apiBase) - case (strings.Contains(lowerModel, "doubao") || strings.HasPrefix(model, "doubao") || strings.Contains(lowerModel, "volcengine")) && cfg.Providers.VolcEngine.APIKey != "": + case (strings.Contains(lowerModel, "doubao") || strings.HasPrefix(lowerModel, "doubao") || strings.Contains(lowerModel, "volcengine")) && cfg.Providers.VolcEngine.APIKey != "": apiKey = cfg.Providers.VolcEngine.APIKey apiBase = cfg.Providers.VolcEngine.APIBase proxy = cfg.Providers.VolcEngine.Proxy From bb0eadded0447366f5a2b3b7aee243b903d06900 Mon Sep 17 00:00:00 2001 From: likeaturtle Date: Tue, 17 Feb 2026 23:29:27 +0800 Subject: [PATCH 4/4] Optimize ./picoclaw status output to support all config file configurations. --- cmd/picoclaw/main.go | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/cmd/picoclaw/main.go b/cmd/picoclaw/main.go index fd7ec484a..6a57a06fe 100644 --- a/cmd/picoclaw/main.go +++ b/cmd/picoclaw/main.go @@ -729,6 +729,11 @@ func statusCmd() { hasZhipu := cfg.Providers.Zhipu.APIKey != "" hasGroq := cfg.Providers.Groq.APIKey != "" hasVLLM := cfg.Providers.VLLM.APIBase != "" + hasMoonshot := cfg.Providers.Moonshot.APIKey != "" + hasDeepSeek := cfg.Providers.DeepSeek.APIKey != "" + hasVolcEngine := cfg.Providers.VolcEngine.APIKey != "" + hasNvidia := cfg.Providers.Nvidia.APIKey != "" + hasOllama := cfg.Providers.Ollama.APIBase != "" status := func(enabled bool) string { if enabled { @@ -742,11 +747,20 @@ func statusCmd() { fmt.Println("Gemini API:", status(hasGemini)) fmt.Println("Zhipu API:", status(hasZhipu)) fmt.Println("Groq API:", status(hasGroq)) + fmt.Println("Moonshot API:", status(hasMoonshot)) + fmt.Println("DeepSeek API:", status(hasDeepSeek)) + fmt.Println("VolcEngine API:", status(hasVolcEngine)) + fmt.Println("Nvidia API:", status(hasNvidia)) if hasVLLM { fmt.Printf("vLLM/Local: ✓ %s\n", cfg.Providers.VLLM.APIBase) } else { fmt.Println("vLLM/Local: not set") } + if hasOllama { + fmt.Printf("Ollama: ✓ %s\n", cfg.Providers.Ollama.APIBase) + } else { + fmt.Println("Ollama: not set") + } store, _ := auth.LoadStore() if store != nil && len(store.Credentials) > 0 {