VeriCore: AI가 코드를 작성할 수 있지만, 누가 변경 사항을 검증하는가?
요약
AI 코딩 에이전트의 급증에 따라 코드 변경 검증의 필요성이 대두되었습니다. VeriCore는 AI가 코드를 수정하기 전에 '변경 계약(change contract)'을 수립하고, 이 계약을 기준으로 최종 변경 사항을 검증하는 오픈 소스 계층입니다. 이는 단순 테스트 통과를 넘어 의도된 범위와 제약 조건 준수 여부를 확인합니다.
핵심 포인트
- AI 에이전트의 무분별한 코드 변경 위험에 대응
- 변경 전 '변경 계약'을 수립하여 검증 기준 마련
- 단순 diff 검토가 아닌, 계약 기반의 안전성 워크플로우 제공
- 개발자가 기존 AI 워크플로우를 유지하며 추가할 수 있는 계층
AI 코딩 에이전트(coding agents)는 우리가 소프트웨어를 구축하는 방식을 변화시키고 있습니다. 이들은 기능을 생성하고, 버그를 수정하며, 테스트를 작성하고, 개발자가 더 빠르게 움직일 수 있도록 돕습니다.
하지만 제가 계속 생각하는 질문이 하나 있습니다:
AI 코딩 에이전트가 우리가 의도한 대로 변경했는지 어떻게 알 수 있을까요?
에이전트는 기능을 올바르게 구현할 수도 있지만, 관련 없는 파일들도 수정할 수 있습니다. 또한 일부 요구 사항을 검증하지 않은 채 설득력 있어 보이는 코드를 생성할 수도 있습니다.
테스트를 통과하는 것은 중요하지만, 이것만으로는 모든 의도된 제약 조건이 존중되었음을 자동으로 증명하지 못합니다.
이것이 제가 VeriCore로 탐구하고 있는 문제입니다.
GitHub: Vericore
VeriCore란 무엇인가요?
VeriCore는 AI 코딩 에이전트를 위한 오픈 소스, 로컬 우선(local-first) 검증 계층으로, 현재 Java 및 Kotlin 저장소에 중점을 두고 있습니다.
핵심 아이디어는 간단합니다:
편집하기 전에 변경 경계(change boundary)를 준비하고. 나중에 그것을 기준으로 검증하는 것입니다.
단순히 최종 diff를 검토하는 것에만 의존하는 대신, VeriCore는 개발자나 AI 에이전트가 변경 작업을 시작하기 전에 저장소 기반의 변경 계약(repository-bound change contract)을 수립합니다.
작업 흐름은 다음과 같습니다:
- 저장소를 분석하고 엔지니어링 증거를 수집합니다.
- 의도된 변경 사항과 계획된 파일을 설명하는 변경 계약을 준비합니다.
- 평소 사용하던 AI 코딩 에이전트가 변경 사항을 구현하도록 합니다.
- 원래 계약을 기준으로 저장소를 검증합니다.
- 지원 정보를 포함한 검증 결과를 생성합니다.
코딩 에이전트는 평소의 워크플로우를 계속 사용할 수 있습니다. VeriCore는 그 주변에 별도의 검증 계층을 추가할 뿐입니다.
왜 이것이 유용한가요?
결제 서비스에 입력 유효성 검사(input validation)를 추가하도록 AI 에이전트에게 요청한다고 상상해 보세요.
에이전트는 유효성 검사를 구현하지만, 관련 없는 설정 파일도 변경합니다.
당신의 테스트는 여전히 통과할 수 있습니다.
그러나 당신은 특정 변경을 요청했지만, 에이전트는 더 광범위한 변경을 했습니다.
VeriCore의 변경 안전성 워크플로우는 준비된 범위를 벗어난 변경 사항을 감지하고, 누락되거나 오래되었거나 일치하지 않는 검증 계약(verification contract)과 같은 문제를 식별하도록 설계되었습니다.
목표는 AI 에이전트가 코드를 변경하는 것을 막는 것이 아닙니다. 그 변화의 경계를 명시적이고 검사 가능하게 만드는 것입니다.
VeriCore를 뒷받침하는 세 가지 원칙
- 결정론적 증거 우선 (Deterministic evidence first)
리포지토리의 사실은 언어 모델이 코드 내용을 추측하는 것이 아니라, 리포지토리를 검사하여 얻어야 합니다.
VeriCore는 선택적인 AI 지원 해석 이전에 결정론적인 엔지니어링 증거를 구축합니다.
- 원래 계약에 따라 검증 (Verify against the original contract)
VeriCore는 편집을 시작하기 전에 변경 계약(change contract)을 영구적으로 저장합니다.
검증은 이미 수정된 리포지토리에서 조용히 새로운 것을 생성하는 대신, 그 원래의 계약을 사용해야 합니다.
- 무엇이 검증되었는지 정직하게 밝히기 (Be honest about what has been verified)
도구는 평가할 증거가 부족한데도 요구 사항이 충족되었다고 주장해서는 안 됩니다.
VeriCore는 성공적인 확인과 실패, 그리고 여전히 결론을 내릴 수 없거나 평가되지 않은 기준들을 구별합니다.
이는 테스트, 코드 리뷰 또는 엔지니어링 판단을 대체하는 것이 아닙니다. 성공적인 검증 결과가 임의의 소프트웨어가 의미적으로 정확하다는 것을 증명하지는 않습니다.
어떻게 사용해 볼 수 있나요?
VeriCore는 오픈 소스이며, 리포지토리에는 설치 지침, CLI(Command Line Interface), 로컬 MCP 통합, REST 인터페이스 및 재사용 가능한 GitHub Action이 포함되어 있습니다.
리포지토리부터 시작하세요:
기본 워크플로우는 다음과 같습니다:
vericore init vericore scan --path . vericore inspect --path .
변경 사항을 만들기 전에:
`vericore prepare
설치 세부 정보와 전체 워크플로우는 프로젝트 문서를 참고하세요.
*피드백을 받고 싶은 부분
*
저는 실제 프로젝트에서 AI 코딩 에이전트를 사용하는 개발자들의 피드백에 관심이 있습니다.
- 에이전트가 의도한 범위를 벗어난 변경 사항은 어떻게 감지하십니까?
- 로컬 워크플로우나 CI 파이프라인에 별도의 검증 단계를 사용하시겠습니까?
- 검증 결과를 신뢰하기 위해 어떤 증거가 필요합니까?
- 어떤 통합 기능들이 이러한 도구를 개발 환경에서 유용하게 만들까요?
저는 VeriCore를 오픈 소스로 구축하고 있으며, 솔직한 피드백, 버그 보고 및 기여에 감사드립니다.
더 큰 아이디어는 간단합니다. AI 에이전트가 소프트웨어를 작성하는 능력이 더 커짐에 따라, 그들이 만든 변경 사항을 검증할 수 있는 더 나은 방법도 필요합니다.
AI가 코드를 작성할 수 있습니다. 우리는 그 변경 사항을 검증하기 쉽게 만들어야 합니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기