Foremerge 0.5.0 – 병렬 코딩 에이전트를 위한 의도 기반 충돌 감지
Foremerge 0.5.0은 코드가 작성되기 전에 에이전트가 의도 충돌을 감지할 수 있게 합니다
Foremerge 0.5.0은 1.0 이전 버전의 로컬 우선 MVP로, Git 위에 조정 계층을 추가합니다. 여러 AI 코딩 에이전트가 격리된 Git 워크트리에서 작업하고, 의도(의미적 범위 및 작업)를 게시하며, 이러한 의도가 충돌할 때 즉각적이고 결정적인 경고를 받을 수 있게 합니다. 이 프로토콜은 권고적입니다—에이전트가 잠기지 않지만—전통적인 줄 기반 병합이 놓치는 "서로의 작업을 취소하는" 문제를 방지합니다.
의도 기반 충돌 감지 작동 방식
- 에이전트가 무엇을 건드릴지 알립니다 – 텍스트를 비교하는 대신, 에이전트는 대상을 설명하는 JSON 페이로드를 보냅니다 (예:
symbol:PaymentService=replace). - 모든 에이전트가 공유 SQLite 데이터베이스를 읽습니다 – 저장소의 Git 공통 디렉토리(
<git-common-dir>/foremerge/state.sqlite3)에 저장됩니다. 데이터베이스는 원자적으로 업데이트되므로 모든 로컬 에이전트가 동일한 뷰를 봅니다. - Foremerge는 의도를 결정적으로 비교합니다 – 두 계획이 충돌하면
HIGH권고를 내보내고, 설명과 제안된 추상화(예:PaymentProvider)를 함께 제공합니다. - 에이전트는 진행 방법을 결정합니다 – 계획을 조정하거나, 범위를 주장하거나, 권고 경고와 함께 계속할 수 있습니다. 파일 잠금이 없으므로 에이전트가 충돌해도 교착 상태가 발생하지 않습니다.
"Foremerge는 모델에게 충돌을 판단하도록 요청하지 않으므로, 동일한 입력은 항상 동일한 답을 생성합니다." – Foremerge README
Git이 볼 수 없는 예제 충돌
Agent A: PaymentService를 StripePaymentService로 교체
Agent B: PaymentService에 PayPal 지원 추가
두 에이전트 모두 다른 파일을 수정하므로 Git은 문제없이 병합합니다. Foremerge는 둘 다 동일한 symbol:PaymentService 범위를 반대 작업(replace vs extend)으로 선언했음을 감지하고 HIGH 권고를 발생시켜 PaymentProvider와 같은 공유 추상화를 제안합니다.
저장소의 터미널 데모는 워크트리 변경 전에 충돌이 보고되는 것을 보여줍니다:

