Files
BlackBean/pigo/internal/cli/liveconfig.go
T
2026-08-14 23:41:57 +08:00

39 lines
1.7 KiB
Go

// This file defines LiveConfig, the mutable run configuration a control command
// may change mid-session. It was moved verbatim from cmd/pigo (the former
// liveRunConfig) and exported so the run, repl, btw, status and goal
// subpackages can read and mutate it through the Host contract. The run closure
// reads it on every prompt, so a /model switch takes effect on the next turn.
// It carries no lock: it is read and written only on the REPL's single main
// goroutine (slash actions and the run are both invoked synchronously from the
// REPL loop, never concurrently).
package cli
import (
"github.com/smallnest/pigo/internal/agentcore"
"github.com/smallnest/pigo/internal/provider"
)
// LiveConfig is the mutable run configuration a control command may change
// mid-session.
type LiveConfig struct {
Model string
ProviderName string
Provider provider.Provider
BaseURL string
Protocol string
// ThinkingLevel is the reasoning-effort level applied to each turn. It is
// seeded from the resolved config chain and read on every prompt.
ThinkingLevel agentcore.ThinkingLevel
// ContextWindow is the model's total context-token budget, used to gate
// automatic compaction. When 0 the window is unknown and auto-compaction is
// disabled; the REPL seeds it with a conservative default so long sessions
// still compact rather than overflow.
ContextWindow int
}
// DefaultContextWindow is the fallback context-token budget used when a model's
// true window is unknown. It is deliberately large so auto-compaction only fires
// on genuinely long sessions (threshold = window - ReserveTokens), never on
// ordinary short exchanges.
const DefaultContextWindow = 128000