MCPcopy
hub / github.com/volcengine/OpenViking

github.com/volcengine/OpenViking @v0.4.7 sqlite

repository ↗ · DeepWiki ↗ · release v0.4.7 ↗
23,301 symbols 104,845 edges 1,843 files 8,368 documented · 36%
README

<img alt="OpenViking" src="https://github.com/volcengine/OpenViking/raw/v0.4.7/docs/images/ov-logo.png" width="200px" height="auto">

OpenViking: AIエージェントのためのコンテキストデータベース

English / 中文 / 日本語

Webサイト · ライブデモ · GitHub · Issues · ドキュメント

[![][release-shield]][release-link] [![][github-stars-shield]][github-stars-link] [![][github-issues-shield]][github-issues-shield-link] [![][github-contributors-shield]][github-contributors-link] [![][license-shield]][license-shield-link] [![][last-commit-shield]][last-commit-shield-link]

👋 コミュニティに参加しよう

📱 Larkグループ · WeChat · Discord · X

volcengine%2FOpenViking | Trendshift


概要

エージェント開発における課題

AI時代において、データは豊富ですが、高品質なコンテキストは得がたいものです。AIエージェントを構築する際、開発者はしばしば以下の課題に直面します:

  • 断片化されたコンテキスト: メモリはコードに、リソースはベクトルデータベースに、スキルは散在しており、統一的な管理が困難です。
  • 急増するコンテキスト需要: エージェントの長時間タスクは実行のたびにコンテキストを生成します。単純な切り詰めや圧縮は情報の損失につながります。
  • 検索効果の低さ: 従来のRAGはフラットなストレージを使用し、グローバルな視点が欠けているため、情報の全体的なコンテキストを理解することが困難です。
  • 観察不能なコンテキスト: 従来のRAGの暗黙的な検索チェーンはブラックボックスのようで、エラー発生時のデバッグが困難です。
  • 限定的なメモリの反復: 現在のメモリはユーザーとのやり取りの記録に過ぎず、エージェント関連のタスクメモリが不足しています。

OpenVikingのソリューション

OpenVikingは、AIエージェント専用に設計されたオープンソースのコンテキストデータベースです。

私たちは、エージェントのためのミニマリストなコンテキストインタラクションパラダイムを定義し、開発者がコンテキスト管理の煩雑さから完全に解放されることを目指しています。OpenVikingは従来のRAGの断片化されたベクトルストレージモデルを捨て、革新的に「ファイルシステムパラダイム」を採用して、エージェントに必要なメモリ、リソース、スキルの構造化された組織を統一します。

OpenVikingを使えば、開発者はローカルファイルを管理するようにエージェントの頭脳を構築できます:

  • ファイルシステム管理パラダイム断片化を解決: ファイルシステムパラダイムに基づく、メモリ、リソース、スキルの統一的なコンテキスト管理。
  • 階層型コンテキストローディングトークン消費を削減: L0/L1/L2の3層構造、オンデマンドでロードし、コストを大幅に削減。
  • ディレクトリ再帰検索検索効果を向上: ネイティブのファイルシステム検索手法をサポートし、ディレクトリ位置決めとセマンティック検索を組み合わせて、再帰的で精密なコンテキスト取得を実現。
  • 可視化された検索軌跡観察可能なコンテキスト: ディレクトリ検索軌跡の可視化をサポートし、ユーザーが問題の根本原因を明確に観察し、検索ロジックの最適化を導くことを可能に。
  • 自動セッション管理コンテキストの自己反復: 会話中のコンテンツ、リソース参照、ツール呼び出しなどを自動的に圧縮し、長期メモリを抽出して、使うほどエージェントを賢く。

クイックスタート

💡 まず実際の動作を見てみたい方へOpenViking Studio をお試しください。コンテキストプレイグラウンド、セマンティック検索、マルチエージェント Hub を備えたライブホスト環境で、インストール不要です。

ローカルデプロイ

前提条件

OpenVikingを始める前に、環境が以下の要件を満たしていることを確認してください:

  • Pythonバージョン: 3.10以上
  • Rustツールチェーン: Cargo(RAGFSおよびCLIコンポーネントのソースビルドに必要)
  • C++コンパイラ: GCC 9以上 または Clang 11以上(コア拡張のビルドに必要)
  • オペレーティングシステム: Linux、macOS、Windows
  • ネットワーク接続: 安定したネットワーク接続が必要(依存関係のダウンロードとモデルサービスへのアクセスのため)

