* 构建包含上下文的消息列表
(
userMessage: string,
systemPrompt?: string,
filterOptions?: ContextFilter
)
| 333 | * 构建包含上下文的消息列表 |
| 334 | */ |
| 335 | public async buildMessagesWithContext( |
| 336 | userMessage: string, |
| 337 | systemPrompt?: string, |
| 338 | filterOptions?: ContextFilter |
| 339 | ): Promise<ContextMessage[]> { |
| 340 | this.ensureReady(); |
| 341 | |
| 342 | const messages: ContextMessage[] = []; |
| 343 | |
| 344 | // 添加系统提示词 |
| 345 | if (systemPrompt) { |
| 346 | messages.push({ |
| 347 | id: `sys_${Date.now()}`, |
| 348 | role: 'system', |
| 349 | content: systemPrompt, |
| 350 | timestamp: Date.now(), |
| 351 | }); |
| 352 | } |
| 353 | |
| 354 | // 获取并添加历史上下文 |
| 355 | const { context, compressed } = await this.getFormattedContext(filterOptions); |
| 356 | |
| 357 | if (compressed) { |
| 358 | // 使用压缩后的上下文 |
| 359 | messages.push(...compressed.recentMessages); |
| 360 | } else { |
| 361 | // 使用完整的上下文 |
| 362 | messages.push(...context.layers.conversation.messages); |
| 363 | } |
| 364 | |
| 365 | // 添加当前用户消息 |
| 366 | const currentMessage: ContextMessage = { |
| 367 | id: `user_${Date.now()}`, |
| 368 | role: 'user', |
| 369 | content: userMessage, |
| 370 | timestamp: Date.now(), |
| 371 | }; |
| 372 | messages.push(currentMessage); |
| 373 | |
| 374 | // 将用户消息添加到上下文中 |
| 375 | await this.addUserMessage(userMessage); |
| 376 | |
| 377 | return messages; |
| 378 | } |
| 379 | |
| 380 | /** |
| 381 | * 检查上下文组件是否已准备就绪 |
no test coverage detected