빠른 시작: 5분 안에 충돌 확인
- 설치 –
curl -fsSL https://foremerge.com/install.sh | sh(foremerge및 별칭fmg설치). - 초기화 –
foremerge init가 로컬 SQLite 상태를 생성합니다. - 에이전트 연결 –
foremerge setup all이 Claude, Codex, Cursor 등의 MCP 스킬을 등록합니다. - 검증 확인 정의 – 예:
foremerge checks set test -- cargo test --all-targets. - 데모 실행 – 두 에이전트를 등록하고, 범위가 있는 의도를 게시하고, README에 표시된 대로
jq를 사용하여 JSON 충돌 출력을 검사합니다.
모든 명령은 실제이며, 데모 출력은 examples/terminal-session.txt에 캡처되어 있습니다.
핵심 데이터 모델 및 워크플로우
Agent → Task → Intent → Claim → Symbol → Dependency
→ ChangeSet → Test → Result → Decision → Provenance
- Intent – 계획된 변경의 의미적 설명.
- Claim – 범위에 대한 권고적 임대; 여러 에이전트가 동일한 범위를 주장할 수 있지만 충돌 경고가 첨부됩니다.
- ChangeSet – 코드의 정확한 지문, 선언된 심볼, 검증 명령을 기록합니다.
- Verification gate – ChangeSet이 수락되기 전에 정확한 지문에서 통과해야 하는 사용자 정의 검사(예:
cargo test).
상태 전환은 결정적이며 SQLite에 해시 체인 이벤트로 저장되어 분산 합의 없이 감사 가능한 추적을 제공합니다.
Git 워크트리와의 통합
Foremerge는 Git의 공통 디렉토리를 활용하여 격리된 워크트리가 파일 트리를 분리하면서 동일한 조정 데이터베이스를 공유할 수 있게 합니다. 워크트리를 생성하고 에이전트를 등록하는 예:
foremerge worktree create --branch agent/paypal --path ../payments-paypal --base HEAD
foremerge --cwd ../payments-paypal --json agent register --name paypal-agent --model "$ACTUAL_MODEL_ID"
다른 워크트리는 등록된 에이전트와 그 의도를 즉시 볼 수 있습니다. MVP는 SQLite 저장소를 여러 머신에 복제하지 않습니다; 로컬 단일 머신 조정을 위한 것입니다.
권고적 클레임 vs 하드 잠금
Foremerge는 의도적으로 파일 또는 심볼 잠금을 피합니다. 잠금은 단일 에이전트가 충돌하면 전체 플릿을 중단시키고 교착 상태가 될 수 있는 대기열을 만들 수 있습니다. 대신 클레임은 권고적입니다: 중복 경고를 표시하면서 에이전트가 계속 작업할 수 있게 합니다. 최종 수락 게이트(검증 + 충돌 해결)는 refs/foremerge/accepted/*에 커밋이 기록되기 전의 하드 체크포인트입니다.
Hacker News의 커뮤니티 피드백
- 에이전트를 위한 버전 관리 – 한 댓글 작성자는 전통적인 VCS가 인간을 위해 설계되었지 AI 에이전트를 위한 것이 아니며, Foremerge가 "에이전트 우선" 워크플로우로 가는 한 단계가 될 수 있다고 언급했습니다.
- 사용자 정의 솔루션 – 사용자들은 임시 블랙보드 패턴과
weave같은 도구를 보고했지만, Foremerge가 제공하려는 더 체계적인 접근 방식을 원한다고 표현했습니다. - 충돌 관련성 – 충돌이 언제 에이전트를 중지해야 하는지에 대한 질문이 제기되었습니다. Foremerge의 현재 모델은 의미적 중복을
HIGH권고로 표시합니다; 로드맵에는 더 풍부한 휴리스틱과 사용자 구성 가능한 심각도가 포함됩니다. - 향후 로드맵 – 작성자는 의존성 수준 충돌을 잡기 위한 treesitter 기반 코드 그래프와 실시간 알림을 위한 푸시 알림 계획을 언급했습니다.
제한 사항 및 신뢰 모델 (문서화된 대로)
- 충돌 감지는 결정적이지만 휴리스틱입니다; 오탐/미탐이 발생할 수 있습니다.
- 클레임은 권고적일 뿐입니다; 독점 소유권을 강제하지 않습니다.
- 검증은 기록된 명령이 특정 지문에 대해 성공했음을 증명할 뿐, 테스트 스위트가 완전하다는 것을 증명하지 않습니다.
- SQLite 저장소는 로컬 전용입니다; 분산 합의 또는 다중 테넌트 보안 모델이 없습니다.
- 아직 게시된 벤치마크 결과가 없습니다; 성능 비교가 계획되어 있습니다.
- Foremerge는 코드 리뷰, CI, 보안 스캔 또는 백업 프로세스를 대체하지 않습니다.
확장 및 기여
Foremerge는 Apache-2.0에 따라 오픈 소스입니다. 특히 범위 어휘, 충돌 증거, ChangeSet 출처, 검증 정책에 대한 기여를 환영합니다. 저장소에는 다음이 포함됩니다:
- 전체 문서(아키텍처, 프로토콜, 상태 모델, 충돌 감지, Git 통합, 에이전트-클라이언트 설정, JSON API, OpenAPI 스키마, 벤치마크 계획, 제한 사항, 로드맵).
- 예제 스크립트(
examples/terminal-session.txt,examples/api-requests.sh). - crates.io의 Rust 크레이트(
foremerge). - Claude, Codex, Cursor용 MCP 스킬 파일 및 휴대용
.agents/skills디렉토리.
로컬에서 전체 테스트 스위트를 실행하려면: make verify.
결론
Foremerge 0.5.0은 AI 코딩 에이전트가 코드를 건드리기 전에 의도를 게시하고 조정할 수 있게 하는 실용적이고 결정적인 계층을 제공하여, Git의 줄 기반 병합이 볼 수 없는 의미적 충돌을 잡아냅니다. 여전히 로컬 전용 저장소와 권고적 경고가 있는 MVP이지만, 에이전트 우선 버전 관리 워크플로우를 구축하기 위한 구체적인 기반을 제공합니다.
Sources
관련
- Dispatch
- 프로젝트
- Dispatch
- 프로젝트
- Dispatch