AuditCore マルチエージェント協調監査・調書生成スキル (AuditCore Multi-Agent Audit Skill)
一、 アーキテクチャ概要 (Overview)
AuditCore Skill は 「借腦保核 (ホスト脳 + 決定論的コア)」 アーキテクチャを採用しています。
- 外部APIキー不要のマルチエージェントブラインドレビュー委員会: ホストエージェント(Claude Code、Antigravity、Codex、OpenClaw 等)のサブエージェントディスパッチ機能を直接再利用し、コンテキストが物理的に分離された4つの監査ロール(
junior-auditor、challenger-auditor、fact-checker、senior-partner)を起動します。 - 決定論的特許アルゴリズムコア (
scripts/audit_cli.py): ステートフルCLIエンジンを介して、PII暗号化匿名化とSHA-256ハッシュチェーン監査ログ、3レベル重要性フィルタリング、6次元決定論的ルール貫通 (ベンフォードの法則、Zスコア、整数万/整数十万異常、週末記帳、同日分割取引による承認回避、負の赤字相殺/重複伝票)、PyTorch不要の3経路ハイブリッド法規検索 $H(q, c_i)$、4層証拠トポロジー因果グラフと二部グラフ損失検証、DAG状態機械最小カットローカルロールバック、および CSA-1131 4要素 Word (.docx) / Markdown (.md) 調書自動作成とPII逆元復元を強制実行します。
二、 3大鉄則 (IRON RULES — 1つでも違反すれば監査無効)
IRON RULE 1:PIIゼロリーク物理隔離ゲート (Zero-Leakage Privacy Gate)
- 元の帳票ファイルの直接読み取り禁止:
scripts/audit_cli.py initの実行前後において、pandas、python、cat、headまたはファイル読み取りツールを使用してユーザーの元の.xlsx/.csvファイルの内容を直接表示することは絶対に禁止されています! - 暗号化ボールトへのアクセス禁止:
initが生成する.auditcore_workspace/cases/<CASE_ID>/.vault_do_not_read.jsonはXOR-SHA256-HMAC暗号化で実際の企業名とアカウントマッピングを保存しています。ホストエージェントおよびすべてのサブエージェントはこのファイルの読み取りや復号を厳禁とします。 - 全工程匿名化推論: すべてのSQL探索と4ロールブラインドレビュー推論は、
PERSON_0001、ACCT_0001などの匿名化プレースホルダを厳密に使用する必要があります。実際の企業名は、最終的なaudit_cli.py export段階でのみ、決定論的スクリプトによってローカルで逆元復元されます。
IRON RULE 2:4ロールサブエージェント独立ブラインドレビュー契約 (Blinded Subagent Isolation)
full-auditモードでは、メイン対話内で「単一モデルが独り言で4役を演じる」ことは厳禁です。- 状態機械の順序に従い、
agents/下の対応するロール契約ファイルを順次読み取り、独立したサブエージェント(ホストのinvoke_subagent/Task/Agentツールを使用)を派生させる必要があります。- 一次レビュー:
agents/junior-auditor.md->--role juniorで送信 - 独立レビュー:
agents/challenger-auditor.md->--role challengerで送信 - 事実確認:
agents/fact-checker.md->--role factcheckで送信 - 最終審査パートナー:
agents/senior-partner.md->--role seniorで送信
- 一次レビュー:
- ダウングレード互換ルール: ホスト環境がサブエージェントディスパッチツールを一切サポートしない場合にのみ、メインセッションで各ロールのJSONを段階的に個別生成できます。ただし、各ステップの生成後は直ちに
audit_cli.py commitを呼び出し、決定論的証拠グラフによる検証を受けなければなりません。ステップを飛ばしたり統合したりすることは絶対に許可されません。
IRON RULE 3:ステートフルCLI強制ゲートと最小カットロールバック閉ループ (Stateful CLI & Minimum-Cut Rollback)
- 各ロールの結論は、
scripts/audit_cli.py commit --role <role>を介して送信する必要があります。状態機械の順序に違反した場合、CLIは終了コード2(STATE_GUARD_VIOLATION) を返します。 factcheckを送信した後、グローバル一貫性スコア $S_{\text{global}}$ が $\theta$(デフォルト0.80)未満の場合、CLIは自動的に依存性を考慮した最小カットローカルロールバックを実行し、"rollback_triggered": trueおよびrollback_diagnosis.arbitration_probe(検証プローブ)を返し、状態をSTATE_JUNIOR_AUDITまたはSTATE_CHALLENGER_REVIEWに戻します。rollback_triggered: trueが発生した場合は、rollback_diagnosisを対象ロールに注入してサブエージェントを再派生させ、一貫性が基準を満たしてSTATE_SENIOR_PARTNERに入るまで繰り返す必要があります!手書きでexportをスキップするための偽の調書を作成することは厳禁です。
三、 5つの動作モードルーティングテーブル (5 Operational Modes)
ユーザーの要求に応じて対応するモードを自動選択します(デフォルトは full-audit を実行):
| モード名 | 適用シナリオとトリガーワード | 実行パス |
|---|---|---|
full-audit(デフォルト全フロー) | 帳票ファイルの監査、不正/内部統制欠陥の全面的な調査と正式な調書の作成 | 以下の第4節:標準5ステップ状態機械プロトコルを完全実行(init $\to$ sql $\to$ 4ロールブラインドレビューと最小カットロールバックループ $\to$ export) |
quick-scan(クイックスキャン) | 「異常をざっと確認」、「マルチエージェントの議論は不要、ルールスキャン結果だけ見たい」場合 | 1. audit_cli.py init --file <PATH> --case <ID> --mode quick を実行2. オプションで audit_cli.py export --case <ID> --out-dir <DIR> を実行し、ルールスキャン調書をクイックエクスポート |
sql-explore(SQLサンドボックス貫通) | 初期化済みの帳票に対してカスタムの期間跨ぎ/グループ集計クエリを実行 | audit_cli.py sql --case <ID> --query "SELECT ... FROM financial_ledger ..." を実行(読み取り専用の SELECT / WITH のみ) |
law-lookup(法規ハイブリッド検索) | 「分割取引/週末記帳/監査証拠に関する基準条項を調べる」場合 | audit_cli.py law --query "<キーワードまたは質問>" --top-k 5 を実行し、重み付けされた証拠連鎖 $E(q)$ と定性推論4段階結論 $\Psi$ を直接出力 |
workpaper(調書再エクスポート) | 最終審査が完了した案件に対して、事業体名、会計期間、またはエクスポートディレクトリを変更 | audit_cli.py export --case <ID> --entity-name "<事業体名>" --period "<期間>" --out-dir <DIR> を実行 |
詳細なCLIパラメータとJSONスキーマについては、必要に応じて
references/schemas.mdを参照してください。
四、 full-audit 標準5ステップ状態機械実行プロトコル (5-Step Stateful Protocol)
スキルのルートディレクトリが <SKILL_DIR>(scripts/audit_cli.py を含む)であると仮定します。ユーザーが帳票ファイルを提供せず、デモを要求する場合、内蔵の高シミュレーション不正サンプル帳票 <SKILL_DIR>/examples/sample_vouchers_2026.xlsx を直接使用できます。
Step 1:帳票初期化、暗号化匿名化と決定論的ルール貫通 (init)
python3 <SKILL_DIR>/scripts/audit_cli.py init \
--file "<USER_EXCEL_OR_CSV_PATH>" \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--lang "日本語"
- 返されるJSONを記録します:
stats、schema_ddl、rule_findings、anomaly_samples、evidence_chain。 - この時点で状態機械は
STATE_DYNAMIC_SQL_EXPLORATIONにあります。
Step 2:読み取り専用SQLiteサンドボックス貫通クエリ (sql)
schema_ddl と rule_findings に基づいて、匿名化テーブル financial_ledger に対する集計検証SQLを作成します(例:同一ベンダーの同日分割取引の件数と累計金額の検証、または借方科目別の異常金額の集計):
python3 <SKILL_DIR>/scripts/audit_cli.py sql \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--query "SELECT Date, Vendor, COUNT(*) AS tx_count, SUM(Amount) AS total_amount FROM financial_ledger GROUP BY Date, Vendor HAVING tx_count >= 2 OR total_amount >= 100000 ORDER BY total_amount DESC"
- この時点で状態機械は
STATE_JUNIOR_AUDITに進行します。
Step 3:マルチエージェント独立ブラインドレビューと最小カットローカルロールバックループ (commit Loop)
3.1 初級監査人を派生 (STATE_JUNIOR_AUDIT)
<SKILL_DIR>/agents/junior-auditor.mdを読み取ります。- サブエージェント(または独立ステップ)を派生させ、匿名化された
stats、rule_findings、anomaly_samples、sql結果、evidence_chainのみを渡します(ロールバック再審の場合は、追加でrollback_diagnosisを渡します)。 - サブエージェントから返されるJSON(
analysis、risk_score、cited_reg_idsを含む)を取得し、CLIに送信します:
python3 <SKILL_DIR>/scripts/audit_cli.py commit \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--role junior \
--payload '<JUNIOR_JSON>'
- 状態機械は
STATE_CHALLENGER_REVIEWに進行します。
3.2 独立レビューアを派生 (STATE_CHALLENGER_REVIEW)
<SKILL_DIR>/agents/challenger-auditor.mdを読み取ります。- 独立したサブエージェントを派生させ、匿名化された異常証拠、
evidence_chain、および一次レビューのjunior_reportとjunior_scoreを渡し、職業的懐疑心を持って独立してレビューおよび質疑を行うよう要求します。 - 返されるJSON(
rebuttal、adjusted_risk_scoreを含む)を取得し、CLIに送信します:
python3 <SKILL_DIR>/scripts/audit_cli.py commit \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--role challenger \
--payload '<CHALLENGER_JSON>'
- 状態機械は
STATE_FACT_CHECKに進行します。
3.3 事実確認者を派生し、グローバル一貫性を検証 (STATE_FACT_CHECK)
<SKILL_DIR>/agents/fact-checker.mdを読み取ります。- 独立したサブエージェントを派生させ、一次レビューとレビュー結論に対して原子事実分解 (
claims) と二部グラフ証拠マッピング (evidence_mapping) を実行します。 - 返されるJSON(
analysis、support_score、conflict_score、conflict_type、claims、evidence_mappingを含む)を取得し、CLIに送信します:
python3 <SKILL_DIR>/scripts/audit_cli.py commit \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--role factcheck \
--payload '<FACTCHECK_JSON>'
- CLIが返す
current_stateとrollback_triggeredを確認します:"rollback_triggered": trueの場合:証拠グラフに重大な矛盾があることを意味します($S_{\text{global}} < \theta$)。CLIは自動的に最も悪い推論サブグラフを切除し、rollback_target_state(通常はSTATE_JUNIOR_AUDIT)にロールバックしています。返されたrollback_diagnosis(arbitration_probeとcsa_guidanceを含む)を抽出し、3.1(または3.2**)に戻ってサブエージェントを再派生させ、結論を修正する必要があります!**"current_state": "STATE_SENIOR_PARTNER"の場合:証拠グラフの一貫性が基準を満たしていることを意味し、Step 4に進みます。
Step 4:シニアパートナーを派生し、最終審査判断と監査修正仕訳を行う (STATE_SENIOR_PARTNER)
<SKILL_DIR>/agents/senior-partner.mdを読み取ります。- 独立したサブエージェントを派生させ、匿名化された統計、法規証拠連鎖、検証済みの一次レビュー/レビュー結論を渡し、最終審査判断(
final_verdict、final_risk_score、reasoning、action_item、suggested_aje)を生成します。 - CLIに送信します:
python3 <SKILL_DIR>/scripts/audit_cli.py commit \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--role senior \
--payload '<SENIOR_JSON>'
- 状態機械は
STATE_WORKPAPER_GENERATIONに進行します。
Step 5:4要素調書を組み立て、品質 $Q(Y)$ を評価し、PIIを逆元復元してCSA-1131調書をエクスポート (export)
python3 <SKILL_DIR>/scripts/audit_cli.py export \
--case "CASE_2026_01" \
--workspace ".auditcore_workspace" \
--out-dir "./audit_outputs" \
--entity-name "被監査事業体" \
--period "2026年度"
- CLIは自動的にPIIエンティティ名の逆元復元を実行し、以下を生成します:
workpaper_docx_path:中国注册会计师監査基準第1131号に準拠した正式な.docxWord監査調書;workpaper_markdown_path:構造化された.md監査調書;quality_evaluation:$Q_{\text{ev}}$、$Q_{\text{con}}$、$Q_{\text{cmp}}$、総合スコア $Q(Y)$ およびゼロトレランス幻覚検証結果を含む評価レポート。
- 最終的な監査結果をユーザーに報告し、復元された実際の関係事業体名、監査修正仕訳 (AJE)、品質スコア $Q(Y)$、および生成された
.docx/.mdファイルのパスを表示します。
五、 よくある言い訳とサボり防止対照表 (Rationalization Table & Red Flags)
| エージェントのよくあるサボりの言い訳 (Rationalization) | 客観的事実と鉄則による対抗 (Reality & Iron Rule) |
|---|---|
「帳票ファイルが小さいので、とりあえず pandas.read_excel で中にどんな列やベンダーがあるか見てみよう。」 | 重大違反 (IRON RULE 1 違反)!元のファイルを直接読み取ると、平文の企業名と銀行口座が即座にLLMのコンテキストに露出し、プライバシーコンプライアンス境界を完全に破壊します。必ず最初に audit_cli.py init を実行しなければなりません。 |
| 「時間を節約するために、一つのコードブロックで一次レビュー、レビュー、事実確認、パートナーのJSONを同時に作成して連続commitしよう。」 | 重大違反 (IRON RULE 2 違反)!単一コンテキストで4つのロールを同時に作り出すと、深刻な確認バイアス (Confirmation Bias) を引き起こします。ホストがサブエージェントをサポートする場合は、独立して派生させる必要があります。順次実行する場合でも、毎回の commit 後にCLIの証拠グラフフィードバックを読み取ってから次のステップを実行する必要があります。 |
「factcheck 送信後に rollback_triggered: true が発生したので、JSON内のスコアを直接修正して senior を送信しよう。」 | 状態ゲートが直接インターセプト (終了コード 2)!ロールバック後、状態機械は STATE_JUNIOR_AUDIT(または STATE_CHALLENGER_REVIEW)にあります。rollback_diagnosis.arbitration_probe に従って前のロールを再実行しない限り、状態機械は決して STATE_SENIOR_PARTNER への通過を許可しません。 |
「監査結論はもう分かっているので、自分でMarkdownレポートを書いてユーザーに渡せばいい。audit_cli.py export を呼び出す必要はない。」 | 重大違反 (IRON RULE 3 違反)!手書きのレポートでは .vault_do_not_read.json 内の実際の企業名を復号できず(PERSON_0001 としか出力できない)、特許の4要素構造 $Y={\text{idx},\text{aje},\text{jud},\text{log}}$、品質スコア $Q(Y)$ およびCSA-1131 .docx 正式調書が欠落します。 |
Red Flags — 以下の考えが浮かんだら、直ちに停止してCLIプロトコルに戻ること:
pd.read_excel/pd.read_csv/open()を実行してユーザーの元の財務ファイルを読み取ろうとしている.vault_do_not_read.jsonを読み取ろうとしている- 分析において
evidence_chainに存在しない法条番号を捏造している(hallucinated_citationsゼロトレランスダウングレードを誘発し、$Q(Y)$ が強制的に $\le 0.40$ に引き下げられます) sqlまたは任意のcommit --roleステップをスキップして直接exportを試みている