Saltar a contenido

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 - MODIFICAR
  • Shared/Shared.Admin/Services/HistoryManagerService.cs - SOLO LEER (ya implementado)
  • Orchestrator/src/Orchestrator.Api/Program.cs - VERIFICAR registro DI
  • Orchestrator/src/Orchestrator.Admin/Program.cs - VERIFICAR registro DI

Instrucciones paso a paso:

  1. Lee primero HistoryManagerService.cs para entender la interfaz IHistoryManagerService y el método GetOptimizedHistoryAsync()

  2. Modifica DevSessionService.cs:

  3. Agrega IHistoryManagerService _historyManager como campo privado
  4. Inyéctalo en el constructor
  5. Busca las líneas ~392-395 donde se construye historyMessages directamente desde session.Messages
  6. Reemplaza esa lógica para usar _historyManager.GetOptimizedHistoryAsync()

  7. 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
);
  1. Verifica que IHistoryManagerService esté registrado en DI:
  2. Busca en Program.cs de Api y Admin
  3. Si no existe, agrega: services.AddScoped<IHistoryManagerService, HistoryManagerService>();

  4. Compila y verifica:

    cd Z:\Repositorios\platform
    dotnet build
    


TAREA 2: Corregir caja de texto de memorias (MEDIA)

Archivo a modificar:

  • Orchestrator/src/Orchestrator.Admin/Components/Pages/Workspace/MemoriesPanel.razor

Instrucciones:

  1. Busca el MudTextField para _newMemoryContent (aproximadamente línea 51-59)

  2. Modifica agregando las propiedades Lines, AutoGrow y MaxLines:

<!-- 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.md
  • docs/features/AUDITORIA-IMPLEMENTACION-WORKSPACE.md

Instrucciones:

  1. En WORKSPACE_COMPLETE_ROADMAP.md:
  2. Busca referencias a "ContextOptimizer"
  3. Reemplaza con "HistoryManagerService"
  4. Actualiza el estado de la feature de optimización a "Implementado"

  5. En AUDITORIA-IMPLEMENTACION-WORKSPACE.md:

  6. Marca como completado el item de optimización de tokens
  7. 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

  • [ ] DevSessionService inyecta y usa IHistoryManagerService
  • [ ] El log muestra "Historial optimizado" con conteo antes/después
  • [ ] La caja de memorias tiene 4 líneas iniciales y puede crecer
  • [ ] dotnet build compila sin errores ni warnings nuevos
  • [ ] dotnet test pasa todas las pruebas existentes
  • [ ] La documentación refleja la implementación real

Notas Adicionales

  • NO crees nuevas clases - HistoryManagerService ya 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