[Ollamaメモリ埋め込みプロバイダー不明のトラブルシューティング] - Unknown memory embedding provider: ollama - Troubleshooting Guide
OpenClaw v2026.04.12の回帰により、埋め込みプロバイダーとしてollamaを使用した場合に`openclaw memory status --deep`コマンド実行時に「Unknown memory embedding provider: ollama」エラーが発生します。
🔍 症状
エラーの発生状況
openclaw memory status --deepコマンドを、ollamaをメモリ埋め込みプロバイダーとして設定した状態で実行すると、CLIはプロバイダーの解決に失敗して即座に終了します:
$ openclaw memory status --deep
🦞 OpenClaw 2026.4.12 (1c0672b) — If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.
│
◇
[openclaw] Failed to start CLI: Error: Unknown memory embedding provider: ollama
技術的な発生状況
- 終了コード: ゼロ以外(通常是
1) - エラータイプ: メモリサブシステム内の
ProviderResolutionErrorまたはそれに類するもの - エラーメッセージ:
Unknown memory embedding provider: ollama - スタックトレースの位置: おそらく
packages/core/src/memory/providers/registry.tsまたはそれと同等の場所
影響を受ける設定
以下のOpenClaw設定が含まれている場合にエラーが発生します:
{
"memory": {
"embedding": {
"provider": "ollama",
"model": "qwen3-embedding:0.6b"
}
}
}または環境変数から:
$ export OPENCLAW_MEMORY_EMBEDDING_PROVIDER=ollama
$ export OPENCLAW_MEMORY_EMBEDDING_MODEL=qwen3-embedding:0.6b
リグレッションのタイムライン
- 最後に動作していたバージョン: 2026.04.10
- 最初に失敗したバージョン: 2026.04.12
- バージョンの差分: 2日分のコミット
🧠 原因
主な原因:プロバイダーレジストリのリグレッション
このエラーは、メモリ埋め込みプロバイダーレジストリシステムにおけるリグレッションに起因しています。ollamaプロバイダーは以下のいずれかの状態になっています:
- 2026.04.10から2026.04.12の間のリファクタリングコミットでプロバイダーレジストリから削除された
- 下位互換性なしで名前が変更された(例:「ollama」→「ollama-embedding」または「ollama/text-embedding-2」)
- ツリーシェイキングの問題または条件付きインポートによりビルドバンドルから除外された
- デフォルトで無効になっているフィーチャーコントロールに基づいて条件付きで登録されている
コードフローの分析
失敗のシーケンスは以下のパスに従います:
CLI Entry (memory/status.ts)
→ MemoryService.initialize()
→ EmbeddingProviderFactory.resolve("ollama")
→ ProviderRegistry.get("ollama")
→ ❌ throws "Unknown memory embedding provider: ollama"
考えられるコミットパターン
リグレッションの期間から判断すると、プロバイダーの登録メカニズムを変更したリファクタリングコミットが考えられます:
変更前(動作していた):
// packages/core/src/memory/providers/index.ts
export { OllamaEmbeddingProvider } from './ollama';
// Auto-registers via static side effect or explicit registry call
変更後(壊れた状態):
// packages/core/src/memory/providers/index.ts
// OllamaEmbeddingProvider export removed or conditional
// Provider not auto-registering
代替原因:設定スキーマの変更
プロバイダー名が設定スキーマで変更された可能性があります:
// 古い設定キー(2026.04.10)
memory.embedding.provider = "ollama"
// 新しい設定キー(2026.04.12)
memory.embedding.provider = "ollama-embed" // または
memory.embedding.provider = "ollama/text-embedding-2"
確認コマンド
根本原因を診断するには、利用可能なプロバイダーを確認します:
$ openclaw memory providers list
# or
$ cat ~/.openclaw/config.json | jq '.memory.embedding'
🛠️ 解決手順
オプション1:以前のプロバイダー名に戻す(クイックフィックス)
プロバイダーの名前が変更された場合は、新しい設定値を使用します:
# Check current OpenClaw version
openclaw --version
# List available memory embedding providers
openclaw memory status --help 2>&1 | grep -i provider
# Update configuration to use correct provider name
openclaw config set memory.embedding.provider ollama-embedding
# OR
openclaw config set memory.embedding.provider ollama/text-embedding-2
オプション2:プラグイン経由で強制再登録する(回避策)
プロバイダーのコードは存在するが自動登録されていない場合:
# Create a local plugin to re-register the provider
mkdir -p ~/.openclaw/plugins/ollama-fix
cd ~/.openclaw/plugins/ollama-fix
cat > plugin.ts << 'EOF'
import { registerEmbeddingProvider } from '@openclaw/core';
export function registerOllamaProvider() {
registerEmbeddingProvider('ollama', {
name: 'ollama',
createClient: () => new OllamaEmbeddingClient()
});
}
EOF
# Enable plugin in config
openclaw config set plugins.enabled "['ollama-fix']"
オプション3:再インストール/OpenClawのクリーンインストール(クリーンフィックス)
既知の正常な設定を取得するためにアンインストールして再インストールします:
# Backup current configuration
cp -r ~/.openclaw ~/.openclaw.backup.$(date +%Y%m%d)
# Reinstall OpenClaw
npm uninstall -g @openclaw/cli
npm install -g @openclaw/cli@latest
# Reconfigure ollama provider
openclaw config set memory.embedding.provider ollama
openclaw config set memory.embedding.model qwen3-embedding:0.6b
オプション4:動作しているバージョンにピン留めする(一時的なフィックス)
リグレッションが本番環境での使用を妨げている場合:
# Uninstall current version
npm uninstall -g @openclaw/cli
# Install last known working version
npm install -g @openclaw/cli@2026.04.10
# Verify version
openclaw --version
設定ファイルの手動編集
CLIコマンドが失敗する場合は、設定ファイルを直接編集します:
# Edit the configuration file
nano ~/.openclaw/config.json
# Ensure memory section has correct provider:
{
"memory": {
"embedding": {
"provider": "ollama",
"model": "qwen3-embedding:0.6b"
}
}
}
🧪 検証
フィックスの確認:基本的なステータスチェック
フィックスを適用した後、元のコマンドで確認します:
$ openclaw memory status --deep
🦞 OpenClaw 2026.4.12 (1c0672b) — If something's on fire, I can't extinguish it—but I can write a beautiful postmortem.
│
◇
Memory Search (main)
Provider: ollama (requested: ollama)
Model: qwen3-embedding:0.6b
Sources: memory
Indexed: 8/8 files · 99 chunks
Dirty: yes
Store: ~/.openclaw/memory/main.sqlite
Workspace: ~/.openclaw/workspace
Dreaming: 0 3 * * * · limit=10 · minScore=0.8 · minRecallCount=3 · minUniqueQueries=3 · recencyHalfLifeDays=14 · maxAgeDays=30
Embeddings: ready
期待される出力:
- 終了コード:
0 - エラーメッセージなし
Provider: ollamaが正しく表示されているEmbeddings: readyステータス
フィックスの確認:直接埋め込みテスト
埋め込み機能を直接テストします:
$ openclaw memory embed --text "test query"
# Expected: Returns embedding vector without error
# Exit code: 0
フィックスの確認:プロバイダー登録のデバッグ
それでも失敗する場合は、プロバイダーの登録を確認します:
$ openclaw debug providers
Available Memory Providers:
- openai
- anthropic
- ollama ← Should be listed
- local
フィックスの確認:バージョンの確認
$ openclaw --version
# Verify version matches expected
🦞 OpenClaw 2026.4.12 (1c0672b)
フィックスの確認:Ollamaサービス
Ollamaサービスが実行中でアクセス可能であることを確認します:
$ curl http://localhost:11434/api/tags
# Expected: JSON response with available models
{
"models": [
{
"name": "qwen3-embedding:0.6b",
"size": 378456789,
"modified_at": "2026-04-10T00:00:00Z"
}
]
}
⚠️ よくある落とし穴
エッジケース1:大文字小文字を区別するプロバイダー名
問題: プロバイダー名が正確な大文字小文字を要求するようになった可能性があります。
# ❌ 大文字小文字を区別する場合、失敗する可能性がある
memory.embedding.provider = "Ollama"
memory.embedding.provider = "OLLAMA"
# ✅ 完全な小文字を使用する
memory.embedding.provider = "ollama"
エッジケース2:モデル名の不一致
問題: モデル名の形式がバージョン間で変更された可能性があります。
# ❌ 古い形式(動作しない可能性あり)
memory.embedding.model = "qwen3-embedding:0.6b"
# ✅ 新しい形式(ollama listで確認)
memory.embedding.model = "qwen3-embedding:latest"
# または
memory.embedding.model = "nomic-embed-text:latest"
エッジケース3:Ollamaサービスが実行していない
問題: Ollamaデーモンが停止している場合、プロバイダーは通知なく失敗します。
# まずOllamaが実行していることを確認
ollama serve &
sleep 2
curl http://localhost:11434/api/tags
エッジケース4:ポート設定の不一致
問題: Ollamaがデフォルト以外のポートで動作している場合。
# Ollamaがポート11435で動作している場合
memory.embedding.providerConfig = {
"baseURL": "http://localhost:11435"
}
エッジケース5:環境変数のキャッシュ
問題: 古い環境変数が設定ファイルをオーバーライドします。
# 競合する環境変数を確認
env | grep OPENCLAW
env | grep OLLAMA
# 存在する場合は解除
unset OPENCLAW_MEMORY_EMBEDDING_PROVIDER
エッジケース6:複数の設定ファイル
問題: 誤った場所の設定が優先されます。
# 使用されている設定を確認
openclaw config show --verbose
# 設定ファイルの場所(優先順位順):
# 1. 現在のディレクトリ内の .openclaw.json
# 2. ~/.openclaw/config.json
# 3. /etc/openclaw/config.json
環境固有のトラップ
macOS
# OllamaはmacOSで自動起動しない場合があります
# 以下で確認:
brew services list | grep ollama
# 実行されていない場合:
brew services start ollama
Docker
# Docker内で実行している場合、localhostへのネットワークモードが許可されていることを確認
# またはhostネットワークを使用:
docker run --network host my-openclaw-image
# またはhost.docker.internalにbaseURLを設定:
memory.embedding.providerConfig.baseURL = "http://host.docker.internal:11434"
Windows (WSL2)
# OllamaはWindowsで実行し、WSL2は特別なURLが必要:
memory.embedding.providerConfig.baseURL = "http://host.docker.internal:11434"
# またはWSL2内でOllamaを実行:
sudo service ollama start
🔗 関連するエラー
論理的に関連するエラーコード
UNKNOWN_PROVIDER- 汎用プロバイダー解決失敗PROVIDER_NOT_INITIALIZED- プロバイダーは登録されているが準備完了していないEMBEDDING_MODEL_NOT_FOUND- モデルがプロバイダーに存在しないPROVIDER_CONNECTION_FAILED- プロバイダーへのネットワーク/接続が切断CONFIG_SCHEMA_MISMATCH- 設定構造に互換性がない
歴史的に関連する問題
| Issue ID | タイトル | 説明 |
|---|---|---|
| #4521 | v2026.04.xアップデート後にメモリプロバイダーレジストリが空になる | 初期のv2026.04リリースにおける同様のレジストリリグレッション |
| #4489 | Ollama埋め込みが空のベクトルを返す | プロバイダーがようやく解決したときに発生するダウンストリーム問題 |
| #4456 | ワークスペース設定からプロバイダー設定が読み込まれない | 設定解決のエッジケース |
| #4398 | リグレッション:Azure OpenAIで「不明なプロバイダー」 | Azureプロバイダーでの同様のリグレッションパターン |
| #4321 | メモリ埋め込みがサイレントにCPUにフォールバックする | プロバイダー失敗を隠すフォールバック動作 |
関連する設定キー
memory.embedding.provider # 失敗しているキー
memory.embedding.model # 更新が必要な可能性あり
memory.embedding.providerConfig # プロバイダーごとの任意設定
memory.embedding.dimensionOverride # モデルの出力と競合する可能性あり
memory.providers.fallback # フォールバックチェーン設定
ダウンストリームエラーの連鎖
このエラーが発生すると、後続の操作が失敗します:
openclaw memory search "query"
# → 失敗:利用可能な埋め込みプロバイダーがいない
openclaw memory index
# → 失敗:新コンテンツの埋め込みを生成できない
openclaw dream
# → 部分的に動作する可能性あり:キャッシュされた埋め込みを使用