AgentStack
MCP unreviewed Apache-2.0 Self-run

Source Radar

mcp-narylr350-source-radar · by Narylr350

给 AI 用的可审计信息采集引擎。SearXNG 元搜索聚合、MCP Server、证据卡、自适应质量评估。支持中文互联网搜索、抓取、社区采集。

No reviews yet
0 installs
4 views
0.0% view→install

Install

$ agentstack add mcp-narylr350-source-radar

Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.

Security review

⚠ Flagged

1 finding(s); flagged for manual review. · v0.1.0 How review works →

  • Prompt-injection patterns
  • Secret / credential exfiltration
  • Dangerous shell & filesystem operations
  • Untrusted network calls
  • Known-malicious package signatures
  • high Destructive filesystem operation.

What it can access

  • Network access No
  • Filesystem access Used
  • Shell / process execution No
  • Environment & secrets Used
  • Dynamic code execution No

From automated source analysis of v0.1.0. “Used” means the capability is present in the source — more access means more to trust, not that it’s unsafe.

Are you the author of Source Radar? Claim this listing to set pricing, connect Stripe payouts, and keep 70% of every sale.
Sign up to claim

About

source-radar

给 AI 用的可审计信息采集引擎。

不是聊天机器人,不是简单搜索封装。它通过 MCP Server 或 CLI 为外部 AI 提供搜索、抓取、社区采集能力,把中文互联网搜索结果变成可审计的证据卡,再交给 AI 做综合、核验或研究。内置 AI Search Planner 自动规划搜索词、选平台、质量评估后重试。和普通 AI 搜索的区别在于:链路分层、采集过程可追溯、缓存可查、追问上下文可控。

和普通 AI 搜索有什么区别

| 能力 | 普通 AI 搜索 | source-radar | |------|-------------|--------------| | 搜索网页 | 有 | 有(SearXNG 元搜索引擎 + Bing fallback + site 过滤) | | AI 搜索规划 | 无 | AI Search Planner:自动改词、选平台、质量门重试 | | 质量评估 | 无 | 8 个检测器:语义不匹配、方法型缺社区、导航菜单等 | | MCP Server | 无 | 5 个工具:websearch / fetchurl / searchgithub / searchchineseplatforms / fetchgithub_file | | 证据卡结构化 | 不稳定,每次格式不同 | 统一证据卡,有 id/来源类型/链接/摘要 | | 工具调用追溯 | 不透明 | 完整记录:用了哪些工具、跳过哪些、为什么 | | 缓存命中可见 | 通常不可见 | 命中次数、缓存时长都在 JSON 里 | | 追问上下文 | 黑箱 | 可记录、可关闭、是否使用上下文可查 | | 严格核验模式 | 看模型发挥 | 独立链路:纯搜索结果不够,强制追加正文抽取 | | 中文社区增强 | 弱 | 可接 MediaCrawler(小红书/微博/B站/贴吧/抖音/知乎) | | 适合 Agent 集成 | 一般 | 专门设计:JSON 输出干净、进度与结果分离、追溯结构化;支持 MCP Server |

一句话总结:普通 AI 搜索是"快速查一下",source-radar 是"可审计的信息采集流水线"。

架构

┌─────────────────────────────────────────────────────────┐
│  CLI / Claude Code Skill / MCP Server / AI Agent        │
│  ask / verify / research / web_search / fetch_url / search_github / search_chinese_platforms / fetch_github_file  │
└───────────────┬─────────────────────────────────────────┘
                │
                ▼
