diff --git a/README.md b/README.md index 652792d83..61cd03abf 100644 --- a/README.md +++ b/README.md @@ -274,6 +274,7 @@ picoclaw onboard "workspace": "~/.picoclaw/workspace", "model_name": "gpt-5.4", "max_tokens": 8192, + "context_window": 131072, "temperature": 0.7, "max_tool_iterations": 20 } @@ -1019,6 +1020,7 @@ picoclaw onboard "workspace": "~/.picoclaw/workspace", "model_name": "gpt-5.4", "max_tokens": 8192, + "context_window": 131072, "temperature": 0.7, "max_tool_iterations": 20 } @@ -1492,7 +1494,7 @@ User Groups: discord: -PicoClaw +PicoClaw ## ClawdChat Join the Agent Social Network diff --git a/config/config.example.json b/config/config.example.json index 81c9014ec..9c584042e 100644 --- a/config/config.example.json +++ b/config/config.example.json @@ -5,6 +5,7 @@ "restrict_to_workspace": true, "model_name": "gpt-5.4", "max_tokens": 8192, + "context_window": 131072, "temperature": 0.7, "max_tool_iterations": 20, "summarize_message_threshold": 20, diff --git a/docs/docker.md b/docs/docker.md index f868d4a42..3ffd01ba0 100644 --- a/docs/docker.md +++ b/docs/docker.md @@ -84,6 +84,7 @@ picoclaw onboard "workspace": "~/.picoclaw/workspace", "model_name": "gpt-5.4", "max_tokens": 8192, + "context_window": 131072, "temperature": 0.7, "max_tool_iterations": 20 } diff --git a/docs/providers.md b/docs/providers.md index dde1814fb..5a806947d 100644 --- a/docs/providers.md +++ b/docs/providers.md @@ -95,7 +95,9 @@ This design also enables **multi-agent support** with flexible provider selectio ], "agents": { "defaults": { - "model_name": "gpt-5.4" + "model_name": "gpt-5.4", + "max_tokens": 8192, + "context_window": 131072 } } } diff --git a/pkg/agent/instance.go b/pkg/agent/instance.go index 355e78a33..5e4086f41 100644 --- a/pkg/agent/instance.go +++ b/pkg/agent/instance.go @@ -130,6 +130,12 @@ func NewAgentInstance( maxTokens = 8192 } + // Resolve context window: use context_window if set, otherwise fall back to max_tokens + contextWindow := defaults.ContextWindow + if contextWindow == 0 { + contextWindow = maxTokens + } + temperature := 0.7 if defaults.Temperature != nil { temperature = *defaults.Temperature @@ -182,7 +188,7 @@ func NewAgentInstance( MaxTokens: maxTokens, Temperature: temperature, ThinkingLevel: thinkingLevel, - ContextWindow: maxTokens, + ContextWindow: contextWindow, SummarizeMessageThreshold: summarizeMessageThreshold, SummarizeTokenPercent: summarizeTokenPercent, Provider: provider, diff --git a/pkg/config/config.go b/pkg/config/config.go index 235cb0641..c421d02e8 100644 --- a/pkg/config/config.go +++ b/pkg/config/config.go @@ -238,6 +238,7 @@ type AgentDefaults struct { ImageModel string `json:"image_model,omitempty" env:"PICOCLAW_AGENTS_DEFAULTS_IMAGE_MODEL"` ImageModelFallbacks []string `json:"image_model_fallbacks,omitempty"` MaxTokens int `json:"max_tokens" env:"PICOCLAW_AGENTS_DEFAULTS_MAX_TOKENS"` + ContextWindow int `json:"context_window" env:"PICOCLAW_AGENTS_DEFAULTS_CONTEXT_WINDOW"` Temperature *float64 `json:"temperature,omitempty" env:"PICOCLAW_AGENTS_DEFAULTS_TEMPERATURE"` MaxToolIterations int `json:"max_tool_iterations" env:"PICOCLAW_AGENTS_DEFAULTS_MAX_TOOL_ITERATIONS"` SummarizeMessageThreshold int `json:"summarize_message_threshold" env:"PICOCLAW_AGENTS_DEFAULTS_SUMMARIZE_MESSAGE_THRESHOLD"` diff --git a/pkg/config/defaults.go b/pkg/config/defaults.go index 0d2141ae1..777ef312c 100644 --- a/pkg/config/defaults.go +++ b/pkg/config/defaults.go @@ -31,6 +31,7 @@ func DefaultConfig() *Config { Provider: "", Model: "", MaxTokens: 32768, + ContextWindow: 131072, Temperature: nil, // nil means use provider default MaxToolIterations: 50, SummarizeMessageThreshold: 20,