Bernstein, AI 에이전트 실행을 결정론적으로 재현하는 거버넌스 계층 공개

Hacker News3일 전조회 1

여러 개의 AI 코딩 에이전트를 동시에 돌리면서 그 실행 과정을 통제하고 기록하려는 오픈소스 프로젝트 Bernstein이 공개됐다. Apache 2.0 라이선스로 배포되며 온프레미스 설치를 전제로 한다. 핵심은 에이전트 자체가 아니라 에이전트들을 묶는 상위 계층이다. 결정론적 파이썬 스케줄러가 에이전트들을 병렬로 실행하되, 누가 언제 실행되고 무엇이 병합되는지를 결정하는 조정 루프에는 모델을 넣지 않는다. 그 결과 같은 계획을 다시 돌리면 동일한 결과가 바이트 단위로 재현된다.

현재 버전은 v3.23.0으로 53개의 CLI 어댑터를 지원한다. 구조는 두 축으로 나뉜다. 매니저는 작업과 역할, 시그널을 다루고, 재니터는 테스트와 타입 검사, 린트를 수행하며 선택적으로 다른 모델을 통한 교차 리뷰를 붙인다. 정책은 코드로 작성한다. 개발자가 정책을 쓰면 Bernstein이 이를 강제하고 검증 가능한 기록을 남기는 방식이다. 모델이 개입하는 지점은 따로 있다. 모델 선택은 역량 라우터와 추천기로 LLM의 도움을 받고, best-of-n 방식에서는 LLM 심사자가 승자를 고른다. 다만 이 둘은 모두 선택 사항이며 교체 가능하고, 라우팅 계층을 통해 자체 플래너를 연결할 수도 있다.

감사 기능은 실행 기록을 암호학적으로 묶는 데 초점을 맞춘다. --audit 옵션으로 실행하면 .sdd/audit/ 아래에 HMAC 체인으로 연결된 이벤트 로그가 UTC 기준 하루에 하나씩 jsonl 파일로 쌓인다. 각 항목은 이전 항목의 해시를 참조하기 때문에 중간에 손대면 검증이 깨진다. 기록은 외부로 나가지 않는다. 서명 키를 설정하면 저널과 계보 헤드를 묶은 ed25519 서명 영수증도 함께 생성되며, bernstein verify receipt는 HMAC 키나 .sdd/ 디렉터리 없이 해당 파일만으로 검증된다. 실행하지 않은 제3자도 파일만 받아 확인할 수 있다는 것이 이 설계의 요점이다.

이전 버전에서는 첫 사용자가 90분을 설정에 쏟고 아무것도 얻지 못했다는 사용기가 나왔다. v3.14.159는 이에 대한 응답 성격의 릴리스다. 계획 로더가 잘못된 필드를 삼키는 대신 이름 있는 오류를 던지도록 바뀌었고, 다섯 개 명령이 제거되며 나머지는 폐기 예고 기간을 두고 통합됐다. 참조 문서는 등록된 CLI를 기준으로 CI에서 검증되고, README에는 베타라는 표기가 붙었다. 같은 릴리스에 Muse Code 어댑터, Agent Plugins v1.0.0 매니페스트, 오프라인 검증이 가능한 서명 실행 영수증, bernstein audit diagnose가 추가됐다.

클라우드 실행 경로도 열어뒀다. Cloudflare 통합은 실험 단계로, Workers가 에이전트를 실행하고 Workflows가 다단계 작업을 이어받으며 R2와 D1이 워크스페이스와 사용량 상태를 보관한다. 사용자 자신의 계정에서 돌아간다. 실행 환경은 노트북, 방화벽 뒤 온프레미스, Cloudflare Workers, 다중 노드 쿠버네티스 클러스터, 또는 이들의 혼합을 지원한다. Cloudflare 샌드박스나 로컬 도커를 이용한 샌드박스 실행 모드도 있다. 저장소가 입력이고 테스트가 게이트라는 원칙 아래 호스트 환경에 맞춰 동작하며, SaaS를 반드시 거치도록 강제하지 않는다.

텔레메트리는 기본적으로 로컬에만 머문다. 켜는 경우에는 HMAC 체인 실행 추적, 작업별 도구 호출, 모델 사용량, 토큰 비용, 지연 백분위 같은 감사 수준의 데이터를 자체 OTel 컬렉터나 Datadog, Splunk, S3 버킷으로 보낼 수 있다. 온프레미스 설치를 고려한 기본값이라는 설명이다.

기존 도구와의 관계도 분명히 해둔다. Claude Code는 스스로 하위 에이전트를 만들 수 있고, Bernstein은 이를 포함해 40개 이상의 CLI 에이전트를 한 번에 다루면서 그 출력을 신뢰하는 대신 테스트로 검증한다. Claude Code는 Bernstein 안에서 가장 흔히 쓰이는 주 백엔드이므로 둘 중 하나를 고르는 관계는 아니다. 다만 Cloudflare 통합은 실험 단계이고 README가 베타를 명시하고 있다는 점은 도입 전에 감안해야 한다.