┌─────────────────────────────────────────────────────────┐
│  Agent (内置)                                            │
│  ┌──────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │ AI Planner   │  │  Evaluator   │  │  Synthesizer  │  │
│  │ 搜索规划+重试 │  │  判断证据     │  │  综合输出      │  │
│  └──────┬───────┘  └──────┬───────┘  └───────────────┘  │
│         │                 │                              │
│         ▼                 ▼                              │
│  ┌──────────────────────────────────────────────────┐   │
│  │  Adaptive Collection                             │   │
│  │  1. AI Planner 生成 2-4 个搜索尝试                │   │
│  │  2. 执行搜索,合并候选                            │   │
│  │  3. 质量评估 (8 个检测器)                         │   │
│  │  4. 质量低 → AI 重试改词/换平台                   │   │
│  │  5. planner 指定平台 → 强制 MediaCrawler          │   │
│  │  6. Evaluator 决定是否需要更多工具                │   │
│  └──────────────────────────────────────────────────┘   │
│         │                                                │
│         ▼                                                │
│  ┌──────────────┐  ┌──────────────┐  ┌───────────────┐  │
│  │  Cache       │  │  Session     │  │  Agent Trace  │  │
│  │  采集结果缓存 │  │  追问上下文   │  │  完整采集追踪  │  │
│  └──────────────┘  └──────────────┘  └───────────────┘  │
└─────────────────────────────────────────────────────────┘
                │
                ▼
┌─────────────────────────────────────────────────────────┐
│  采集引擎                                                  │
│  ┌────────────────────┐ ┌────────────┐ ┌───────────────┐ │
│  │ SearXNG (必选)     │ │trafilatura │ │ crawl4ai      │ │
│  │ 元搜索引擎          │ │正文抽取     │ │ 动态渲染       │ │
│  └────────────────────┘ └────────────┘ └───────────────┘ │
│  ┌────────────┐ ┌──────────────────────────────────────┐ │
│  │ Bing/百度  │ │ mediacrawler (外部 bridge, 可选)     │ │
│  │ fallback   │ │ 小红书/微博/B站/贴吧/抖音/知乎       │ │
│  └────────────┘ └──────────────────────────────────────┘ │
└─────────────────────────────────────────────────────────┘

快速开始

git clone https://github.com/Narylr350/source-radar.git
cd source-radar

# 1. 安装核心依赖
uv run python -m source_radar engine install

# 2. 安装 SearXNG(必选 websearch 基础设施)
uv run python -m source_radar engine install --searxng

# 3. 启动 SearXNG
uv run python -m source_radar engine start searxng

# 4. 配置 AI(支持 OpenAI / Anthropic / Gemini / 本地模型)
uv run python -m source_radar config setup

# 5. 验证 SearXNG 可用
uv run python -m source_radar probe --source searxng --query "test"

# 6. 使用
uv run python -m source_radar ask "RTX 5090 电源兼容问题"
uv run python -m source_radar verify "某产品宣布涨价 30%"

SearXNG 是必选的 websearch 基础设施——没有它只能靠不稳定的搜索页抓取。安装后通过 engine start searxng 启动,自动写入配置。

如果需要增强中文社区采集(小红书/微博/B站等),再配置 MediaCrawler:

uv run python -m source_radar engine install --community
uv run python -m source_radar cookie

真实 demo:9800x3D 超频查询

uv run python -m source_radar ask "9800x3d 微星b850 怎么超频" --format json --quiet

输出(简化):

{
  "query": "9800x3d 微星b850 怎么超频",
  "status": "analysis-ready",
  "evidence": [
    {"id": "ev-001", "source_type": "search-result", "title": "9800X3D超频教程...", "adapter": "search"},
    {"id": "ev-002", "source_type": "web-page", "title": "PBO2设置指南...", "adapter": "trafilatura"}
  ],
  "analysis": {
    "summary": "9800X3D 超频主要通过 PBO2 + Curve Optimizer 实现...",
    "key_points": ["BIOS 中开启 PBO2 Advanced", "CO 值建议 -20 到 -30", "..."],
    "source_notes": ["search: 5 条来源", "trafilatura: 2 条来源"],
    "disagreements": [],
    "noise_notes": ["搜索结果只作为线索,优先看正文抽取和社区原帖。"]
  },
  "agent": {
    "mode": "analysis",
    "planned_tools": ["search", "trafilatura"],
    "tool_calls": [
      {"tool": "search", "items_found": "5", "cache_hit": "False", "elapsed_ms": "1200"},
      {"tool": "trafilatura", "items_found": "2", "cache_hit": "True", "cache_age_seconds": "3600"}
    ],
    "actually_used_tools": ["search", "trafilatura"],
    "skipped_tools": [{"tool": "mediacrawler", "reason": "不需要中文社区讨论", "decided_by": "collection_evaluator"}],
    "cache_hit_count": 1,
    "fresh_tool_count": 1
  }
}

