外部AIエージェントに2つの簿記タスクを任せ、すべての元帳変更をあなたのレビュー下に置きます: プレビュー優先のチェック付きで銀行CSVをインポートし、クエリとレポート出力から残高の質問に答えます。
CLIクイックスタートでbeaをインストールします。ローカルのインポート、クエリ、レポートコマンドにはBeancount.ioアカウントは不要です。チャットエージェントには独自のサブスクリプションまたはAPIキーが必要なだけです。組み込みのbea askヘルパーのみホスト型認証情報が必要ですが、これらのレシピでは使用しません。
エージェントの役割とbeaの役割
エージェントはカテゴリを提案し、クエリの草案を作成します。Beaは元帳構造を検証し、合計を計算します。以下のすべてのコマンドはあなた自身が実行します。エージェントが元帳を直接書き込むことはありません。
レシピ1: エージェント提案カテゴリで明細書をインポート
銀行のエクスポートを検証済みエントリに変換します。エージェントが分類ルールを提案します。プレビューと重複レビューで何を書き込むか決定します。
前提条件
beaと新しいデモディレクトリが必要です。アカウントもPythonインポーターも不要です。
入力の準備
ディレクトリと元帳を作成します。明示的な--fileターゲットにより、すべてのコマンドがデモ帳を指すようにします。
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このサンプルを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これらの分類ルールをrules.tomlとして保存します:
[[rule]]
match = "whole foods|trader joe|corner market"
account = "Expenses:Groceries"
[[rule]]
match = "shell|chevron|exxon"
account = "Expenses:Transport:Fuel"タスクプロンプトをコピー
このプロンプトをCSVの内容とともに外部エージェントに貼り付けます:
私の銀行CSVの行に対するBeancount分類ルールを提案してください。
事業者ごとに1つのTOMLルールを、マッチパターンと宛先の経費
勘定科目とともに提案してください。日付、支払先、金額は絶対に
変更しないでください。確信を持って分類できない行は未マッチのまま
にしてください: それらはフラグ!付きでExpenses:Uncategorizedに
転記されます。私がbea importのプレビューを実行し、ローカルで
適用します。あなたは私の元帳を書き込まないでください。CLI同等コマンドを実行
まずプレビューを実行し、レビュー済みエントリを適用して結果を検証します:
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"期待される出力を確認
プレビューは3 ready, 0 exact duplicates, 0 possible duplicatesを報告し、終了コード0で終了します。何も書き込みません。適用実行はWrote 3 entriesを報告します。チェックはエラーなしを報告します。!キューにはUnknown Shopからの未マッチの1行が-9.99 USDでリストされます。残高クエリは当座預金に930.01 USDを報告します。適用を繰り返すと0 ready, 3 exact duplicatesを報告し、0エントリを書き込みます。
レビューと修正
!行を元帳で読んだ後、意図的に再分類します。チェック合格は元帳の残高が一致することのみを証明します。Expenses:Uncategorizedが正しい勘定科目かどうかについては何も言いません。重複ポリシー、競合処理、高度なPythonパスについては、銀行CSVウォークスルーに従ってください。
レシピ2: 書き込みなしで残高の質問に答える
デモ帳から1つの質問に答えます: 2026年8月に食料品と燃料にいくら使ったか。エージェントがクエリの草案を作成します。読み取り専用コマンドで回答が生成されます。
前提条件
レシピ1のデモ元帳または独自の帳簿が必要です。以下のすべてのコマンドは読み取り専用です。
タスクプロンプトをコピー
このプロンプトを外部エージェントに貼り付けます:
次の質問に答えるBeancountクエリ(BQL)を作成してください: 2026年8月に
食料品と燃料にいくら使いましたか。bea list openにリストされている
私の勘定科目名を正確に使用してください。読み取り専用コマンドのみを
提案してください: 明示的な--fileターゲット付きのbea queryまたは
bea report。意外な合計を修正するための元帳編集は提案しないで
ください。意外な合計はクエリまたは帳簿のレビューが必要であることを
意味し、調整エントリではありません。CLI同等コマンドを実行
草案されたクエリを明示的な元帳ターゲットに対して実行し、レポートで相互検証します:
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機械的な利用者はサブコマンドの前にグローバル--jsonフラグを追加します:
bea --file books/main.bean --json query "SELECT account, sum(position) WHERE account ~ 'Expenses' GROUP BY account"JSONエンベロープ、終了コード、グローバルフラグの配置はCLIリファレンスに従います。クエリ言語ガイドが完全なBQLサーフェスを文書化しています。
期待される出力を確認
クエリはExpenses:Groceriesに20.00 USD、Expenses:Transport:Fuelに40.00 USD、Expenses:Uncategorizedに9.99 USDを報告します。食料品と燃料の合計は60.00 USDです。損益計算書も一致します: 8月の経費69.99 USD、純利益-69.99 USD。JSONバリアントは同じ行をdata.rows内に、列メタデータをdata.columns内に返します。
レビューと修正
誤った勘定科目名に対するクエリはstderrに(no rows)を出力し、それでも終了コード0で終了します。名前をbea list openの出力と比較し、クエリを再実行します。回答に一致するように元帳を編集して意外な合計を修正することは絶対にしないでください。クエリを修正するか帳簿を修正し、その後bea checkを再実行してください。
レシピが繰り返しのジョブになる場合
上記のプロンプトは手動で実行される単発タスクに適しています。毎週繰り返すジョブには、製品リポジトリ内のバージョン管理されたスキルが適しています。以下の各リンクはスキルの現在のソースを開き、独自のセットアップとトリガー手順が含まれています。このCMSはこれらのファイルのコピーを保持していません。
- 空のディレクトリから新しい元帳を開始するにはbeancount-initを使用します。元帳ファイル、Favaランナー、Pythonプロジェクトを作成します。
- 銀行エクスポートを分類済みエントリに変換するにはbeancount-importを使用します。すべての行をステージングし、元帳履歴からカテゴリを提案し、既にインポートされた行をスキップし、確認後にのみ書き込みます。上記のレシピ1はこのジョブの手動形式です。
- 1つの勘定科目が明細書と一致することを証明するにはbeancount-reconcileを使用します。元帳を明細書と差分比較し、確認後に期間末の残高アサーションを確定させます。
- 帳簿から質問に答えるにはbeancount-askを使用します。読み取り専用クエリを実行し、各クエリをその数値とともに表示します。上記のレシピ2はこのジョブの手動形式です。
- 月を締め出すにはbeancount-closeを使用します。すべてのアクティブな勘定科目を調整し、繰り返しエントリとレビューフラグをチェックし、締めをコミットとして記録します。
完全なコレクションは正規スキルツリーにあります。
シェル対応エージェントにbeaを渡すか、クライアントにスキルを読み込む
これらは2つの別々のステップです。beaのインストールはスキルをインストールまたは設定しません。
シェル対応エージェントはコマンドをパス上に置く必要があります。CLIクイックスタートでインストールすると、エージェントはレシピが示す同じbeaコマンドを実行できます。エージェントが提案し、あなたがレビューし、beaが検証します。
スキルはエージェントクライアント自体に読み込まれ、そのクライアント独自のスキルメカニズムを通じて読み込まれます。製品リポジトリは、サポートされている両方のクライアントに対して1つの正規ツリーを公開します: Claude Codeは.claude/skillsの下で、Codexは.agents/skillsの下で、同じソースへのリンクディレクトリとして読み取ります。クライアントのスキル場所を必要なスキルフォルダに指し、トリガーフレーズと更新については現在のソースを読み続けてください。
bea askなしのAsk風質問
レシピ2は外部エージェントと読み取り専用のbea queryおよびbea reportコマンドで元帳の質問に答えます。そのパスはローカルです。アカウントも追加インストールも不要です。
bea askは別の組み込みヘルパーです。上記のレシピでもbeancount-askスキルでもありません。質問をホスト型AIサービスにルーティングするため、CLIリファレンスに文書化されているように、askエクストラとホスト型認証情報が必要です。まず基本CLIをインストールし、ホスト型回答が必要な場合にのみエクストラを追加します。
引用された出力とCLI検証
上記のすべてのコマンドは、公開されたbea 0.1.0パッケージを新しいディレクトリで実行して検証されました。引用されたカウント、残高、メッセージはCLI検証です。タスクプロンプトはどのモデルに対しても実行されていません。モデルの動作は別途評価されます。




