Saltar al contenido principal

Contabilidad con agentes de IA

Asigne a un agente de IA externo dos tareas contables: importar un CSV bancario con revisión previa a la vista, y responder una pregunta de balance a partir de salidas de BQL e informes.

Asigne a un agente de IA externo dos tareas contables y mantenga cada cambio del libro mayor bajo su revisión: importe un CSV bancario con un chequeo previo a la vista, luego responda una pregunta de balance a partir de la salida de consultas e informes.

Instale bea con la guía de inicio rápido de CLI. Los comandos locales de importación, consulta e informes no requieren una cuenta de Beancount.io. Su agente de chat solo necesita su propia suscripción o clave API. Solo el asistente integrado bea ask necesita credenciales alojadas, y estas recetas no lo utilizan.

Qué hace el agente y qué hace bea

El agente propone categorías y redacta consultas. Bea valida la estructura del libro mayor y calcula los totales. Usted ejecuta cada comando a continuación usted mismo. El agente nunca escribe directamente en su libro mayor.

Receta 1: importar un estado de cuenta con categorías propuestas por el agente

Convierta una exportación bancaria en asientos validados. El agente sugiere las reglas de categorización. La vista previa y la revisión de duplicados deciden qué se escribe.

Requisitos previos

Necesita bea y un directorio de demostración nuevo. Sin cuenta y sin importador de Python.

Preparar las entradas

Cree el directorio y el libro mayor. Los objetivos explícitos con --file mantienen cada comando apuntando a los libros de demostración.

mkdir ai-agent-demo && cd ai-agent-demo
bea --no-input init books --currency USD --date 2026-08-01 --opening-balance "Assets:Checking 1000"
bea --file books/main.bean add open --date 2026-08-01 --account Expenses:Transport:Fuel -c USD

Guarde esta muestra como statement.csv:

Date,Payee,Narration,Amount
2026-08-02,Whole Foods,groceries,-20.00
2026-08-03,Shell,gas,-40.00
2026-08-04,Unknown Shop,mystery,-9.99

Guarde estas reglas de categorización como rules.toml:

[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
 
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"

Copiar el aviso de la tarea

Pegue este aviso a su agente externo junto con el contenido del CSV:

Proponga reglas de categorización de Beancount para mis filas de CSV bancario.
Sugiera una regla TOML por comerciante con un patrón de coincidencia y una
cuenta de gastos de destino. Nunca cambie fechas, beneficiarios o montos.
Deje sin coincidencia las filas que no pueda categorizar con confianza: se
registran en Expenses:Uncategorized con la bandera ! para mi revisión. Yo ejecuto
la vista previa de importación de bea y aplico localmente. Usted no escribe mi libro mayor.

Ejecutar los equivalentes de CLI

Primero la vista previa, luego aplique los asientos revisados y verifique el resultado:

bea --file books/main.bean import statement.csv --csv date=Date,amount=Amount,payee=Payee,narration=Narration --account Assets:Checking --rules rules.toml
bea --file books/main.bean import statement.csv --apply
bea --file books/main.bean check
bea --file books/main.bean list transaction --flag '!'
bea --file books/main.bean query "SELECT account, sum(position) WHERE account = 'Assets:Checking' GROUP BY account"

Verificar la salida esperada

La vista previa informa 3 ready, 0 exact duplicates, 0 possible duplicates y sale con código 0. No escribe nada. La ejecución de aplicar informa Wrote 3 entries. La verificación no informa errores. La cola ! lista la única fila sin coincidencia de Unknown Shop en -9.99 USD. La consulta de balance informa 930.01 USD en checking. Repetir la aplicación informa 0 ready, 3 exact duplicates y escribe 0 asientos.

Revisar y corregir

Recategorice deliberadamente la fila ! en su libro mayor después de leerla. Una verificación que pasa solo demuestra que el libro mayor cuadra. No dice nada sobre si Expenses:Uncategorized es la cuenta correcta. Para la política de duplicados, el manejo de conflictos y la ruta avanzada de Python, siga el tutorial de CSV bancario.

Receta 2: responder una pregunta de balance sin escrituras

Responda una pregunta de los libros de demostración: cuánto se gastó en comestibles y combustible en agosto de 2026. El agente redacta la consulta. Los comandos de solo lectura producen la respuesta.

Requisitos previos

Necesita el libro de demostración de la receta 1 o sus propios libros. Cada comando abajo es de solo lectura.

Copiar el aviso de la tarea

Pegue este aviso a su agente externo:

Redacte una consulta de Beancount (BQL) que responda: cuánto gasté en
comestibles y combustible en agosto de 2026. Use mis nombres de cuenta
exactamente como los lista bea list open. Proponga solo comandos de solo
lectura: bea query o bea report con un objetivo --file explícito. No proponga
ediciones del libro mayor para corregir un total sorprendente. Un total
sorprendente significa que la consulta o los libros necesitan revisión, no un
asiento compensatorio.

Ejecutar los equivalentes de CLI

Ejecute la consulta redactada contra un objetivo de libro explícito, luego verifique con un informe:

bea --file books/main.bean query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account"
bea --file books/main.bean report income-statement --time 2026-08

Los consumidores de máquinas agregan la bandera global --json antes del subcomando:

bea --file books/main.bean --json query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account"

Los sobres JSON, los códigos de salida y la colocación de banderas globales siguen la referencia de CLI. La guía del lenguaje de consulta documenta toda la superficie de BQL.

Verificar la salida esperada

La consulta informa 20.00 USD para Expenses:Groceries, 40.00 USD para Expenses:Transport:Fuel y 9.99 USD para Expenses:Uncategorized. Comestibles más combustible es 60.00 USD. El estado de resultados coincide: 69.99 USD de gastos de agosto con una ganancia neta de -69.99 USD. La variante JSON devuelve las mismas filas dentro de data.rows con metadatos de columnas en data.columns.

Revisar y corregir

Una consulta contra un nombre de cuenta incorrecto imprime (no rows) en stderr y aún así sale con código 0. Compare el nombre con la salida de bea list open y ejecute la consulta nuevamente. Nunca corrija un total sorprendente editando el libro mayor para que coincida con la respuesta. Corrija la consulta o corrija los libros, luego vuelva a ejecutar bea check.

Cuando una receta se convierte en un trabajo repetitivo

Los avisos anteriores son adecuados para tareas únicas impulsadas manualmente. Los trabajos que repite semanalmente son adecuados para las habilidades versionadas en el repositorio del producto. Cada enlace a continuación abre el código fuente actual de la habilidad, que incluye sus propias instrucciones de configuración y activación. Este CMS no guarda copias de estos archivos.

  • Inicie un libro mayor nuevo desde un directorio vacío con beancount-init. Crea el archivo del libro mayor, un ejecutor de Fava y un proyecto de Python.
  • Convierta una exportación bancaria en asientos categorizados con beancount-import. Prepara cada fila, sugiere categorías del historial del libro mayor, omite filas ya importadas y escribe solo después de la confirmación. La receta 1 arriba es la forma manual de este trabajo.
  • Demuestre que una cuenta coincide con su estado de cuenta con beancount-reconcile. Compara el libro mayor con el estado de cuenta y registra una afirmación de balance de fin de período después de la confirmación.
  • Responda una pregunta de los libros con beancount-ask. Ejecuta consultas de solo lectura y muestra cada consulta junto con su cifra. La receta 2 arriba es la forma manual de este trabajo.
  • Cierre un mes con beancount-close. Concilia cada cuenta activa, verifica asientos recurrentes y banderas de revisión, y registra el cierre como una confirmación.

La colección completa vive en el árbol canónico de habilidades.

Déle bea a un agente con capacidad de shell, o cargue una habilidad en un cliente

Estos son dos pasos separados. Instalar bea nunca instala ni configura habilidades.

Un agente con capacidad de shell necesita el comando en su ruta. Instálelo con la guía de inicio rápido de CLI, luego el agente ejecuta los mismos comandos bea que muestran las recetas. El agente propone, usted revisa y bea valida.

Una habilidad se carga dentro del cliente del agente mismo, mediante el mecanismo de habilidades propio de ese cliente. El repositorio del producto expone un árbol canónico a ambos clientes compatibles: Claude Code lo lee bajo .claude/skills y Codex bajo .agents/skills, como directorios vinculados a la misma fuente. Apunte la ubicación de habilidades del cliente a la carpeta de habilidades que necesita y siga leyendo su fuente actual para frases de activación y actualizaciones.

Preguntas similares a bea ask sin bea ask

La receta 2 responde preguntas del libro mayor con un agente externo más comandos de solo lectura bea query y bea report. Esa ruta es local. No necesita cuenta ni instalación adicional.

bea ask es un asistente integrado separado. No es ni la receta anterior ni la habilidad beancount-ask. Enruta la pregunta a través del servicio de IA alojado, por lo que necesita el extra ask y credenciales alojadas, como se documenta en la referencia de CLI. Instale la CLI base primero, luego agregue el extra solo cuando quiera respuestas alojadas.

Salidas citadas y verificación de CLI

Cada comando anterior se ejecutó contra el paquete publicado bea 0.1.0 en un directorio fresco. Los conteos, balances y mensajes citados son verificación de CLI. Los avisos de tareas no se ejecutaron contra ningún modelo. El comportamiento del modelo se evalúa por separado.

Fuente: https://beancount.io/es/docs/Solutions/accounting-with-ai-agents