From 3c51ffee4eec2603bbe44cf712127e9f46ab2064 Mon Sep 17 00:00:00 2001 From: "ki.sagidullin" Date: Sun, 23 Aug 2026 18:18:25 +0500 Subject: [PATCH] =?UTF-8?q?refactor(config):=20=D1=83=D0=B4=D0=B0=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B0=20=D0=BE=D0=BF=D1=86=D0=B8=D1=8F=20opencode.?= =?UTF-8?q?config=20(OPENCODE=5FCONFIG)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- config.yaml.example | 1 - internal/app/app.go | 1 - internal/config/config_test.go | 20 -------------------- internal/config/types.go | 1 - internal/opencode/pool.go | 3 --- internal/opencode/server.go | 8 +------- 6 files changed, 1 insertion(+), 33 deletions(-) diff --git a/config.yaml.example b/config.yaml.example index e842d4b..f0cdc84 100644 --- a/config.yaml.example +++ b/config.yaml.example @@ -10,7 +10,6 @@ telegram: # Всё ниже — опционально, показаны дефолты: # opencode: # bin: "opencode" -# config: "/путь/к/opencode.json" # файл-конфиг модели (OPENCODE_CONFIG); пусто = глобальный конфиг opencode # hard_timeout: "20m" # idle_timeout: "5m" # diff --git a/internal/app/app.go b/internal/app/app.go index bda1c1b..3b0a2d3 100644 --- a/internal/app/app.go +++ b/internal/app/app.go @@ -156,7 +156,6 @@ func New(configPath, version, updateToken string, noUI bool) (*App, error) { // Служебный root-сервер (worktree) живёт всё время app; остальные лениво. ocPool := opencode.NewPool(cfg.Paths.Worktree) ocPool.Bin = cfg.OpenCode.Bin - ocPool.Config = cfg.OpenCode.Config ocPool.DBPath = cfg.OpenCode.DBPath ocPool.Host = cfg.OpenCode.Serve.Hostname ocPool.BasePort = cfg.OpenCode.Serve.Port diff --git a/internal/config/config_test.go b/internal/config/config_test.go index 41393ca..e00e2dc 100644 --- a/internal/config/config_test.go +++ b/internal/config/config_test.go @@ -146,26 +146,6 @@ log: } } -func TestLoad_EnvOverride(t *testing.T) { - t.Setenv("TG_TOKEN", "tok") - t.Setenv("TG_CHAT_ID", "42") - // env override для opencode.timeout - t.Setenv("OPENCODE_CONFIG", "/custom/opencode.json") - - yaml := `telegram: - token: "${TG_TOKEN}" - chat_id: "${TG_CHAT_ID}" -` - path := writeCfg(t, yaml) - cfg, err := Load(path) - if err != nil { - t.Fatalf("Load: %v", err) - } - if cfg.OpenCode.Config != "/custom/opencode.json" { - t.Errorf("opencode config = %q", cfg.OpenCode.Config) - } -} - func TestLoad_MissingEnvVarUsesDefault(t *testing.T) { t.Setenv("TG_TOKEN", "tok") t.Setenv("TG_CHAT_ID", "42") diff --git a/internal/config/types.go b/internal/config/types.go index 03fe381..3db4a73 100644 --- a/internal/config/types.go +++ b/internal/config/types.go @@ -88,7 +88,6 @@ type TelegramCfg struct { type OpenCodeCfg struct { Bin string `yaml:"bin" default:"opencode"` DBPath string `yaml:"db_path" default:""` - Config string `yaml:"config" env:"OPENCODE_CONFIG"` HardTimeout Duration `yaml:"hard_timeout" default:"20m"` IdleTimeout Duration `yaml:"idle_timeout" default:"5m"` PollMs Duration `yaml:"poll_ms" default:"2s"` diff --git a/internal/opencode/pool.go b/internal/opencode/pool.go index c1ad830..3618c35 100644 --- a/internal/opencode/pool.go +++ b/internal/opencode/pool.go @@ -19,7 +19,6 @@ import ( // директории → каждая сессия API привязана к правильному project-каталогу. type Pool struct { Bin string - Config string DBPath string Host string BasePort int @@ -72,7 +71,6 @@ func (p *Pool) EnsureRoot(ctx context.Context) error { } s := &Server{ Bin: p.Bin, - Config: p.Config, DBPath: p.DBPath, Host: p.Host, Password: p.Password, @@ -101,7 +99,6 @@ func (p *Pool) Ensure(ctx context.Context, dir string) (*Server, error) { abs := filepath.Clean(dir) s := &Server{ Bin: p.Bin, - Config: p.Config, DBPath: p.DBPath, Host: p.Host, Password: p.Password, diff --git a/internal/opencode/server.go b/internal/opencode/server.go index ce905e9..5cf3b3a 100644 --- a/internal/opencode/server.go +++ b/internal/opencode/server.go @@ -24,7 +24,6 @@ import ( // отдаёт URL, процессом не владеет. type Server struct { Bin string // путь к opencode (по умолчанию "opencode") - Config string // OPENCODE_CONFIG DBPath string // рабочая БД сервера (передам env, если задана) Host string // hostname для прослушивания @@ -127,12 +126,7 @@ func (s *Server) serveCmd(ctx context.Context) *exec.Cmd { "OPENCODE_DISABLE_AUTOUPDATE=1", "OPENCODE_DISABLE_MODELS_FETCH=1") // Агенты (analyst/dev/...) opencode находит сам через project-каталог - // .opencode (см. internal/agents); OPENCODE_CONFIG_DIR не выставляем, - // чтобы не перенаправлять Global.Path.config и сохранить глобальный - // конфиг opencode (модель/провайдеры). - if s.Config != "" { - env = append(env, "OPENCODE_CONFIG="+s.Config) - } + // .opencode (см. internal/agents). if s.DBPath != "" { env = append(env, "OPENCODE_DB="+s.DBPath) }