compactors

package
v0.1.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jul 29, 2026 License: Apache-2.0 Imports: 5 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

func CountMessagePairs

func CountMessagePairs(messages []Message) int

CountMessagePairs 计算对话轮次(用户+助手对)

func ExtractToolNames

func ExtractToolNames(messages []Message) []string

ExtractToolNames 提取消息中所有的工具名称

func FormatMessagesForSummary

func FormatMessagesForSummary(messages []Message) string

FormatMessagesForSummary 将消息格式化为摘要输入 使用结构化格式:Goal, Progress, Decisions, Files, Next Steps

func IsToolMessage

func IsToolMessage(msg *Message) bool

IsToolMessage 检查消息是否为工具调用或工具结果

func ProtectHeadMessages

func ProtectHeadMessages(messages []Message, protectCount int) ([]Message, []Message)

ProtectHeadMessages 保护头部消息(系统消息 + 前几个对话轮次) 这些消息不被压缩,保持原样

func ProtectTailMessages

func ProtectTailMessages(messages []Message, tokenizer Tokenizer, maxTailTokens int) ([]Message, []Message)

ProtectTailMessages 保护尾部消息(最近的消息,保留足够的 token budget) 只保留足够的最近消息来填满 token budget

func ShouldCompactMicro

func ShouldCompactMicro(messages []Message, tokenizer Tokenizer, threshold int) bool

ShouldCompactMicro 判断是否应该进行微压缩

func TruncateText

func TruncateText(text string, maxLen int) string

TruncateText 截断文本到指定长度

Types

type ChatModel

type ChatModel interface {
	Generate(ctx context.Context, messages []Message) (string, error)
}

ChatModel Chat 模型接口

type CompactMetadata

type CompactMetadata struct {
	CompactType          string
	PreCompactTokenCount int
	LastMessageID        string
}

CompactMetadata 压缩元数据

type CompactionResult

type CompactionResult struct {
	BoundaryMarker    *SystemMessage
	SummaryMessages   []Message
	MessagesToKeep    []Message
	PreCompactTokens  int
	PostCompactTokens int
}

CompactionResult 压缩结果

type Config

type Config struct {
	Model               string
	MaxOutputTokens     int
	CompactBufferTokens int
	CustomThreshold     int
	CustomInstructions  string
	SuppressFollowUp    bool
}

Config 压缩配置

type ContentBlock

type ContentBlock struct {
	Type       string
	Text       string
	ToolUse    *ToolUseBlock
	ToolResult *ToolResultBlock
}

ContentBlock 内容块

type FullCompacter

type FullCompacter struct {
	// contains filtered or unexported fields
}

FullCompacter 总结整个对话

func NewFullCompacter

func NewFullCompacter(chatModel ChatModel, tokenizer Tokenizer, config *Config) *FullCompacter

NewFullCompacter 创建完整压缩器

func (*FullCompacter) Compact

func (c *FullCompacter) Compact(ctx context.Context, messages []Message, opts ...func(*Config)) (*CompactionResult, error)

Compact 实现压缩 - 总结整个对话

type Message

type Message struct {
	ID      string
	Type    string // "user", "assistant", "system", "tool"
	Role    string
	Content []ContentBlock
}

Message 消息结构

func NewSystemMessage

func NewSystemMessage(content string) *Message

NewSystemMessage 创建系统消息

func NewTextMessage

func NewTextMessage(msgType, text string) *Message

NewTextMessage 创建文本消息

func PruneToolResults

func PruneToolResults(messages []Message, maxResultLen int) []Message

PruneToolResults 裁剪旧的工具结果,替换为占位符 压缩的第一步:删除旧工具调用的详细结果 参考: agent/context_compressor.py

func StripImagesFromMessages

func StripImagesFromMessages(messages []Message) []Message

StripImagesFromMessages 剥离图片和文档,替换为标记 参考: src/services/compact/compact.ts:145-200

func (*Message) GetLastText

func (m *Message) GetLastText() string

GetLastText 获取消息的最后一条文本

type MicroCompacter

type MicroCompacter struct {
	// contains filtered or unexported fields
}

MicroCompacter 微压缩器 - 工具结果压缩

func NewMicroCompacter

func NewMicroCompacter(tokenizer Tokenizer, config *Config) *MicroCompacter

NewMicroCompacter 创建微压缩器

func (*MicroCompacter) Compact

func (c *MicroCompacter) Compact(ctx context.Context, messages []Message, opts ...func(*Config)) (*CompactionResult, error)

Compact 压缩工具结果

type PartialCompacter

type PartialCompacter struct {
	// contains filtered or unexported fields
}

PartialCompacter 只总结最近的消息

func NewPartialCompacter

func NewPartialCompacter(chatModel ChatModel, tokenizer Tokenizer, config *Config) *PartialCompacter

NewPartialCompacter 创建部分压缩器

func (*PartialCompacter) Compact

func (c *PartialCompacter) Compact(ctx context.Context, messages []Message, opts ...func(*Config)) (*CompactionResult, error)

Compact 总结最近消息,保留早期上下文

type SystemMessage

type SystemMessage struct {
	Message
	CompactMetadata *CompactMetadata
}

SystemMessage 系统消息

func CreateCompactBoundaryMessage

func CreateCompactBoundaryMessage(compactType string, preTokens int, lastMsgID string) *SystemMessage

CreateCompactBoundaryMessage 创建压缩边界标记

type Tokenizer

type Tokenizer interface {
	Estimate(text string) int
	EstimateMessages(messages []Message) int
}

Tokenizer Token 估算器接口

type ToolResultBlock

type ToolResultBlock struct {
	ToolUseID string
	Content   any
}

ToolResultBlock 工具结果块

type ToolUseBlock

type ToolUseBlock struct {
	ID    string
	Name  string
	Input map[string]any
}

ToolUseBlock 工具调用块

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL