Ir al contenido principal

read_file

La herramienta read_file examina el contenido de los archivos de un proyecto. Permite a AI Cockpit Reasoning comprender el código, los archivos de configuración y la documentación para brindar una mejor asistencia.

Parámetros​

La herramienta acepta estos parámetros:

  • path (requerido): La ruta del archivo a leer, relativa al directorio de trabajo actual
  • start_line (opcional): El número de línea inicial desde donde comenzar a leer (indexación basada en 1)
  • end_line (opcional): El número de línea final hasta donde leer (basado en 1, inclusivo)
  • auto_truncate (opcional): Si se deben truncar automáticamente los archivos grandes cuando no se especifica un rango de líneas (true/false)

Qué Hace​

Esta herramienta lee el contenido de un archivo especificado y lo devuelve con números de línea para facilitar la referencia. Puede leer archivos completos o secciones específicas, e incluso extraer texto de archivos PDF y documentos Word.

¿Cuándo se usa?​

  • Cuando AI Cockpit Reasoning necesita comprender la estructura del código existente
  • Cuando AI Cockpit Reasoning necesita analizar archivos de configuración
  • Cuando AI Cockpit Reasoning necesita extraer información de archivos de texto
  • Cuando AI Cockpit Reasoning necesita ver el código antes de sugerir cambios
  • Cuando se necesita hacer referencia a números de línea específicos en las discusiones

Características Principales​

  • Muestra el contenido del archivo con números de línea para facilitar la referencia
  • Puede leer porciones específicas de archivos especificando rangos de líneas
  • Extrae texto legible de archivos PDF y DOCX
  • Trunca inteligentemente los archivos grandes para enfocarse en las secciones más relevantes
  • Proporciona resúmenes de métodos con rangos de líneas para archivos de código grandes
  • Transmite eficientemente solo los rangos de líneas solicitados para un mejor rendimiento
  • Facilita la discusión de partes específicas del código con numeración de líneas

Limitaciones​

  • Puede no manejar eficientemente archivos extremadamente grandes sin usar parámetros de rango de líneas
  • Para archivos binarios (excepto PDF y DOCX), puede devolver contenido que no es legible por humanos

Cómo Funciona​

Cuando se invoca la herramienta read_file, sigue este proceso:

  1. Validación de Parámetros: Valida el parámetro path requerido y los parámetros opcionales
  2. Resolución de Ruta: Resuelve la ruta relativa a una ruta absoluta
  3. Selección de Estrategia de Lectura:
    • La herramienta usa una jerarquía de prioridad estricta (explicada en detalle a continuación)
    • Elige entre lectura por rango, truncado automático o lectura completa del archivo
  4. Procesamiento de Contenido:
    • Agrega números de línea al contenido (p. ej., "1 | const x = 13") donde 1 | es el número de línea
    • Para archivos truncados, agrega un aviso de truncado y definiciones de métodos
    • Para formatos especiales (PDF, DOCX, IPYNB), extrae texto legible

Prioridad de Estrategia de Lectura​

La herramienta usa una jerarquía de decisión clara para determinar cómo leer un archivo:

  1. Primera Prioridad: Rango de Líneas Explícito

    • Si se proporciona start_line o end_line, la herramienta siempre realiza una lectura por rango
    • La implementación transmite eficientemente solo las líneas solicitadas, lo que la hace adecuada para procesar archivos grandes
    • Esto tiene prioridad sobre todas las demás opciones
  2. Segunda Prioridad: Truncado Automático para Archivos Grandes

    • Esto solo aplica cuando se cumplen TODAS estas condiciones:
      • No se especifica ni start_line ni end_line
      • El parámetro auto_truncate está establecido en true
      • El archivo no es un archivo binario
      • El archivo supera el umbral de líneas configurado (típicamente 500-1000 líneas)
    • Cuando se activa el truncado automático, la herramienta:
      • Lee solo la primera porción del archivo (determinada por la configuración maxReadFileLine)
      • Agrega un aviso de truncado que muestra el número de líneas mostradas vs. el total
      • Proporciona un resumen de las definiciones de métodos con sus rangos de líneas
  3. Comportamiento Predeterminado: Leer el Archivo Completo

    • Si no se cumple ninguna de las condiciones anteriores, lee el contenido completo del archivo
    • Para formatos especiales como PDF, DOCX e IPYNB, usa extractores especializados

Ejemplos de Uso​

  • Al pedir que se explique o mejore el código, AI Cockpit Reasoning primero lee los archivos relevantes para comprender la implementación actual.
  • Al solucionar problemas de configuración, AI Cockpit Reasoning lee los archivos de configuración para identificar posibles problemas.
  • Al trabajar con documentación, AI Cockpit Reasoning lee los documentos existentes para comprender el contenido actual antes de sugerir mejoras.

Ejemplos de Uso​

Aquí hay varios escenarios que demuestran cómo se usa la herramienta read_file y la salida típica que podrías recibir.

Leer un Archivo Completo​

Para leer el contenido completo de un archivo:

Entrada:

<read_file>
<path>src/app.js</path>
</read_file>

Salida Simulada (para un archivo pequeño como example_small.txt):

1 | Esta es la primera línea.
2 | Esta es la segunda línea.
3 | Esta es la tercera línea.

(La salida variará según el contenido real del archivo)

Leer Líneas Específicas​

Para leer solo un rango específico de líneas (p. ej., 46-68):

Entrada:

<read_file>
<path>src/app.js</path>
<start_line>46</start_line>
<end_line>68</end_line>
</read_file>

Salida Simulada (para las líneas 2-3 de example_five_lines.txt):

2 | Contenido de la línea dos.
3 | Contenido de la línea tres.

(La salida muestra solo las líneas solicitadas con sus números de línea originales)

Leer un Archivo Grande (Truncado Automático)​

Al leer un archivo grande sin especificar líneas y con auto_truncate habilitado (o predeterminado en true según la configuración):

Entrada:

<read_file>
<path>src/large-module.js</path>
<auto_truncate>true</auto_truncate> <!-- Opcional si el predeterminado es true -->
</read_file>

Salida Simulada (para large_file.log con 1500 líneas, límite 1000):

1 | Entrada de registro 1...
2 | Entrada de registro 2...
...
1000 | Entrada de registro 1000...
[... truncadas 500 líneas ...]

(La salida está limitada al máximo de líneas configurado, con un aviso de truncado)

Intentar Leer un Archivo Inexistente​

Si el archivo especificado no existe:

Entrada:

<read_file>
<path>non_existent_file.txt</path>
</read_file>

Salida Simulada (Error):

Error: Archivo no encontrado en la ruta 'non_existent_file.txt'.

Intentar Leer un Archivo Bloqueado​

Si el archivo está excluido por reglas en un archivo .aicockpitcodeignore:

Entrada:

<read_file>
<path>.env</path>
</read_file>

Salida Simulada (Error):

Error: Acceso denegado al archivo '.env' debido a las reglas de .aicockpitcodeignore.