WriterAgent

Una extensión de LibreOffice que añade funciones de IA agéntica y NumPy.

Documentación

WriterAgent, LibrePy y LibreHarper

WriterAgent logo

License: GPL v3+ Python 3.11+ LibreOffice 7.0+ Release

CI status Página de estado de CI

Python, NumPy e IA agéntica para LibreOffice (Writer, Calc y Draw)

Ejecuta Python y cómputo científico sin conexión en fórmulas de hojas de cálculo, edita documentos con IA privada local-first — sin dependencia de la nube.

El proyecto se distribuye como tres paquetes de extensión independientes (instala solo uno a la vez):

PaqueteQué incluye
🤖 WriterAgent (WriterAgent.oxt) (Pila completa, recomendado para la mayoría de usuarios)Todo en LibrePy y LibreHarper + panel lateral de IA, =PROMPT(), investigación web, conversor Calc → Python, servidor MCP
🐍 LibrePy (LibrePy.oxt)Entorno de ejecución de Python, =PY(), NumPy, pandas, SymPy, Monaco, Jupyter Archivo → Abrir .ipynb, ayudas de dominio, OCR (sin IA/MCP — compilación de núcleo para inclusión en LO)
✍️ LibreHarper (LibreHarper.oxt)Motor de gramática Harper offline independiente para Writer

Descargar versiones .oxt · Índice de funciones · Guía de NumPy en LibreOffice · Discusiones


Capacidades clave

🤖 IA agéntica local-first y escritura (Writer)

  • Chat en panel lateral con llamada a herramientas de múltiples turnos — Edita, reestructura o amplía documentos usando lenguaje natural. 9 herramientas principales más docenas de subagentes especializados para diseño de página, notas al pie, marcadores, revisiones y formularios.
  • Interacción de voz bidireccional (STT y TTS) — Dicta indicaciones directamente a tu agente de documentos y escucha las respuestas en voz alta (local mediante Kokoro o Piper, o mediante tu endpoint de LLM).
  • Ediciones que preservan el formato — Correcciones quirúrgicas y reescrituras de secciones que mantienen tu formato existente (negritas, cursivas, resaltados, tamaños de fuente, tablas y listas anidadas) sin alterar los estilos.
  • Investigación web — Bucle integrado y privado de smolagents con DuckDuckGo. Sintetiza múltiples fuentes web y actualiza documentos abiertos con hechos y citas en tiempo real. Búsqueda de agente
  • Gramática y corrección en tiempo real — Revisión gramatical local y respetuosa con la privacidad mediante Harper (rápida, autoinstalable), LanguageTool o endpoints de LLM con detección de oraciones multilingües. Detalles
  • Importación de matemáticas y LaTeX — Convierte LaTeX y MathML en objetos matemáticos nativos y editables de LibreOffice. Guía de matemáticas

🐍 Python y cómputo científico (Calc y Writer)

  • Fórmulas de hoja de cálculo =PY() nativas — Ejecuta expresiones de Python, NumPy y pandas directamente en celdas de Calc con expansión automática de matrices, kernels de libro compartidos y scripts persistentes.
  • Editor de código Monaco integrado — Escribe, prueba y depura scripts de Python multilínea directamente en celdas o mediante el entorno Herramientas → Ejecutar script de Python con resaltado de sintaxis, autocompletado y diagnósticos.
  • Dominios científicos y analíticos integrados — Ayudas listas para usar para EDA, detección de valores atípicos, regresión OLS, agrupamiento KMeans, simulaciones de Monte Carlo, álgebra simbólica (SymPy), trazado de gráficos y conversiones de unidades físicas (convert_quantity(60, "mph", "m/s") → 26.8224 m/s). Referencia de dominios · Ayudas de análisis
  • Conversor de hoja de cálculo → Python (WriterAgent) — Traduce más de 235 fórmulas clásicas de Calc/Excel a expresiones limpias de Python usando la biblioteca de paridad calc.* integrada, preservando constantes, fechas y formatos de celda. Detalles
  • Visión local y OCR — Extrae texto de imágenes incrustadas o documentos escaneados directamente en Writer y Calc mediante OCR Docling sin conexión. Guía de visión
  • Jupyter logo Soporte de cuadernos Jupyter — Archivo → Abrir… un .ipynb (o doble clic / soffice notebook.ipynb) crea un documento de Writer con markdown, campos de código editables y botones ▶ de ejecución contra un kernel de Python compartido. Jupyter en Writer
  • Seguro ante fallos por diseño — NumPy se ejecuta fuera de proceso en tu propio venv, por lo que un error de script no puede bloquear LibreOffice.

