JESUS DANIEL MALMA MONTAÑO
QUITEN ESAS PREGUNTAS ES PERDIDA DE TI
YENNI BARRETO
por favoooooorrrr o por lo menos dejenlas para el final
Luis Puerta
A mi me gustan mucho, me hace no solo tener la clase de fondo
Cuando trabajas con Codex en proyectos reales, cada token cuenta. Codex Exec es la forma de ejecutar Codex desde la terminal en modo no interactivo: le das una tarea, devuelve una respuesta y termina, sin abrir una conversación completa. Esto es clave para automatizar flujos y medir eficiencia en proyectos como AI Radar.
¿Qué es Codex Exec y cuándo conviene usarlo?
Hasta ahora probablemente has trabajado en modo interactivo: abres Codex, escribes una tarea, revisas lo que hace y sigues conversando. Pero muchas veces no necesitas una conversación, solo ejecutar una instrucción y obtener una salida.
Con codex exec le mandas un prompt directamente desde el terminal. Al ejecutarlo, ves el directorio de trabajo, el modelo, los permisos, el sandbox, el nivel de reasoning y, al final, la respuesta junto al consumo de tokens. En una prueba simple con un saludo, el agente reportó un gasto de 7551 tokens [00:54].
¿Qué es Codex Exec? Es un comando que ejecuta Codex desde la terminal en modo no interactivo. Le envías una tarea, devuelve una respuesta y cierra la sesión.
¿Cómo se controlan los permisos con el sandbox en Codex?
El sandbox es el ambiente donde tu agente trabaja, y define qué puede hacer dentro del repositorio. Controlarlo es la forma más directa de evitar acciones no deseadas.
Si agregas la bandera sandbox read-only al comando, el agente solo puede leer archivos. Al pedirle que cree un archivo en ese modo, responde con un error claro: el workspace está en modo lectura y no tiene permisos para escribir [01:50]. Esto te permite probar prompts sin riesgo de modificar el proyecto.
¿Por qué los tokens también significan dinero?
Cada archivo que lee el agente, cada esquema que interpreta y cada skill que carga ocupa contexto. En proyectos pequeños no se nota, pero en proyectos grandes el contexto se llena rápido.
Cuando eso pasa, el agente tiene menos espacio para razonar sobre la tarea actual. Entonces el problema no es solo el costo: también es la capacidad de trabajo del modelo.
¿Cómo reducir el consumo de tokens en AI Radar?
En una prueba real con AI Radar, le pidieron al agente traer las últimas dos noticias guardadas. El agente leyó la skill, analizó el JSON, revisó la información del día y entregó la respuesta. El gasto fue de 15 597 tokens [02:27].
Para responder algo aparentemente simple, Codex tuvo que cargar instrucciones, leer archivos, interpretar estructuras y gastar tokens en contexto. Funciona, pero tiene un costo evidente.
¿Cuándo conviertes una tarea en una herramienta del proyecto?
La regla práctica: si una tarea es repetible, determinística y validable, no debería gastar tokens cada vez que el modelo la descubra. Conviértela en una tool.
Para probarlo, abres Codex y le pides crear un script en Python que lea el JSON diario de AI Radar y devuelva n señales en JSON, con opciones para elegir día, cantidad y orden. Además, le pides crear un skill que se active cuando alguien quiera consultar señales y que llame automáticamente al tool [03:36].
¿Qué diferencia hay entre usar prompts largos y herramientas dedicadas?
Al repetir el mismo comando después de crear el tool y el skill, el modelo encontró la skill, llamó al tool en solo dos intentos y entregó la misma respuesta. Esta vez gastó únicamente 5228 tokens [04:18].
La comparación es contundente:
La diferencia importante no es solo gastar menos tokens. Es que el agente dejó de gastar razonamiento en una tarea mecánica, lo que hace el proceso más rápido y más confiable.
¿Cuándo conviertes una tarea en herramienta? Cuando es repetible, determinística y validable. Si el resultado se puede verificar y siempre sigue la misma lógica, conviértela en tool y deja al modelo solo para decidir cuándo usarla.
¿Qué herramienta puedes crear para practicar en AI Radar?
El reto es construir una herramienta pequeña para tu proyecto. Algunas ideas:
Luego, escribe un skill corto que le diga a Codex cuándo usar esa herramienta. La idea es que el modelo no tenga que redescubrir el patrón cada vez.
Comparte en los comentarios tres cosas: qué tool creaste, qué skill la activa y cuántos tokens aproximadamente ahorraste comparando el antes y el después.
JESUS DANIEL MALMA MONTAÑO
QUITEN ESAS PREGUNTAS ES PERDIDA DE TI
YENNI BARRETO
por favoooooorrrr o por lo menos dejenlas para el final
Luis Puerta
A mi me gustan mucho, me hace no solo tener la clase de fondo
Juan Francisco Rodríguez Riaño
diferencia entre tool y skill, cuando usar una u otra? se usan las dos siempre?
Juan Francisco, piensa en la skill como el cerebro que decide qué hacer, y en el tool como la herramienta mecánica que ejecuta la tarea sin pensar. No siempre necesitas ambas, pero cuando una tarea es repetible, delegarla a un tool libera al modelo de "razonar" lo que ya sabe hacer.
Si el agente tiene que aprender a resolver algo cada vez, ¿por qué no darle un atajo?
Kevin Franco
Lo que hice para saber cual y por que esta fue preguntarle directamente que proceso desgastaba mas su flujo al operar este agente, y el me dio un listado con ranking y ese era el mas difícil en mi caso, les recomiendo lo intenten
Maikel Andres Vinces Mendoza
Listo cree 2 skills para el proyecto de IA radar que sin duda quiero. Basandome en lo que vimos:
Todo esto tienen sus propios contratos y json que permiten estandarizar la informacion, almacenarla y que usan el skill de señales. Todo porque asi me gustaría verlo jajaaj
Jordi Felipe Guerrero Diaz
Si por alguna razón les sale un aviso de que la carpeta no es un repositorio de confianza, prueben primero poniendo lo siguiente en la terminal:
git init
Camilo Rivera Quintero
7500 tokens en un hola XD
Pedro Jesus Hincapie Garcia
Not inside a trusted directory and --skip-git-repo-check was not specified.
Este mensaje que aparece al usar codex exec es causado por ?
Ese mensaje es una medida de seguridad del sandbox. Codex detecta que intentas ejecutar código fuera de un entorno de trabajo controlado (un repositorio Git), lo cual podría ser un riesgo de seguridad o una configuración errónea.
¿Qué intentabas hacer exactamente cuando saltó esa advertencia?
Jorge Luis Vilca Venegas
me salio lo mismo
Jorge Luis Vilca Venegas
ya entendì, eso sale cuando no estas en una carpeta con git inicializado, en mi caso me di cuenta que estaba en un nivel arriba de la carpeta del proyecto.
Sebastian Gómez
Creé la tool para validar las fuentes primaarias de las noticias. La skill se llama cosultar-fuentes-primarias. El ahorro fue de casi 50000 tokens
Maikel Andres Vinces Mendoza
Hasta este punto, quiero contarles que hasta esta clase, tuve capacidad para ganar un 2do place en un buildathon local!
Rafael Andrés
ProfesorFelicidades Meikel!!
Daniel Acosta Bermúdez
Aqui les dejo este Tool para noticias sin evidencia: #!/usr/bin/env python3
"""
AI Radar Tool: validate_empty_evidence.py
Detecta señales/noticias sin evidencia suficiente.
Uso:
python tools/validate_empty_evidence.py
python tools/validate_empty_evidence.py --db data/ai_radar.db
python tools/validate_empty_evidence.py --limit 20
La tool intenta encontrar columnas tipo:
- evidence
- evidence_url
- source_url
- url
- source
Si no encuentra una columna llamada evidence, usa url/source como evidencia mínima.
"""
import argparse
import sqlite3
from pathlib import Path
DEFAULT_DB_PATHS = [
"data/ai_radar.db",
"ai_radar.db",
"news.db",
]
def find_default_db():
for path in DEFAULT_DB_PATHS:
if Path(path).exists():
return path
return None
def get_columns(conn, table_name):
rows = conn.execute(f"PRAGMA table_info({table_name})").fetchall()
return [row[1] for row in rows]
def table_exists(conn, table_name):
rows = conn.execute(
"SELECT name FROM sqlite_master WHERE type='table' AND name=?",
(table_name,),
).fetchall()
return len(rows) > 0
def build_empty_condition(columns):
evidence_candidates = [
"evidence",
"evidence_url",
"source_url",
"url",
"source",
]
available = [col for col in evidence_candidates if col in columns]
if not available:
return None, []
conditions = [
f"({col} IS NULL OR TRIM({col}) = '')"
for col in available
]
return " AND ".join(conditions), available
def main():
parser = argparse.ArgumentParser(
description="Detecta señales de AI Radar sin evidencia suficiente."
)
parser.add_argument(
"--db",
default=None,
help="Ruta a la base de datos SQLite.",
)
parser.add_argument(
"--table",
default="news_items",
help="Nombre de la tabla a revisar. Default: news_items",
)
parser.add_argument(
"--limit",
type=int,
default=25,
help="Cantidad máxima de registros a mostrar.",
)
args = parser.parse_args()
db_path = args.db or find_default_db()
if not db_path:
print("❌ No encontré base de datos SQLite.")
print("Usa: python tools/validate_empty_evidence.py --db ruta/a/tu.db")
return 1
if not Path(db_path).exists():
print(f"❌ No existe la base de datos: {db_path}")
return 1
conn = sqlite3.connect(db_path)
conn.row_factory = sqlite3.Row
if not table_exists(conn, args.table):
print(f"❌ No existe la tabla: {args.table}")
return 1
columns = get_columns(conn, args.table)
condition, evidence_columns = build_empty_condition(columns)
if not condition:
print("⚠️ No encontré columnas de evidencia conocidas.")
print("Columnas disponibles:")
print(", ".join(columns))
return 1
select_columns = [
col for col in ["id", "title", "source", "url", "score", "collected_at"]
if col in columns
]
if not select_columns:
select_columns = ["rowid"]
query = f"""
SELECT {", ".join(select_columns)}
FROM {args.table}
WHERE {condition}
LIMIT ?
"""
rows = conn.execute(query, (args.limit,)).fetchall()
print("🧪 AI Radar — Validación de evidencia vacía")
print(f"DB: {db_path}")
print(f"Tabla: {args.table}")
print(f"Columnas usadas como evidencia: {', '.join(evidence_columns)}")
print("-" * 60)
if not rows:
print("✅ No encontré señales sin evidencia.")
return 0
print(f"⚠️ Señales sin evidencia encontradas: {len(rows)}")
print()
for row in rows:
item = dict(row)
print("—")
for key, value in item.items():
print(f"{key}: {value}")
print()
print("Siguiente acción sugerida:")
print("Revisar estas señales antes de resumirlas, puntuarlas o enviarlas.")
return 0
if __name__ == "__main__":
raise SystemExit(main())
Francisco Javier Terriquez Polanco
Creé un generador semanal para AI Radar que reúne señales de los últimos siete días, elimina duplicados y devuelve conteos por categoría y estado, junto con las señales prioritarias. El skill ai-radar-weekly-summary lo activa cuando pido un resumen semanal y avisa si faltan archivos diarios. Estimo que ahorra alrededor de 1,000 tokens por consulta al evitar revisar manualmente todo el JSON; es una aproximación y todavía tengo un solo snapshot para comparar.
Mateo Olaya Garzon
En mi caso usando gpt 6.1 luna sin la skill gasto 6624 tokens y usando la skill gasto 8516. Pero se entiende que en los ultimos modelo de gpt se optimizaron costos y que tener una tool y una skill reutilizables a la larga en procesos mas complejos si ahorra tokens
Jhon Alexander Mosquera Vanegas
En operaciones reales en América Latina, el presupuesto de tokens es una variable crítica de diseño. El uso de codex exec para tareas periódicas solo es viable si se acompaña de límites estrictos de contexto y métricas claras de costo por ejecución exitosa.
Evelyn Buitrago Leal
El tool me permita listar las noticias ordenadas por nivel de sesgo, para elegir el dia y el orden del sesgo, ademas cree un skill que se activa automaticamente cuando alguien pide clasificar noticias por sesgo
Daniel Alfredo García Serna
📚 CLASE: CODEX EXEC Y EL COSTO REAL DE LOS TOKENS
━━━━━━━━━━━━━━━━━━
🎯 IDEA PRINCIPAL
codex exec permite ejecutar tareas de Codex desde la terminal de forma automatizada, sin mantener una interacción manual constante.
La clave profesional es entender que automatizar la ejecución también automatiza el consumo de contexto y tokens.
━━━━━━━━━━━━━━━━━━
⚡ RESUMEN ULTRA RÁPIDO
codex exec está pensado para ejecutar tareas de Codex desde scripts, terminal o pipelines automatizados.━━━━━━━━━━━━━━━━━━
🔑 LO IMPORTANTE
codex exec.━━━━━━━━━━━━━━━━━━
🧩 MODELO MENTAL
Tarea → Contexto necesario → Ejecución → Tokens utilizados → Resultado → Optimización
━━━━━━━━━━━━━━━━━━
🚀 ACCIONES PARA HOY
codex exec.━━━━━━━━━━━━━━━━━━
🟣 VENTAJA PROFESIONAL
codex exec especialmente bien en tareas repetibles como validaciones, análisis, documentación o mantenimiento.AGENTS.md y skills para reducir instrucciones repetidas en cada ejecución.━━━━━━━━━━━━━━━━━━
📝 CIERRE
El principiante piensa: “La IA me ahorra tiempo”.
El profesional añade otra pregunta: “¿Cuánto contexto necesito para obtener este resultado?”
La automatización realmente eficiente no consiste en ejecutar más agentes, sino en conseguir que cada ejecución haga exactamente el trabajo necesario.
Gerson Antonio Cabrera
💡 Aprendizaje de la clase: pensé que estaba optimizando el flujo, pero terminé haciendo over-engineering 😅. Agregué scripts, skills, validaciones y respuestas demasiado completas; el consumo pasó de unos 3.000 a casi 9.000 tokens.
Pedí a Codex que analizara qué estaba aumentando el consumo y que propusiera criterios de optimización. Ahí entendí que un script no ahorra tokens solo por ser Python: debe encargarse del trabajo mecánico y devolver únicamente lo necesario. La skill indica cuándo usarlo, y el detalle se solicita solo cuando hace falta.
✅ Mi tip: antes de agregar más herramientas, pídanle a Codex que analice el flujo, identifique qué partes son repetitivas y proponga criterios para simplificar. A veces optimizar no significa hacer más, sino diseñar una salida más pequeña, clara y reutilizable. 🚀
Gerson Antonio Cabrera
Nota para futuros estudiantes: Si tu CLI muestra los pasos internos diferente y el conteo de tokens al usar codex exec, es solo una versión más moderna que expone el flujo del agente. Esa visibilidad adicional facilita auditar el consumo de contexto desde el primer segundo.
Gerson Antonio Cabrera
Al practicar codex exec y --sandbox, descubrí que primero debía entrar en la carpeta exacta de mi proyecto desde la terminal. Yo estaba ejecutando el comando desde la carpeta anterior y por eso no funcionaba.
Espero que esto ayude a otros a evitar la misma confusión.