We got local models to triage the OpenClaw repo for FREE!*
Quick Summary
기존 NVIDIA GB10 장비에서 Gemma와 Qwen을 제한된 에이전트 하네스로 구동해 OpenClaw 이슈·PR을 실시간 분류하고, 필요한 항목만 디스코드로 전달하는 로컬 트리아지 시스템을 구축·평가한 사례다.
🖼️ 인포그래픽
🖼️ 4컷 인포그래픽
💡 한 줄 요약
기존 NVIDIA GB10 장비에서 Gemma와 Qwen을 제한된 에이전트 하네스로 구동해 OpenClaw 이슈·PR을 실시간 분류하고, 필요한 항목만 디스코드로 전달하는 로컬 트리아지 시스템을 구축·평가한 사례다.
📌 핵심 요약
- OpenClaw에 매일 들어오는 수백 건의 이슈와 PR 가운데 담당 영역의 긴급 항목만 빠르게 찾기 위해, 로컬 오픈 가중치 모델을 이용한 실시간 분류·알림 시스템을 구축했다.
- 분류 에이전트는 제목·본문·라벨·변경 파일·일부 diff를 받고, 필요한 경우 읽기 전용 저장소 셸인 reposhell로 코드를 조사한 뒤 정의된 JSON 스키마에 맞춰 라벨을 제출한다.
- GitHub 미러링과 SQLite 작업 큐, 컨텍스트 구성, 결과 저장, 디스코드 알림은 결정론적 코드가 담당하고, 의미 판단이 필요한 라벨 분류 단계에만 모델을 사용하는 반에이전트형 구조를 채택했다.
- 330개 이슈·PR 평가에서 Gemma는 높은 재현율과 압도적인 처리량을, Qwen은 더 높은 정밀도·F1·완전 일치율과 적은 오탐을 보였으며, DeepSeek는 정밀도가 가장 높았지만 실시간 운영에 부적합할 만큼 느렸다.
- 이 시스템의 무료라는 표현은 기존 하드웨어를 보유했다는 전제에서 전기료를 제외한 추가 모델 사용료가 없다는 뜻이며, 핵심 성과는 외부 모델 할당량을 소모하지 않고 준실시간 알림을 구현한 데 있다.
🧩 주요 포인트
- OpenClaw에 매일 들어오는 수백 건의 이슈와 PR 가운데 담당 영역의 긴급 항목만 빠르게 찾기 위해, 로컬 오픈 가중치 모델을 이용한 실시간 분류·알림 시스템을 구축했다.
- 분류 에이전트는 제목·본문·라벨·변경 파일·일부 diff를 받고, 필요한 경우 읽기 전용 저장소 셸인 reposhell로 코드를 조사한 뒤 정의된 JSON 스키마에 맞춰 라벨을 제출한다.
- GitHub 미러링과 SQLite 작업 큐, 컨텍스트 구성, 결과 저장, 디스코드 알림은 결정론적 코드가 담당하고, 의미 판단이 필요한 라벨 분류 단계에만 모델을 사용하는 반에이전트형 구조를 채택했다.
- 330개 이슈·PR 평가에서 Gemma는 높은 재현율과 압도적인 처리량을, Qwen은 더 높은 정밀도·F1·완전 일치율과 적은 오탐을 보였으며, DeepSeek는 정밀도가 가장 높았지만 실시간 운영에 부적합할 만큼 느렸다.
- 이 시스템의 무료라는 표현은 기존 하드웨어를 보유했다는 전제에서 전기료를 제외한 추가 모델 사용료가 없다는 뜻이며, 핵심 성과는 외부 모델 할당량을 소모하지 않고 준실시간 알림을 구현한 데 있다.
🧠 상세 정리
1. 폐쇄형 모델 의존성과 로컬 AI 스택의 필요성
글은 2026년 6월을 폐쇄형 모델이 언제든 사라질 수 있다는 사실을 사람들이 체감한 시점으로 규정하며, Anthropic의 최신 주력 모델 Claude Fable 5가 제거된 사례를 배경으로 든다. AI 위에 사업이나 핵심 업무를 구축한다면 특정 공급자가 제공하는 모델과 정책에만 의존하지 않고, 필요한 모델을 직접 소유하고 로컬에서 실행할 수 있어야 한다는 문제의식이다. 저자들은 이미 보유한 로컬 모델과 에이전트 하네스를 결합해 구조화된 출력으로 라벨을 부여하는 방식을 택했으며, 이는 BERT 같은 전통적 분류 모델을 별도로 학습해 사용하는 접근과 구별된다. 제목의 무료는 하드웨어를 이미 소유하고 있다는 가정 아래 추가 사용료가 들지 않는다는 의미일 뿐이며, 실제로는 전기료가 발생한다는 단서가 명시돼 있다.
2. OpenClaw 트리아지와 실시간 알림 목표
출발점은 매일 수백 건씩 들어오는 OpenClaw의 오픈소스 이슈와 PR을 분류하고, 우선순위를 정해 적절한 유지관리자에게 연결해야 하는 운영 부담이었다. 로컬 모델 관련 영역을 담당하는 Onur는 자신이 책임지는 P0급 문제에 신속히 대응해야 했고, 전체 활동 중 담당 범주에 해당하는 항목만 걸러 즉시 알리는 시스템을 목표로 삼았다. GPT-5, Opus, Sonnet 같은 최신 폐쇄형 모델로 분류하는 것은 비교적 간단하지만, 새 이슈와 PR마다 월 200달러짜리 ChatGPT Pro 기반 주 에이전트를 호출하면 할당량을 빠르게 소모할 수 있다. 호출 간격을 2시간이나 6시간으로 늘리면 비용과 할당량 문제는 줄어들지만 알림이 늦어지므로, 이미 가동 중인 로컬 장비를 활용해 추가 사용료 없이 준실시간 처리를 유지하는 것이 핵심 과제가 됐다.
3. 로컬 모델과 에이전트 기반 분류 방식
저자들은 local_models, self_hosted_inference, acp, agent_runtime, codex, ui_tui 등 트리아지에 필요한 유한한 라벨 집합을 먼저 정의하고, 각 이슈나 PR에 해당하는 주제를 로컬 모델이 선택하게 했다. 단순히 채팅 완성 API에 열거형 도구 스키마를 전달하는 데 그치지 않고, 모델이 추가 근거가 필요할 때 저장소를 직접 살펴볼 수 있도록 에이전트 하네스를 사용했다. 시험한 주요 모델은 gemma-4-26b-a4b와 qwen3.6-35b-a3b이며, 두 모델 모두 성능 최적화 후 로컬에서 초당 수백 토큰 규모의 처리 능력을 보였다. 하네스로는 로컬 모델 엔드포인트를 호출할 수 있는 pi를 묶어 사용했고, 모델은 최초 프롬프트에서 PR 제목·본문·일부 diff를 받은 뒤 저장소 조사 또는 최종 구조화 결과 제출을 선택할 수 있었다.
4. reposhell을 통한 읽기 전용 보안 경계
고처리량 환경에서 외부 사용자가 작성한 이슈와 PR을 모델 입력으로 넣으면서 일반 bash 권한까지 제공하면, 프롬프트 인젝션에 의해 분류와 무관한 작업이 실행될 위험이 생긴다. 이를 막기 위해 시스템은 bash처럼 보이지만 pwd, ls, find, rg, grep, cat, head, tail, 제한된 git 조회 등 읽기 전용 명령만 허용하는 reposhell을 사용하며, curl 같은 허용되지 않은 명령은 정책에 따라 거부한다. 실제 사례에서 Qwen은 extensions/kimi-coding이라는 경로만 보고 처음에는 coding_agent_integrations 라벨을 고려했지만, reposhell로 디렉터리와 package.json을 확인해 해당 확장이 OpenClaw의 Kimi 공급자 플러그인임을 파악했다. 그 결과 최종 라벨을 inference_api와 tool_calling으로 수정하고 coding_agent_integrations를 제외했으며, 이 사례는 제한된 저장소 탐색이 경로 이름만으로 생길 수 있는 오분류를 교정할 수 있음을 보여준다.
5. localpager-agent의 실행 계약
저자들은 읽기 전용 조사와 분류 결과 반환만 수행하도록 구성한 pi 묶음을 localpager-agent라고 부르며, 이는 전체 프로젝트인 localpager의 핵심 추론 실행기다. 각 이슈와 PR마다 렌더링된 프롬프트가 생성되고, 실행 시 모델 식별자와 OpenAI 호환 엔드포인트 주소, 세션 출력 디렉터리, 최종 JSON 스키마, 사용할 도구 목록이 함께 전달된다. 또한 reposhell 소켓과 기본 저장소, 모델에 노출할 수 있는 저장소 목록을 명시해 에이전트가 접근할 수 있는 범위를 실행 단계에서 제한한다. 모델은 주어진 문맥을 검토하고 필요하면 reposhell을 이용해 추가 사실을 확인할 수 있지만, 작업을 마치려면 반드시 final_json 도구를 통해 사전에 정의된 분류 스키마에 맞는 결과를 제출해야 한다.
6. 수집부터 디스코드 알림까지의 처리 흐름
오케스트레이션은 의도적으로 단순하게 구성되며, 언어 모델이 관여하는 단계는 의미 기반 분류뿐이다. openclaw/gitcrawl이 저장소의 로컬 미러 역할을 하고 새 PR이나 이슈를 발견하면 두 유형을 동일한 형태로 정규화해 localpager의 SQLite 데이터베이스에 저장하며, 처음 보는 항목에는 분류 작업을 생성한다. 작업자는 큐에서 작업을 가져와 제목, 본문, 라벨, 작성자, 상태와 선택적인 댓글·변경 파일·diff 발췌를 포함한 GitHub 컨텍스트 객체를 만들기 때문에, 모델이 대부분의 경우 GitHub를 직접 탐색하거나 URL을 열 필요가 없다. 이 객체를 프롬프트로 변환해 localpager-agent에 전달하고, 반환된 구조화 결과를 다시 SQLite에 저장한 뒤 사용자가 지정한 주제별 알림 정책에 따라 필요한 항목만 디스코드로 전달한다.
7. 추론과 결정론적 규칙을 분리한 반에이전트 구조
전체 아키텍처는 라벨 판단은 에이전트에게 맡기되 알림 발송은 결정론적 규칙으로 처리하는 반에이전트형 구조다. 저장소 내용을 해석하고 여러 후보 라벨 가운데 적합한 것을 고르는 단계에는 모델의 추론과 도구 사용이 필요하지만, 이미 나온 라벨을 사용자 정책과 대조해 알림 여부를 결정하는 과정에는 추가 추론이 필요하지 않다. 이 분리는 단순한 단계까지 모델을 호출하지 않아 알림 파이프라인을 빠르게 유지하고, 알림 과정에서 발생할 수 있는 모델 오류 가능성도 줄인다. 로컬 추론은 별도 API 요금이 없더라도 GPU 대역폭과 동시 처리 자원을 차지하므로, 저자들은 추론이 꼭 필요한 의미 판단에만 연산 자원을 배정해야 한다고 설명한다.
8. 초기 실패와 330건 평가 데이터 구축
초기 버전은 실사용에 충분히 조용하지 않았으며, 처음 시험한 gemma-4-e4b-it는 전체 로컬 파이프라인을 연결하는 데는 유용했지만 관련 없는 라벨을 지나치게 많이 붙이는 경향을 보였다. 이런 오탐은 디스코드 피드를 시끄럽게 만들고 유지관리자가 실제로 봐야 할 문제에 집중하지 못하게 했기 때문에, 더 큰 Gemma와 Qwen 모델을 비교하는 계기가 됐다. 평가용으로 GitHub 이슈와 PR 330건을 선정하고 각 항목을 GPT-5.5로 세 번, Opus 4.8로 두 번 라벨링한 뒤 모델 간 합의가 이뤄진 결과만 채택했으며, 사람의 판정과 라벨 정의 개선, 내부 제품 설계 선택의 명시도 병행했다. 초기 데이터 라벨 생성에는 CUDA 기반 DS4 서버에서 DeepSeek-V4-Flash도 사용했지만 실행 간 결과가 일관되지 않았고, 초당 약 14토큰과 동시성 1의 처리 성능 때문에 주 실시간 모델 후보에서는 제외됐다.
9. 모델별 정확도와 처리량의 상충 관계
동일한 라우팅 프롬프트로 평가했을 때 Gemma는 정밀도 0.716, 재현율 0.905, F1 0.800, 완전 일치율 0.410을 기록해 누락을 줄이는 데 강했지만, 평균 오탐 라벨 수가 227.0으로 많았다. Qwen은 정밀도 0.831, 재현율 0.818, F1 0.824, 완전 일치율 0.540과 평균 오탐 105.7을 기록해 Gemma보다 재현율은 낮지만 전반적인 분류 정확성과 피드 정숙성에서 우세했다. DeepSeek-V4-Flash는 정밀도 0.938과 오탐 30으로 가장 보수적이었으나 재현율이 0.714였고, 항목당 144.14초·동시성 1·총 초당 13토큰이라 NVIDIA GB10에서 실시간 처리하기에는 비현실적이었다. 반면 항목당 처리 시간은 Gemma 1.41초, Qwen 13.51초였고 집계 출력 속도는 각각 초당 402.6토큰과 145.3토큰이었으며, Gemma는 별도 시험에서 동시성 32와 초당 700토큰 이상의 집계 처리량도 보였다. 저자들은 이 수치가 해당 시점의 설정과 최적화에 따른 결과일 뿐 하드웨어에서 가능한 절대 최대 성능은 아니라고 명시했으며, Qwen의 수치는 출력 토큰 부족으로 final_json 호출에 실패한 작업을 재시도한 뒤의 결과라고 덧붙였다.
🧾 핵심 주장 / 시사점
- 실시간 트리아지에서는 단일 정확도 점수보다 오탐으로 인한 알림 피로, 미탐으로 인한 긴급 이슈 누락, 항목당 지연과 동시 처리량을 함께 비교해야 하며, Gemma와 Qwen의 결과는 이 운영상 상충 관계를 분명히 보여준다.
- 에이전트에게 저장소 조사 능력을 주더라도 일반 셸 대신 읽기 전용 명령과 저장소 범위를 강제하면, 코드 문맥을 활용한 분류 교정 능력을 유지하면서 프롬프트 인젝션의 실행 위험을 제한할 수 있다.
- 모델은 의미 해석이 필요한 라벨링에만 사용하고 수집·큐 관리·저장·알림 정책은 결정론적으로 처리함으로써, GPU 자원 소비와 오류 가능성을 줄이면서도 준실시간 자동화를 유지할 수 있다.
✅ 액션 아이템
- 로컬 분류 에이전트는 제목·본문·라벨·변경 파일·일부 diff를 받아 JSON 스키마 형식으로 라벨을 출력하고, 의미 판단 단계만 모델이 수행한다.
- GitHub 미러링·SQLite 큐·컨텍스트 구성·결과 저장·디스코드 알림은 결정론 코드로 처리해 모델은 라벨 의미 판단에만 투입한다.
- 330개 평가에서 보인 Gemma·Qwen의 장단점을 기준으로 재현율·정밀도·오탐률의 우선순위를 정해 실시간 긴급 항목 전달 모델을 확정한다.
❓ 열린 질문
- Gemma의 재현율/처리량 우세와 Qwen의 정밀도 우세를 운영 지표로 어떻게 가중치 합성해 선택해야 하는가?
- DeepSeek 정밀도 이점은 있으나 지연이 큰 경우, 실시간 triage에서 언제 자동 전환 정책을 발동해야 할 것인가?
- 기존 하드웨어 기반 무료성 조건에서 추가 에이전트를 늘릴 때 전력비 외 처리량 병목의 임계치는 어느 수준으로 잡아야 하는가?