追问(session 自动关联):

uv run python -m source_radar ask "那内存怎么调" --session oc --quiet

agent 识别为追问,context_used: true,综合时自动带上上文语境。

AI agent 如何驱动整个流程

source-radar 不是脚本硬编码的爬虫管线。每次运行,内置 agent 都在做真实决策:

你的问题
  ↓
agent 规划:该用哪些采集工具?
  ↓
第 1 轮:搜索(必跑)
  ↓
evaluator(AI):证据够了吗?
  → 够 → 停止采集
  → 不够 → 选下一个工具(trafilatura / crawl4ai / mediacrawler)
  ↓
(最多 3 个工具,12 张证据卡上限)
  ↓
AI 综合:基于证据卡输出回答 / 核验判断

agent 内部包含两个 AI 调用角色:

| 角色 | 作用 | |------|------| | evaluator | 每轮采集后判断证据是否充分,决定是否继续、选哪个工具 | | synthesizer | 基于所有证据卡,输出综合回答(ask)或真伪判断(verify)|

两者都调用你配置的 AI(同一个 endpoint/model)。evaluator 失败时自动 fallback 到保守规则(search → trafilatura → 停止)。

自适应采集规则:

  1. 先 search,再判断source=auto(默认)时,ask/verify 先执行搜索,由 evaluator 判断证据是否足够。
  2. 渐进式采集:evaluator 决定是否需要继续采集(trafilatura 正文抽取、crawl4ai 动态渲染等)。
  3. 最多 3 个工具:maxtools=3,evidencelimit=12。evaluator 无法突破上限。
  4. MediaCrawler 不默认跑:仅当问题明确涉及中文社区经验、争议、舆论、平台讨论时,evaluator 才选择 mediacrawler。普通事实查询、编程问题、教程搜索不会触发它。
  5. 采集结果可缓存:provider.collect() 的结果写入 acquisition cache,后续相同 query 直接命中。
  6. ask/verify 支持 session context:追问自动识别,evaluator 用 AI 判断是否与历史上下文相关。
  7. 默认显示进度:stderr 输出时间戳进度,--quiet 关闭。JSON stdout 始终干净、不被进度污染。

AI 配置说明:高质量 ask/verify/research 依赖你配置的 AI provider(OpenAI / Anthropic / Gemini / 本地模型)。未配置 AI 时,ask/verify 会退化到本地 fallback(不调用 AI),research 不可用。

MCP Server(给外部 AI 用)

source-radar 可以作为 MCP server,让 Claude Code、Claude Desktop、MiMoCode、Cursor 等支持 MCP 的 AI 工具直接调用搜索和抓取能力。

安装

# 项目有专用安装器,不要直接 uv sync
uv run python -m source_radar install

安装器会自动处理 MCP 依赖(mcp>=1.0)、Trafilatura、Crawl4AI 等所有可选依赖。

配置

Claude Desktop / Claude Code,在配置文件中添加:

{
  "mcpServers": {
    "source-radar": {
      "command": "uv",
      "args": ["run", "--extra", "mcp", "source-radar", "mcp"],
      "cwd": "/path/to/source-radar"
    }
  }
}

MiMoCode,在 ~/.config/mimocode/mimocode.json 中添加:

{
  "mcp": {
    "source-radar": {
      "type": "local",
      "command": ["uv", "run", "--extra", "mcp", "--directory", "你的项目路径", "source-radar", "mcp"],
      "enabled": true,
      "environment": {
        "PYTHONIOENCODING": "utf-8",
        "PYTHONUTF8": "1"
      }
    }
  }
}

暴露的工具

