변경된 런북과 새로운 로컬 Spark-X2.5 답변
요약
본 기사는 MemFlywheel, context-mode, Spark-X2.5 등 여러 도구를 활용하여 로컬 샌드박스 환경에서 검색(retrieval) 및 모델의 동작을 테스트하는 방법을 설명합니다. 특히 소스 데이터를 업데이트한 후 동일한 질문을 던지면 시스템이 변경 사항을 감지하고 새로운 정보를 반환함을 보여줍니다.
핵심 포인트
- MemFlywheel은 로컬 샌드박스 런북을 작성 및 검증하는 데 사용됩니다.
- MCP(Model Context Protocol)를 통해 인덱싱 및 검색 도구 호출이 전달됩니다.
- 소스 업데이트 후 동일 질문 시, 시스템이 변경된 소스를 감지하고 새로운 스니펫을 반환합니다.
- 이는 로컬 환경에서 RAG 파이프라인의 변화 추적 능력을 검증하는 데 유용합니다.
한 런북에 따르면 체크아웃의 Redis 엔드포인트는 127.0.0.1:6379입니다. 파일을 127.0.0.1:6380으로 변경하고, 동일한 질문을 한 다음, 검색(retrieval)과 로컬 모델이 실제로 무엇을 반환하는지 검사해 보세요.
이 Windows 데모는 Node.js 어댑터를 통해 MemFlywheel, context-mode 및 Spark-X2.5를 연결합니다. context-mode는 2026년 10월 12일 19:34 베이징 시간 기준으로 포착된 GitHub 트렌딩 일간 스냅샷에서 3위를 차지했습니다.
입력과 첫 번째 검색 (The input and the first retrieval)
입력은 체크아웃 Redis, 보고서 PostgreSQL 및 검색 서비스의 세 가지 합성 로컬 샌드박스 런북으로 구성됩니다. MemFlywheel의 공개 writeMemoryDocument와 readMemoryDocument 저장 함수가 이를 작성하고 검증합니다.
MCP 클라이언트(Model Context Protocol)는 디렉터리에서 context-mode의 ctx_index를 호출한 다음, checkout Redis endpoint에 대해 ctx_search를 수행합니다. MCP는 모델 컨텍스트 프로토콜을 의미하며, 여기서는 stdio를 통해 실제 인덱싱 및 검색 도구 호출을 전달합니다. 첫 번째 결과에는 리비전 1과 포트 6379가 포함되어 있습니다.

원래 CLI 스크린샷의 풍경(Landscape) 크롭본으로, rec/seed.mp4 / rec/seed.png에서 가져옴.
소스 업데이트 및 동일 질문 요청 (Update the source, ask the same question)
MemFlywheel은 체크아웃 파일을 리비전 2와 포트 6380으로 업데이트합니다. 두 번째 ctx_search는 동일한 쿼리와 소스 레이블인 sandbox-runbooks-v1을 사용합니다.
이 호출은 자동 새로고침된 오래된(stale) 소스를 보고하고 업데이트된 런북을 반환합니다. 원본 MCP 결과는 evidence/recorded-01/update.json에 보존됩니다. 이것이 이 실행의 구체적인 결과입니다: 변경된 파일이 새로운 검색 스니펫을 생성했습니다.

원래 CLI 스크린샷의 가로 크롭본이며, rec/update.mp4 / rec/update.png에서 가져옴.
눈에 보이는 실제 Spark-X2.5 요청
llama.cpp는 llama-server.exe를 통해 ngquocvinh의 커뮤니티 Spark-X2.5-1.7B Q4_K_M GGUF을 로드합니다. 서버는 별칭(alias) Spark-X2.5-1.7B를 사용하며 127.0.0.1:8099에서 수신 대기합니다.
Node.js의 fetch가 /v1/chat/completions로 HTTP POST 요청을 보냅니다. 이 요청에는 새로 검색된 스니펫, 온도(temperature) 0, 그리고 최대 출력 토큰 160개가 포함됩니다. 녹화본은 실제 도구, 양자화 레이블(quantization label), 요청된 모델, 해당 호출에서 받은 HTTP 200 및 반환된 모델을 보여줍니다:
TOOL: llama.cpp / llama-server.exe
LOCAL MODEL: Spark-X2.5-1.7B
WEIGHTS: community Q4_K_M GGUF
...
실제 답변은 다음과 같습니다:
{"service":"checkout","revision":"2","endpoint":"127.0.0.1:6380"}
전체 요청 및 응답은 evidence/recorded-01/spark-visible.json에 있으며, 녹화 영수증(recording receipt)은 실제 프로세스 출력과 종료 코드를 보존합니다. 모델 식별은 로드된 파일, 시작 매개변수(startup parameters), 그리고 실제 요청/응답에 연결됩니다.

원래 CLI 스크린샷의 가로 크롭본이며, rec/spark-visible.mp4 / rec/spark-visible.png에서 가져옴.
답변 저장 및 다시 읽기
MemFlywheel은 모델의 답변을 context/verified-answer.md에 저장합니다. 공개 스토리지 인터페이스를 통해 읽으면 동일한 본문이 반환되며, 스크립트는 정확한 동등성을 확인하고 결과를 commit.json에 보존합니다.

rec/commit-visible.mp4 / rec/commit-visible.png에서 가져온 원본 CLI 스크린샷의 풍경(Landscape) 크롭입니다. 캡처 소스, 치수 및 크롭 좌표는 evidence-shots/manifest.json에 기록되어 있습니다.
이 합성된 샌드박스 입력(synthetic sandbox input)에서 로컬 어댑터(local adapter)는 파일 업데이트, 검색 새로고침(refresh retrieval), 현재 엔드포인트 추론(infer the current endpoint), 답변 영속화(persist the answer)의 전체 시퀀스를 완료했습니다. 그 결과는 의도적으로 작고 검사 가능합니다: revision 2, port 6380.
영상 배경 음악: Gustav Langer의 _Grossmütterchen, Op.20_을 Paul De Bra / Professor P가 연주한 곡 IMSLP #1063810, CC BY 4.0. 발췌되었으며, 음량 정규화(loudness normalized), 게인 조정(gain adjusted), 페이드 및 내레이션에 맞춰 혼합되었습니다.
AI 자동 생성 콘텐츠
본 콘텐츠는 Dev.to AI tag의 원문을 AI가 자동으로 요약·번역·분석한 것입니다. 원 저작권은 원저작자에게 있으며, 정확한 내용은 반드시 원문을 확인해 주세요.
원문 바로가기