ByteDance 볼케이노 엔진(Volcengine)이 공개한 오픈소스 프로젝트(
volcengine/OpenViking).
왜 필요한가?
Claude Code는 세션이 끝나면 대화 내용을 잊습니다. 프로젝트 문서나 사내 규칙은 매번 다시 붙여 넣어야 하고, 지난주에 정한 코딩 규칙을 이번 세션에서 다시 설명하게 됩니다. 기억은 설정 파일에, 자료는 벡터 데이터베이스(문장을 숫자 배열로 바꿔 의미가 비슷한 것끼리 찾는 저장소)에, 스킬은 또 다른 곳에 흩어져 있어 한꺼번에 관리하기 어렵습니다. 공식 문서는 이 상태를 “Context Fragmentation: Memory in code, resources in vector databases, skills scattered everywhere”라고 정리합니다.
OpenViking은 이 세 가지를 viking://로 시작하는 하나의 가상 파일시스템에 담습니다. 에이전트는 결과만 돌려주는 검색 엔진에 질의하는 대신, ls, tree, find 같은 익숙한 명령으로 자기 컨텍스트를 직접 훑습니다.
무엇을 할 수 있나
공식 문서와 README가 안내하는 대표 작업입니다.
- 저장소, 문서를 통째로 자료로 등록 —
ov add-resource https://github.com/volcengine/OpenViking처럼 GitHub 저장소나 웹 페이지를 넣어 두면 의미 기반 검색 대상이 됩니다 - 자료를 파일처럼 탐색 —
ov ls,ov tree로 디렉터리를 훑고,ov find "what is openviking"으로 자연어 질문을 던지고,ov grep으로 특정 경로만 뒤집니다 - 세션이 끝나면 취향과 경험이 남음 — 세션이 커밋된 뒤 사용자 선호와 에이전트 경험을 장기 메모리로 추출합니다.
viking://user/{user_id}/memories/preferences/coding_habits같은 경로에 쌓입니다 - 여러 에이전트가 같은 기억을 공유 — Claude Code, Codex, Cursor, OpenCode, TRAE가 같은 서버에 붙어 하나의 컨텍스트를 씁니다
- 검색 경로 확인 — 결과가 이상할 때 어떤 디렉터리를 거쳐 나온 답인지 경로가 남아 원인을 짚을 수 있습니다
근거: docs.openviking.ai, volcengine/OpenViking README.
핵심 기능
-
viking:// 가상 파일시스템
메모리, 자료, 스킬에 각각 URI를 부여해
viking://resources/my_project/docs/api처럼 위치를 지정합니다. 무엇이 어디에 있는지가 경로로 드러나므로, 검색 결과를 짐작하지 않고 확인할 수 있습니다. -
L0, L1, L2 계층 로딩
등록 시점에 항목마다 L0(약 256자 요약), L1(약 4,000자 개요), L2(원본 전체)를 만들어 두고 필요한 깊이까지만 읽습니다. 관련 여부를 판단하는 데 원본 전체를 넣지 않으므로 입력 분량이 줄어듭니다.
-
디렉터리 단위 재귀 검색
의미 검색으로 점수가 가장 높은 디렉터리를 먼저 찾고, 그 안으로 한 단계씩 내려갑니다. 조각난 문장이 아니라 주변 맥락이 붙은 채로 결과가 나옵니다.
-
Claude Code 플러그인
openviking-memory플러그인은 네 지점에 붙습니다. 프롬프트 전에 관련 기억 주입, 응답 후 대화 턴 수집, 세션 시작 시 프로필과 메모리 목록 주입, 압축(compaction) 직전과 세션 종료 시 커밋. 서브에이전트에는 각각 독립된 메모리 세션이 할당됩니다. -
자동 회수, 자동 수집 스위치
OPENVIKING_AUTO_RECALL과OPENVIKING_AUTO_CAPTURE가 기본으로 켜져 있고,OPENVIKING_BYPASS_SESSION_PATTERNS로 특정 세션만 제외할 수 있습니다./openviking-memory:ov로 서버 상태, 회수 횟수, 스위치 상태를 확인합니다. -
프로바이더 선택
openviking-server init이 Volcengine, OpenAI, Codex OAuth, Kimi, GLM, 로컬 Ollama 중에서 고르도록 안내합니다. Ollama를 고르면 런타임 설치와 하드웨어에 맞는 모델 내려받기까지 처리합니다.
사용 방법
먼저 서버를 설치하고 초기 설정을 마칩니다. Python 3.10 이상이 필요합니다.
pip install openviking --upgrade
openviking-server init # 프로바이더, 모델, ov.conf 설정 마법사
openviking-server doctor # 설정 점검
openviking-server # 서버 시작
Claude Code 플러그인은 설치 스크립트 한 줄로 붙일 수 있습니다.
bash <(curl -fsSL https://raw.githubusercontent.com/volcengine/OpenViking/main/examples/memory-plugin-shared/install.sh)
직접 설치하려면 마켓플레이스를 추가합니다. 플러그인 방식은 Claude Code 2.0 이상에서 동작하며, 그 이전 버전은 Hook 방식으로 넘어갑니다.
claude plugin marketplace add https://raw.githubusercontent.com/volcengine/OpenViking/main/.claude-plugin/marketplace.json
claude plugin install openviking-memory@openviking
연결 정보는 ~/.openviking/ovcli.conf에 url과 api_key로 적습니다. 설정 파일이 없으면 플러그인이 http://127.0.0.1:1933을 기본값으로 씁니다. Claude Code에서 /plugins 목록에 openviking-memory가 보이고 /mcp에 OpenViking 항목이 뜨면 연결된 것입니다.
터미널에서 자료를 다루는 명령입니다.
ov status
ov add-resource https://github.com/volcengine/OpenViking --wait
ov tree viking://resources/volcengine -L 2
ov find "what is openviking"
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/en
설치 전에 먼저 보고 싶다면 OpenViking Studio 데모를 브라우저에서 열 수 있습니다.
알아두면 좋은 점
- 설치 부담이 있습니다 — 플러그인만 깔아서는 동작하지 않습니다. Python 3.10 이상, 상시 구동되는 서버, LLM과 임베딩(문장을 숫자 배열로 바꾸는 처리) 프로바이더 설정이 먼저입니다. 명령 한 줄로 끝나는 도구는 아닙니다
- OpenViking Helper (베타) — macOS와 Windows x64용 데스크톱 콘솔로, Claude Code, Codex, Cursor, Trae, OpenCode를 찾아 플러그인, MCP, Hook 설정을 대신 잡아 줍니다. 세션 기록에서 회수와 주입이 언제 일어났는지 확인하는 용도로도 씁니다
- 벤치마크는 조건과 함께 봐야 합니다 — 공개된 LoCoMo 결과는 Claude Code 기본 메모리 57.21%에서 OpenViking 연결 시 80.32%입니다. 다만 이 측정은 Doubao 2.0 Pro를 모델로, Doubao-embedding-vision-251215를 임베딩으로 쓴 조건이라 다른 조합에서 같은 수치가 나온다고 보기는 어렵습니다
- 데이터가 나가는 지점 — 서버는 내 환경에서 돌지만, 등록한 자료의 요약과 임베딩 생성은 설정한 프로바이더 API를 거칩니다. 외부로 내보내고 싶지 않으면 Ollama 같은 로컬 프로바이더를 고릅니다
- 상용판은 별개입니다 — 볼케이노 엔진이 운영하는 SaaS와 자체 배포 상용판이 있지만, README는 오픈소스판에 기능 제한, 계정 요구, 활성화 키가 없다(“no feature gates, no account required, no activation key”)고 밝히고 있습니다
- 라이선스 — AGPL-3.0. VLDB 2026에 채택된 VikingMem 논문(arXiv:2605.29640)에서 설명한 핵심 기능의 일부를 공개한 것입니다