1. インストール

Pythonパッケージ
pip install openviking --upgrade --force-reinstall
Rust CLI(オプション)
npm i -g @openviking/cli

またはソースからビルド:

cargo install --git https://github.com/volcengine/OpenViking ov_cli

2. モデルの準備

OpenVikingには以下のモデル機能が必要です: - VLMモデル: 画像とコンテンツの理解用 - Embeddingモデル: ベクトル化とセマンティック検索用

サポートされているVLMプロバイダー

OpenVikingは3つのVLMプロバイダーをサポートしています:

プロバイダー 説明 APIキーの取得
volcengine Volcengine Doubaoモデル Volcengineコンソール
openai OpenAI公式API OpenAIプラットフォーム
プロバイダー固有の注意事項

Volcengine(Doubao)

Volcengineはモデル名とエンドポイントIDの両方をサポートしています。簡便さのためモデル名の使用を推奨します:

{
  "vlm": {
    "provider": "volcengine",
    "model": "doubao-seed-2-0-pro-260215",
    "api_key": "your-api-key",
    "api_base": "https://ark.cn-beijing.volces.com/api/v3"
  }
}

エンドポイントIDも使用できます(Volcengine ARKコンソールで確認):

{
  "vlm": {
    "provider": "volcengine",
    "model": "ep-20241220174930-xxxxx",
    "api_key": "your-api-key",
    "api_base": "https://ark.cn-beijing.volces.com/api/v3"
  }
}

OpenAI

OpenAIの公式APIを使用:

{
  "vlm": {
    "provider": "openai",
    "model": "gpt-4o",
    "api_key": "your-api-key",
    "api_base": "https://api.openai.com/v1"
  }
}

カスタムのOpenAI互換エンドポイントも使用できます:

{
  "vlm": {
    "provider": "openai",
    "model": "gpt-4o",
    "api_key": "your-api-key",
    "api_base": "https://your-custom-endpoint.com/v1"
  }
}

3. 環境設定

サーバー設定テンプレート

設定ファイル ~/.openviking/ov.conf を作成します。コピー前にコメントを削除してください:

{
  "storage": {
    "workspace": "/home/your-name/openviking_workspace"
  },
  "log": {
    "level": "INFO",
    "output": "stdout"                 // ログ出力: "stdout" または "file"
  },
  "embedding": {
    "dense": {
      "api_base" : "<api-endpoint>",   // APIエンドポイントアドレス
      "api_key"  : "<your-api-key>",   // モデルサービスAPIキー
      "provider" : "<provider-type>",  // プロバイダータイプ: "volcengine" または "openai"(現在サポート済み)
      "dimension": 1024,               // ベクトル次元
      "model"    : "<model-name>"      // Embeddingモデル名(例:doubao-embedding-vision-251215 または text-embedding-3-large)
    },
    "max_concurrent": 10               // 最大同時Embeddingリクエスト数(デフォルト: 10)
  },
  "vlm": {
    "api_base" : "<api-endpoint>",     // APIエンドポイントアドレス
    "api_key"  : "<your-api-key>",     // モデルサービスAPIキー
    "provider" : "<provider-type>",    // プロバイダータイプ(volcengine、openai、deepseek、anthropicなど)
    "model"    : "<model-name>",       // VLMモデル名(例:doubao-seed-2-0-pro-260215 または gpt-4-vision-preview)
    "max_concurrent": 100              // セマンティック処理の最大同時LLM呼び出し数(デフォルト: 100)
  }
}

注意: Embeddingモデルについては、volcengine(Doubao)、openaiazurejinaollamavoyagedashscopeminimaxcoherevikingdbgeminipip install "google-genai>=1.0.0" が必要)、litellmlocal プロバイダーがサポートされています。VLMモデルについては、volcengineopenaiopenai-codexkimiglm をサポートしています。

サーバー設定例

👇 お使いのモデルサービスの設定例を展開して確認:

例1: Volcengine(Doubaoモデル)を使用

{
  "storage": {
    "workspace": "/home/your-name/openviking_workspace"
  },
  "log": {
    "level": "INFO",
    "output": "stdout"                 // ログ出力: "stdout" または "file"
  },
  "embedding": {
    "dense": {
      "api_base" : "https://ark.cn-beijing.volces.com/api/v3",
      "api_key"  : "your-volcengine-api-key",
      "provider" : "volcengine",
      "dimension": 1024,
      "model"    : "doubao-embedding-vision-251215"
    },
    "max_concurrent": 10
  },
  "vlm": {
    "api_base" : "https://ark.cn-beijing.volces.com/api/v3",
    "api_key"  : "your-volcengine-api-key",
    "provider" : "volcengine",
    "model"    : "doubao-seed-2-0-pro-260215",
    "max_concurrent": 100
  }
}

