

# Cómo conservar investigaciones de perfiles de X respaldadas por fuentes en la memoria del agente

Guardá los hechos de las fuentes por separado de las suposiciones del agente para poder actualizar los juicios cuando cambien los datos del perfil. Un Actor es un programa alojado de recopilación de datos. Una Task es una configuración de entrada guardada. El Actor recopila las filas de las fuentes, mientras vos hacés el análisis. Una Task pública es una configuración de entrada inicial, no una prueba de que el análisis se ejecute por sí solo.

El Actor X Profile, en su compilación pública 1.0.4, solo acepta un arreglo `profiles` de URL o nombres de usuario de perfiles públicos conocidos. No contiene parámetros para descubrir perfiles, obtener publicaciones o historial, seleccionar el idioma ni definir `maxItems`.

La configuración pública de la Task guardada incluye perfiles de ejemplo (`OpenAI`, `NASA`, `elonmusk`). Antes de ejecutar una comprobación, reemplazá toda la lista de ejemplo de `profiles` por el único perfil que querés consultar, en lugar de ejecutar `OpenAI` como ejemplo.

Los campos nativos de cada fila incluyen: `input`, `profileId`, `profileUrl`, `handle`, `displayName`, `biography`, `website`, `location`, `followersCount`, `profileMetricStatus`, `status`, `failureCategory`, `statusReason` y `observedAt`.

En una ejecución de control con un único perfil, correspondiente al ID del perfil de OpenAI, la comprobación fue exitosa: había biografía y sitio web, se disponía de cantidades exactas de seguidores y faltaba la ubicación. El resumen de salida de la ejecución informó:

- `inputCount`: 1
- `datasetRows`: 1
- `usefulRows`: 1
- `billableRows`: 1
- `failedRows`: 0
- `statusCounts`: `{"ok": 1}`
- `stopReason`: `inputs_exhausted`

El campo nativo `profileMetricStatus` es un objeto que asigna a cada métrica un valor de precisión: `exact` o `unavailable`. Este control solo demuestra la recuperación de datos de la fuente. No realiza almacenamiento persistente en memoria, seguimiento del historial de identidad de la cuenta, verificación de conocimientos especializados sobre un tema ni análisis de la capacidad de procesamiento de listas grandes de perfiles.

## Pasos para gestionar la memoria de perfiles

1. Definí tu pregunta de investigación específica y el propósito del perfil antes de elegir la URL o el nombre de usuario de un perfil público conocido. No uses opciones de descubrimiento, historial ni cantidad máxima de elementos, ya que el generador de perfiles solo acepta nombres de usuario o URL específicos.
2. Ejecutá tu Task con una entrada que reemplace toda la lista de ejemplo guardada por el único perfil que querés consultar. Usá un marcador de posición explícito como `{"profiles": ["https://x.com/YOUR_TARGET_PROFILE"]}` en lugar de ejecutar un ejemplo ficticio.
3. Guardá la fila nativa como una observación de hechos con fecha. Agregá un identificador local de observación, la referencia de compilación del Actor y los resultados de la recopilación. Conservá los valores originales de profileId y observedAt.
4. Creá un registro de juicio separado con un identificador local de juicio, tu pregunta, una versión de la regla y referencias a la evidencia. Cada referencia apunta a un identificador de observación y a una ruta de campo, como biography.
5. Escribí interpretaciones de alcance limitado que correspondan únicamente al texto exacto de la fuente. No uses la cantidad de seguidores como prueba de conocimientos especializados.
6. Agregá una nueva observación nativa en la siguiente sesión en lugar de sobrescribir los datos anteriores. Comprobá que la identidad de la cuenta coincida antes de comparar los hechos.
7. Comprobá cada dependencia del juicio. Si cambia un campo necesario, marcá el juicio como pendiente de revisión. Si falla una actualización, indicá que no hay respaldo actualizado disponible en lugar de copiar el texto anterior.
8. Entregá a tu próxima sesión del agente un paquete pequeño con los hechos actuales, los juicios respaldados y la información que falta. Vinculá cada decisión con el campo de la fuente que la respalda.

## Ejemplo resuelto paso a paso de seguimiento de perfiles

Todos los registros de ejemplo que siguen son ficticios y de creación original.

La observación O1 para profileId P100 tiene la biografía "Desarrollo herramientas de datos en Python", el sitio web https://cedar.example, y el estado de la fuente ok. El juicio J1, según la regla R1, indica que sí hay correspondencia entre la biografía declarada y el desarrollo de herramientas de datos en Python. Su referencia de evidencia apunta a la biografía de O1. En los aspectos desconocidos, indica que no se comprobaron las publicaciones reales ni los conocimientos especializados.

