Salta al contingut principal

Comptabilitat amb agents d'IA

Doneu a un agent d'IA extern dues feines de comptabilitat: importar un CSV bancari amb revisió prèvia a la vista prèvia, i respondre una pregunta de saldo a partir de la sortida de BQL i informes.

Doneu a un agent d'IA extern dues feines de comptabilitat i manteniu cada canvi del llibre major sota la vostra revisió: importeu un CSV bancari amb una comprovació prèvia a la vista prèvia, i després responeu una pregunta de saldo a partir de la sortida de consultes i informes.

Instal·leu bea amb la guia d'inici ràpid de la CLI. Les ordres locals d'importació, consulta i informes no necessiten cap compte de Beancount.io. El vostre agent de xat només necessita la seva pròpia subscripció o clau d'API. Només l'ajuda integrada bea ask necessita credencials allotjades, i aquestes receptes no l'utilitzen.

Què fa l'agent i què fa bea

L'agent proposa categories i redacta consultes. Bea valida l'estructura del llibre major i calcula els totals. Executeu vosaltres mateixos cada ordre que apareix a continuació. L'agent mai escriu directament al vostre llibre major.

Recepta 1: importar un extracte amb categories proposades per l'agent

Convertiu una exportació bancària en entrades validades. L'agent suggereix les regles de categorització. La vista prèvia i la revisió de duplicats decideixen què s'escriu.

Requisits previs

Necessiteu bea i un directori de demostració nou. No cal cap compte ni cap importador de Python.

Prepareu les entrades

Creeu el directori i el llibre major. Els objectius explícits --file mantenen cada ordre apuntada als llibres de demostració.

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

Deseu aquesta mostra com a statement.csv:

Date,Payee,Narration,Amount
2026-08-02,Whole Foods,queviures,-20.00
2026-08-03,Shell,gasolina,-40.00
2026-08-04,Unknown Shop,misteri,-9.99

Deseu aquestes regles de categorització com a rules.toml:

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

Copieu la indicació de la tasca

Enganxeu aquesta indicació al vostre agent extern juntament amb el contingut del CSV:

Proposeu regles de categorització de Beancount per a les files del meu CSV bancari.
Suggeriu una regla TOML per comerciant amb un patró de coincidència i un
compte de despesa de destinació. No canvieu mai dates, beneficiaris ni imports.
Deixeu sense coincidència les files que no pugueu categoritzar amb confiança: es
registren a Expenses:Uncategorized amb la marca ! per a la meva revisió. Executo
la vista prèvia de bea import i aplico localment. Vosaltres no escriviu el meu llibre major.

Executeu els equivalents de la CLI

Primer la vista prèvia, després apliqueu les entrades revisades i verifiqueu el resultat:

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"

Comproveu la sortida esperada

La vista prèvia informa de 3 ready, 0 exact duplicates, 0 possible duplicates i surt amb codi 0. No escriu res. L'execució d'aplicació informa de Wrote 3 entries. La comprovació no informa de cap error. La cua ! llista l'única fila sense coincidència de Unknown Shop a -9.99 USD. La consulta de saldo informa de 930.01 USD al compte corrent. Repetir l'aplicació informa de 0 ready, 3 exact duplicates i escriu 0 entrades.

Reviseu i corregiu

Recategoritzeu deliberadament la fila ! al vostre llibre major després de llegir-la. Una comprovació que passa només demostra que el llibre major quadra. No diu res sobre si Expenses:Uncategorized és el compte correcte. Per a la política de duplicats, la gestió de conflictes i la via avançada amb Python, seguiu el tutorial complet d'importació de CSV bancari.

Recepta 2: respondre una pregunta de saldo sense escriptures

Responeu una pregunta sobre els llibres de demostració: quant es va gastar en queviures i combustible l'agost de 2026. L'agent redacta la consulta. Les ordres només de lectura produeixen la resposta.

Requisits previs

Necessiteu el llibre major de demostració de la recepta 1 o els vostres propis llibres. Cada ordre que apareix a continuació és només de lectura.

Copieu la indicació de la tasca

Enganxeu aquesta indicació al vostre agent extern:

Redacteu una consulta de Beancount (BQL) que respongui: quant vaig gastar en
queviures i combustible l'agost de 2026. Utilitzeu els noms dels meus comptes
exactament com els llista bea list open. Proposeu només ordres de només
lectura: bea query o bea report amb un objectiu --file explícit. No proposeu
edicions del llibre major per corregir un total sorprenent. Un total sorprenent
vol dir que la consulta o els llibres necessiten revisió, no una entrada compensatòria.

Executeu els equivalents de la CLI

