¿Qué hace ne-slop-text?
Slop es el promedio: lo que un modelo escribe cuando llena un vacío con el movimiento más probable, o cuando se le pide "mejorarlo". Vive en las decisiones (qué se dice explícitamente, quién impulsa los eventos, cómo termina, qué se enumera, quién se nombra), no en las palabras. Cambiar palabras no lo arregla: StoryScope (Russell et al., COLM 2026) separa historias de IA de las humanas con un 93% de F1 solo con características del discurso, y una reescritura superficial profesional movió la detección solo del 95,5% al 93,9%. Los modelos se agrupan en una región; las personas se dispersan. Por lo tanto, esta habilidad no aplica una receta fija. Encuentra, para cada tarea, dónde aterrizan los modelos por defecto, y aleja el borrador de allí usando material de la persona.
Cómo se encontró y probó el pipeline: docs/evidence.md. Las rutas a continuación son relativas al directorio de esta habilidad.
Entradas
- Una tarea (qué escribir, para quién, por qué) o una fuente (un texto a corregir).
- Contexto, opcional: documentos, hechos, las propias palabras de la persona (transcripciones de voz, chats, notas internas).
Elige el modo
- Corto (menos de ~120 palabras: respuestas de chat, mensajes cortos, títulos): Paso 1, luego Paso 3. El bucle no tiene señal a esta longitud; en una prueba ciega, resúmenes de 100 palabras escritos de cinco maneras diferentes eran indistinguibles.
- Completo (cualquier texto más largo que vaya a otras personas): Pasos 1, 2, 3, 4. Paso 5 cuando el texto importa o el usuario lo solicita.
Paso 1. Filosofía, antes de escribir
- Material primero. Encuentra lo que solo esta persona tiene: un episodio específico; una opinión que sostiene; una fuerza distinta a ellos que moldeó los eventos (alguien empujó, algo se heredó, algo falló); una reserva o un límite; su propio lenguaje. Los textos antiguos del mismo género (CVs y cartas anteriores) dan hechos, no voz.
- Material faltante. Si el texto importa, haz de 1 a 3 preguntas cortas; las respuestas de voz son mejores, guarda la transcripción como material. Haz preguntas abiertas que no sugieran la respuesta: "¿cómo sucedió realmente", "¿hubo un caso", "¿qué opinas sobre X", "¿qué no puedes hacer todavía". Si no puedes preguntar, usa detalles verificables (nombres, números, fuentes) y deja los vacíos visibles. Nunca llenes un vacío con el promedio.
- El lector y su código. ¿Qué pidieron literalmente? ¿Qué palabras y chistes usan? Responder con sus propias palabras está vivo cuando hace un punto ("Su anuncio pide justicia, así que no afirmaré ser el mejor: no he conocido a los otros candidatos"). Usar sus palabras como etiquetas o encabezados es slop.
- Redacta cerca del material. El orden de pensamiento de la persona, sus reservas ("probablemente", "en general"), traducción literal en lugar de idiomática, primera persona con verbos cortos: "Dirijo a 3 ingenieros de QA y firmo las versiones" fue marcado como vivo; "Lidero un equipo de 3 ingenieros de QA y soy responsable de la aprobación de versiones" fue marcado como slop.
- El género vive en el contenedor (formato, longitud, saludo, campos obligatorios), no en cada oración. Las listas van donde corresponden (una sección de habilidades, una tabla, el CV adjunto); una oración lleva un episodio o un mecanismo.
- Duda de lo que llega fácil. Si una oración llegó sin una decisión, probablemente es el promedio.
Paso 2. El bucle: alejarse del valor por defecto (modo completo)
- Valores por defecto. Genera 3 agentes nuevos en diferentes modelos (p. ej. opus, sonnet, haiku). Dale a cada uno la tarea simple y
el mismo contexto con
loop/default_prompt.md. No deben ver esta habilidad, el borrador ni entre sí. - Anotar. Un agente nuevo más, en un modelo diferente al del escritor, anota el borrador y los valores por defecto
con
loop/questionnaire.json, siguiendoloop/annotator.md. Salida:features.json. - Informe.
python3 loop/consensus.py loop/questionnaire.json features.json D1,D2,D3 DRAFT TEXTS_DIR > report.txtda P1 (el borrador hace lo que hace cada valor por defecto, y se inclina hacia lo mecánico), P2 (se inclina hacia lo mecánico por peso), Conservar (inclinación humana, no perder), los 4-gramas compartidos con los valores por defecto y qué tan cerca está la oración de apertura de la de ellos. - Revisar. Un agente nuevo aplica
loop/reviser.mdal borrador con el informe y el contexto. El material supera a los pesos: una oración que reproduce las propias palabras de la persona se mantiene incluso si una característica la marca. - Detener después de un máximo de 2 rondas, o cuando P1 esté vacío. El texto no debe alargarse.
Costo: aproximadamente de 6 a 8 llamadas al agente y de 3 a 5 minutos. El consenso por sí solo no es slop: cuando el contexto es rico, cada valor por defecto también tiene un episodio específico. Una marca necesita ambas cosas: los valores por defecto están de acuerdo, y la característica se inclina hacia lo mecánico. Algún acuerdo es solo el género (un README dice cómo instalar); dile al revisor cuál es el contenedor.
Paso 3. Lint, al final
python3 lint/lint.py FILE --lang en (o ru), luego lee lint/en.md o lint/ru.md. Corrige solo lo que marque; no
reestructures en esta etapa. Las listas de palabras son la señal más débil y las primeras en envejecer.
Paso 4. Salida
Dale al usuario: el texto; qué cambió y por qué, en unas pocas líneas; preguntas abiertas y vacíos que quedaron visibles. Cuando se usó contexto, ofrece un mapa "línea ← fuente". Nunca edites los archivos originales del usuario; escribe los borradores junto a ellos.
Paso 5. Aprender
- Prueba ciega para textos importantes:
python3 tools/blind.py out.html key.json "Título" "Subtítulo" nombre=ruta=etiqueta ...Varios procesamientos del mismo material, clasificación sin empates, marcas de oración (slop / vivo). Compara al menos dos párrafos; los fragmentos cortos no separan. - Las marcas se convierten en pesos. Agrega las marcas del usuario a
learn/marks.jsonlcon una etiqueta de patrón delearn/patterns.md, luego ejecutapython3 learn/update_weights.py. Muestra qué patrones están establecidos y qué pesos del cuestionario están en desacuerdo con ellos; editaloop/questionnaire.jsonpara que coincida. Un nuevo patrón marcado como slop dos veces y nunca como vivo se convierte en una nueva característica. - Los rechazos enseñan más que los elogios. Cuando el usuario edita tu texto, haz diff: lo que cortan también es una marca.
Qué no hacer (cada uno fue probado)
- Pulir hacia el género ("hacerlo más profesional"): vuelven el lenguaje de currículum y el héroe solitario, y los episodios se distorsionan.
- Generar a partir de buen material en una sola pasada: el modelo disuelve la voz en el promedio y elimina la opinión.
- Hacer informalidad: chistes escritos como construcciones ("La respuesta de broma es...; la respuesta real es..."), reescrituras "añadir personalidad". Esta es la firma del humanizador que la gente detecta.
- Tomar una opinión de notas antiguas en lugar de la persona, en vivo. Las notas decían una cosa; la persona dijo otra.
- Perseguir palabras raras. El texto vivo es léxicamente ordinario; la rareza está en sus decisiones.
- Giros ingeniosos, incluso los de la propia persona ("habla con los ingenieros como un ingeniero", "...y el equipo reparte tickets a uno").
- Texto sobre sí mismo ("Lo primero X, ya que lo pediste explícitamente").
Dónde encajan otros enfoques
ne-slop(la habilidad principal, para cualquier trabajo creativo): el Paso 1 es su parte específica de texto. Material real, muchas decisiones pequeñas y explícitas, varias variantes diferentes, la persona elige, los rechazos se recuerdan, mira el resultado.- StoryScope: la teoría detrás del Paso 2 y la semilla de los pesos del cuestionario.
- unslop: la prueba de portabilidad (¿esta oración encajaría en otra persona o empresa?) y sus salvaguardas contra hechos inventados pertenecen a los Pasos 1 y 3; sus listas de palabras alimentan el lint.
- humanizer: su lista de patrones alimenta el lint. Su reescritura con "personalidad y alma" se excluye a propósito.