한 번의 기록된 에이전트 실행이 합성 3행 원장을 은행 CSV에서 검증된 장부로 전환했습니다. 기초 잔액은 1000 USD였고, 명세서에는 3행이 있었으며, 예상 답은 어떤 보고서가 실행되기 전에 산술로 도출되었습니다: 확인 잔액은 2958.50 USD, 9월 수익은 1958.50 USD입니다. 실행은 정확히 그 숫자에 도달했고, 스스로 진단한 실제 실패 한 번 후에 말입니다.
입력
챌린지는 /downloads/agent-accounting/ 아래에 게시된 세 개의 파일로 구성되며, 전체 시나리오는 에이전트 회계 가이드에 있습니다. 장부는 2026-09-01에 USD로 시작하며 Assets:Checking에 1000 USD가 있습니다. 명세서에는 9월의 3행이 있습니다: 2026-09-02의 2000.00 USD 고객 결제, 2026-09-03의 -29.00 USD 호스팅 청구서, 2026-09-04의 -12.50 USD 카페 방문. 규칙은 고객을 Income:Consulting으로, 호스팅을 Expenses:Software로, 카페를 Expenses:Dining으로 매핑하며, 규칙이 명명한 모든 계정은 시작 원장에 필요한 날짜로 개설됩니다.
기대값은 보고서 출력과 무관하게 행과 기초 잔액에서 나옵니다: 1000 + 2000 - 29 - 12.50은 2958.50 USD의 확인 잔액이고, 2000 - 29 - 12.50은 1958.50 USD의 9월 수익입니다. 입력이 변경되거나 기대값이 틀리면 그럴듯해 보이는 보고서를 출력하는 대신 검증이 실패합니다.
방법론
두 계층을 분리하여 유지합니다. 첫째, 설치된 CLI 검증기(scripts/check-agent-accounting.py, bea 0.1.0에 고정)가 격리된 구성으로 새 임시 디렉터리에서 미리보기, 적용, 반복 적용, 검사, 잔액 및 손익계산서 쿼리를 실행합니다. 미리보기가 3건 준비됨을 보고하고 아무것도 쓰지 않으며, 첫 적용이 3개 항목을 쓰고, 반복 적용이 3개의 정확한 중복과 함께 0건 준비됨을 보고하고 아무것도 쓰지 않으며, 바이트 동일성이 미리보기와 거부된 쓰기에서 유지되고, 검사가 깨끗하며, 두 합계가 위의 산술과 일치함을 단언합니다. 또한 불균형 거래(Assets:Checking -5 USD 대 Expenses:Dining 4 USD)를 시도하고, 종료 코드 1을 요구하며, 원장 바이트가 변경되지 않았는지 확인합니다.
둘째, 다운로드의 새 복사본에서 한 번의 실제 에이전트 실행이 있었습니다. 클라이언트는 muse 1.1.1 (Muse Code)였고 모델은 muse-spark-1.3-contributor였으며, 작업 디렉터리 내에서 셸 및 파일 쓰기 도구로 헤드리스로 실행되었고, 웹 도구는 비활성화되었으며, 실행 중 인간의 개입은 없었습니다. 결정적으로, rules.toml은 제공되지 않았습니다 — 에이전트는 원장의 개설 계정에서 자체 분류를 도출했습니다.
관찰된 결과
에이전트는 22번의 도구 호출(셸 21회 + 파일 쓰기 1회)을 했고 종료 코드 0으로 종료했습니다. CSV와 16개의 개설 계정을 검사하고, CLI 도움말 화면을 읽고, 자체 rules.toml(대소문자 구분 없는 일치이므로 표준 패턴과 동등한 리터럴 대문자 일치)을 작성하고, 아무것도 쓰지 않은 채 3건 준비됨을 미리보고, 3개 항목을 적용하고, 깨끗한 검사를 실행했습니다. 보고된 합계는 확인 잔액 2958.50 USD와 9월 수익 1958.50 USD였습니다. 운영자는 이후 에이전트의 원장에 대해 두 읽기 전용 쿼리를 다시 실행했고 독립적인 기대값과 동일한 수치를 확인했습니다.
아래의 짧은 데모는 표준 다운로드에서 해당 작동 경로를 결정적으로 재연합니다. 실시간 실행이 아닌 재생입니다:
$ bea --version
bea 0.1.0
$ bea import (preview)
csv → Assets:Checking: 3 ready, 0 exact duplicates, 0 possible duplicates
$ bea import --apply
Wrote 3 entries to $WORK/books/main.bean.
$ bea check
$WORK/books/main.bean: no errors
$ bea balance Assets:Checking
Checking 2,958.50 USD
$ bea report income-statement -t 2026-09
Net Profit: 1,958.50 USD
checking: 2958.50 USD (expected)
profit: 1958.50 USD (expected)
REPLAY OK: preview 3/0, applied 3, check clean, 2958.50 / 1958.50 USD.실패 및 개입
대본은 실패를 포함한 원래 순서를 유지합니다. 두 번의 탐색적 호출은 무해하게 실패했고(pip가 설치되지 않음; 편집 가능한 설치 경로 탐색이 site-packages 외부의 소스를 찾음) 에이전트는 계속 진행했습니다. 한 번의 실패는 실제였습니다: 첫 --apply가 작업 공간 외부의 캐시 잠금에서 Operation not permitted로 종료되었는데, 샌드박스가 홈 캐시 아래의 잠금 파일을 차단했기 때문입니다. 에이전트는 제품 소스를 검색하여 캐시 디렉터리가 XDG_CACHE_HOME을 존중한다는 것을 발견하고, 이를 작업 디렉터리 내부로 지정하여 다시 실행했고, 미리보기가 보여준 것과 동일한 3개 항목을 썼으며, 이후 임시 캐시를 제거했습니다. 원장은 수동으로 편집된 적이 없습니다; 모든 항목은 bea import --apply에서 나왔습니다. 실행 중 개입: 없음 — 승인 없이 헤드리스로 실행되었고, 인간은 사후에만 이벤트 로그를 검토했습니다.
한계
이것은 합성 데이터에서 한 클라이언트의 한 번 실행에 대한 CLI 출력 검증입니다 — 모델 벤치마크가 아닙니다. 다른 클라이언트, 일반적인 회계 정확성, 또는 무인 프로덕션 사용에 대해 주장하지 않습니다. 두 가지 구분이 중요합니다. 첫째, 범주 판단 대 구조적 검증: 에이전트가 각 행이 속한 계정을 선택했으며, 그 판단은 세 개의 모호하지 않은 행을 읽는 능력만큼만 좋습니다. 이후 bea가 검증한 모든 것 — 잔액, 영합 구조, 중복 감지 — 은 구조적입니다: 통과하는 검사는 원장이 균형을 이룬다는 것을 증명하지만, 카페에 Expenses:Dining이 올바른 계정이었다는 것은 결코 증명하지 않습니다. 둘째, 원장은 장난감입니다: 세 행, 단일 통화, 분류 모호성 없음, 상충하는 이력 없음. 더 어려운 명세서는 판단을 시험할 것입니다; 이것은 루프를 시험합니다.
다운로드
모든 챌린지 입력과 전체 실행 기록은 모든 로케일이 공유하는 정적 파일로 제공됩니다:
- main.bean — 시작 원장, 게시된 대로 검증됨
- statement.csv — 세 개의 합성 행
- rules.toml — 결정적 범주
- agent-run.transcript.md — 실제 프롬프트, 실패가 유지된 전체 도구 시퀀스, 독립적 검증
- demo-replay.sh — 작동 경로의 라벨이 붙은 결정적 재생 (PATH에
bea 0.1.0필요) - demo-replay.txt — 캡션과 함께 캡처된 재생 출력, 데모 시청의 텍스트 대안
재현하세요: 세 입력을 다운로드하고, 먼저 미리보기, 적용, 그리고 두 합계를 1000 + 2000 - 29 - 12.50에 대해 확인하세요. 에이전트 가이드는 동일한 단계를 수동으로 안내합니다.