En la segunda comprobación, la observación O2 tiene el mismo profileId, la biografía "Hago videos de jardinería" y el mismo sitio web. Cambió la biografía de la que depende J1, por lo que lo marcamos como pendiente de revisión. Un juicio revisado, J2, indica que la biografía declarada actualmente no corresponde al tema según la regla R1, y se vincula con la biografía de O2. Conservamos J1 como registro histórico correspondiente a O1. Que el sitio web no haya cambiado no permite sostener un juicio sobre el tema que dependía de un texto diferente.

En la tercera comprobación, falla la actualización desde la fuente y la biografía no está disponible. Guardamos en O3 el resultado real del fallo y su fecha y hora, e indicamos que no hay respaldo actualizado disponible. No copiamos la biografía de O2 en O3 como si la hubiéramos observado ahora. El juicio J2 sigue siendo una interpretación respaldada del pasado, no un hallazgo actual.

Los siguientes 3 registros de observaciones inmutables y 2 registros de juicios que dependen de ellas son ficticios y de creación original.

### Observaciones de hechos (registros inmutables de las fuentes)

| ID de observación | Referencia del perfil objetivo | `profileId` nativo | `observedAt` | Biografía / campos nativos | Resultado / estado nativo |
| --- | --- | --- | --- | --- | --- |
| `O1` | `https://x.com/user_p100` | `P100` | `2026-10-10T10:00:00Z` | `biography`: "Desarrollo herramientas de datos en Python."<br>`website`: "https://cedar.example" | `status`: "ok"<br>`failureCategory`: null |
| `O2` | `https://x.com/user_p100` | `P100` | `2026-10-11T10:00:00Z` | `biography`: "Hago videos de jardinería."<br>`website`: "https://cedar.example" | `status`: "ok"<br>`failureCategory`: null |
| `O3` | Referencia del perfil objetivo: `P100` | `unknown` | `2026-10-12T10:00:00Z` | `biography`: `unknown`<br>`website`: `unknown` | `status`: "failed"<br>`failureCategory`: "rate_limit" |

*Nota: En `O3`, nunca se copian los valores nativos anteriores de identidad o biografía de `P100` en la observación fallida. La referencia al nombre de usuario del perfil objetivo se conserva por separado, mientras que los campos nativos permanecen como `unknown`.*

### Juicios dependientes (registros de memoria del agente)

#### Juicio `J1` (sesión inicial)

- ID del juicio: `J1`
- Pregunta: ¿Este perfil declara que se enfoca en herramientas de datos en Python?
- Decisión: `stated_bio_fit = yes`
- Versión de la regla: `R1`
- Referencias de evidencia: `O1.biography`
- Estado: `historical_at_O1` (originalmente `supported`)
- Aspectos desconocidos: No se comprobaron las publicaciones reales ni se verificaron los conocimientos especializados sobre el tema.
- Fecha y hora de revisión: `2026-10-10T10:05:00Z`
- Motivo: Evaluación inicial basada en `O1.biography`.

#### Juicio `J2` (sesión de seguimiento y actualización fallida)

- ID del juicio: `J2`
- Pregunta: ¿Este perfil declara que se enfoca en herramientas de datos en Python?
- Decisión: `current_stated_bio_fit = no`
- Versión de la regla: `R1`
- Referencias de evidencia: `O2.biography`
- Estado: `fresh_support_unavailable` (pasó de `supported` en `O2` a `fresh_support_unavailable` después del fallo de `O3`)
- Aspectos desconocidos: Se desconoce el estado actual del perfil debido al fallo de actualización de `O3`. Las publicaciones siguen sin comprobarse.
- Fecha y hora de revisión: `2026-10-12T10:01:00Z`
- Motivo: El texto de `O2.biography` cambió y pasó a referirse a videos de jardinería, lo que invalidó `J1` y dio lugar a `J2`. Cuando falló `O3`, dejó de haber respaldo actualizado disponible; el respaldo anterior se conservó como `historical_at_O2`. Que el campo `website` no haya cambiado no renueva el respaldo del juicio que depende del campo `biography` modificado.

## Próxima acción

Usá el [Chronometrica X Profile Metrics Actor](https://apify.com/chronometrica/x-profile-metrics) y la [Task X Profile Data API Dataset](https://apify.com/chronometrica/x-profile-metrics/examples/x-profile-data-api-dataset) para recopilar hechos actuales del perfil, guardar un registro de observación con fecha junto con el juicio que depende de él y referencias explícitas a los campos, y pasar a tu próxima sesión del agente un paquete estructurado con el respaldo actual, los juicios históricos y la información que falta.

## Fuentes y lecturas adicionales

- [X Profile Data API Dataset](https://apify.com/chronometrica/x-profile-metrics/examples/x-profile-data-api-dataset)