Documentation
¶
Index ¶
- func AutoCompactThresholdRatio() float64
- func AutoCompactThresholdTokens(maxTokens int) int
- func EstimateTokens(text string) int
- type CompactResult
- type CompactSnapshot
- type ContextManager
- type Manager
- func (m *Manager) Add(msg provider.Message)
- func (m *Manager) ApplyCompactResult(snapshot CompactSnapshot, result CompactResult) (bool, int)
- func (m *Manager) AutoCompactThreshold() int
- func (m *Manager) CheckAndSummarize(ctx context.Context, prov provider.Provider) (bool, error)
- func (m *Manager) Clear()
- func (m *Manager) CompactSnapshot() CompactSnapshot
- func (m *Manager) MaxTokens() int
- func (m *Manager) Messages() []provider.Message
- func (m *Manager) MessagesAndTokenCount() ([]provider.Message, int)
- func (m *Manager) Microcompact() bool
- func (m *Manager) PromptBudget() int
- func (m *Manager) RecordUsage(usage provider.TokenUsage)
- func (m *Manager) SetMaxTokens(n int)
- func (m *Manager) SetOutputReserve(n int)
- func (m *Manager) SetProvider(p provider.Provider)
- func (m *Manager) SetTodoFilePath(path string)
- func (m *Manager) Summarize(ctx context.Context, prov provider.Provider) error
- func (m *Manager) TokenCount() int
- func (m *Manager) TruncateOldestGroupForRetry() bool
- func (m *Manager) UpdateFirstSystemMessage(msg provider.Message)
- func (m *Manager) UsageRatio() float64
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func AutoCompactThresholdRatio ¶
func AutoCompactThresholdRatio() float64
func EstimateTokens ¶
EstimateTokens provides a rough token estimation. Uses ~4 chars/token for ASCII and ~1.5 chars/token for CJK, which matches common BPE tokenizer behavior more closely than a flat len/4.
Types ¶
type CompactResult ¶ added in v1.2.1
CompactResult is the output of compacting a CompactSnapshot.
type CompactSnapshot ¶ added in v1.2.1
type CompactSnapshot struct {
Messages []provider.Message
OrigLen int
MaxTokens int
OutputReserve int
TodoPath string
}
CompactSnapshot is an immutable point-in-time view used by background compaction. It lets callers summarize a stable copy without mutating the live conversation while an LLM turn may still be running.
func (CompactSnapshot) Compact ¶ added in v1.2.1
func (s CompactSnapshot) Compact(ctx context.Context, prov provider.Provider) (CompactResult, error)
type ContextManager ¶
type ContextManager interface {
Add(msg provider.Message)
Messages() []provider.Message
TokenCount() int
// MessagesAndTokenCount returns both values under a single lock,
// guaranteeing a consistent snapshot.
MessagesAndTokenCount() ([]provider.Message, int)
MaxTokens() int
SetMaxTokens(n int)
SetOutputReserve(n int)
RecordUsage(usage provider.TokenUsage)
Summarize(ctx context.Context, prov provider.Provider) error
CheckAndSummarize(ctx context.Context, prov provider.Provider) (bool, error)
TruncateOldestGroupForRetry() bool
Clear()
UsageRatio() float64
AutoCompactThreshold() int
}
ContextManager manages conversation history, tracking tokens and auto-summarizing.
⚠️ Consuming packages must import this as "ctxpkg" to avoid collision with the standard library "context" package.
type Manager ¶
type Manager struct {
// contains filtered or unexported fields
}
Manager implements ContextManager.
func NewManager ¶
NewManager creates a ContextManager with the given context window limit.
func (*Manager) ApplyCompactResult ¶ added in v1.2.1
func (m *Manager) ApplyCompactResult(snapshot CompactSnapshot, result CompactResult) (bool, int)
func (*Manager) AutoCompactThreshold ¶ added in v1.1.17
func (*Manager) CheckAndSummarize ¶
CheckAndSummarize triggers summarization if usage ratio >= threshold.
func (*Manager) CompactSnapshot ¶ added in v1.2.1
func (m *Manager) CompactSnapshot() CompactSnapshot
func (*Manager) MessagesAndTokenCount ¶ added in v1.1.43
func (*Manager) Microcompact ¶
Microcompact reduces old bulky tool results in-place before falling back to full summarization.
func (*Manager) PromptBudget ¶ added in v1.2.1
func (*Manager) RecordUsage ¶ added in v1.1.17
func (m *Manager) RecordUsage(usage provider.TokenUsage)
func (*Manager) SetMaxTokens ¶
func (*Manager) SetOutputReserve ¶ added in v1.1.17
func (*Manager) SetProvider ¶
SetProvider sets the provider for provider-aware token counting.
func (*Manager) SetTodoFilePath ¶ added in v1.1.7
func (*Manager) Summarize ¶
Summarize compresses old messages into a summary while retaining an adaptive recent suffix sized to fit within the target token budget.
func (*Manager) TokenCount ¶
func (*Manager) TruncateOldestGroupForRetry ¶ added in v1.1.15
func (*Manager) UpdateFirstSystemMessage ¶ added in v1.1.34
UpdateFirstSystemMessage replaces the first system message in the context. If no system message exists, it prepends one.