Site logo Jesús Pérez Profile Picture

Acerca de Opus

Un framework en Rust para el dominio de las obras de conocimiento. Una Obra es un todo coherente y de autor; Opus aporta la maquinaria para expresarla en distintos modos, formatos y canales, y deja fuera de su propio código cualquier palabra propia de una Obra.

De dónde viene Opus

Empezó como un sistema para un libro. Su primer consumidor fue un libro impreso, y el framework surgió de extraer, corregir y componer el texto de ese libro, hasta convertirse en crates reutilizables de procesado de documentos, sugerencias con IA, búsqueda semántica, servicio MCP y vigilancia de ficheros.

Al madurar, el nombre se fue desviando mientras el modelo no lo hacía: el esquema ya trataba la Obra como unidad. La primera decisión lo hizo explícito. La esencia del dominio es la Obra, y su difusión en impreso, digital, web e interactivo es su expresión, nunca su definición.

La segunda decisión dio al dominio el nombre de su átomo. La Obra es la producción de autor, no el libro: un libro, un cuaderno de bitácora, un taller y un material educativo son espacios de una misma Obra que coexisten, y el orden en que declara un consumidor es Obra, después espacio, luego expresión. El dominio es Opus.

Invariantes

  • ✓ Sin lógica de proyecto en el framework: el vocabulario de una Obra viene de la configuración de su consumidor
  • ✓ Estabilidad de los traits públicos: romper un trait que implementa un consumidor exige una versión nueva del trait
  • ✓ Inversión del consumidor: la flecha de dependencia va del consumidor al framework, nunca al revés
  • ✓ CI sin avisos: clippy con los avisos denegados sigue en verde en todo el workspace
  • ✓ Contrato del contenido de sección: SectionContent es el único tipo en la frontera entre framework y consumidor

Los crates

Lo que incluye el framework, tras traits estables

🦀

Procesado y edición

  • Generación ODT
  • Extracción de texto
  • Filtrado de correcciones
  • Pipeline de composición typst
  • Análisis editorial según la lengua de la Obra
🏗️

Agentes y sugerencias

  • Framework McpServer<T>
  • Traits ContentLoader y PedagogyEngine
  • ChapterConfig para la estructura de una Obra
  • Generación de sugerencias con IA
  • Estrategias de fusión de sugerencias
🌐

Búsqueda y vigilancia

  • Embeddings locales con fastembed (ONNX)
  • Índice de texto completo con tantivy
  • Contratos VectorStore, EmbeddingModel y Retriever
  • Vigilante de ficheros configurado desde el entorno
  • Estado del vigilante guardado en .watcher/status.json

Por qué la Obra es la unidad

📖 Un todo coherente

Impreso, digital, web e interactivo son expresiones de la Obra. A ninguna se le permite convertirse en su definición.

🧭 Un orden declarado

Obra, después espacio, luego expresión. Cada formato se proyecta desde un espacio y queda aguas abajo de él.

🔤 Las reglas de la lengua en su sitio

Una regla que necesita toda Obra de una lengua vive en el framework; una palabra que solo usa una Obra vive en la configuración de esa Obra.

📚 Ortotipografía citada

Cada regla cita su fuente por capítulo y sección y nombra la comprobación que la sostiene. Una herramienta de comprobación se cita, nunca es una autoridad.

🧾 Evidencia que perdura

Una escritura de la cadena de herramientas registra el digest que deja, así que la edición de una persona y la migración de una herramienta nunca son la misma evidencia.

✉️ Un envío registrado

La Obra llega a un tercero solo como un envío anotado en su registro; una copia personal va siempre a quien la pide.

Construye una Obra sobre Opus

Opus lo consumen, mediante dependencias de ruta, implementaciones que sirven cada una a una Obra. Empieza por el camino de adopción o escribe para hablar de la tuya.

Usamos cookies para que este sitio funcione, entender el uso del servicio y apoyar acciones de marketing. Política de cookies para más información.