He creado una nueva herramienta para automatizar las partes tediosas de la creación de tarjetas Anki. He escrito anki-api. Se trata de una herramienta web y CLI mínima que permite a los agentes de IA redactar tarjetas para ti a partir de casi cualquier material de origen. Se integra directamente con tu base de datos Anki local, al tiempo que te permite mantener un control absoluto sobre la revisión final.
Te mantiene al mando
Automatiza la adquisición de contenido. Rastreando sitios web. Descargando transcripciones de YouTube. Analizando archivos DOCX. También automatiza la logística de la coordinación de procesos y la gestión del estado JSON.
Pero deliberadamente no automatiza el juicio de calidad. Los agentes proponen. Los humanos aprueban.
Reemplacé las reglas de validación heurísticas arbitrarias por un documento de ciencia cognitiva de 384 líneas. El marco se basa en los principios EAT (Encoded, Atomic, Timeless). Los agentes deben leer este documento antes de generar una sola tarjeta. La indicación mapea la teoría de la normalización de bases de datos directamente al diseño de tarjetas didácticas. La primera forma normal significa atomicidad. La tercera forma normal significa que no hay atajos contextuales.
Agente nativo
Me inspiré en la guía de Agent-Native Architecture de Every. Quería la paridad de funciones entre el usuario humano y la IA.
Todo lo que se puede hacer a través de la interfaz de usuario, el agente puede lograrlo a través de herramientas. Ambos utilizan exactamente las mismas primitivas atómicas. Se puede utilizar la CLI para añadir, editar o eliminar tarjetas. Por lo tanto, el agente también puede utilizar esos mismos ganchos para gestionar las barajas, más allá de simplemente añadir nuevas tarjetas. Traes tus propios subs de agente, sin claves API ni costes por uso más allá de los que ya tienes.
Sin marcos pesados
Quería una pila mínima. No hay LangChain. No hay LlamaIndex. El trabajo pesado se realiza con bibliotecas aburridas y bien conocidas como requests, click y pydantic.
Todo el ciclo de vida del proceso se gestiona con unas 60 líneas de Python que llaman a comandos tmux. No necesitas Docker. No necesitas systemd.
Cuando ejecutas anki-api up, simplemente se genera una sesión tmux independiente con tu backend FastAPI en la parte superior y tu servidor de desarrollo Vite en la parte inferior.
La interfaz de usuario web y MathJax
Originalmente lo creé solo para el terminal. Más tarde, probé la generación de la interfaz de usuario de Anthropic para crear un prototipo de interfaz web. El resultado fue una interfaz React sorprendentemente limpia, así que la convertí en una parte permanente del proyecto.
Puedes activar un proceso completo con un solo comando pasando URL o rutas de archivos locales:
anki-api flow [https://example.com/article]
Esto comprueba si Anki está en ejecución, genera un agente Claude, inicia la pila web a través de tmux y abre el navegador. Si se pasa una URL de YouTube, obtendrá la transcripción automáticamente y la generará a partir de ella.
La interfaz de usuario web transmite el proceso de pensamiento del agente en tiempo real a través de WebSockets. Se puede ver cómo el agente piensa, recopila y razona sobre los principios EAT. A continuación, se accede a una interfaz de revisión limpia para aprobar u omitir las tarjetas redactadas.
También he añadido recientemente compatibilidad con MathJax. Estoy estudiando álgebra lineal y necesitaba matrices con un formato perfecto. El formato se ajusta con precisión a los estándares de Anki, por lo que la interfaz web muestra exactamente cómo se verán tus ecuaciones en la aplicación de escritorio.
Ejecutarlo tú mismo
Si tienes Anki Desktop ejecutándose con el complemento AnkiConnect, puedes probarlo ahora mismo. El código es completamente de código abierto.
Necesitarás tener instalado Python 3.11+ y uv.
# Clona el repositorio y sincroniza las dependencias
uv sync
# Genera tarjetas desde cualquier URL o ruta de archivo e inicia la interfaz de revisión
uv run anki-api flow [https://youtube.com/watch?v=example]