例2: OpenAIモデルを使用

{
  "storage": {
    "workspace": "/home/your-name/openviking_workspace"
  },
  "log": {
    "level": "INFO",
    "output": "stdout"                 // ログ出力: "stdout" または "file"
  },
  "embedding": {
    "dense": {
      "api_base" : "https://api.openai.com/v1",
      "api_key"  : "your-openai-api-key",
      "provider" : "openai",
      "dimension": 3072,
      "model"    : "text-embedding-3-large"
    },
    "max_concurrent": 10
  },
  "vlm": {
    "api_base" : "https://api.openai.com/v1",
    "api_key"  : "your-openai-api-key",
    "provider" : "openai",
    "model"    : "gpt-4-vision-preview",
    "max_concurrent": 100
  }
}
サーバー設定の環境変数の設定

設定ファイルを作成後、環境変数を設定してファイルを指定します(Linux/macOS):

export OPENVIKING_CONFIG_FILE=~/.openviking/ov.conf # デフォルト

Windowsの場合、以下のいずれかを使用:

PowerShell:

$env:OPENVIKING_CONFIG_FILE = "$HOME/.openviking/ov.conf"

コマンドプロンプト(cmd.exe):

set "OPENVIKING_CONFIG_FILE=%USERPROFILE%\.openviking\ov.conf"

💡 ヒント: 設定ファイルは他の場所に配置することもできます。環境変数で正しいパスを指定するだけです。

CLI/クライアント設定例

👇 CLI/クライアントの設定例を展開して確認:

例:localhostサーバー接続用のovcli.conf

{
  "url": "http://localhost:1933",
  "timeout": 60.0
}

設定ファイルを作成後、環境変数を設定してファイルを指定します(Linux/macOS):

export OPENVIKING_CLI_CONFIG_FILE=~/.openviking/ovcli.conf # デフォルト

Windowsの場合、以下のいずれかを使用:

PowerShell:

$env:OPENVIKING_CLI_CONFIG_FILE = "$HOME/.openviking/ovcli.conf"

コマンドプロンプト(cmd.exe):

set "OPENVIKING_CLI_CONFIG_FILE=%USERPROFILE%\.openviking\ovcli.conf"

4. 最初の例を実行

📝 前提条件: 前のステップで設定(ov.confとovcli.conf)が完了していることを確認してください。

それでは、完全な例を実行してOpenVikingのコア機能を体験しましょう。

サーバーの起動
openviking-server

またはバックグラウンドで実行:

nohup openviking-server > /data/log/openviking.log 2>&1 &
CLIの実行
ov status
ov add-resource https://github.com/volcengine/OpenViking # --wait
ov ls viking://resources/
ov tree viking://resources/volcengine -L 2
# --waitを指定しない場合、セマンティック処理の完了を待つ
ov find "what is openviking"
ov grep "openviking" --uri viking://resources/volcengine/OpenViking/docs/zh

おめでとうございます!OpenVikingの実行に成功しました 🎉

商用版へのアクセス

OpenViking Personal が正式に提供開始されました。オープンソース版と比較して、Service 版は公式にホスティングされてすぐに利用でき、VikingDB によりローカルハードウェアをはるかに超える規模までスケールし、より豊富な統合機能とプロフェッショナルサポートが付属します。最大 50 ファイルまでの無料トライアルが含まれており、既存のオープンソース版ユーザーは移行ツールを使ってスムーズに乗り換えることができます。

VikingBotクイックスタート

VikingBotは、OpenViking上に構築されたAIエージェントフレームワークです。始め方は以下の通りです:

# オプション1: PyPIからVikingBotをインストール(ほとんどのユーザーに推奨)
pip install "openviking[bot]"

# オプション2: ソースからVikingBotをインストール(開発用)
uv pip install -e ".[bot]"

# Bot有効でOpenVikingサーバーを起動
openviking-server --with-bot

# 別のターミナルでインタラクティブチャットを開始
ov chat

サーバーデプロイの詳細

本番環境では、AIエージェントに永続的で高性能なコンテキストサポートを提供するため、OpenVikingをスタンドアロンHTTPサービスとして実行することを推奨します。

