Ir al contenido principal

write_to_file

La herramienta write_to_file crea nuevos archivos o reemplaza completamente el contenido de archivos existentes mediante un proceso de aprobación interactivo. Proporciona una vista de diferencias para revisar los cambios antes de aplicarlos.

Parámetros​

La herramienta acepta estos parámetros:

  • path (requerido): La ruta del archivo donde escribir, relativa al directorio de trabajo actual
  • content (requerido): El contenido completo a escribir en el archivo
  • line_count (requerido): El número de líneas del archivo, incluyendo las líneas vacías

Qué Hace​

Esta herramienta escribe contenido en un archivo especificado, ya sea creando un nuevo archivo si no existe o sobrescribiendo completamente uno existente. Todos los cambios requieren aprobación explícita del usuario a través de una interfaz de vista de diferencias, donde los usuarios pueden revisar e incluso editar los cambios propuestos antes de aplicarlos.

¿Cuándo se usa?​

  • Cuando AI Cockpit Reasoning necesita crear un nuevo archivo desde cero
  • Cuando AI Cockpit Reasoning necesita reescribir completamente un archivo existente
  • Al crear múltiples archivos para un nuevo proyecto
  • Al generar archivos de configuración, documentación o código fuente
  • Cuando necesitas revisar los cambios antes de aplicarlos

Características Principales​

  • Aprobación Interactiva: Muestra los cambios en una vista de diferencias que requiere aprobación explícita antes de aplicar
  • Soporte de Edición del Usuario: Permite editar el contenido propuesto antes de la aprobación final
  • Medidas de Seguridad: Detecta omisiones de código, valida rutas y previene contenido truncado
  • Integración con el Editor: Abre una vista de diferencias que se desplaza automáticamente a la primera diferencia
  • Preprocesamiento de Contenido: Maneja artefactos de diferentes modelos de IA para garantizar contenido limpio
  • Control de Acceso: Valida contra las restricciones de .aicockpitcodeignore antes de realizar cambios
  • Directorios Padre: Puede manejar la creación de directorios a través de dependencias del sistema
  • Reemplazo Completo: Proporciona un archivo completamente transformado en una sola operación

Limitaciones​

  • No adecuado para archivos existentes: Mucho más lento y menos eficiente que apply_diff para modificar archivos existentes
  • Rendimiento con archivos grandes: La operación se vuelve significativamente más lenta con archivos más grandes
  • Sobrescritura completa: Reemplaza todo el contenido del archivo, no puede preservar el contenido original
  • Recuento de líneas requerido: Necesita un recuento preciso de líneas para detectar posible truncado de contenido
  • Sobrecarga de revisión: El proceso de aprobación agrega pasos adicionales en comparación con las ediciones directas
  • Solo interactivo: No se puede usar en flujos de trabajo automatizados que requieren ejecución no interactiva

Cómo Funciona​

Cuando se invoca la herramienta write_to_file, sigue este proceso:

  1. Validación de Parámetros: Valida los parámetros requeridos y los permisos

    • Verifica que se proporcionen path, content y line_count
    • Valida que el archivo esté permitido (no restringido por .aicockpitcodeignore)
    • Garantiza que la ruta esté dentro de los límites del espacio de trabajo
    • Realiza seguimiento de conteos de errores consecutivos para parámetros faltantes
    • Muestra mensajes de error específicos para cada fallo de validación
  2. Preprocesamiento de Contenido:

    • Elimina marcadores de bloques de código que podrían agregar los modelos de IA
    • Maneja entidades HTML escapadas (específicamente para modelos que no son Claude)
    • Elimina números de línea si se incluyen accidentalmente en el contenido
    • Realiza procesamiento específico del modelo para diferentes proveedores de IA
  3. Generación de Vista de Diferencias:

    • Abre una vista de diferencias en el editor mostrando los cambios propuestos
    • Agrega un retraso de 300ms para garantizar la capacidad de respuesta de la interfaz
    • Se desplaza automáticamente a la primera diferencia
    • Resalta los cambios para facilitar la revisión
  4. Proceso de Aprobación del Usuario:

    • Espera la aprobación explícita del usuario para continuar
    • Permite a los usuarios editar el contenido en la vista de diferencias
    • Captura cualquier edición del usuario para el contenido final
    • Proporciona la opción de rechazar los cambios por completo
    • Detecta e incorpora las modificaciones del usuario en el resultado final
  5. Validación de Seguridad:

    • Detecta posible truncado de contenido comparando con el recuento de líneas proporcionado
    • Muestra advertencias si el contenido parece incompleto
    • Valida la ruta del archivo y los permisos de acceso
    • Verifica específicamente si los archivos están fuera del espacio de trabajo con el indicador isOutsideWorkspace
  6. Escritura del Archivo:

    • Escribe el contenido aprobado (con cualquier edición del usuario) en el archivo
    • Proporciona confirmación de escritura exitosa
    • Restablece el contador de errores consecutivos al tener éxito

Ejemplos de Uso​

  • Al crear un nuevo proyecto, AI Cockpit Reasoning genera múltiples archivos pero te permite revisar cada uno antes de confirmar los cambios.
  • Al configurar archivos de configuración, AI Cockpit Reasoning muestra la configuración propuesta en una vista de diferencias para su aprobación.
  • Al generar documentación, AI Cockpit Reasoning crea archivos markdown pero te permite hacer ajustes finales en la vista de diferencias.
  • Al desarrollar un prototipo, AI Cockpit Reasoning muestra archivos fuente completos en una vista de diferencias donde puedes ajustar antes de guardar.

Ejemplos de Uso​

Crear un nuevo archivo de configuración JSON:

<write_to_file>
<path>config/settings.json</path>
<content>
{
"apiEndpoint": "https://api.example.com",
"theme": {
"primaryColor": "#007bff",
"secondaryColor": "#6c757d",
"fontFamily": "Arial, sans-serif"
},
"features": {
"darkMode": true,
"notifications": true,
"analytics": false
},
"version": "1.0.0"
}