インストール
コンテンツ詳細
インストール
{
"mcpServers": {
"neuroverse": {
"command": "npx",
"args": ["neuroverse"]
}
}
}
{
"mcpServers": {
"neuroverse": {
"command": "python",
"args": ["mcp/server.py"],
"cwd": "/path/to/neuroverse"
}
}
}NeuroVerse Integration
- Use
neuroverse_processto handle any user request — it auto-detects language, extracts intent, checks safety, and executes. - Use
neuroverse_reasonfor complex tasks requiring analytical reasoning (powered by OpenRouter). - Use
neuroverse_store/neuroverse_recallfor persistent context across sessions. - Use
neuroverse_executefor any potentially dangerous action — it will block destructive operations.
これだけです。エージェントが知っておくべきコマンドはふたつ:
| コマンド | 使用タイミング | 実行内容 |
|---|---|---|
| `neuroverse_process(text, user_id)` | あらゆるユーザーリクエスト | 言語検出、意図抽出、セーフティチェック、実行 |
| `neuroverse_store(user_id, intent, ...)` | 作業終了時 | 次セッション用にコンテキストを保存 |
次セッションでは、あたかも忘れなかったかのように、エージェントは中断したところから正確に再開します。
### 動作要件
- **npm 版:** Node.js 18+(データベース依存ゼロ — JSON ファイルを使用)
- **Python 版:** Python 3.10+ + PostgreSQL(永続メモリ用)
---
## 🤔 なぜ NeuroVerse なのか?
| NeuroVerse なし | NeuroVerse あり |
|---|---|
| エージェントは英語しか理解できない | タミル語、ヒンディー語、テルグ語、カンナダ語 + 英語のコードスイッチングを理解 |
| `"anna file ah csv convert pannu"` → ❌ エラー | `"anna file ah csv convert pannu"` → ✅ ファイルを CSV に変換 |
| 毎セッションがゼロから始まる | エージェントは過去の作業を記憶 — セッションを越え、エージェントを越えて |
| `DROP DATABASE` → 💀 データが消える | `DROP DATABASE` → 🛡️ 1ms 未満でブロック、トークン消費ゼロ |
| ひとつの LLM プロバイダに縛られる | 各タスクに最適なモデルへ自動ルーティング |
| 2 エージェント = カオス | エージェント A がエージェント B へシームレスにハンドオフ |
### トークン効率
NeuroVerse のセーフティレイヤーは **トークンコストゼロ** で動作します — 純粋な正規表現とルールマッチングで、LLM 呼び出しを一切無駄にしません:
| セーフティ方式 | チェックあたりのコスト | レイテンシ |
|---|---|---|
| LLM ベースのセーフティ | 500〜2,000 トークン | 1〜5 秒 |
| 埋め込みベース | 100〜500 トークン | 200〜500ms |
| **NeuroVerse Kavach** | **0 トークン** | **< 1ms** |
1 セッションあたり 100 ツール呼び出しなら、LLM ベースのセーフティと比べて **50,000〜200,000 トークンを節約** できます。
---
## ⚙️ 動作の仕組み
ユーザー入力(任意の言語) │ ┌────┴────┐ │ Vani │ ← 言語検出 + キーワード正規化 │ (भाषा) │ タミル語/ヒンディー語/テルグ語 → 正規化された内部フォーマット └────┬────┘ │ ┌────┴────┐ │ Bodhi │ ← LLM 意図抽出 + ルールベースフォールバック │ (बोधि) │ 信頼度付きの構造化 JSON を返す └────┬────┘ │ ┌────┴────┐ │ Kavach │ ← 3 層セーフティ: ブロックリスト → リスク → LLM ジャッジ │ (कवच) │ トークンコストゼロで危険な操作をブロック └────┬────┘ │ ┌────┴────┐ │ Marga │ ← 最適なモデルにルーティング (OpenAI/Anthropic/Sarvam/Ollama) │ (मार्ग) │ タスク種別ベース: 多言語/推論/ローカル └────┬────┘ │ ┌────┴────┐ │ Smriti │ ← 階層型メモリへの保存/呼び出し │ (स्मृति) │ 短期 + エピソード + セマンティック (PostgreSQL) └────┬────┘ │ ツール実行 + レスポンス
---
## 🌐 多言語インテリジェンス — Vani
**課題:** すべての MCP サーバーは英語しか話せません。インドでは 70% が日常的にコードスイッチングを行います。
"anna indha file ah csv convert pannu" ↓ "anna this file ah csv convert do" ← キーワード正規化(完全な翻訳ではない) ↓ Intent: convert_format { output_format: "csv" }
### ハイブリッドパイプライン(ルール + LLM)
入力 → 言語検出 (langdetect) → コードスイッチ分割 → キーワード正規化 → 出力
**重要な洞察:** 完全に翻訳してはいけません。ドメイン上重要なキーワードのみを正規化します。残りはそのまま保持され、コンテキスト、トーン、ニュアンスが保たれます。
### 対応言語
| 言語 | マッピングされたキーワード | 例 |
|---|---|---|
| 🇮🇳 タミル語 | `pannu` → do, `maathru` → change, `anuppu` → send | `"file ah csv convert pannu"` |
| 🇮🇳 ヒンディー語 | `karo` → do, `banao` → create, `bhejo` → send | `"report banao sales ka"` |
| 🇮🇳 テルグ語 | `cheyyi` → do, `pampu` → send, `chupinchu` → show | `"data chupinchu"` |
| 🇮🇳 カンナダ語 | v2 でサポート予定 | — |
| 🇬🇧 英語 | パススルー | `"convert json to csv"` |
### コードスイッチ検出
```json
{
"languages": ["ta", "en"],
"confidence": 0.92,
"is_code_switched": true,
"original_text": "anna indha file ah csv convert pannu",
"normalized_text": "anna this file ah csv convert do"
}
🧠 意図抽出 — Bodhi
LLM ファースト。ルールベースのフォールバック。決して失敗しない。
LLM 成功(信頼度 ≥ 0.5)?
├─ はい → LLM 結果を使用
└─ いいえ → ルールベースパーサ(決定論的)
LLM 戦略
# Prompt to LLM:
"Extract structured intent from the following input.
Return ONLY valid JSON: {intent, parameters, confidence}"
ルールベースフォールバック(7 パターン)
| パターン | 意図 | トリガーキーワード |
|---|---|---|
| フォーマット変換 | convert_format |
convert, csv, json, excel, pdf |
| 要約 | summarize |
summarise, summary, brief, tldr |
| レポート生成 | generate_report |
report, generate report |
| 削除 | delete_data |
delete, remove, drop, clean |
| データクエリ | query_data |
query, search, find, fetch, get |
| コミュニケーション | send_message |
send, share, email, notify |
| 説明 | explain |
explain, describe, what is, how to |
出力
{
"intent": "convert_format",
"parameters": { "input_format": "json", "output_format": "csv" },
"confidence": 0.87,
"source": "rule"
}
決定的な違い: コードが決定する のであり、LLM ではありません。LLM が失敗したり、ハルシネーションを起こしたり、ゴミを返したりしても、ルールエンジンが引き継ぎます。決定論的。信頼性抜群。
💾 階層型メモリ — Smriti
課題: 生のログは役に立たない。すべてを保存するとリソースを浪費する。関連性スコアリングもない。
NeuroVerse のアプローチ: スコアリング → フィルタリング → 圧縮 → 保存。
3 つの階層
| 階層 | ストレージ | 寿命 | 用途 |
|---|---|---|---|
| 短期 | プロセス内 dict | 現在のセッション | アクティブなコンテキスト、ユーザーごとに最大 50 件 |
| エピソード | PostgreSQL | 直近のアクション | エージェントが最近行ったこと |
| セマンティック | PostgreSQL | 長期事実 | ユーザー、プロジェクト、エンティティに関する永続知識 |
重要度スコアリング
if importance_score >= 0.4:
persist_to_database() # worth remembering
else:
skip() # noise
重要な記憶だけが生き残ります。肥大化なし。無関係な呼び出しなし。
コンテキスト圧縮
❌ Bad: "The user asked about sales data three times in the last hour and seemed frustrated..."
✅ Good: { "intent": "sales_query", "frequency": 3, "sentiment": "frustrated" }
構造化された JSON ペイロードであり、生のテキストダンプではありません。圧縮済み。インデックス可能。クエリ可能。
メモリスキーマ (PostgreSQL)
CREATE TABLE memory_records (
id TEXT PRIMARY KEY,
user_id TEXT NOT NULL,
tier TEXT NOT NULL, -- short_term | episodic | semantic
intent TEXT NOT NULL,
language TEXT DEFAULT 'en',
data JSONB DEFAULT '{}', -- compressed structured payload
importance REAL DEFAULT 0.5,
created_at TIMESTAMPTZ DEFAULT NOW(),
updated_at TIMESTAMPTZ DEFAULT NOW()
);
-- Indexed: user_id, intent, tier
🛡️ セーフティレイヤー — Kavach
「決して眠らない盾。」
3 つのレイヤー — 多層防御
エージェントがツールを呼ぶ → MCP サーバーがリクエストを受信
│
┌───────────┴───────────┐
│ レイヤー 1: ブロックリスト │ ← regex + keywords, < 0.1ms
└───────────┬───────────┘
│ pass
┌───────────┴───────────┐
│ レイヤー 2: リスクスコア │ ← intent → risk classification
└───────────┬───────────┘
│ pass
┌───────────┴───────────┐
│ レイヤー 3: LLM ジャッジ │ ← オプションのモデルベースチェック
└───────────┬───────────┘
│ pass
ハンドラを実行
レイヤー 1 — ルールベースブロックリスト(ゼロコスト)
MCP サーバー内で実行されます。純粋な regex。ネットワークなし。トークンなし。
ブロックされるキーワード:
delete_all_data, drop_database, drop_table, system_shutdown,
format_disk, rm -rf, truncate, shutdown, reboot, erase_all, destroy
ブロックされるパターン (regex):
DROP (DATABASE|TABLE|SCHEMA)
DELETE FROM *
TRUNCATE TABLE
FORMAT [drive]:
rm (-rf|--force)
レイヤー 2 — 意図リスク分類
| リスクレベル | 意図 | アクション |
|---|---|---|
| 🟢 低 | convert_format, summarize, generate_report, query_data, explain |
✅ 許可 |
| 🟡 中 | send_message, unknown |
⚠️ 厳格モード時はブロック |
| 🔴 高 | delete_data |
❌ 常にブロック |
| ⛔ クリティカル | drop_database, system_shutdown |
❌ 常にブロック |
レイヤー 3 — LLM セーフティジャッジ(オプション)
レイヤー 1〜2 を通過した場合、オプションで LLM に尋ねます: 「これは安全か?」
// LLM returns:
{ "safe": false, "reason": "This action would delete all user data." }
セーフティ判定
{
"allowed": false,
"risk_level": "critical",
"reason": "Blocked keyword detected: 'drop_database'",
"blocked_by": "rule"
}
トークンコスト: ゼロ
ほとんどの AI セーフティ: エージェント → "rm -rf /" → セーフティ LLM → 2,000 トークン消費
NeuroVerse: エージェント → "rm -rf /" → regex マッチ → ブロック(0 トークン、< 1ms)
厳格モード
# .env
SAFETY_STRICT_MODE=true # MEDIUM リスク(unknown/send)もブロック
SAFETY_STRICT_MODE=false # HIGH と CRITICAL のみブロック
🤖 マルチモデルルーター — Marga
課題: ベンダーロックイン。すべてにひとつのモデル。過剰な支払い。
NeuroVerse のアプローチ: 各タスクを最適なモデルにルーティング。自動で。
ルーティングロジック
def route_task(task):
if task.type == "multilingual":
return sarvam_model # Best for Indian languages
elif task.type == "reasoning":
return claude_or_openai # Best for complex analysis
elif task.type == "local":
return ollama # Free, on-device, private
else:
return best_available # Fallback chain
対応プロバイダ
| プロバイダ | デフォルトモデル | 最適な用途 | コスト |
|---|---|---|---|
| 🇮🇳 Sarvam AI | sarvam-2b-v0.5 |
インド言語、多言語 | 低 |
| 🧩 OpenRouter | stepfun/step-3.5-flash:free |
高性能推論 | 無料 |
| 🧠 Anthropic | claude-sonnet-4-20250514 |
推論、分析 | 中 |
| 🤖 OpenAI | gpt-4o |
汎用タスク、コード | 中 |
| 🦙 Ollama | llama3 |
ローカル、プライベート、オフライン | 無料 |
メリット
| Marga なし | Marga あり | |
|---|---|---|
| コスト | すべてに GPT-4 を支払う | 単純なタスクには Ollama を使用 |
| 速度 | 全タスクで同じレイテンシ | 高速タスクにはローカルモデル |
| プライバシー | すべてクラウドへ | 機密データはローカルに留まる |
| ベンダーロックイン | ひとつのプロバイダに縛られる | いつでも切り替え可能 |
フォールバックチェーン
優先プロバイダがダウンまたは未設定の場合:
OpenRouter → Anthropic → OpenAI → Sarvam → Ollama(ローカル、常に利用可能)
🔗 エージェント間連携 — Setu
エージェントがエージェントを呼び、さらにその先へ。
エージェントレジストリ
register_agent({
"agent_name": "report_agent",
"endpoint": "http://localhost:8001/generate",
"capabilities": ["generate_report", "sales_analysis"]
})
ルーティング
{
"target_agent": "report_agent",
"task": "generate_sales_report",
"payload": { "quarter": "Q1", "year": 2026 }
}
フォールバック
対象エージェントに到達不能な場合:
{
"success": false,
"error": "Agent unreachable: ConnectError",
"fallback": true
}
呼び出し元はローカル実行にフォールバックできます。ハード障害はありません。
🧩 MCP ツール
NeuroVerse は Model Context Protocol 経由で 6 つのツール を公開します:
| # | ツール (npm) | ツール (Python) | 説明 |
|---|---|---|---|
| 1 | neuroverse_process |
india_mcp_process_multilingual_input |
フルパイプライン: 検出 → 正規化 → 意図 → セーフティ → 実行 |
| 2 | neuroverse_store |
india_mcp_store_memory |
階層型システムにメモリレコードを保存 |
| 3 | neuroverse_recall |
india_mcp_recall_memory |
ユーザー、意図、階層別にメモリを取得 |
| 4 | neuroverse_execute |
india_mcp_safe_execute |
エンドツーエンドの安全実行(便利機能) |
| 5 | neuroverse_route |
india_mcp_route_agent |
登録された下流エージェントにタスクをルーティング |
| 6 | neuroverse_model |
india_mcp_model_route |
マルチモデルルーターにクエリ(オプションで呼び出し) |
| 7 | neuroverse_transcribe |
india_mcp_transcribe_audio |
Whisper STT で音声をテキストに文字起こし |
| 8 | neuroverse_synthesize |
india_mcp_synthesize_speech |
Coqui TTS でテキストから音声を合成 |
| 9 | neuroverse_reason |
N/A | OpenRouter による高性能推論 |
実世界の例
── セッション 1 (エージェント Alpha、午後 2 時) ───────────
india_mcp_process_multilingual_input({
text: "anna indha sales data ah csv convert pannu",
user_id: "alpha",
execute: true
})
→ Language: Tamil+English (code-switched)
→ Intent: convert_format { output_format: "csv" }
→ Safety: ✅ allowed (LOW risk)
→ Execution: ✅ success
india_mcp_store_memory({
user_id: "alpha",
intent: "convert_format",
tier: "episodic",
data: { "file": "sales_q1.json", "output": "csv" },
importance_score: 0.8
})
── セッション 2 (エージェント Beta、翌日) ───────────────
india_mcp_recall_memory({
user_id: "alpha",
intent: "convert_format",
limit: 5
})
→ "Agent Alpha converted sales_q1.json to CSV yesterday"
→ Beta は Alpha が中断したところから正確に再開
🌐 REST API
NeuroVerse は FastAPI による REST レイヤーも同梱しています — MCP 以外のクライアント向け:
python app/main.py
# → http://localhost:8000/docs (Swagger UI)
| エンドポイント | メソッド | 説明 |
|---|---|---|
/health |
GET | ヘルスチェック |
/api/process |
POST | フル多言語パイプライン |
/api/memory/store |
POST | メモリ保存 |
/api/memory/recall |
POST | メモリ呼び出し |
⚙️ 設定
すべての設定は環境変数(.env)経由:
# Database (PostgreSQL required for persistent memory)
DATABASE_URL=postgresql+asyncpg://user:password@localhost:5432/neuroverse
# AI Model API Keys (configure the ones you have)
OPENAI_API_KEY=sk-...
ANTHROPIC_API_KEY=sk-ant-...
SARVAM_API_KEY=...
# Ollama (local, free)
OLLAMA_BASE_URL=http://localhost:11434
# Safety
SAFETY_STRICT_MODE=true # Block MEDIUM risk actions too
# MCP Transport
MCP_TRANSPORT=stdio # or streamable_http
MCP_PORT=8000
🧪 テスト
python -m pytest tests/ -v
tests/test_intent.py — 10 passed (rule-based + async + mock LLM + fallback)
tests/test_language.py — 10 passed (keyword normalisation + detection + code-switch)
tests/test_pipeline.py — 8 passed (full e2e: English, Tamil, Hindi, dangerous, edges)
tests/test_safety.py — 12 passed (blocklist, regex, risk classification, pipeline)
============================= 40 passed in 0.87s ==============================
テスト対象
| カテゴリ | テスト数 | カバレッジ |
|---|---|---|
| 言語検出 | 10 | タミル語、ヒンディー語、英語、空入力、コードスイッチフラグ |
| 意図抽出 | 10 | 7 つのルールパターンすべて、LLM モック、LLM 失敗、空 |
| セーフティエンジン | 12 | キーワード、regex、リスクレベル、フルパイプライン、厳格モード |
| フルパイプライン | 8 | E2E 英語、タミル語、ヒンディー語、危険コマンド、エッジケース |
🏗️ アーキテクチャ
npm 版 (Node.js / TypeScript)
npm/
├── src/
│ ├── core/
│ │ ├── language.ts # Vani — Language detection (zero deps)
│ │ ├── intent.ts # Bodhi — Intent extraction (LLM + fallback)
│ │ ├── memory.ts # Smriti — Tiered memory (JSON files)
│ │ ├── safety.ts # Kavach — 3-layer safety engine
│ │ └── router.ts # Marga — Multi-model AI router
│ ├── services/
│ │ ├── executor.ts # Tool registry + retry engine
│ │ └── agent-router.ts # Setu — Agent-to-Agent routing
│ ├── types.ts # TypeScript interfaces & enums
│ ├── constants.ts # Shared constants
│ └── index.ts # MCP Server — 6 tools (McpServer + Zod)
├── package.json # npm publish config
├── tsconfig.json
└── LICENSE # Apache-2.0
Python 版
app/
├── core/
│ ├── language.py # Vani — Language detection (langdetect)
│ ├── intent.py # Bodhi — Intent extraction (LLM + fallback)
│ ├── memory.py # Smriti — Tiered memory (PostgreSQL)
│ ├── safety.py # Kavach — 3-layer safety engine
│ └── router.py # Marga — Multi-model AI router
├── models/schemas.py # 12 Pydantic v2 models
├── services/
│ ├── executor.py # Tool registry + retry engine
│ └── agent_router.py # Setu — Agent-to-Agent routing
├── config.py # Settings from environment
└── main.py # FastAPI REST entry point
mcp/server.py # MCP Server (FastMCP) — 6 tools
tests/ # 40 tests (pytest)
依存関係 — 最小限
npm (3 パッケージ):
| パッケージ | 用途 |
|---|---|
@modelcontextprotocol/sdk |
MCP プロトコル |
zod |
スキーマバリデーション |
axios |
HTTP リクエスト |
Python (7 パッケージ):
| パッケージ | 用途 |
|---|---|
mcp[cli] |
Model Context Protocol SDK |
fastapi + uvicorn |
REST API レイヤー |
pydantic |
入力バリデーション (v2) |
langdetect |
統計的言語識別 |
asyncpg + sqlalchemy[asyncio] |
PostgreSQL 非同期ドライバ |
httpx |
モデル API 用の非同期 HTTP |
🚀 ロードマップ
| フェーズ | ステータス | 内容 |
|---|---|---|
| v1.0 | ✅ 完了 | 多言語パース + 意図抽出 + 5 ツール |
| v1.0 | ✅ 完了 | 階層型メモリシステム (PostgreSQL) |
| v1.0 | ✅ 完了 | 3 層セーフティエンジン (Kavach) |
| v1.0 | ✅ 完了 | マルチモデルルーター (Marga) + エージェントルーティング (Setu) |
| v2.0 | ✅ 完了 | 音声レイヤー (Whisper/Coqui) + 拡張多言語対応 |
| v3.0 | ✅ 完了 | Redis キャッシュ + 埋め込みベースのセマンティック検索 |
| v4.0 | ✅ 完了 | 強化学習 (RLHF) + Arachne コンテキストインデックス |
| v4.1 | ✅ 完了 | OpenRouter 推論レイヤー統合 |
| v5.0 | 🔮 将来 | エージェントマーケットプレイス & 外部システムプラグイン |
🔐 セキュリティ
| 対策 | 実装 |
|---|---|
| API キー管理 | 環境変数のみ — コードには決して含めない |
| 入力サニタイズ | すべての入力にフィールド制約付きの Pydantic v2 |
| レート制限 | v2.0 で予定 |
| パストラバーサル | 該当なし — ツールによるファイルシステムアクセスなし |
| SQL インジェクション | SQLAlchemy 経由のパラメータ化クエリ |
| 暗号化ストレージ | PostgreSQL TLS に委譲 |
🤝 コントリビュート
コントリビューションを歓迎します!はじめかたは次のとおりです:
- リポジトリをフォーク
- フィーチャーブランチを作成 (
git checkout -b feature/amazing-feature) - 変更をコミット (
git commit -m 'feat: add amazing feature') - ブランチにプッシュ (
git push origin feature/amazing-feature) - プルリクエストを開く
開発セットアップ
# npm edition
git clone https://github.com/joshua400/neuroverse.git
cd neuroverse/npm
npm install
npm run build
# Python edition
cd neuroverse
python -m pip install -e ".[dev]"
python -m pytest tests/ -v # All 40 should pass
代替品








VIP会員