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

Method compress

pkg/agent/prompt_builder.go:191–242  ·  view source on GitHub ↗

compress 执行压缩

(ctx context.Context, prompt string, pCtx *PromptContext)

Source from the content-addressed store, hash-verified

189
190// compress 执行压缩
191func (pb *PromptBuilder) compress(ctx context.Context, prompt string, pCtx *PromptContext) (string, error) {
192 if pb.compressor == nil {
193 return prompt, nil
194 }
195
196 config := pCtx.Template.Runtime.PromptCompression
197
198 // 构建压缩选项
199 opts := &CompressOptions{
200 TargetLength: config.TargetLength,
201 PreserveSections: config.PreserveSections,
202 }
203
204 // 设置默认值
205 if opts.TargetLength == 0 {
206 opts.TargetLength = 3000
207 }
208 if len(opts.PreserveSections) == 0 {
209 opts.PreserveSections = []string{"Tools Manual", "Security Guidelines"}
210 }
211
212 // 设置压缩模式
213 switch config.Mode {
214 case "simple":
215 opts.Mode = CompressionModeSimple
216 case "llm":
217 opts.Mode = CompressionModeLLM
218 case "hybrid":
219 opts.Mode = CompressionModeHybrid
220 default:
221 opts.Mode = CompressionModeHybrid
222 }
223
224 // 设置压缩级别
225 switch config.Level {
226 case 1:
227 opts.Level = CompressionLevelLight
228 case 2:
229 opts.Level = CompressionLevelModerate
230 case 3:
231 opts.Level = CompressionLevelAggressive
232 default:
233 opts.Level = CompressionLevelModerate
234 }
235
236 result, err := pb.compressor.Compress(ctx, prompt, opts)
237 if err != nil {
238 return prompt, err
239 }
240
241 return result.Compressed, nil
242}
243
244// collectEnvironmentInfo 收集环境信息
245// sessionTime 参数用于 KV-Cache 优化:在同一会话中保持时间戳稳定,避免缓存失效

Callers 1

BuildMethod · 0.95

Calls 1

CompressMethod · 0.65

Tested by

no test coverage detected