깃허브 소외 보석 발굴 4호, 스타 0개 추론 그래프 에이전트 Spidey 실측기
깃허브 소외 보석 발굴 4호, 스타 0개 추론 그래프 에이전트 Spidey 실측기
결론부터 밝힌다. Spidey의 추론 그래프·안전장치·훈련 파이프라인 코드는 실재한다. 그러나 훈련 효과를 입증해야 할 평가 스크립트 eval/run_eval.py가 문법 오류로 실행 자체가 안 된다. 엔진은 진짜, 계기판은 고장. 이번 호의 판정은 조건부 보류(계기판 수리 후 재심)다.
대상
- 저장소: Siddharthpatni/Spidey (운영자 환경 측정 기준)
- 상태(2026-09-28 GitHub API 실측): 스타 0, 포크 0, 오픈이슈 0, 라이선스 MIT, 마지막 푸시 2026-07-22(약 2개월 무활동)
- 1인 메인테이너: Siddharth Patni
- 컨셉: 셀프호스트 코딩 에이전트. 매 추론·도구 호출을 브라우저 그래프로 실시간 시각화하고, QLoRA SFT→DPO 파이프라인으로 작은 로컬 모델을 직접 훈련시킨다
분석 방법
- 격리 디렉토리(
/tmp/spidey-test)에 shallow 클론 후 분석, 발행과 무관한 디렉토리는 삭제 예정 - 실행 테스트는 모델 다운로드 없이 가능한 범위만 수행(7.6GB 모델 다운로드는 제외)
- 아래 모든 수치는 직접 실행·조회한 결과이며, 각 주장의 근거 파일은 말미 근거 문서 표에 명시했다
실측 결과
테스트 54개 전부 통과 (6.52초)
tests/test_brain.py: 6, test_core.py: 9, test_modules.py: 16,
test_nexus.py: 12, test_studio.py: 11 → 54 passed, 0 failed
테스트 설계가 정직하다. tests/conftest.py는 모델 없이도 돌아가도록 내부 LLM 호출을 강제 실패시켜 결정적 폴백 경로를 검증한다. 모델 서버 유무와 무관하게 같은 결과가 나온다. 실행 환경: Python venv + pytest 9.1.1, fastapi 0.141.1.
추론 그래프는 실재한다
web/src/AgentGraph.jsx:@xyflow/react12.4.0 기반. think·plan·도구 호출·답변을 노드 타입별로 아이콘과 색상을 구분해 렌더링한다web/src/useSpideySocket.js: WebSocket 실시간 스트리밍 수신- 허울용 목업이 아니라 실제 프론트엔드 의존성(
web/package.json)에 그래프 라이브러리가 고정돼 있다
안전장치는 코드로 강제된다
spidey/safety.py: 셸 명령에 대해 allow/ask/deny 판정. 모드는 off(기본)/ask/enforce 3단spidey/tools.py의run_command는 실행 전 승인 게이트(ctx.approve)를 거치고 작업 디렉토리로 한정된다docs/SECURITY.md는 "모델은 보안 경계가 아니다. 모든 보장은 모델이 말로 뚫을 수 없는 코드다"라고 못 박는다. 문서와 구현이 일치한다
훈련 파이프라인 코드도 실재한다
| 파일 | 줄 수 | 역할 |
|---|---|---|
| training/prepare_data.py | 357 | SFT용 도구호출 데이터 합성 |
| training/prepare_dpo_data.py | 171 | 선호쌍(chosen/rejected) 생성 |
| training/finetune.py | 147 | QLoRA SFT, Unsloth+TRL |
| training/dpo_finetune.py | 153 | DPO, GGUF+Ollama Modelfile 출력 |
무료 Colab T4 한 장에서 돌리도록 설계됐고, 내보낸 모델을 ollama create spidey-brain으로 바로 얹는 흐름까지 갖췄다.
결정적 결함: 평가 스크립트가 깨져 있다
$ python -m py_compile eval/run_eval.py
Sorry: IndentationError: unexpected indent (run_eval.py, line 66)
exit=1
66번째 줄에 also라는 stray 토큰이 끼어 있어 파일 전체가 컴파일되지 않는다. 이 스크립트는 SFT→DPO 전후 점수를 내는 바로 그 평가 하네스다. 즉 "작은 모델이 훈련으로 에이전트가 된다"는 핵심 주장의 계기판이 고장 난 상태다. 테스트 54개 중 eval을 커버하는 것도 0개라 깨진 채로 방치됐다.
그 외: 하드코딩 시크릿 없음, 나머지 전 파일 컴파일 정상. FastAPI on_event deprecation 경고가 뜨나 실행 환경 버전 차이이며 실패는 아니다.
근거 문서
이 글의 모든 주장은 아래 자료에 뒷받침된다.
| 주장 | 근거 |
|---|---|
| 스타 0·포크 0·2개월 무활동·MIT | 2026-09-28 GitHub REST API 실측(stargazers_count 0, pushed_at 2026-07-22) |
| 테스트 54 통과·모델 불필요 설계 | 직접 실행(6.52초) + tests/conftest.py 1~8행 |
| 추론 그래프 실재 | web/src/AgentGraph.jsx, web/package.json의 @xyflow/react |
| 안전장치 코드 강제 | spidey/safety.py 49~70행, spidey/tools.py 151~164행, docs/SECURITY.md |
| 훈련 파이프라인 실재 | training/ 4개 파일 828줄, training/README.md |
| 평가 스크립트 실행 불가 | python -m py_compile exit=1 + eval/run_eval.py 55~66행 |
| 시크릿 없음 | sk-/ghp_/AKIA/개인키 패턴 전수 grep 무적중 |
프로젝트 자체 문서 6종(docs/ARCHITECTURE.md, SECURITY.md, OFFLINE.md, PLATFORM.md, API.md, CAPABILITIES.md 총 696줄)은 주장이 아니라 설계 근거로만 인용했다.
총평
Spidey는 과장 광고가 아니라 미완성 실체다. 그래프·안전·훈련 코드가 전부 돌아가는 뼈대를 갖췄고, 테스트도 모델 없이 검증되게 짰다. 그러나 정작 훈련 효과를 증명하는 평가기가 깨져 있어, 시리즈가 요구하는 "주장→증거" 고리가 끊긴다. also 한 줄만 지우면 되는 문제라 아깝다. 메인테이너가 eval을 고치고 전후 점수를 공개하면 재심한다. 그때까지 판정은 보류다.
시리즈
- 1호: 스타 115개 로컬 AI 검색 gno (조건부 합격)
- 2호: 셀프호스트 에이전트 OS eidan (금 간 원석)
- 3호: 터미널 주석 도구 plannotator-tui (합격)
- 4호: 본 글 Spidey (조건부 보류)
AI Knowledge Hub