v0.0.5: context compaction, minimal config, retry/search/code symbols/diff/status/test commands
This commit is contained in:
+19
-13
@@ -69,6 +69,7 @@ func (m *Manager) Resume(id string) error {
|
||||
}
|
||||
m.currentSession = sess
|
||||
m.agent.SetMessages(sess.Messages)
|
||||
m.agent.SetLastUsage(sess.LastUsage)
|
||||
return nil
|
||||
}
|
||||
|
||||
@@ -78,6 +79,7 @@ func (m *Manager) Save() error {
|
||||
return nil
|
||||
}
|
||||
m.currentSession.Messages = m.agent.Messages()
|
||||
m.currentSession.LastUsage = m.agent.LastUsage()
|
||||
m.currentSession.Provider = m.providerName
|
||||
m.currentSession.Model = m.provider.Model
|
||||
// Auto-name if empty
|
||||
@@ -208,11 +210,7 @@ func (m *Manager) Info() string {
|
||||
fmt.Fprintf(&b, "model: %s\n", m.CurrentModel())
|
||||
fmt.Fprintf(&b, "thinking: %s\n", m.CurrentThinking())
|
||||
fmt.Fprintf(&b, "providers: %s\n", strings.Join(m.providerNames(), ", "))
|
||||
if len(m.provider.Models) > 0 {
|
||||
fmt.Fprintf(&b, "models: %s\n", strings.Join(m.provider.Models, ", "))
|
||||
} else {
|
||||
b.WriteString("models: any model name is accepted for this provider\n")
|
||||
}
|
||||
fmt.Fprintf(&b, "models: %s\n", strings.Join(m.provider.Models, ", "))
|
||||
fmt.Fprintf(&b, "thinking levels: %s\n", strings.Join(config.ThinkingLevels(), ", "))
|
||||
b.WriteString("usage: /model provider <name> | /model model <name> | /model thinking <level>")
|
||||
return b.String()
|
||||
@@ -234,10 +232,10 @@ func (m *Manager) SetModel(model string) (string, error) {
|
||||
if model == "" {
|
||||
return "", fmt.Errorf("model is required")
|
||||
}
|
||||
if len(m.provider.Models) > 0 && !contains(m.provider.Models, model) {
|
||||
if !contains(m.provider.Models, model) {
|
||||
return "", fmt.Errorf("model %q is not configured for provider %q; available: %s", model, m.providerName, strings.Join(m.provider.Models, ", "))
|
||||
}
|
||||
m.provider.Model = model
|
||||
m.provider = m.provider.WithModel(model)
|
||||
m.cfg.Providers[m.providerName] = m.provider
|
||||
m.syncAgent(nil)
|
||||
return "Switched model.\n" + m.summary(), nil
|
||||
@@ -262,14 +260,22 @@ func (m *Manager) summary() string {
|
||||
return fmt.Sprintf("provider: %s\nmodel: %s\nthinking: %s", m.CurrentProvider(), m.CurrentModel(), m.CurrentThinking())
|
||||
}
|
||||
|
||||
func (m *Manager) maxContextTokens() int {
|
||||
if m.cfg != nil && m.cfg.Agent.MaxContextTokens > 0 {
|
||||
return m.cfg.Agent.MaxContextTokens
|
||||
}
|
||||
return m.provider.ContextTokens
|
||||
}
|
||||
|
||||
func (m *Manager) syncAgent(provider llm.Provider) {
|
||||
m.agent.SetRuntime(agent.RuntimeOptions{
|
||||
Provider: provider,
|
||||
ProviderName: m.providerName,
|
||||
Model: m.provider.Model,
|
||||
Thinking: m.provider.Thinking,
|
||||
ThinkingParam: m.provider.ThinkingParam,
|
||||
ThinkingEnabled: m.provider.ThinkingConfigured,
|
||||
Provider: provider,
|
||||
ProviderName: m.providerName,
|
||||
Model: m.provider.Model,
|
||||
Thinking: m.provider.Thinking,
|
||||
ThinkingParam: m.provider.ThinkingParam,
|
||||
ThinkingEnabled: m.provider.ThinkingConfigured,
|
||||
MaxContextTokens: m.maxContextTokens(),
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user