Documentation
¶
Index ¶
- func CountMessagePairs(messages []Message) int
- func ExtractToolNames(messages []Message) []string
- func FormatMessagesForSummary(messages []Message) string
- func IsToolMessage(msg *Message) bool
- func ProtectHeadMessages(messages []Message, protectCount int) ([]Message, []Message)
- func ProtectTailMessages(messages []Message, tokenizer Tokenizer, maxTailTokens int) ([]Message, []Message)
- func ShouldCompactMicro(messages []Message, tokenizer Tokenizer, threshold int) bool
- func TruncateText(text string, maxLen int) string
- type ChatModel
- type CompactMetadata
- type CompactionResult
- type Config
- type ContentBlock
- type FullCompacter
- type Message
- type MicroCompacter
- type PartialCompacter
- type SystemMessage
- type Tokenizer
- type ToolResultBlock
- type ToolUseBlock
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CountMessagePairs ¶
CountMessagePairs 计算对话轮次(用户+助手对)
func ExtractToolNames ¶
ExtractToolNames 提取消息中所有的工具名称
func FormatMessagesForSummary ¶
FormatMessagesForSummary 将消息格式化为摘要输入 使用结构化格式:Goal, Progress, Decisions, Files, Next Steps
func ProtectHeadMessages ¶
ProtectHeadMessages 保护头部消息(系统消息 + 前几个对话轮次) 这些消息不被压缩,保持原样
func ProtectTailMessages ¶
func ProtectTailMessages(messages []Message, tokenizer Tokenizer, maxTailTokens int) ([]Message, []Message)
ProtectTailMessages 保护尾部消息(最近的消息,保留足够的 token budget) 只保留足够的最近消息来填满 token budget
func ShouldCompactMicro ¶
ShouldCompactMicro 判断是否应该进行微压缩
Types ¶
type CompactMetadata ¶
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 PruneToolResults ¶
PruneToolResults 裁剪旧的工具结果,替换为占位符 压缩的第一步:删除旧工具调用的详细结果 参考: agent/context_compressor.py
func StripImagesFromMessages ¶
StripImagesFromMessages 剥离图片和文档,替换为标记 参考: src/services/compact/compact.ts:145-200
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 ToolResultBlock ¶
ToolResultBlock 工具结果块