🚀 クラウドにOpenVikingをデプロイ: 最適なストレージパフォーマンスとデータセキュリティを確保するため、veLinuxオペレーティングシステムを使用したVolcengine Elastic Compute Service(ECS)へのデプロイを推奨します。迅速に開始するための詳細なステップバイステップガイドを用意しています。

👉 参照: サーバーデプロイ&ECSセットアップガイド

OpenClawコンテキストプラグインの詳細

  • テストデータセット: LoCoMo10(https://github.com/snap-research/locomo)の長距離対話に基づく効果テスト(ground truthのないcategory5を除いた合計1,540ケース)
  • 実験グループ: ユーザーがOpenVikingを使用する際にOpenClawのネイティブメモリを無効にしない可能性があるため、ネイティブメモリの有効/無効の実験グループを追加
  • OpenVikingバージョン: 0.1.18
  • モデル: seed-2.0-code
  • 評価スクリプト: https://github.com/ZaynJarvis/openclaw-eval/tree/main
実験グループ タスク完了率 コスト: 入力トークン数(合計)
OpenClaw(memory-core) 35.65% 24,611,530
OpenClaw + LanceDB (-memory-core) 44.55% 51,574,530
OpenClaw + OpenViking Plugin (-memory-core) 52.08% 4,264,396
OpenClaw + OpenViking Plugin (+memory-core) 51.23% 2,099,622
  • 実験結果: OpenViking統合後:
  • ネイティブメモリ有効時: オリジナルOpenClawと比較して43%改善、入力トークンコスト91%削減。LanceDBと比較して15%改善、入力トークンコスト96%削減。
  • ネイティブメモリ無効時: オリジナルOpenClawと比較して49%改善、入力トークンコスト83%削減。LanceDBと比較して17%改善、入力トークンコスト92%削減。

👉 参照: OpenClawコンテキストプラグイン

👉 参照: OpenCode統合プラグイン

👉 参照: Claude Codeメモリプラグインの例

--

コアコンセプト

最初の例を実行した後、OpenVikingの設計思想を掘り下げましょう。これら5つのコアコンセプトは、先に述べたソリューションと1対1で対応し、完全なコンテキスト管理システムを構築します:

1. ファイルシステム管理パラダイム → 断片化の解決

コンテキストをフラットなテキストスライスとして見るのではなく、抽象的な仮想ファイルシステムに統一します。メモリ、リソース、機能のいずれも、viking://プロトコル下の仮想ディレクトリにマッピングされ、それぞれにユニークなURIが付与されます。

このパラダイムにより、エージェントはこれまでにないコンテキスト操作能力を獲得し、開発者のようにlsfindなどの標準コマンドを通じて、情報を正確かつ決定論的に位置特定、閲覧、操作できます。これにより、コンテキスト管理は曖昧なセマンティックマッチングから、直感的でトレース可能な「ファイル操作」に変わります。詳細: Viking URI | コンテキストタイプ

viking://
├── resources/              # リソース: プロジェクトドキュメント、リポジトリ、Webページなど
│   ├── my_project/
│   │   ├── docs/
│   │   │   ├── api/
│   │   │   └── tutorials/
│   │   └── src/
│   └── ...
├── user/                   # ユーザー: 個人の好み、習慣など
│   └── memories/
│       ├── preferences/
│       │   ├── writing_style
│       │   └── coding_habits
│       └── ...
└── agent/                  # エージェント: スキル、インストラクション、タスクメモリなど
    ├── skills/
    │   ├── search_code
    │   ├── analyze_data
    │   └── ...
    ├── memories/
    └── instructions/

2. 階層型コンテキストローディング → トークン消費の削減

大量のコンテキストをプロンプトに一度に詰め込むことは、コストが高いだけでなく、モデルウィンドウの超過やノイズの混入を招きやすいです。OpenVikingは書き込み時にコンテキストを自動的に3つのレベルに処理します: - L0(Abstract): 迅速な検索と識別のための一文の要約。 - L1(Overview): 計画フェーズでのエージェントの意思決定のための、コア情報と使用シナリオを含む。 - L2(Details): エージェントが絶対に必要な場合の深い読み込みのための、完全なオリジナルデータ。

詳細: コンテキストレイヤー

viking://resources/my_project/
├── .abstract               # L0レイヤー: 要約(〜100トークン)- 迅速な関連性チェック
├── .overview               # L1レイヤー: 概要(〜2kトークン)- 構造とキーポイントの理解
├── docs/
│   ├── .abstract          # 各ディレクトリに対応するL0/L1レイヤーあり
│   ├── .overview
│   ├── api/
│   │   ├── .abstract
│   │   ├── .overview
│   │   ├── auth.md        # L2レイヤー: 完全なコンテンツ - オンデマンドでロード
│   │   └── endpoints.md
│   └── ...
└── src/
    └── ...

3. ディレクトリ再帰検索 → 検索効果の向上

単一のベクトル検索では、複雑なクエリインテントへの対応が困難です。OpenVikingは、複数の検索手法を深く統合する革新的なディレクトリ再帰検索戦略を設計しました:

  1. インテント分析: インテント分析により複数の検索条件を生成。
  2. 初期位置特定: ベクトル検索を使用して、初期スライスが位置する高スコアディレクトリを素早く特定。
  3. 詳細な探索: そのディレクトリ内で二次検索を実行し、高スコア結果を候補セットに更新。
  4. 再帰的掘り下げ: サブディレクトリが存在する場合、二次検索ステップを層ごとに再帰的に繰り返し。
  5. 結果集約: 最終的に、最も関連性の高いコンテキストを取得して返却。

この「まず高スコアディレクトリを特定し、次にコンテンツ探索を精緻化する」戦略は、セマンティック的に最もマッチするフラグメントを見つけるだけでなく、情報が存在するコンテキスト全体を理解し、検索のグローバル性と

Extension points exported contracts — how you extend this code

Register (Interface)
(no doc)
web-studio/src/router.tsx
InboundMessage (Interface)
(no doc)
bot/bridge/src/whatsapp.ts
ParsedVersion (Interface)
(no doc)
examples/openclaw-plugin/plugin/openviking-feature-gates.ts
OVSearchResult (Interface)
(no doc)
examples/pi-coding-agent-extension/client.ts
FileRoutesByFullPath (Interface)
(no doc)
web-studio/src/routeTree.gen.ts
WhatsAppClientOptions (Interface)
(no doc)
bot/bridge/src/whatsapp.ts
OpenVikingFeatureGateServiceOptions (Interface)
(no doc)
examples/openclaw-plugin/plugin/openviking-feature-gates.ts
OVDirEntry (Interface)
(no doc)
examples/pi-coding-agent-extension/client.ts

Core symbols most depended-on inside this repo

str
called by 2772
examples/codex-memory-plugin/scripts/config.mjs
get
called by 2334
bot/vikingbot/agent/tools/registry.py
append
called by 1368
openviking/ingest/replay.py
get
called by 1272
openviking/service/task_store.py
info
called by 962
openviking/telemetry/tracer.py
join
called by 897
openviking_cli/utils/uri.py
Field
called by 762
web-studio/src/components/ui/field.tsx
get
called by 685
examples/openwebui-plugin/openviking_openwebui/client.py

Shape

Method 11,472
Function 8,804
Class 2,461
Route 431
Interface 89
Struct 44

Languages

Python90%
TypeScript10%
Go1%

Modules by API surface

sdk/python/openviking_sdk/client.py209 symbols
bot/tests/test_openviking_api_key_type.py153 symbols
openviking/storage/viking_fs.py148 symbols
tests/parse/test_ast_extractor.py146 symbols
tests/cli/test_setup_wizard.py135 symbols
benchmark/custom/session_contention_benchmark.py134 symbols
tests/storage/test_collection_schemas.py122 symbols
bot/demo/werewolf/werewolf_server.py114 symbols
examples/openclaw-plugin/setup-helper/install.js106 symbols
openviking/session/session.py105 symbols
tests/unit/session/test_wm_v2_guards.py100 symbols
tests/unit/test_langchain_integration.py98 symbols

Dependencies from manifests, versioned

@anthropic-ai/sandbox-runtime0.0.37 · 1×
@base-ui/react1.3.0 · 1×
@codemirror/autocomplete6.20.2 · 1×
@codemirror/commands6.10.3 · 1×
@codemirror/lang-cpp6.0.3 · 1×
@codemirror/lang-css6.3.1 · 1×
@codemirror/lang-html6.4.11 · 1×
@codemirror/lang-java6.0.2 · 1×
@codemirror/lang-javascript6.2.5 · 1×
@codemirror/lang-json6.0.2 · 1×
@codemirror/lang-markdown6.5.0 · 1×
@codemirror/lang-python6.2.1 · 1×

Datastores touched

(mongodb)Database · 1 repos
dbDatabase · 1 repos

For agents

$ claude mcp add OpenViking \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact