Command Palette

Search for a command to run...

UnylyUnyly
Весь каталог

Shensou

БесплатноНе проверен

An MCP server for divergent iterative web search that anchors on a question, proposes keyword queries, gathers evidence, and outputs a question-map and synthesi

GitHubEmbed

Описание

An MCP server for divergent iterative web search that anchors on a question, proposes keyword queries, gathers evidence, and outputs a question-map and synthesis.

README

Divergent iterative web search. Anchor on one question; an explorer LLM keeps proposing keyword queries, reads what the web returns, distills it into findings, and then branches the next round toward the facets it hasn't understood yet — with an adversarial slice that deliberately hunts counter-evidence. Low-yield queries are triaged into genuine knowledge gaps vs. bad phrasing. It ends with a question-map (distinct branches + next steps) and a big-picture synthesis.

Not "one query → ten links." It's a loop that opens a question — novelty-deduped so it keeps reaching for new angles instead of re-searching what it already knows.

Provider-agnostic: the explorer is any OpenAI-compatible model; search is the Brave Search API. Ships as an MCP tool, a web demo, and a CLI.

深搜 run

Illustrative example — rounds of queries (extend + counter), findings, blind spots, and the final question-map.

How the loop works

question
   │  explorer LLM seeds N keyword queries (extend + counter)
   ▼
 ┌── search each (Brave) ──► evidence
 │        │
 │        ▼  explorer digests → findings (facets on the question)
 │        ▼  proposes next round's queries — cover what's NOT yet understood
 │   novelty filter (Jaccard) drops anything too close to past queries
 └───◄ loop until budget / saturation / max rounds
   │
   ├─ triage low-yield queries → knowledge gaps vs typos
   ├─ curate → question-map { direct, overview, branches[next/premise/cost], more }
   └─ synthesize → big-picture narrative

Key behaviours: anchored (every query serves the main question, no drift), adversarial (each round seeks reasons it's wrong), coverage-driven (branches toward gaps), novelty-deduped (won't spin on near-duplicate searches).

Quick start

git clone https://github.com/taoyongac/shensou
cd shensou
pip install -r requirements.txt
cp .env.example .env        # set EXPLORER_MODEL/API_KEY + BRAVE_API_KEY

CLI

set -a; source .env; set +a
python -m shensou "CRISPR base editor off-target 2025 controversy"
python -m shensou -b 32 "your question"      # bigger search budget
python -m shensou --json "your question" > record.json

Web demo

set -a; source .env; set +a
python web/server.py        # → http://127.0.0.1:8040

MCP server — add to your host config (e.g. Claude Code ~/.claude.json), with the EXPLORER_* + BRAVE_API_KEY vars in its environment:

{
  "mcpServers": {
    "shensou": {
      "command": "python",
      "args": ["/abs/path/to/shensou/mcp_server/server.py"],
      "env": { "EXPLORER_MODEL": "gpt-4o", "EXPLORER_API_KEY": "sk-...",
               "BRAVE_API_KEY": "..." }
    }
  }
}

Then call deep_search(question, budget) — it runs the full loop and returns a structured record (findings, blind spots, map, synthesis). It makes many sequential LLM + search calls, so a run takes minutes; size it with budget (4–96).

Configuration

All via environment (see .env.example).

var meaning default
EXPLORER_MODEL explorer model id (required) OPENAI_MODEL
EXPLORER_BASE_URL / EXPLORER_API_KEY OpenAI-compatible endpoint OPENAI_*
BRAVE_API_KEY / BRAVE_API_KEYS Brave Search key(s)
SHENSOU_BUDGET default searches per run 24
SHENSOU_ROUND_WIDTH / SHENSOU_NARROW_WIDTH queries per round / late-game 5 / 2
SHENSOU_MAX_ROUNDS round cap 12
SHENSOU_TAU novelty threshold (0–1) 0.30
SHENSOU_ADVERSARIAL include counter-evidence queries 1
SHENSOU_LANG / SHENSOU_COUNTRY Brave search locale en / US

The web demo also reads SHENSOU_HOST/PORT and optional SHENSOU_USER/PASS (HTTP Basic Auth). A global lock serializes web runs (concurrency = 1) so a shared demo never piles up parallel searches.

Notes

  • Get a Brave Search API key at https://brave.com/search/api/ (free tier exists).
  • Multiple BRAVE_API_KEYS are rotated on rate-limit; calls are serialized to respect the ~1 req/s free-tier cap. No usage state is written to disk.
  • The search provider is the one swappable piece — shensou/search.py is a small typed module; drop in another engine behind the same search(q, count) contract.

From the Tao Lab

Built and used at Tao Lab, School of Life Sciences, Yunnan University (云南大学 · 陶勇课题组) — epigenetics, aging, cancer, and AI-for-Science. 深搜 is the lab's tool for turning a fuzzy question into a mapped, evidence-anchored understanding — and its sibling 三人行 / sanrenxing opens the same question divergently across three AI seats.

🔗 Lab site: https://taolab.tail0ea5ac.ts.net/

License

MIT © 2026 Yong Tao (Tao Lab, Yunnan University). See LICENSE.

from github.com/taoyongac/shensou

Установка Shensou

У этого сервера нет опубликованного пакета — он собирается из исходников. Открой репозиторий и следуй инструкции в README.

▸ github.com/taoyongac/shensou

FAQ

Shensou MCP бесплатный?

Да, Shensou MCP бесплатный — установка в пару кликов через Unyly без оплаты.

Нужен ли API-ключ для Shensou?

Нет, Shensou работает без API-ключей и переменных окружения.

Shensou — hosted или self-hosted?

Доступен hosted-вариант: Unyly запускает сервер в облаке, локальная установка не обязательна.

Как установить Shensou в Claude Desktop, Claude Code или Cursor?

Открой Shensou на unyly.org, выбери вкладку своего клиента (Claude Desktop, Claude Code, Cursor) и нажми Install — конфиг сгенерируется автоматически, без правки JSON.

Похожие MCP

Compare Shensou with

Не уверен что выбрать?

Найди свой стек за 60 секунд

Автор?

Embed-бейдж для README

Похожее

Все в категории development