PROMPT PARA COPILOTO: Corrección de Optimización de Workspace¶
Contexto del Proyecto¶
Estás trabajando en Calmia Nexus, una plataforma de orquestación de agentes IA construida con .NET 9, Blazor Server y PostgreSQL. El proyecto está en Z:\Repositorios\platform.
Problema a Resolver¶
Se han identificado tres bugs críticos que causan: 1. Consumo excesivo de tokens (el resumen de historial NO funciona) 2. Mala experiencia de usuario (caja de memorias muy pequeña) 3. Documentación desactualizada (menciona código que no existe)
TAREA 1: Integrar HistoryManagerService en DevSessionService (CRÍTICA)¶
Archivos involucrados:¶
Shared/Shared.Admin/Services/DevSessionService.cs- MODIFICARShared/Shared.Admin/Services/HistoryManagerService.cs- SOLO LEER (ya implementado)Orchestrator/src/Orchestrator.Api/Program.cs- VERIFICAR registro DIOrchestrator/src/Orchestrator.Admin/Program.cs- VERIFICAR registro DI
Instrucciones paso a paso:¶
-
Lee primero
HistoryManagerService.cspara entender la interfazIHistoryManagerServicey el métodoGetOptimizedHistoryAsync() -
Modifica
DevSessionService.cs: - Agrega
IHistoryManagerService _historyManagercomo campo privado - Inyéctalo en el constructor
- Busca las líneas ~392-395 donde se construye
historyMessagesdirectamente desdesession.Messages -
Reemplaza esa lógica para usar
_historyManager.GetOptimizedHistoryAsync() -
Código de referencia para el reemplazo:
// BUSCAR ESTE PATRÓN (aproximadamente líneas 392-395):
var historyMessages = session.Messages
.OrderBy(m => m.SentAt)
.Select(m => new { role = m.Role, content = m.Content })
.ToList();
// REEMPLAZAR CON:
var optimizedHistory = await _historyManager.GetOptimizedHistoryAsync(
session.Id,
maxTokens: 50000,
preserveRecentCount: 10
);
var historyMessages = optimizedHistory
.Select(m => new { role = m.Role, content = m.Content })
.ToList();
_logger.LogInformation(
"Historial optimizado para sesión {SessionId}: {Original} -> {Optimizado} mensajes",
session.Id,
session.Messages.Count,
historyMessages.Count
);
- Verifica que
IHistoryManagerServiceesté registrado en DI: - Busca en
Program.csde Api y Admin -
Si no existe, agrega:
services.AddScoped<IHistoryManagerService, HistoryManagerService>(); -
Compila y verifica:
TAREA 2: Corregir caja de texto de memorias (MEDIA)¶
Archivo a modificar:¶
Orchestrator/src/Orchestrator.Admin/Components/Pages/Workspace/MemoriesPanel.razor
Instrucciones:¶
-
Busca el
MudTextFieldpara_newMemoryContent(aproximadamente línea 51-59) -
Modifica agregando las propiedades
Lines,AutoGrowyMaxLines:
<!-- BUSCAR: -->
<MudTextField @bind-Value="_newMemoryContent"
Label="Nueva memoria"
Variant="Variant.Outlined"
FullWidth="true"
Class="mb-2" />
<!-- REEMPLAZAR CON: -->
<MudTextField @bind-Value="_newMemoryContent"
Label="Nueva memoria"
Variant="Variant.Outlined"
FullWidth="true"
Lines="4"
AutoGrow="true"
MaxLines="10"
Placeholder="Escribe una memoria para el copiloto. Puede incluir contexto, preferencias, o información importante del proyecto..."
HelperText="Las memorias persisten entre sesiones y ayudan al copiloto a mantener contexto"
Class="mb-2" />
TAREA 3: Actualizar documentación (BAJA)¶
Archivos a modificar:¶
docs/features/WORKSPACE_COMPLETE_ROADMAP.mddocs/features/AUDITORIA-IMPLEMENTACION-WORKSPACE.md
Instrucciones:¶
- En
WORKSPACE_COMPLETE_ROADMAP.md: - Busca referencias a "ContextOptimizer"
- Reemplaza con "HistoryManagerService"
-
Actualiza el estado de la feature de optimización a "Implementado"
-
En
AUDITORIA-IMPLEMENTACION-WORKSPACE.md: - Marca como completado el item de optimización de tokens
- Agrega nota sobre la corrección realizada
TAREA 4: Agregar tests (RECOMENDADA)¶
Archivo a crear:¶
Tests/Shared.Admin.Tests/Services/HistoryManagerServiceTests.cs(si no existe)
Test mínimo a implementar:¶
using Xunit;
using Moq;
using Microsoft.Extensions.Logging;
namespace Shared.Admin.Tests.Services;
public class HistoryOptimizationTests
{
[Fact]
public async Task DevSessionService_ShouldUseOptimizedHistory()
{
// Este test verifica que DevSessionService llama a IHistoryManagerService
// Implementar con mocks apropiados
}
[Fact]
public async Task GetOptimizedHistory_ShouldPreserveRecentMessages()
{
// Verificar que los últimos N mensajes se preservan sin resumir
}
}
Verificación Final¶
Después de completar todas las tareas, ejecuta:
# Compilar
cd Z:\Repositorios\platform
dotnet build
# Ejecutar tests
dotnet test
# Iniciar la aplicación y verificar manualmente:
# 1. Ir al Workspace
# 2. Crear una sesión con >15 mensajes
# 3. Verificar en logs que aparece "Historial optimizado"
# 4. Verificar que la caja de memorias es multi-línea
Criterios de Aceptación¶
- [ ]
DevSessionServiceinyecta y usaIHistoryManagerService - [ ] El log muestra "Historial optimizado" con conteo antes/después
- [ ] La caja de memorias tiene 4 líneas iniciales y puede crecer
- [ ]
dotnet buildcompila sin errores ni warnings nuevos - [ ]
dotnet testpasa todas las pruebas existentes - [ ] La documentación refleja la implementación real
Notas Adicionales¶
- NO crees nuevas clases -
HistoryManagerServiceya existe y funciona - Mantén el código existente - Solo modifica lo necesario
- Agrega logging - Es crucial para monitorear en producción
- Pregunta si hay dudas - Mejor preguntar que romper algo