📊 Diagramas, diapositivas y multimodal (Draw e Impress)

  • Generación de diagramas y presentaciones — Genera, ajusta y estiliza diagramas de flujo, formas, conectores, notas del orador y transiciones de diapositivas mediante comandos de chat o scripts de Python. Detalles
  • Creación y edición de imágenes — Genera una nueva imagen a partir de una indicación, o edita un gráfico seleccionado en su lugar, en el mismo endpoint que el chat. Inserta en Writer, Calc, Draw e Impress. Generación de imágenes
  • Árbol semántico LO-DOM — Comprensión estructural de encabezados, secciones, tablas y relaciones en documentos completos. Árbol semántico
  • Búsqueda y memoria entre documentos — Consulta otros documentos en la misma carpeta mediante embeddings locales / búsqueda híbrida, con memoria de agente persistente entre sesiones. Embeddings · Memoria

🔌 Integraciones y extensibilidad

Catálogo completo de capacidades: docs/features.md.


Instalación y configuración

  1. Descarga el paquete .oxt que elijas desde Últimas versiones y haz doble clic para instalar (o abre LibreOffice y ve a Herramientas → Administrador de extensiones → Agregar). Recuerda instalar solo un paquete de extensión.
  2. Reinicia LibreOffice.
  3. Configuración rápida:
    • Usuarios de Python / LibrePy: Abre Calc, revisa Herramientas → LibrePy (o WriterAgent) → Configuración → Python y haz clic en Probar para verificar tu entorno y la disponibilidad de NumPy/pandas.
    • Usuarios de IA / WriterAgent: Abre WriterAgent → Configuración e ingresa tu endpoint (p. ej. http://localhost:11434 para Ollama local (sin necesidad de clave), o una clave API de OpenRouter / Together.AI). Abre el panel lateral mediante Ver → Panel lateral → WriterAgent o presiona Ctrl+Q / Ctrl+E.

Modos de interfaz: En el modo clásico de barra de herramientas, accede a las herramientas mediante la barra de menú superior. En interfaces con pestañas/cinta, usa el panel lateral de chat WriterAgent y/o el panel lateral Python (Writer + Calc): Configuración ⚙, Python 🐍, matemáticas LaTeX o Editar celda, búsqueda 🔍 (solo chat de WriterAgent) y menús completos mediante ☰.

Para instrucciones detalladas de configuración, consulta la Guía de instalación y solución de problemas.


Demostraciones

Python en LibreOffice Writer

Python in LibreOffice

Analítica de hojas de cálculo y panel de control

Chat Sidebar with Dashboard

Hermes + Opus 4.6 (Investigación web)

Hermes-Agent / Opus-4.6 Akihabara

Expresiones matemáticas y LaTeX

Math Expressions

Currículum en Arch Linux

Opus 4.6 Resume

Diagramas en Draw

Sonnet 4.6 Visual


Evaluaciones comparativas y evaluación

El conjunto de evaluación de LLM Eval-1 de WriterAgent ejecuta modelos en trabajos reales de Writer, Calc y Draw mediante las mismas herramientas que usa el panel lateral, y luego puntúa el documento exportado. Tareas típicas: reformatear documentos, recalcular impuestos, dibujar diagramas como la bandera estadounidense usando formas. Cada ejecución se clasifica por Valor (corrección² ÷ dólares). La tabla siguiente es el tablero completo de doble carril 29×19 del 2026-09-28 (flag-18 + org_chart_gen, con anulaciones de galería de organigramas puntuadas manualmente — 5 PASS visuales difíciles). Metodología completa: docs/eval/benchmarks.md.

Cost–quality Pareto fronts

Vista de distancia a la frontera: docs/eval/pareto-distance.svg.

ModeloCorrección
puntuación promedio de tarea (0–1)
Valor
Corrección² ÷ $/tarea
openai/gpt-oss-120b0.921803
openai/gpt-oss-20b0.759524
poolside/laguna-xs-2.10.838358
upstage/solar-pro40.716352
google/gemma-4-31b-it0.861330
google/gemma-4-26b-a4b-it0.701216
bytedance-seed/seed-2.0-mini0.861179
poolside/laguna-s-2.10.732160
meta/muse-spark-1.3-contributor0.981147
openai/gpt-6-luna0.873139
z-ai/glm-5.3-flash0.85687
nvidia/nemotron-3.5-super-vl0.93282
liquid/lfm-2.5-24b-a2b0.58982
prism-ml/ternary-bonsai-2-27b0.54378
deepseek/deepseek-v4.1-flash0.88377
qwen/qwen3.8-flash0.79265
mistralai/mistral-small-26030.58364
meta/muse-glimmer-30b0.92360
inception/mercury-2.5-preview0.81756
ibm-granite/granite-4.2-8b0.81055
google/gemini-3.5-flash-lite0.70849
nvidia/nemotron-3.5-lightning0.39546
nvidia/nemotron-3-super-120b-a12b0.85438
reflection/beam-1.0-501b-a23b0.87918
cohere/command-a-plus0.64113
minimax/minimax-m30.78011
x-ai/grok-4.60.9189
qwen/qwen3.8-27b0.9179
nvidia/nemotron-3-ultra-550b-a55b0.7874

Documentación y arquitectura

TemaEnlace de documentación
Índice de funcionesdocs/features.md
NumPy y Python en Calcdocs/enabling_numpy_in_libreoffice.md · docs/calc/py-data-shapes.md
Arquitectura principal de LibrePydocs/scripting/librepy-split.md
Funciones auxiliares de dominiodocs/scripting/numpy-domains.md · docs/calc/analysis-tools.md
Arquitectura completadocs/writeragent-architecture.md · docs/framework/formal-verification.md
Protocolo de Contexto de Modelo (MCP)docs/mcp-protocol.md
Embeddings y búsquedadocs/embeddings.md
Evaluaciones comparativasdocs/eval/benchmarks.md
Localización (35 idiomas)docs/framework/localization.md
Explorador de códigoDeepWiki
Cursor / Habilidades de agentecursor-libreoffice · libreoffice-skill

Internamente, todas las operaciones se rigen por una máquina de estados finitos verificada formalmente, con verificación estricta de tipos y análisis estático. Las llamadas UNO no seguras para subprocesos se detectan en desarrollo mediante un proxy viral de protección de subprocesos, en lugar de congelarse aleatoriamente. El conjunto de pruebas del panel lateral con LLM simulado — el peor LLM del mundo — demuestra la recuperación de detención, bloqueo y errores de extremo a extremo.

State machine architecture


Evolución del proyecto

Una crónica de la construcción de un entorno de ejecución de Python y un conjunto de IA dentro de LibreOffice:


Contribución y desarrollo

Ask DeepWiki Discusiones Requisitos previos: Python 3.11–3.13 para desarrollo (fijado en 3.13 mediante .python-version), uv. Ejecuta make check-setup para verificar. En macOS: instala make, gettext.

git clone https://github.com/KeithCu/writeragent.git
cd writeragent
uv python install 3.13
uv sync
make deploy          # Builds & installs WriterAgent.oxt (or: make deploy writer)
make test
make help

Para compilar y probar las variantes de extensión independientes:

# Standalone Python / NumPy compute suite (LibrePy)
make build-core      # Produces build/LibrePy.oxt
make deploy-core     # Installs LibrePy.oxt (removes WriterAgent)

# Standalone Harper grammar checker (LibreHarper)
make build-harper    # Produces build/LibreHarper.oxt
make deploy-harper   # Installs LibreHarper.oxt

Consulta AGENTS.md (invariantes), docs/repo-map.md (puntos de entrada) y docs/scripting/librepy-split.md para detalles de arquitectura.


Créditos

ProyectoContribución
localwriterExtensión original de Writer LLM (John Balis)
LibreCalc AI AssistantBase e inspiración de IA para Calc
LibreOffice MCP ExtensionPatrones de servidor MCP, Makefile, registro de herramientas
Hermes AgentAnalizadores de llamadas a herramientas, reparación JSON, patrones de memoria
latex2mathmlLaTeX → MathML
mathml-to-latexMathML → LaTeX (exportación de fórmulas de Writer)
isodateAnálisis/formato de duración ISO 8601 (cable de Calc)

Licencia

GNU GPL v3 (o posterior) — consulta LICENSE. Originalmente MPL 2.0; relicenciado en 2026 para una reciprocidad más fuerte y compatibilidad de bibliotecas.

AñoContribuciónColaborador
2024Lanzamiento originalJohn Balis
2025–2026Configuración, registros, sistema de compilaciónquazardous
2026Integración de Calc (originalmente MIT)LibreCalc AI Assistant
2026Modificaciones y relicenciamientoKeithCu