Executeu la consulta redactada contra un objectiu de llibre major explícit i, després, verifiqueu-la amb 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

Els consumidors de màquines afegeixen la marca global --json abans de la subordre:

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

Els embolcalls JSON, els codis de sortida i la col·locació de les marques globals segueixen la referència de la CLI. La guia del llenguatge de consultes documenta tota la superfície de BQL.

Comproveu la sortida esperada

La consulta informa de 20.00 USD per a Expenses:Groceries, 40.00 USD per a Expenses:Transport:Fuel i 9.99 USD per a Expenses:Uncategorized. Queviures més combustible és 60.00 USD. La declaració d'ingressos hi està d'acord: 69.99 USD de despeses d'agost amb un benefici net de -69.99 USD. La variant JSON retorna les mateixes files dins de data.rows amb metadades de columnes a data.columns.

Reviseu i corregiu

Una consulta contra un nom de compte incorrecte imprimeix (no rows) a l'error estàndard i encara surt amb codi 0. Compareu el nom amb la sortida de bea list open i executeu la consulta de nou. No corregiu mai un total sorprenent editant el llibre major perquè coincideixi amb la resposta. Corregiu la consulta o corregiu els llibres i, després, torneu a executar bea check.

Quan una recepta es converteix en una feina repetitiva

Les indicacions anteriors són adequades per a tasques puntuals dirigides manualment. Les feines que repetiu setmanalment són adequades per a les habilitats versionades del repositori de producte. Cada enllaç següent obre el codi font actual de l'habilitat, que inclou les seves pròpies instruccions de configuració i activació. Aquest CMS no conserva cap còpia d'aquests fitxers.

  • Creeu un llibre major nou des d'un directori buit amb beancount-init. Crea el fitxer del llibre major, un executor de Fava i un projecte de Python.
  • Convertiu una exportació bancària en entrades categoritzades amb beancount-import. Prepara cada fila, suggereix categories a partir de l'historial del llibre major, omet les files ja importades i escriu només després de la confirmació. La recepta 1 anterior és la forma manual d'aquesta feina.
  • Proveu que un compte coincideix amb el seu extracte amb beancount-reconcile. Compara el llibre major amb l'extracte i estableix una afirmació de saldo de final de període després de la confirmació.
  • Responeu una pregunta dels llibres amb beancount-ask. Executa consultes només de lectura i mostra cada consulta al costat de la seva xifra. La recepta 2 anterior és la forma manual d'aquesta feina.
  • Tanqueu un mes amb beancount-close. Concilia cada compte actiu, comprova les entrades recurrents i les marques de revisió, i registra el tancament com una confirmació.

La col·lecció completa viu a l'arbre canònic d'habilitats.

Doneu bea a un agent amb capacitat de shell, o carregueu una habilitat en un client

Aquests són dos passos separats. Instal·lar bea mai instal·la ni configura habilitats.

Un agent amb capacitat de shell necessita l'ordre al seu PATH. Instal·leu-la amb la guia d'inici ràpid de la CLI; després, l'agent executa les mateixes ordres bea que mostren les receptes. L'agent proposa, vosaltres reviseu i bea valida.

Una habilitat es carrega dins del mateix client de l'agent, mitjançant el mecanisme d'habilitats propi d'aquest client. El repositori de producte exposa un arbre canònic a tots dos clients compatibles: Claude Code el llegeix a .claude/skills i Codex a .agents/skills, com a directoris enllaçats a la mateixa font. Apunteu la ubicació d'habilitats del client a la carpeta d'habilitats que necessiteu i continueu llegint la seva font actual per a les frases d'activació i les actualitzacions.

Preguntes tipus ask sense bea ask

La recepta 2 respon preguntes del llibre major amb un agent extern més les ordres només de lectura bea query i bea report. Aquesta via és local. No necessita cap compte ni cap instal·lació addicional.

bea ask és un ajudant integrat separat. No és ni la recepta anterior ni l'habilitat beancount-ask. Enruta la pregunta a través del servei d'IA allotjat, per la qual cosa necessita l'extra ask i credencials allotjades, tal com es documenta a la referència de la CLI. Instal·leu primer la CLI base i, després, afegiu l'extra només quan vulgueu respostes allotjades.

Sortides citades i verificació de la CLI

Cada ordre anterior es va executar contra el paquet publicat bea 0.1.0 en un directori nou. Els recomptes, saldos i missatges citats són verificació de la CLI. Les indicacions de les tasques no es van executar contra cap model. El comportament del model s'avalua per separat.

Font: https://beancount.io/ca/docs/Solutions/accounting-with-ai-agents