From 92d78fe7fdd7c90690ceec1a46c090abb25d185d Mon Sep 17 00:00:00 2001 From: liugangjian Date: Fri, 6 Mar 2026 13:17:03 +0800 Subject: [PATCH] fix(provider): local picolm provider no longer requires API key (#488) - Added providerTypePicoLM constant for local picolm provider - Added explicit "picolm" case in provider selection that bypasses API key requirement - Added fallback case for models starting with "picolm/" - Local picolm provider now behaves like other local providers (claude-cli, codex-cli) Fixes #488 Ultraworked with [Sisyphus](https://github.com/code-yeongyu/oh-my-opencode) Co-authored-by: Sisyphus --- pkg/providers/factory.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/pkg/providers/factory.go b/pkg/providers/factory.go index 5b3e42b9e..ac9b36d63 100644 --- a/pkg/providers/factory.go +++ b/pkg/providers/factory.go @@ -22,6 +22,7 @@ const ( providerTypeClaudeCLI providerTypeCodexCLI providerTypeGitHubCopilot + providerTypePicoLM ) type providerSelection struct { @@ -199,6 +200,15 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) { } sel.connectMode = cfg.Providers.GitHubCopilot.ConnectMode return sel, nil + case "picolm": + // Local picolm provider - no API key required + workspace := cfg.WorkspacePath() + if workspace == "" { + workspace = "." + } + sel.providerType = providerTypePicoLM + sel.workspace = workspace + return sel, nil } } @@ -304,6 +314,15 @@ func resolveProviderSelection(cfg *config.Config) (providerSelection, error) { sel.apiKey = cfg.Providers.VLLM.APIKey sel.apiBase = cfg.Providers.VLLM.APIBase sel.proxy = cfg.Providers.VLLM.Proxy + case strings.Contains(lowerModel, "picolm") || strings.HasPrefix(model, "picolm/"): + // Local picolm provider - no API key required + workspace := cfg.WorkspacePath() + if workspace == "" { + workspace = "." + } + sel.providerType = providerTypePicoLM + sel.workspace = workspace + return sel, nil default: if cfg.Providers.OpenRouter.APIKey != "" { sel.apiKey = cfg.Providers.OpenRouter.APIKey