Install
$ agentstack add mcp-narylr350-source-radar Open-source listing — not yet scanned by AgentStack. Follow the source repository for install instructions.
Security review
⚠ Flagged1 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.
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 → 停止)。
自适应采集规则:
- 先 search,再判断:
source=auto(默认)时,ask/verify 先执行搜索,由 evaluator 判断证据是否足够。 - 渐进式采集:evaluator 决定是否需要继续采集(trafilatura 正文抽取、crawl4ai 动态渲染等)。
- 最多 3 个工具:maxtools=3,evidencelimit=12。evaluator 无法突破上限。
- MediaCrawler 不默认跑:仅当问题明确涉及中文社区经验、争议、舆论、平台讨论时,evaluator 才选择 mediacrawler。普通事实查询、编程问题、教程搜索不会触发它。
- 采集结果可缓存:provider.collect() 的结果写入 acquisition cache,后续相同 query 直接命中。
- ask/verify 支持 session context:追问自动识别,evaluator 用 AI 判断是否与历史上下文相关。
- 默认显示进度: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+path 或 url(必填)、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 sync或pip install——本项目依赖安装必须通过uv run python -m source_radar engine install或uv 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 会自动:
- 检测引擎状态
- source-radar 内部 evaluator 判断是否需要中文社区采集
- 执行自适应采集、AI 综合
- 返回分析报告(包含综合回答、关键要点、来源分布、分歧争议、噪音提示)
推荐:配置 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.
- Author: Narylr350
- Source: Narylr350/source-radar
- License: Apache-2.0
- Homepage: https://github.com/Narylr350/source-radar
Install and usage instructions live in the source repository linked above.
Reviews
No reviews yet — be the first.
Write a review
Versions
- v0.1.0 Imported from the upstream source.