| 工具 | 作用 | 参数 | |------|------|------| | web_search | Bing 搜索,返回结果列表 | query(必填)、limit(默认 5,最大 10)、site(限定域名,如 hltv.org)、page(翻页)、nocache(跳过缓存) | | fetch_url | 抓取单个网页正文 | url(必填)、max_chars(默认 15000)、page(长文档分页) | | search_github | 搜索 GitHub issues/PRs | query(必填)、limit(默认 5,最大 10)、page(翻页)、nocache | | search_chinese_platforms | 搜索中文平台(小红书/微博/B站等) | query(必填)、platforms(可选,如 bili,tieba)、limit(默认 3)、nocache | | fetch_github_file | 获取 GitHub 仓库文件内容 | repo+pathurl(必填)、ref(默认 main)、max_chars(默认 15000)、page(长文件分页) |

质量评估

搜索结果自动附带质量评估(⚠️ 质量: low/medium + 💡 建议)。检测器包括:

  • no-candidates — 无搜索结果
  • semantic-mismatch — 结果与查询语义不相关
  • method-answers-missing — 方法型查询(怎么/如何/教程)但结果多为评测/参数页
  • navigation-heavy — 正文是导航菜单
  • language-mismatch — 查询语言与结果语言不匹配
  • domain-concentration — 结果集中在单一域名
  • snippet-only — 仅有搜索摘要,未抽取正文
  • key-platform-missing — 新闻类查询缺少主流媒体结果

