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"
}