MCPcopy Create free account
hub / github.com/astercloud/aster / compressSimple

Method compressSimple

pkg/compression/service.go:251–293  ·  view source on GitHub ↗

compressSimple 简单压缩(基于规则)

(ctx context.Context, prompt string, opts *CompressOptions)

Source from the content-addressed store, hash-verified

249
250// compressSimple 简单压缩(基于规则)
251func (s *DefaultCompressionService) compressSimple(ctx context.Context, prompt string, opts *CompressOptions) (*CompressResult, error) {
252 // 如果设置了底层压缩器,使用它
253 if s.compressor != nil {
254 compressOpts := &PromptCompressOptions{
255 TargetLength: opts.TargetLength,
256 Mode: string(ModeSimple),
257 Level: int(opts.Level),
258 PreserveSections: opts.PreserveSections,
259 }
260 result, err := s.compressor.Compress(ctx, prompt, compressOpts)
261 if err != nil {
262 return nil, err
263 }
264 return &CompressResult{
265 Compressed: result.Compressed,
266 OriginalLength: result.OriginalLength,
267 CompressedLength: result.CompressedLength,
268 CompressionRatio: result.CompressionRatio,
269 TokensSaved: result.TokensSaved,
270 }, nil
271 }
272
273 // 降级:使用内置的简单压缩逻辑
274 compressed := s.simpleCompressInternal(prompt, opts)
275
276 tokensSaved := 0
277 if len(prompt) > 0 {
278 tokensSaved = (len(prompt) - len(compressed)) / 4 // 粗略估算
279 }
280
281 compressionRatio := 1.0
282 if len(prompt) > 0 {
283 compressionRatio = float64(len(compressed)) / float64(len(prompt))
284 }
285
286 return &CompressResult{
287 Compressed: compressed,
288 OriginalLength: len(prompt),
289 CompressedLength: len(compressed),
290 CompressionRatio: compressionRatio,
291 TokensSaved: tokensSaved,
292 }, nil
293}
294
295// simpleCompressInternal 内置简单压缩实现
296func (s *DefaultCompressionService) simpleCompressInternal(prompt string, opts *CompressOptions) string {

Callers 2

CompressSystemPromptMethod · 0.95
compressHybridMethod · 0.95

Calls 2

CompressMethod · 0.65

Tested by

no test coverage detected