TL;DR
- Langgraph-harness는
LangGraph기반의 자체 호스팅 GitLab 코딩 에이전트 플랫폼으로, 병합 요청 검토·이슈 및 작업 처리·프로젝트 맥락을 반영한 채팅을 제공함. - 네 가지 하네스는 MR 검토, 작업 항목 처리, 자유 형식 작업 처리, 대화형 채팅이며, 코드 변경 작업은 각각 격리된
Kata Containers가상 머신에서 실행됨. - 댓글 게시 전 검토와 실행 중 오류 감지·수정, 영구 체크포인트를 통한 재개를 공통 기반으로 제공함.
- 2026년 9월 29일 기준 133회 릴리스, 1,000건 이상의 검토, 67%의 댓글 수용률을 기록했으며, 2026년 중반부터 실제 운영 환경에서 사용됨.
- 프런트엔드에는
React, 백엔드에는Elysia와LangGraph, 대기열에는BullMQ를 사용하고, 여러 클라우드 및 로컬 LLM 제공자를 지원함.
Langgraph-harness
LangGraph기반의 GitLab용 자체 호스팅 AI 코딩 에이전트 플랫폼임.- 병합 요청을 검토하고 작업 항목과 태스크를 자율적으로 처리하며, 프로젝트 전체 맥락을 활용하는 채팅을 제공함. 중요한 정보를 기억해 실행이 거듭될수록 이전 결과를 바탕으로 작업함.
- 2026년 중반부터 실제 운영 환경에서 사용됐으며, 2026년 9월 29일 기준 133회 릴리스, 1,000건 이상의 검토, 67%의 댓글 수용률을 기록함. 당시의 스냅샷과 실패 및 수정 내역을 포함한 개발 기록을 제공함.
LangChain과는 제휴 관계가 아님.DISCLAIMER.md에 관련 설명이 있음.
주요 기능
- 네 가지 하네스가 공통 기반을 공유함.
- MR 검토: 웹훅 이벤트에 반응해 변경 사항(diff)을 읽고 댓글 초안을 작성한 뒤 게시함. 폴링이나 수동 실행이 필요하지 않음.
- 작업 항목 처리: GitLab 이슈나 태스크를 할당하면 에이전트가 자체
Kata Containers가상 머신에서 실행됨. 각 샌드박스에는 시스템 호출 가로채기만 적용하는 것이 아니라 전용 게스트 커널이 제공됨. 에이전트는 초안 MR을 열고 동일한 브랜치에서 후속 댓글에 계속 응답함. - 태스크 처리: GitLab 이슈 대신 자유 형식 지시문으로 시작하는 동일한 샌드박스 실행 절차임. 요청에 따라 실행하거나 반복 일정에 맞춰 실행함.
- 채팅: GitLab을 인식하는 대화형 어시스턴트로, GitLab 데이터·헤드리스 브라우저·자체 검토 및 채팅 기록에 접근하는 실제 도구를 사용함. 민감한 도구 호출은 실행 전에 명시적인 사람의 승인을 받도록 일시 중지됨.
- 공통 기반에서는 초안 댓글을 게시하기 전에 모두 검사함. 호출 반복, 무한 루프, 질문으로 끝나는 응답, 검사 생략 등 비정상 실행을 중간에 감지하고 수정함.
- 영구 체크포인트를 사용해 실행을 처음부터 다시 시작하지 않고 이어서 재개함.
- 전체 기능 및 아키텍처 설명을 제공함.
스크린샷
- 스크린샷 갤러리에서 추가 화면을 확인할 수 있음.
로드맵
- 자동 MR 검토, 이슈에서 초안 MR 생성, 요청형 태스크, GitLab 인식 채팅.
- 코드 변경 실행을 위한 격리 샌드박스, 민감한 채팅 작업 전 사람의 승인.
- 검토 간에 유지되는 프로젝트 메모리, 재시작 대신 재개하는 충돌 실행.
- 반복 예약 태스크.
- GitHub 지원: 봇에 이슈를 할당하면 초안 PR을 생성하는 기능(#35).
- 학습 내용을 확인할 수 있고 스스로 최신 상태를 유지하는 프로젝트 메모리(#2).
- 관련 사실을 연결하고 관련성에 따라 검색하는 자체 호스팅 메모리 엔진(#1).
- 알려진 페이지 가져오기에 그치지 않고 에이전트가 정보를 검색할 수 있도록 하는 웹 검색(#24).
- 그 밖의 항목은 모두 공개 이슈에서 추적함.
기술 스택
- 프런트엔드: 실행 모니터링과 에이전트 직접 채팅을 위한
React관리 UI(Dashboard, Threads, Chat, Workflows). - 백엔드: 영구 체크포인트를 사용하는
LangGraph에이전트를 구동하는ElysiaAPI 서버. - 에이전트: GitLab MCP 도구와 스킬 기반 워크플로를 갖춘 멀티 제공자 LLM.
OpenRouter,Gemini,Groq,Ollama,sglang을 지원함. - 대기열:
BullMQ를 사용하며, 디바운스된 재검토, 동시 실행 수 제한, UI의 실시간 대기열 상태를 제공함. - 메모리: GitLab을 위한 컨텍스트 엔지니어링으로, 검토를 거치며 학습한 프로젝트 단위의 지속성 있는 사실과 채팅의 개인 메모리를 제공함.
빠른 시작
- 사전 요구 사항은
Node.js 22+, Docker,api범위의 GitLab PAT, GitLab OAuth 앱, 그리고OpenRouter·Gemini·Groq키 중 하나 또는 로컬Ollama·sglang인스턴스임. - 설치 후 백엔드 환경 변수 예시 파일을 복사하고, GitLab PAT와 OAuth 클라이언트 ID·시크릿, 세션 시크릿, 시크릿 암호화 키, 관리자 GitLab 사용자 이름, 사용할 LLM 제공자의 키 또는 기본 URL을 설정한 뒤 개발 서버를 실행하는 절차임.
- 프런트엔드는
http://localhost:5173, API는http://localhost:3698에서 제공됨. - 전체 안내에는 GitLab OAuth 앱 설정, 웹훅 구성, 저장소별
.harness.yml설정이 포함됨.
배포 및 CI/CD
- Docker Compose를 사용해 자체 호스팅함.
- 푸시 시 GitLab CI를 통해 프로덕션 배포를 자동화함.
- 서버 설정은 Deployment 안내에서, LLM 백엔드 자체 호스팅은 sglang Deployment 안내에서 다룸.
개발 이야기
- 프로젝트 구축 과정은 The Story So Far에서 확인할 수 있음.
- “LangGraph”는 이 프로젝트가 기반으로 삼는 프레임워크를 설명하기 위해 명목적 공정 사용 원칙에 따라 사용된
LangChain, Inc.의 상표임. 이 프로젝트는 독립적으로 운영되며LangChain, Inc.와 제휴 관계가 없음.DISCLAIMER.md에 관련 설명이 있으며, 라이선스는 MIT임.
댓글 (0)
로그인하면 이 기사에 내 생각을 남길 수 있어요