証拠に基づく意思決定、マルチエージェント討論、シナリオシミュレーション、監査可能な推薦のためのオープンソース戦略インテリジェンス・コックピット。
Language / 言語
| Signal | MingJian が提供するもの |
|---|---|
| Evidence first | すべての推薦が収集ソース、抽出された主張、再生可能なトレースに接続されます。 |
| Debate, not monologue | 専門ロールのエージェントが、回答前に前提を検証します。 |
| Local sovereignty | Community はローカルで実行でき、オープンソースコード、ローカルデータ管理、24時間監視ウィンドウを備えます。 |
| Decision memory | セッション、推薦バージョン、更新、ソース健全性、ユーザー結果を一続きに保持します。 |
MingJian は、不確実性の中で重要な判断を下す人のために作られています。創業者、アナリスト、運用担当者、研究者、戦略チーム、そして「信じるだけの答え」ではなく検証可能な証拠を必要とするチーム向けです。
体験はチャットボックスというより、戦略インテリジェンス・コックピットです。ユーザーが意思決定支援リクエストを出すと、MingJian は証拠収集、分析、シミュレーション、討論評議会、最初の推薦を実行し、その後のソース変化や推薦バージョンも記録します。
| Edition | Distribution | Core Workflow | Commercial Layer |
|---|---|---|---|
| Community | Apache 2.0 self-hosted upstream | 24時間ローカル監視を含む完全な公共意思決定ワークフロー | None |
| Cloud | Hosted SaaS subscription | Community 公共コアのスーパーセット | Subscription, metering, tenant operations |
| Enterprise | Private / on-prem deployment | Community 公共コアのスーパーセット | License, audit, governance, private connectors |
このリポジトリは Community edition です。Cloud subscription surfaces、Enterprise-only governance code、proprietary mobile entry point は、明示的に公開する決定がない限り追加しません。
Question
-> source discovery
-> evidence extraction
-> analysis and simulation
-> role-based debate
-> recommendation
-> version timeline
-> scheduled / source-change refresh
-> decision record and outcome feedback
| Stage | Purpose | User-visible proof |
|---|---|---|
| Gather | ニュース、コード、ソーシャル、公開データから多元的な証拠を集める。 | Source list, cursor health, last checked time. |
| Reason | 証拠を論点、リスク、シミュレーション、構造化された主張へ変換する。 | Analysis artifacts, report sections, debate rounds. |
| Debate | ロール別エージェントが批評、修正、仲裁する。 | Advocate, challenger, arbiter traces. |
| Remember | セッション、推薦バージョン、更新トリガー、結果を永続化する。 | Timeline, recommendation history, feedback records. |
| Old AI Analysis | MingJian |
|---|---|
| One answer, little context. | Evidence chain, debate trail, recommendation versions. |
| Single-model blind spots. | Support, challenge, arbitration roles による multi-agent critique. |
| Static responses. | Scheduled refresh と source-change updates. |
| Hard to audit. | Deterministic traces, source attribution, decision records. |
| Generic workflow. | Strategy, risk, market, policy, technical, social, security perspectives. |
問題点: 従来のAIツールは作業過程を示さずに答えを提示します。
明鉴の解決策: 明鉴は10以上のデータソースからの現実世界の証拠に基づいてすべての決定を裏付けます。すべての主張は追跡可能で、すべての決定は監査可能です。
問題点: 単一のAIモデルにはブラインドスポットとバイアスがあります。
明鉴の解決策: 複数のAIモデル(GPT、Gemini、Claude、Grok)があなたの決定についてディベートし、仮定に挑戦し、証拠に基づいた結論に到達します。
問題点: ほとんどのAIツールは汎用的で、特定のドメインを理解していません。
明鉴の解決策: 明鉴は企業向け(市場分析、競合インテリジェンス)と軍事向け(作戦計画、兵站)の両方をドメイン固有のルールとモデルでサポートします。
問題点: AIがどのように結論に至ったか説明できません。
明鉴の解決策: すべてのシミュレーションは決定論的意思決定トレースを生成します — AIがどのように結論に至ったかのステップバイステップの記録です。ブラックボックスはありません。
問題点: AIの出力は間違っている可能性がありますが、気づいた時には手遅れです。
明鉴の解決策: 明鉴は自らの出力をレビューし、弱点を特定し、品質しきい値に達するまで反復します — すべて人間の介入なしで実行されます。
問題点: AIの完了を待ってから、ブラックボックスの結果を受け取ります。
明鉴の解決策: 分析リクエストを送信すると、AIがリアルタイムで作業する様子を確認できます — ストリーミング進捗イベント、ソースの帰属、中間結果とともにお届けします。
問題点: 単一のAIモデルには盲点とバイアスがあります。
明鉴の解決策: 明鑑は9つの専門AIエージェントを配備します — 各エージェントが独自の役割、視点、モデルを持ち、意思決定カウンシルを形成します:
| 役割 | エージェント | 機能 |
|---|---|---|
| 🟢 戦略的支持者 | コア | 賛成の論証、支持証拠の発見 |
| 🔴 リスクチャレンジャー | コア | 反対の論証、反証の発見 |
| ⚖️ 主任仲裁者 | コア | 証拠に基づく最終裁定 |
| 🔍 インテリジェンスアナリスト | パースペクティブ | 証拠品質の評価 |
| 🌍 地政学エキスパート | パースペクティブ | 地政学的分析 |
| 💰 経済アナリスト | パースペクティブ | 経済/市場分析 |
| ⚔️ 軍事戦略家 | パースペクティブ | 軍事/安全保障分析 |
| 🔮 テクノロジー予測者 | パースペクティブ | 技術トレンド分析 |
| 👥 社会影響評価者 | パースペクティブ | 社会/世論分析 |
| 機能 | 明鉴 | Manus | 従来のAI | シングルエージェント | LangChain |
|---|---|---|---|---|---|
| データソース | ✅ 10以上のリアルタイム | ❌ 手動入力 | |||
| 証拠チェーン | ✅ 完全な追跡可能性 | ❌ 追跡なし | ❌ 追跡なし | ❌ 追跡なし | ❌ 追跡なし |
| マルチエージェントディベート | ✅ 9エージェント対立型 | ❌ 単一モデル | ❌ 単一モデル | ||
| 意思決定トレース | ✅ 決定論的 | ❌ ブラックボックス | ❌ ブラックボックス | ❌ ブラックボックス | ❌ ブラックボックス |
| 自己修復 | ✅ Jarvisエンジン | ❌ なし | ❌ なし | ❌ なし | |
| ストリーミング分析 | ✅ リアルタイム | ✅ リアルタイム | ❌ バッチのみ | ❌ バッチのみ | |
| 継続監視 | ✅ WatchRule+自動更新 | ❌ ワンショットタスク | ❌ なし | ❌ なし | ❌ なし |
| 企業ドメイン | ✅ 完全サポート | ❌ 汎用的 | ❌ 汎用的 | ❌ 汎用的 | |
| 軍事ドメイン | ✅ 完全サポート | ❌ 汎用的 | ❌ 汎用的 | ❌ 汎用的 | |
| シナリオ分岐 | ✅ ビームサーチ | ❌ なし | ❌ 手動 | ❌ なし | ❌ なし |
| ナレッジグラフ | ✅ 埋め込み対応 | ❌ なし | ❌ なし | ❌ なし | ❌ なし |
| コード実行 | ✅ フルサンドボックスVM | ❌ なし | ❌ なし | ||
| データ主権 | ✅ セルフホスト | ❌ クラウドのみ | ✅ セルフホスト | ||
| オープンソース | ✅ Apache 2.0 | ❌ クローズドソース | ✅ 多様 |
汎用ツールではなく、専属の参謀チーム。
AI Agent の時代が到来した。オーケストレーションレイヤーが複数のサブAgentとツールを調整し、サンドボックス環境で複雑なタスクを自律的に完了する — これは実証済みのパラダイムである。
明鑑はこの基盤の上にさらに進み、意思決定インテリジェンスに特化する:
| 設計原則 | 明鉴 の実践 |
|---|---|
| オーケストレーション > ベースモデル | 9エージェント登録センター、役割別モデル配分 |
| リアルタイムストリーミングが信頼を構築 | ディベートをラウンドごとにレンダリング、ユーザーが全ステップを確認 |
| マルチツール協調 | 12データソース + ディベートエンジン + シミュレーションエンジン |
| 失敗時の動的再計画 | ディベート失敗時に自動戦略調整 |
| 次元 | 明鉴 |
|---|---|
| 目標 | より良い意思決定を行う |
| 推論方式 | 9エージェントが独立論証、相互質問、仲裁裁定 |
| エビデンス基盤 | 12データソース構造化収集 → エビデンス抽出 → ナレッジグラフ |
| 継続性 | WatchRule 持続監視 + 定期更新 + 突発イベント検知 |
| ドメイン深度 | 企業/軍事デュアルドメインシミュレーション、KPI追跡、シナリオ分岐 |
| 透明性 | 推論過程の表示 + ユーザーの投票・質問 |
| データ主権 | セルフホスト、データは完全にローカル |
| コスト | 独自モデル、限界コストはほぼゼロ |
明鉴 の9エージェントシステムは Mixture of Experts (MoE) の中核思想から着想を得ている:
ユーザーの質問 → ルーター(ディベートフロー)→ エキスパート組み合わせ選択 → 独立推論 → 重み付き裁定
DeepSeek-V3が256エキスパートの中から少数のみを活性化させるように、明鑑は9エージェントの中から質問タイプに応じて最適な組み合わせを選択する。コア3役割(支持者/挑戦者/仲裁者)は常に活性化、パースペクティブ6役割は必要に応じて参加 — これがソフトウェアレイヤーでのスパース活性化である。
| ユースケース | 説明 | メリット |
|---|---|---|
| 📊 投資リサーチ | 市場トレンドの分析、投資仮説のディベート | 高速リサーチ、より良い意思決定 |
| 🏭 企業戦略 | 競合インテリジェンス、シナリオプランニング | データ駆動の意思決定、リスク低減 |
| ⚔️ 軍事計画 | 作戦分析、兵站最適化 | 戦略的優位性、より良い成果 |
| 🛡️ リスク管理 | 多角的なリスク評価 | 不確実性の軽減 |
| 📈 市場分析 | リアルタイム市場インテリジェンス | 高速インサイト、より良いポジショニング |
| 🎯 政策分析 | 多様なステークホルダーへの影響評価 | 十分な情報を得た政策、より良い成果 |
明鉴をローカルで実行する最も速い方法はDockerセットアップスクリプトです。Dockerの確認、.env.exampleから.envの作成、OpenAI APIキーの入力、フルスタックの起動を行います。
まずDocker Desktopをインストールしてから、以下を実行してください:
chmod +x setup.sh
./setup.shスクリプトが完了したら、以下のURLを開いてください:
| サービス | URL |
|---|---|
| フロントエンド | http://localhost:3001 |
| API | http://localhost:8000 |
| MinIOコンソール | http://localhost:9001 |
MinIOログイン:.env の PLANAGENT_MINIO_ACCESS_KEY / PLANAGENT_MINIO_SECRET_KEY を使用してください。
Dockerスタックを停止するには:
docker compose -f docker-compose.yml downバックエンドとフロントエンドをマシン上で直接実行して開発したい場合は、このパスを使用してください。
開始前に、以下がインストールされていることを確認してください:
| 要件 | バージョン | インストール方法 |
|---|---|---|
| Python | 3.12+ | python.org |
| Node.js | 18+ | nodejs.org |
| npm | 9+ | Node.jsに同梱 |
| Git | 2.30+ | git-scm.com |
| PostgreSQL | 14+(任意) | postgresql.org |
| Redis | 7+(任意) | redis.io |
| コンポーネント | 最小構成 | 推奨構成 |
|---|---|---|
| CPU | 2コア | 4コア以上 |
| RAM | 4 GB | 8 GB以上 |
| ストレージ | 10 GB | 50 GB以上 |
| OS | macOS、Linux、Windows | macOSまたはLinux |
プロジェクトルートに以下の変数を含む.envファイルを作成してください:
# ═══════════════════════════════════════════════════════════════
# AIモデル設定
# ═══════════════════════════════════════════════════════════════
# 開始するには1つのAPIキーがあれば十分です。
# システムは同じキーをすべての7つのモデルスロット
#(primary、extraction、x_search、report、debate_advocate、
# debate_challenger、debate_arbitrator)に自動的に使用します。
# 個別にオーバーライドしない限り。
PLANAGENT_OPENAI_API_KEY=your_api_key_here
# 個別のターゲットをオーバーライド(未設定の場合は共通値にフォールバック)
# 先にAPIキーを設定し、接続テストで利用可能なモデルを取得してから、
# 必要な場合だけ返されたモデルIDを貼り付けます。
# PLANAGENT_OPENAI_PRIMARY_MODEL=
# PLANAGENT_OPENAI_PRIMARY_API_KEY=sk-...
# PLANAGENT_OPENAI_EXTRACTION_MODEL=
# PLANAGENT_OPENAI_DEBATE_ADVOCATE_MODEL=
# PLANAGENT_OPENAI_DEBATE_CHALLENGER_MODEL=
# PLANAGENT_OPENAI_DEBATE_ARBITRATOR_MODEL=
# ═══════════════════════════════════════════════════════════════
# データベース(任意 — ローカル開発ではSQLiteがデフォルト)
# ═══════════════════════════════════════════════════════════════
# PLANAGENT_DATABASE_URL=postgresql+psycopg://planagent:planagent@localhost:5432/planagent
# ═══════════════════════════════════════════════════════════════
# Redis(任意 — 本番環境のイベントバス用)
# ═══════════════════════════════════════════════════════════════
# PLANAGENT_REDIS_URL=redis://localhost:6379/0
# ═══════════════════════════════════════════════════════════════
# MinIOオブジェクトストレージ(任意)
# ═══════════════════════════════════════════════════════════════
# PLANAGENT_MINIO_ENDPOINT=localhost:9000
# PLANAGENT_MINIO_ACCESS_KEY=minioadmin
# PLANAGENT_MINIO_SECRET_KEY=minioadmin
# ═══════════════════════════════════════════════════════════════
# X / Twitter(任意 — ソーシャルインテリジェンス用)
# ═══════════════════════════════════════════════════════════════
# X_BEARER_TOKEN=your_x_bearer_token
# ═══════════════════════════════════════════════════════════════
# フロントエンド
# ═══════════════════════════════════════════════════════════════
NEXT_PUBLIC_API_URL=/api💡 重要なポイント: 1つのモデルプロバイダー(例:OpenAI、または任意のOpenAI互換API)にしかアクセスできない場合でも、すべての7つのモデルスロットに使用できます。
PLANAGENT_OPENAI_API_KEYを設定するだけで、システムが残りを自動的に補完します。開始するために4つの異なるAPIキーは必要ありません。
すべてのスロットはOpenAI互換の/chat/completionsエンドポイントを使用します。プロバイダーを自由に組み合わせることができます:
| プロバイダー | ベースURL |
|---|---|
| OpenAI | https://api.openai.com/v1 |
| Anthropic (Claude) | https://api.anthropic.com/v1/openai |
| DeepSeek | https://api.deepseek.com/v1 |
| Google Gemini | https://generativelanguage.googleapis.com/v1beta/openai |
| xAI Grok | https://api.x.ai/v1 |
| Xiaomi MiMo | https://token-plan-cn.xiaomimimo.com/v1 |
| Zhipu GLM | https://open.bigmodel.cn/api/paas/v4 |
| MiniMax | https://api.minimax.chat/v1 |
| 任意の互換プロキシ | あなたのプロキシURL |
# 1. リポジトリをクローン
git clone https://github.com/dashitongzhi/MingJian.git
cd planagent
# 2. Python仮想環境を作成・有効化
python -m venv .venv
source .venv/bin/activate # Windowsの場合: .venv\Scripts\activate
# 3. Pythonの依存関係をインストール
pip install -e ".[dev]"
# 4. フロントエンドの依存関係をインストール
cd frontend-v2
npm install
cd ..
# 5. 環境を設定
cp .env.example .env
# .envファイルをAPIキーと設定で編集
# 6. データベースを初期化(PostgreSQLを使用する場合)
# 'planagent'という名前のデータベースを作成
# マイグレーションを実行
alembic upgrade head
# 7. バックエンドサーバーを起動
uvicorn planagent.main:app --reload --host 127.0.0.1 --port 8000
# 8. フロントエンドを起動(新しいターミナルで)
cd frontend-v2
npm run dev
# http://localhost:3000 を開くCommunity のローカルモードはループバックだけで待ち受け、デプロイ単位のローカル
シングルユーザーセッションを使用します。PLANAGENT_REMOTE_ACCESS_ENABLED=true と、
32 バイト以上の永続的な PLANAGENT_AUTH_SECRET_KEY を設定していない限り、API を
0.0.0.0 などの非ループバックアドレスへバインドしないでください。リモートの
自己登録は Community では常に無効で、リモートモードでは bootstrap admin ログイン
だけを公開します。setup.sh は初回の管理者パスワードをローカル .env の
PLANAGENT_BOOTSTRAP_ADMIN_PASSWORD に保存します。最初のリモート管理者ログイン後に
POST /auth/change-password でパスワードをローテーションし、ローカル .env も更新してください。
| パッケージ | バージョン | 用途 |
|---|---|---|
| FastAPI | 0.110+ | 高性能非同期APIフレームワーク |
| SQLAlchemy | 2.0+ | データベースORM |
| Alembic | 1.16+ | データベースマイグレーション |
| Pydantic | 2.11+ | データバリデーション |
| OpenAI | 2.28+ | OpenAI APIクライアント |
| Anthropic | 0.52+ | Anthropic APIクライアント |
| Redis | 6.2+ | イベントバスとキャッシング |
| pgvector | 0.3+ | ベクトル類似性検索 |
| MinIO | 7.2+ | オブジェクトストレージ |
| HTTPX | 0.28+ | 非同期HTTPクライアント |
| Uvicorn | 0.35+ | ASGIサーバー |
| パッケージ | バージョン | 用途 |
|---|---|---|
| Vite | 8+ | フロントエンドビルドツール |
| React | 19+ | UIライブラリ |
| TypeScript | 6.0+ | 型安全性 |
| Tailwind CSS | 4.2+ | ユーティリティファーストCSS |
| React Router | 7+ | クライアントサイドルーティング |
| Recharts | 3.8+ | チャートライブラリ |
| パッケージ | バージョン | 用途 |
|---|---|---|
| pytest | 8.4+ | テストフレームワーク |
| pytest-asyncio | 1.1+ | 非同期テストサポート |
| Vitest | 3.2+ | フロントエンドテストフレームワーク |
| Ruff | 0.12+ | Pythonリンター |
| ESLint | 9+ | JavaScriptリンター |
| Prettier | 3+ | コードフォーマッター |
graph TB
subgraph "User Interface"
Console[Strategic Console]
API[FastAPI Control Plane]
end
subgraph "Core Services"
Evidence[Evidence Ingestion]
Simulation[Simulation Engine]
Debate[Debate Engine]
Jarvis[Jarvis Integration]
end
subgraph "Data Sources"
RSS[RSS Feeds]
News[Google News]
Reddit[Reddit]
GitHub[GitHub]
X[X/Twitter]
GDELT[GDELT]
end
subgraph "Storage"
PostgreSQL[(PostgreSQL)]
Redis[(Redis)]
MinIO[(MinIO)]
end
Console --> API
API --> Evidence
API --> Simulation
API --> Debate
API --> Jarvis
Evidence --> RSS
Evidence --> News
Evidence --> Reddit
Evidence --> GitHub
Evidence --> X
Evidence --> GDELT
バックエンド — モジュラーパッケージ構造
src/planagent/
├── config/ # config.py (527行) → 4ファイルに分割
│ ├── __init__.py
│ ├── base.py
│ ├── openai.py
│ └── main.py
├── debate/ # debate.py (3273行) → 7モジュールに分割
│ ├── prompts.py
│ ├── rounds.py
│ ├── llm.py
│ ├── adjudication.py
│ ├── revisions.py
│ └── triggers.py
├── simulation/ # simulation.py (2281行) → 6モジュールに分割
│ ├── engine.py
│ ├── scenarios.py
│ ├── impact.py
│ ├── report.py
│ └── domain_packs.py
├── db.py # Alembic専用に整理済み
├── api/ # FastAPIルート
├── models/ # SQLAlchemyモデル
├── services/ # ビジネスロジック
├── rules/ # YAMLルール
└── worker/ # バックグラウンドタスク
フロントエンド — サブコンポーネント構造
frontend-v2/src/
├── components/
│ ├── layout/ # アプリシェル、サイドバー、ナビゲーション
│ └── ui/ # 共通コックピットサーフェスと状態コンポーネント
├── pages/ # ダッシュボード、アシスタント、監視、レポート、設定
├── api/ # APIエンドポイントヘルパー
├── hooks/ # テーマとアプリレベルのReact hooks
└── main.tsx # Viteエントリーポイント
# バックエンドテスト (92ユニットテスト, 0.26秒)
pytest
# カバレッジ付きで実行
pytest --cov=planagent
# 特定のテストを実行
pytest tests/test_debate.py
# 詳細出力で実行
pytest -v# フロントエンドビルド
cd frontend-v2
npm run build- ✅ 112件パス、0件失敗
- 👥 20人の同時ユーザー
- ⚡ 844 RPS(秒間リクエスト数)
- ⏱️ P50 = 1ms
| 指標 | 値 |
|---|---|
| バックエンドテスト | 92 |
| フロントエンドテスト | 16 |
| ストレステスト合格率 | 112/114 (98.2%) |
| 同時接続 (20ユーザー) | 844 RPS、500エラーなし |
| P50 | 1ms |
| P95 | 11ms |
| 最大バックエンドファイル | ~900行 (旧3273行) |
| 最大フロントエンドページ | ~550行 (旧1665行) |
コントリビューションを歓迎します!コントリビューションガイドをご覧ください。
# 1. リポジトリをフォーク
# 2. 機能ブランチを作成
git checkout -b feature/amazing-feature
# 3. 変更を加える
# 4. テストを実行
pytest
# 5. 変更をコミット
git commit -m "feat: add amazing feature"
# 6. ブランチにプッシュ
git push origin feature/amazing-feature
# 7. プルリクエストを開くこのプロジェクトはApache License 2.0の下でライセンスされています - 詳細はLICENSEをご覧ください。
- FastAPI - 高性能非同期API
- Vite - フロントエンドビルドツール
- PostgreSQL + pgvector - データベース
- Redis Streams - イベントストリーミング
- MinIO - オブジェクトストレージ
- Linux.do - オープンソースコミュニティの支援と交流
このプロジェクトに興味をお持ちいただけましたら、コラボレーション、フィードバック、または気軽なお話でも大歓迎です。お気軽にご連絡ください!
- 📧 メール:cajd6876@gmail.com
- 🐛 Issues:GitHub Issues
- 💬 ディスカッション:GitHub Discussions