ShadowCrawl について
ShadowCrawl(CortexScout、cortex-scout)は、トークン効率の良い検索とボット対策への対応を必要とする AI エージェント向けに作られた Rust 製の MCP 検索・Web 抽出エンジンです。ステートフルなブラウザー自動化と、任意のヒューマンインザループ(HITL)によるフォールバックを備えます。
主な機能
- 01検索・取得・バッチ・クロールを統合したツール
- 02LLM 向けに整形された構造化抽出
- 03CDP レンダリングと遮断を考慮した再試行
- 04単一のオムニツールによるステートフルなブラウザー自動化
- 05チャレンジやログインに対する HITL フォールバック
活用シーン
- 01調査タスク向けの Web コンテンツの収集と構造化
- 02Cloudflare や reCAPTCHA で保護されたページの取得
- 03Web サイトに対するステートフルなエンドツーエンドの検証
MCP 対応
本プロジェクトは MCP サーバーであり、stdio 経由で検索、取得、抽出、ブラウザー自動化、調査メモリのツールを提供します。HTTP サーバーも任意で起動できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
このサーバーのパッケージやリモートエンドポイントはまだ取得できていません。プロジェクトの README の手順に従ってください。
ツール
ローカルサーバーのツールはマシン上で起動して初めて取得できます。メンテナーはまだツール一覧を提供していません。
詳細
CortexScout(cortex-scout)— AI エージェント向け検索・ウェブ抽出エンジン
CortexScout は、Cortex-Works エコシステムにおけるディープリサーチおよびウェブ抽出モジュールです。
トークン効率の高いウェブ検索、信頼性の高いボット対策、必要に応じた人間参加型(HITL)フォールバックを必要とするエージェントのワークロード向けに設計されています。
概要
CortexScout は、MCP(stdio)経由で検索、抽出、状態を保持するブラウザー自動化機能を提供する、単一のセルフホスト可能な Rust バイナリです。オプションで HTTP サーバーも利用できます。出力形式は構造化されており、後続の LLM での利用に最適化されています。
レート制限、ボット対策チャレンジ、JavaScript を多用するページなど、ウェブ検索で実際に起こり得る問題に対応できるよう、段階的なフォールバックを備えています。ネイティブ検索 → Chromium CDP レンダリング → 状態を保持する E2E テスト → HITL ワークフローの順に切り替わります。
ツール(機能一覧)
| 分野 | MCP ツール/機能 |
|---|---|
| 検索 | web_search(URL の検出)、または web_search(include_content=true)(1 回の呼び出しで検索+コンテンツ取得) |
| 取得とクロール | `web_fetch(mode="single" |
| 抽出 | extract_fields(主要な構造化抽出) |
| 自動化 | scout_browser_automate / browser_automate(状態を保持するオールインワンツール)、scout_agent_profile_auth、scout_browser_close |
| ボット対策 | CDP レンダリング、プロキシのローテーション、ブロック検知に対応した再試行 |
| HITL | visual_scout、`hitl_web_fetch(auth_mode="challenge" |
| メモリ | memory_search(LanceDB を基盤とするリサーチ履歴) |
| ディープリサーチ | deep_research(複数段階の検索+スクレイピング+統合) |
レガシー名は、互換性エイリアスとして引き続き呼び出せます(web_search_json、web_fetch_batch、web_crawl、fetch_then_extract、human_auth_session)。エージェントには、上記の統合された主要ツールを優先して使用することを推奨します。
エコシステムとの統合
現在、CortexScout はスタンドアロンツールとして動作しますが、マルチエージェントのスケーリング、検索アーティファクトの共有、ガバナンスの一元化を実現するため、CortexDB および CortexStudio との統合を想定して設計されています。
🎭「Playwright Killer」(ステートフルなブラウザー自動化)
CortexScout には、AI エージェント専用に設計された、ステートフルな CDP 自動化エンジンが組み込まれており、E2E テストのワークフローで Playwright や Cypress などの重量級フレームワークを完全に置き換えます。
- サイレントなオムニツール(
scout_browser_automate):ブラウザーツールを何十個も呼び出す代わりに、エージェントはstepsの配列を 1 つ渡します。ランタイムは 1 回の呼び出しで、Playwright 形式のアクション群に対応するようになりました。ナビゲーション、ホバー/クリック/入力/待機、ロケーターを使ったアクション、アサーション、タブ、スクリーンショット/PDF、ファイルのアップロード、フォーム入力、ダイアログポリシー、座標を使ったマウス操作、ルートのモック、コンソール/ネットワークのキャプチャ、Cookie/ストレージの CRUD が含まれます。 - 永続的なエージェントプロファイル:自動化は専用の分離されたプロファイル(
~/.cortex-scout/agent_profile)を使用し、バックグラウンドでサイレントに実行されます(--headless=new)。Cookie、localStorage、セッション状態をツール呼び出し間で保持し、アクティブなデスクトップブラウザーとのSingletonLockの競合は発生しません。 - QA モック、トレース、検証エンジン:エージェントは、レスポンスヘッダーの上書き/削除に対応したルートモック(
mock_api、route_list、unroute)を設定したり、フローをトレース(trace_start、trace_stop、trace_export)したり、コンソール/ネットワークログをキャプチャしたり、ブラウザー状態をチェックポイントとして保存したりできます。また、CSS とロケーターを使ったアサーション、および Playwright 形式の検証ヘルパーを実行できます。 - エージェント認証ポータル(
scout_agent_profile_auth):サイレントなエージェントが新しいドメインで CAPTCHA や複雑な OAuth ログイン(Google/Microsoft など)に遭遇すると、このツールはエージェントのプロファイルを表示ウィンドウで起動します。CAPTCHA を一度解くと Cookie が保存され、以後エージェントは常にサイレントな自動化に戻ります。
Playwright 形式の対応範囲
| 機能領域 | Cortex Scout のアクション |
|---|---|
| ナビゲーションと入力 | navigate、navigate_back、click、hover、type、press_key、scroll、wait_for、wait_for_selector、wait_for_locator |
| ロケーターと検証 | click_locator、type_locator、assert、assert_locator、generate_locator、verify_element_visible、verify_text_visible、verify_list_visible、verify_value |
| タブとメディア | tabs、resize、screenshot、snapshot、pdf_save、file_upload、fill_form、handle_dialog |
| ネットワークとモック | network_tap、network_dump、network_state_set、mock_api、route_list、unroute |
| ブラウザーの状態 | storage_clear、storage_state_export、storage_state_import、storage_checkpoint、storage_rollback、cookie_*、localstorage_*、sessionstorage_* |
| 低レベルのポインター操作 | mouse_click_xy、mouse_down、mouse_move_xy、mouse_drag_xy、mouse_up、mouse_wheel |
生の Playwright MCP と比べた場合の主なトレードオフは、機能の範囲ではなくパッケージングです。Cortex Scout はブラウザー機能を 1 つのステートフルなオムニツールにまとめるため、複数ステップのフローを調整するためにエージェントが費やすターン数とトークン数を削減できます。
ボット対策の有効性と検証
このリポジトリには、代表的な保護対象に対する抽出フローとHITLフローを検証する、取得済みの証拠資料が含まれています。
| 対象 | 保護 | 証拠 | 備考 |
|---|---|---|---|
| Cloudflare + Auth | JSON · スニペット | 認証で保護された掲載情報の抽出 | |
| Ticketmaster | Cloudflare Turnstile | JSON · スニペット | チャレンジ処理後の抽出 |
| Airbnb | DataDome | JSON · スニペット | ボット対策下での大量の検索結果 |
| Upwork | reCAPTCHA | JSON · スニペット | 保護された掲載情報の取得 |
| Amazon | AWS Shield | JSON · スニペット | 検索結果の抽出 |
| nowsecure.nl | Cloudflare | JSON | 手動での戻り経路を検証済み |
手法と未加工の出力については、proof/README.mdを参照してください。
クイックスタート
オプションA — ビルド済みバイナリ
GitHub Releasesから最新のリリースアセットをダウンロードし、次のいずれかを実行します。
cortex-scout-mcp— MCP stdio サーバー(VS Code/Cursor/Claude Desktopに推奨)cortex-scout— オプションのHTTPサーバー(デフォルトポートは5000。--port、PORT、またはCORTEX_SCOUT_PORTで変更できます)
ヘルスチェック(HTTPサーバー):
./cortex-scout --port 5000
curl http://localhost:5000/health
オプションB — ソースからビルド
まずprotocをインストールしてください。lance-encodingはリリースビルド時にProtocol Buffersを使用するため、protocがPATH上にある必要があります。
- macOS:
brew install protobuf - Ubuntu/Debian:
sudo apt-get install -y protobuf-compiler - Fedora:
sudo dnf install -y protobuf-compiler
基本ビルド(検索、スクレイピング、詳細なリサーチ、メモリ):
git clone https://github.com/cortex-works/cortex-scout.git
cd cortex-scout
cargo build --release --manifest-path mcp-server/Cargo.toml --bin cortex-scout-mcp
マニフェストのパスが明示されているため、リポジトリのルートから実行できます。
フルビルド(hitl_web_fetch/可視ブラウザーHITLを含む):
cargo build --release --manifest-path mcp-server/Cargo.toml --all-features --bin cortex-scout-mcp
オプションのHTTPサーバーバイナリも必要な場合は、cargo build --release --bin cortex-scoutで明示的にビルドしてください。
ローカルMCPのスモークテスト:
python3 publish/ci/smoke_mcp.py
これは、ローカルのcortex-scout-mcpバイナリに対して、改行区切りJSON-RPCのstdioセッションを実行し、安全なサンプル入力を使って主要な公開ツールをテストします。
MCP連携(VS Code/Cursor/Claude Desktop)
MCP設定にサーバーエントリを追加してください。
VS Code(mcp.json — グローバル設定、またはmcp.servers配下のsettings.json):
以下のハードタイムアウトガード用変数は、MCP設定で必須です。問題のあるページ、ブラウザーの起動停止、スクレイピング段階の停止によって、MCPセッション全体が無期限に開いたままになるのを防ぐ安全策です。
// mcp.json (global): top-level key is "servers"
// settings.json (workspace): use "mcp.servers" instead
{
"servers": {
"cortex-scout": {
"type": "stdio",
"command": "env",
"args": [
"RUST_LOG=warn",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS=90",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS_SCRAPE_URL=90",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS_SEARCH_STRUCTURED=120",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS_VISUAL_SCOUT=45",
"CORTEX_SCOUT_BROWSER_LAUNCH_TIMEOUT_SECS=12",
"CORTEX_SCOUT_BROWSER_TAB_PROBE_TIMEOUT_SECS=4",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS=20",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_CDP_INITIAL_ATTEMPT=25",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_CDP_RETRY_ATTEMPT=25",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_FORCED_CDP_ATTEMPT=25",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_NATIVE_CDP_FALLBACK=25",
"SEARCH_ENGINES=google,bing,duckduckgo,brave",
"LANCEDB_URI=/YOUR_PATH/cortex-scout/lancedb",
"HTTP_TIMEOUT_SECS=30",
"MAX_CONTENT_CHARS=10000",
"/YOUR_PATH/cortex-scout/mcp-server/target/release/cortex-scout-mcp"
]
}
}
}
デフォルトの動作は直接接続(プロキシなし)です。プロキシツールを利用する場合に限り、IP_LIST_PATHとPROXY_SOURCE_PATHを追加してください。通常のトラフィックをプロキシ経由にせずにproxy_controlを利用するには、IP_LIST_PATHに空のip.txtファイルを指定し、必要に応じてエージェントに入力させます。
重要: 常に
RUST_LOG=warnを使用し、infoは使用しないでください。infoレベルでは、サーバーはリクエストごとに数百行のログをstderrに出力するため、stderrを監視するMCPクライアントに支障をきたすことがあります。
Windows: Windowsには
envコマンドがありません。代わりにcommand+envオブジェクト形式を使用してください。詳細はdocs/IDE_SETUP.mdを参照してください。
詳細なリサーチを行う場合(OpenRouter/OpenAI互換API経由のLLMによる統合):
{
"servers": {
"cortex-scout": {
"type": "stdio",
"command": "env",
"args": [
"RUST_LOG=warn",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS=90",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS_SCRAPE_URL=90",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS_SEARCH_STRUCTURED=120",
"CORTEX_SCOUT_TOOL_TIMEOUT_SECS_VISUAL_SCOUT=45",
"CORTEX_SCOUT_BROWSER_LAUNCH_TIMEOUT_SECS=12",
"CORTEX_SCOUT_BROWSER_TAB_PROBE_TIMEOUT_SECS=4",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS=20",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_CDP_INITIAL_ATTEMPT=25",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_CDP_RETRY_ATTEMPT=25",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_FORCED_CDP_ATTEMPT=25",
"CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_NATIVE_CDP_FALLBACK=25",
"SEARCH_ENGINES=google,bing,duckduckgo,brave",
"LANCEDB_URI=/YOUR_PATH/cortex-scout/lancedb",
"HTTP_TIMEOUT_SECS=30",
"MAX_CONTENT_CHARS=10000",
"OPENAI_BASE_URL=https://openrouter.ai/api/v1",
"OPENAI_API_KEY=sk-or-v1-...",
"DEEP_RESEARCH_LLM_MODEL=moonshotai/kimi-k2.5",
"DEEP_RESEARCH_ENABLED=1",
"DEEP_RESEARCH_SYNTHESIS=1",
"DEEP_RESEARCH_SYNTHESIS_MAX_TOKENS=4096",
"/YOUR_PATH/cortex-scout/mcp-server/target/release/cortex-scout-mcp"
]
}
}
}
複数IDE向けガイド:docs/IDE_SETUP.md
設定(cortex-scout.json)
バイナリと同じディレクトリ(またはリポジトリのルート)にcortex-scout.jsonを作成します。すべてのフィールドは任意で、環境変数はフォールバックとして使用されます。
{
"deep_research": {
"enabled": true,
"llm_base_url": "http://localhost:1234/v1",
"llm_api_key": "",
"llm_model": "lfm2-2.6b",
"synthesis_enabled": true,
"synthesis_max_sources": 3,
"synthesis_max_chars_per_source": 800,
"synthesis_max_tokens": 1024
}
}
主な環境変数
コア
| 変数 | デフォルト | 説明 |
|---|---|---|
RUST_LOG | warn | ログレベル。MCP stdio では warn のままにしてください。info にすると stderr に大量のログが出力され、MCP クライアントが混乱します |
HTTP_TIMEOUT_SECS | 30 | リクエストごとの読み取りタイムアウト(秒) |
HTTP_CONNECT_TIMEOUT_SECS | 10 | TCP 接続タイムアウト(秒) |
OUTBOUND_LIMIT | 16 | 同時に確立できるアウトバウンド HTTP 接続の最大数 |
MAX_CONTENT_CHARS | 10000 | スクレイピングしたページごとに返す最大文字数 |
CORTEX_SCOUT_TOOL_TIMEOUT_SECS | ツールごとに設定 | すべての MCP/HTTP ツール呼び出しに対する絶対的な上限時間。超過すると、Cortex Scout はツールをキャンセルし、ハングする代わりに構造化されたタイムアウト応答を返します |
CORTEX_SCOUT_TOOL_TIMEOUT_SECS_<TOOL> | 未設定 | ツールごとの上書き設定。例:CORTEX_SCOUT_TOOL_TIMEOUT_SECS_SCRAPE_URL=90 または CORTEX_SCOUT_TOOL_TIMEOUT_SECS_VISUAL_SCOUT=20 |
CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS | ステージごとに設定 | CDP フェッチ、ネイティブスクレイピング、セマンティックな刈り込み、履歴の記録など、負荷の高いスクレイピングステージで共有されるタイムアウト |
CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_<STAGE> | 未設定 | ステージごとの上書き設定。例:CORTEX_SCOUT_SCRAPE_STAGE_TIMEOUT_SECS_CDP_INITIAL_ATTEMPT=30 |
ブラウザー/ボット対策
| 変数 | デフォルト | 説明 |
|---|---|---|
CHROME_EXECUTABLE | 自動検出 | Chromium/Chrome/Brave のバイナリへのパスを上書きします |
SEARCH_CDP_FALLBACK | true | ブロックされた場合、ネイティブ Chromium CDP 経由で検索エンジンのフェッチを再試行します |
SEARCH_TIER2_NON_ROBOT | 未設定 | 1 を設定すると、最後の手段として hitl_web_fetch を検索のエスカレーションに使用できます |
MAX_LINKS | 100 | ページのクロールでたどるリンクの最大数 |
検索
| 変数 | デフォルト | 説明 |
|---|---|---|
SEARCH_ENGINES | google,bing,duckduckgo,brave | 有効な検索エンジン(カンマ区切り) |
SEARCH_MAX_ENGINES_PER_QUERY | 3 | ヘルスベースのローテーションで次の検索エンジン群が選ばれる前に、1 回の検索でクエリを送信する検索エンジンの最大数 |
SEARCH_MAX_RESULTS_PER_ENGINE | 10 | 統合/重複排除の前に、検索エンジンごとに取得する結果数 |
SEARCH_ENGINE_STAGGER_MS | 125 | ボット対策の一時的な制限を引き起こす集中アクセスを減らすため、検索エンジンごとのリクエスト開始間に設ける遅延 |
SEARCH_COMMUNITY_TRIGGER_RESULTS | 4 | 通常の検索結果がこの数を下回る場合にのみ、Reddit/HN のコミュニティ検索を実行します |
SEARCH_SHARED_CACHE | true | 同じホスト上の並行する Cortex Scout プロセス間で、成功した検索結果を共有します |
SEARCH_SHARED_CACHE_TTL_SECS | 300 | プロセス間で共有される検索キャッシュの TTL |
SEARCH_HOST_MIN_GAP_MS | 検索エンジンに応じて調整 | 同じホスト IP から検索エンジンに送信するリクエスト間に設ける、プロセス間で共有される最小間隔 |
SEARCH_HOST_MAX_GAP_MS | 検索エンジンに応じて調整 | 同じホスト IP から検索エンジンに送信するリクエスト間に設ける、プロセス間で共有される最大間隔/ジッター |
SCRAPE_HOST_MIN_GAP_MS | 900 | 同じホストへのスクレイピングリクエスト間に設ける、プロセス間で共有される最小間隔 |
SCRAPE_HOST_MAX_GAP_MS | 1800 | 同じホストへのスクレイピングリクエスト間に設ける、プロセス間で共有される最大間隔/ジッター |
CORTEX_SCOUT_HOST_GUARD_DISABLED | false | ホストレベルで共有されるスロットリングを明示的に無効にする場合にのみ、1 を設定します |
プロキシ
| 変数 | デフォルト | 説明 |
|---|---|---|
IP_LIST_PATH | — | ip.txt への任意のパス(1 行につき 1 つのプロキシ:http://、socks5://)。プロキシ機能を完全に無効にするには未設定のままにします。プロキシツールを利用可能にしつつデフォルトでは無効にするには、空のファイルを指定します |
PROXY_SOURCE_PATH | — | proxy_source.json への任意のパス(proxy_control grab で使用) |
セマンティックメモリ(LanceDB)
| 変数 | デフォルト | 説明 |
|---|---|---|
LANCEDB_URI | — | 永続的な調査メモリ用のディレクトリパス。無効にするには省略します |
CORTEX_SCOUT_MEMORY_DISABLED | 0 | LANCEDB_URI が設定されていてもメモリを無効にするには、1 を設定します |
MODEL2VEC_MODEL | 組み込み | 埋め込みに使用する HuggingFace モデル ID またはローカルパス(例:minishlab/potion-base-8M) |
Deep Research
| 変数 | デフォルト | 説明 |
|---|---|---|
DEEP_RESEARCH_ENABLED | 1 | 0 に設定すると、実行時に deep_research ツールが無効になります |
OPENAI_API_KEY | — | LLM 合成用の API キーです。キー不要のローカルエンドポイント(Ollama)を使う場合は省略します |
OPENAI_BASE_URL | https://api.openai.com/v1 | OpenAI 互換のエンドポイント(OpenRouter、Ollama、LM Studio など)です |
DEEP_RESEARCH_LLM_MODEL | gpt-4o-mini | モデル識別子です(エンドポイントがサポートしている必要があります) |
DEEP_RESEARCH_SYNTHESIS | 1 | 0 に設定すると、LLM 合成をスキップします(検索とスクレイピングのみ) |
DEEP_RESEARCH_HOP_TIMEOUT_SECS | 90 | ホップごとのスクレイピングのタイムアウトです。タイムアウトに達すると、MCP 呼び出し元のタイムアウトまで待機する代わりに、deep_research は部分的な結果を返します |
DEEP_RESEARCH_SYNTHESIS_MAX_TOKENS | 1024 | 合成応答の最大トークン数です。大きなコンテキストを扱うモデルでは 4096 以上を指定してください |
DEEP_RESEARCH_SYNTHESIS_MAX_SOURCES | 8 | LLM 合成に渡すソース文書の最大数です |
DEEP_RESEARCH_SYNTHESIS_MAX_CHARS_PER_SOURCE | 2500 | 合成用に各ソースから抽出する最大文字数です |
HTTP サーバーのみ
| 変数 | デフォルト | 説明 |
|---|---|---|
CORTEX_SCOUT_PORT / PORT | 5000 | HTTP サーバーのバイナリ(cortex-scout)が使用する待ち受けポートです |
エージェントのベストプラクティス
推奨される運用フロー:
- 新たな調査を開始する前に
memory_searchを呼び出します。類似度が 0.60 以上でskip_live_fetchがtrueの場合は、ライブ取得をスキップします。 - トピックの発見には、URL のみを検索する
web_search、または検索と上位結果のスクレイピングを 1 回の往復で行うweb_search(include_content=true)を使用します。 - 既知の URL には、
output_format="clean_json"を指定してweb_fetch(mode="single")を使用し、関連するセクションだけを取得するためにqueryとstrict_relevance=trueを設定します。 - 403/429 が発生した場合は、
action:"grab"を指定してproxy_controlを呼び出し、プロキシリストを更新してから、use_proxy:trueを指定して再試行します。 - 認証が必要なページでは、
auth_risk_score >= 0.4の場合にvisual_scoutを実行し、CAPTCHA の壁にはhitl_web_fetch(auth_mode="challenge")、ログインの壁にはhitl_web_fetch(auth_mode="auth")を使用します。 - ディープリサーチでは、
deep_researchが複数ホップの検索、スクレイピング、LLM 合成を自動で処理します。実行ごとのコスト予算に応じてdepth(1~3)とmax_sourcesを調整します。 - UI の自動化と E2E テストには、タブ、ロケーターのアサーション、スクリーンショット/PDF、ルートモック、ファイルアップロード、ブラウザー状態のセットアップに対応したステップ配列とともに
scout_browser_automateを使用します。初回ログイン/CAPTCHA によってブロックされた場合は、scout_agent_profile_authを呼び出してから、自動化を再開します。
FAQ
Ollama や qwen3.5 で deep_research が失敗したり、ヒューリスティックモードにフォールバックしたりすることがあるのはなぜですか?
推論機能を備えた一部のローカルモデルは、message.reasoning に値が設定されている一方で message.content が空の、OpenAI 互換の /v1/chat/completions 応答を返します。このパターンが検出されると、Cortex Scout はローカル Ollama エンドポイントに対して、think:false を指定したネイティブの /api/chat を使って再試行するようになりました。
ローカルの 4B クラス Ollama モデル向けの推奨設定:
cortex-scout.jsonのllm_api_key: ""は有効で、「認証不要」を意味しますsynthesis_max_sourcesは1-2に設定しますsynthesis_max_chars_per_sourceは600-1000程度に設定しますsynthesis_max_tokensは512-768程度に設定します
それでも合成が遅い、または不安定な場合は、トークン上限を増やす前に synthesis_max_sources を減らしてください。
Chromium のプロファイルロックエラーが表示されるのはなぜですか?
各ヘッドレスリクエストでは一意の一時プロファイルが使用されるため、通常のスクレイピングと deep_research ではプロファイルロックの競合が発生しません。実際のブラウザプロファイルを使用する HITL フロー(hitl_web_fetch など)では、同時に実行したり、同じプロファイルで Brave/Chrome を開いていたりすると、ロックが発生する場合があります。回避するには、HITL の呼び出しを一度に 1 つずつ実行し、プロファイルを再利用する前にすべてのブラウザーウィンドウを閉じてください。
チェックリスト:
- 最近のビルド(2026-03-05 以降)を使用します
- ログイン済みセッションが必要な場合を除き、永続的なプロファイルパスは使用しないでください
- HITL/プロファイルのフローは順番に実行します
- プロファイルを再利用する前に、すべてのブラウザーウィンドウを閉じます
- 並行調査では、Cortex Scout が独自の一時プロファイルを使用するようにします
MCP クライアントは接続できますが、ツールがすぐに失敗したりタイムアウトしたりします。まず何を確認すればよいですか?
何よりも先に、次の点を確認してください。
infoではなくRUST_LOG=warnを使用します。- macOS/Linux の
env形式の設定では、環境変数の割り当ての後にバイナリパスを直接指定します。mcp.jsonの args に"--"を挿入しないでください。 - Windows では
envを使用せず、commandとenvオブジェクトを使用します。 - バイナリパスが最新のビルドを指していることを確認します。
バージョン管理と変更履歴
CHANGELOG.md を参照してください。
ライセンス
MIT。LICENSE を参照してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。