安全限制

  • fetch_url 只允许 http/https,拒绝 localhost、内网地址、file:// 等
  • 超时 30 秒,最大返回 50000 字符
  • 搜索和抓取结果走现有缓存机制(search=6h, trafilatura=24h)
  • search_chinese_platforms 需要 MediaCrawler bridge 运行(engine start mediacrawler),首次调用较慢(~30s/平台),缓存后极快。默认只跑 1 个平台,可通过 platforms 参数指定(如 bili,tieba
  • fetch_url 对 wiki/论坛域名(liquipedia.net、hltv.org、fandom.com 等)自动使用 Crawl4AI 渲染
  • 搜索结果自动评估质量,低质量结果会显示 ⚠️ 警告和 💡 建议
  • Agent 内置 AI Search Planner:自动生成 2-4 个搜索尝试,质量低时自动重试改词/换平台

AI Agent 全局指令

MCP 配置完成后,AI 工具不会自动使用 MCP 工具——需要在全局指令文件中声明。以下内容添加到你的 AI 工具全局指令中:

MiMoCode — 添加到 ~/.config/mimocode/AGENTS.md

## Web Search & Fetch
- Use `source-radar_web_search` for web searches (Bing-based, good Chinese support, supports `site:` filter)
- Use `source-radar_fetch_url` for fetching and extracting web page content
- Use `source-radar_search_github` for searching GitHub issues and PRs
- Use `source-radar_search_chinese_platforms` for searching Chinese platforms
- Use `source-radar_fetch_github_file` for fetching raw file content from GitHub repos

Claude Code — 添加到 ~/.claude/CLAUDE.md

## Web Search & Fetch
- Use source-radar MCP tools instead of built-in WebSearch/WebFetch when available
- `source-radar_web_search` for web searches (supports `site`, `page`, `nocache`)
- `source-radar_fetch_url` for page content extraction (supports `page` for long docs)
- `source-radar_search_github` for GitHub issues/PRs
- `source-radar_search_chinese_platforms` for Chinese community platforms
- `source-radar_fetch_github_file` for raw GitHub file content

使用

配置完成后,在 AI 对话中直接说"搜索 xxx"或"抓取 xxx 页面",AI 工具会自动调用 source-radar。

Claude Code Skill(推荐使用方式)

source-radar 的核心使用方式是 Claude Code Skill:安装后在对话中直接说"帮我查一下 XX",Claude Code 自动调用 source-radar 搜索中文互联网,综合结果返回给你。

如果你是 AI Agent(Claude Code / Codex 等)在帮用户安装

本项目有自己的 Agent 安装协议。不要按通用 Python/uv 项目经验自行推断安装步骤。

第 1 步:先读 Skill 文档

克隆后第一件事是读取项目的 Agent 安装指南,而不是直接跑 uv sync

git clone https://github.com/Narylr350/source-radar.git
cd source-radar
python -c "from pathlib import Path; print(Path('skills/source-radar/SKILL.md').read_text(encoding='utf-8'))"

重点读 "Initialization flow for AI agents" 章节。

第 2 步:安装 Skill 文件 + 非交互引擎安装
# 安装 Skill(推荐用链接,git pull 后自动同步)
# Windows: 用 Junction(不需要管理员权限)
New-Item -ItemType Directory -Force $env:USERPROFILE\.claude\skills | Out-Null
New-Item -ItemType Junction -Path $env:USERPROFILE\.claude\skills\source-radar -Target "$PWD\skills\source-radar"

# macOS/Linux: 用符号链接
# mkdir -p ~/.claude/skills && ln -s "$(pwd)/skills/source-radar" ~/.claude/skills/source-radar

# 非交互安装引擎依赖(不会卡住,不会问你任何问题)
uv run python -m source_radar install --agent
第 3 步:查看配置缺口
uv run python -m source_radar setup-plan --format json

根据返回的 required_inputs 向用户索要必需配置。不要运行交互式 install(不带 --agent 的那个)。

禁止事项
  • 不要直接跑 uv syncpip install——本项目依赖安装必须通过 uv run python -m source_radar engine installuv run python -m source_radar install --agent
  • 不要根据报错自行推断修复命令——优先使用 setup-plan + doctor 的输出作为修复指引
  • 不要跳过 Skill 直接凭 Python 经验操作

如果你是真人手动安装

git clone https://github.com/Narylr350/source-radar.git
cd source-radar

# 安装 Skill 文件
Copy-Item -Recurse skills/source-radar/ $env:USERPROFILE\.claude\skills\source-radar\

# 交互式一键安装(会问你 API key、打开浏览器等)
uv run python -m source_radar install

推荐:用目录链接代替复制,这样 git pull 后 Skill 自动同步,不用每次手动复制:

# 先删除已复制的目录,再创建链接
Remove-Item -Recurse -Force $env:USERPROFILE\.claude\skills\source-radar
New-Item -ItemType Junction -Path $env:USERPROFILE\.claude\skills\source-radar -Target "$PWD\skills\source-radar"

macOS/Linux 用符号链接(需要项目路径保持不变):

rm -rf ~/.claude/skills/source-radar
ln -s "$(pwd)/skills/source-radar" ~/.claude/skills/source-radar

使用 Skill

安装完成后,在 Claude Code 对话中直接说:

"帮我查一下 RTX 5090 电源接口问题在中文社区的讨论"
"搜一下小红书和 B 站上关于 Python 教程的评价"
"验证这个消息:XX 产品宣布涨价 30%"

Skill 会自动:

  1. 检测引擎状态
  2. source-radar 内部 evaluator 判断是否需要中文社区采集
  3. 执行自适应采集、AI 综合
  4. 返回分析报告(包含综合回答、关键要点、来源分布、分歧争议、噪音提示)

推荐:配置 MCP Server

Skill 通过 CLI 命令调用 source-radar,每次都是完整 agent 流程。如果你只需要搜索和抓取能力(不需要 AI 综合),配置 MCP Server 更轻量:

# 验证 MCP server 可用
echo '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2024-11-05","capabilities":{},"clientInfo":{"name":"test","version":"1.0"}}}' | uv run --extra mcp source-radar mcp

然后在你的 AI 工具中配置 MCP(详见上方 [MCP Server 章节](#mcp-server给外部-ai-用))。配置后可以直接说"搜索 xxx"或"抓取 xxx 页面",不走完整 agent 流程,响应更快。

Skill 调用规范

  • 不要手动拆 query:用户一个问题 = 一个 ask/research/verify 命令。不要把一个复杂问题拆成多个 ask 调用。
  • 不要绕过 source-radar 自己补 WebSearch/WebFetch:source-radar 内部已做 adaptive collection。如果证据弱或缺失,如实报告,不要偷偷用自己工具补充搜索。
  • research 用 research 命令:复杂多面问题用 research(走 planner/evaluator 多轮逻辑),不要混成多个 ask。

Skill 文件结构

skills/source-radar/
├── SKILL.md          # 技能描述和触发条件
└── scripts/
    └── run.py        # 命令封装,自动管理服务生命周期

run.py 支持的命令:

| 命令 | 作用 | |------|------| | run.py research "问题" | 深度研究(复杂多面问题) | | run.py ask "问题" | 综合信息分析 | | run.py verify "断言" | 严格核验 | | run.py start | 启动 MediaCrawler 服务 | | run.py stop | 停止服务 | | run.py status | 查看引擎状态 | | run.py doctor | 检查配置并输出修复建议 | | run.py cookie | 获取平台 Cookie |

命令行直接使用

不使用 Skill 时,也可以直接调用 CLI:

# 一键安装
uv run python -m source_radar install

# 综合信息分析(默认显示进度,source=auto 自适应采集)
uv run python -m source_radar ask "RTX 5090 电源兼容问题的中文社区反馈"

# 启用 MediaCrawler(需先启动本地服务,见"引擎管理")
uv run python -m source_radar ask "小红书上关于 XX 产品的真实评价" --local-services

# 深度研究(planner 自动为每个子查询选择合适工具)
uv run python -m source_radar research "9800x3d 微星b850 超频经验汇总" --max-rounds 2

# 严格核验
uv run python -m source_radar verify "某产品宣布涨价 30%"

# 安静模式(不输出进度,适合脚本/管线的 JSON 提取)
uv run python -m source_radar ask "问题" --format json --quiet

# Session context:追问自动关联历史
uv run python -m source_radar ask "9800x3d 怎么超频" --session oc
uv run python -m source_radar ask "那内存怎么调" --session oc   # 识别为追问

# Session context:禁用
uv run python -m source_radar ask "问题" --no-session

# 获取 Cookie
uv run python -m source_radar cookie

# 引擎管理
uv run python -m source_radar engine list
uv run python -m source_radar engine start mediacrawler
uv run python -m source_radar engine stop mediacrawler

# Cache 管理
uv run python -m source_radar cache status
uv run python -m source_radar cache clear
uv run python -m source_radar cache prune

# Session 管理
uv run python -m source_radar session status
uv run python -m source_radar session clear --session oc
uv run python -m source_radar session new

或用 PowerShell 快捷入口:

.\source-radar.ps1 setup       # 一键安装
.\source-radar.ps1 ask "..."   # 综合分析
.\source-radar.ps1 verify "..." # 核验消息

ask / verify / research 的区别

| 命令 | 适用场景 | 采集方式 | Session | |------|---------|---------|---------| | ask | 简单查询、教程查找、快速搜索 | 自适应采集(source=auto),max_tools=3 | 支持 --session | | verify | 真伪核验、事实核查 | 自适应采集 + verify 严格模式(拒绝纯搜索结果,优先一手来源) | 支持 --session | | research | 复杂多面问题、硬件调优、方案汇总 | Planner → 按 query 指定工具 → Collect → Dedupe → Synthesize | 暂不支持 session context |

自适应采集(Adaptive Collection)

ask/verify 默认 source=auto 时启用。工作流程:

Round 1: search(必跑)
  → evaluator 判断证据是否足够
    → 够 → 停止,输出
    → 不够 → Round 2: 选择下一个工具(e.g. trafilatura)
      → evaluator 再判断
        → 够 → 停止
        → 不够 → Round 3(最后一个)

规则:

  • max_tools=3:最多跑 3 个

Source & license

This open-source MCP server is cataloged on AgentStack and links to its original source — we do not rehost the code.

Install and usage instructions live in the source repository linked above.

Reviews

No reviews yet — be the first.

Versions

  • v0.1.0 Imported from the upstream source.