信息溯源与信源信誉系统 — MCP Server for information source tracking and reputation scoring.
Source Tracker 帮你找到**"谁说得最早"和"谁说得最准"**,并通过长期积累构建信源信誉数据库。
每次溯源经过 SCOUT → GATE → HUNT → JUDGE → LEARN 五段式 Pipeline,结果自动沉淀为信源画像,信誉评分基于指数衰减算法持续更新。
- 信息溯源 — 输入一条信息,追溯最早/最可靠的发布源
- 信源画像 — 每次溯源结果自动沉淀,构建长期信源信誉数据库
- 指数衰减评分 —
reputation = Σ(hit_value × e^(-0.01 × days)),近期表现权重更高 - 22 搜索渠道 — 覆盖社交媒体、新闻、学术、代码平台的多源搜索
- 三类信息分类 — TREND (趋势首发) / CLAIM (事实验证) / TECH (技术归因)
- MCP 原生 — 基于 FastMCP,无缝集成各类 Agent
- 零额外依赖 — SQLite 文件即持久化,无需 Redis / PostgreSQL
┌──────────────────────────────────────────────────────────────────────┐
│ USER / LLM AGENT │
│ │
│ ┌──────────────────────────────────────────────────────────────┐ │
│ │ Skill (调度层) │ │
│ │ │ │
│ │ User Input │ │
│ │ │ │ │
│ │ ▼ │ │
│ │ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐ ┌────────┐│ │
│ │ │①SCOUT │─▶│②GATE │─▶│③HUNT │─▶│④JUDGE │─▶│⑤LEARN ││ │
│ │ │泛搜索 │ │门控分类 │ │多源搜索│ │评判排序│ │沉淀学习 ││ │
│ │ └────────┘ └────────┘ └────────┘ └────────┘ └────────┘│ │
│ │ LLM 搜索 LLM 分类 LLM 编排 LLM 评判 MCP Server│ │
│ └───────┬─────────────────────────────────────┬───────────────┘ │
│ │ │ │
│ ┌───────▼───────────┐ ┌────────────────────▼────────────────┐ │
│ │ 搜索工具 (22 渠道) │ │ Source Tracker MCP Server │ │
│ │ │ │ │ │
│ │ MCP: Grok, Tavily │ │ Tools (11): │ │
│ │ Jina, arXiv │ │ • report_discovery() │ │
│ │ Scholar, Exa │ │ • query_reputation() │ │
│ │ CLI: xreach, │ │ • list_sources() │ │
│ │ yt-dlp, gh │ │ • get_source_profile() │ │
│ │ Python: Scrapling │ │ • correct_judgment() │ │
│ │ feedparser │ │ • register_channel() │ │
│ │ Skill: 微博, │ │ • get_channel_registry() │ │
│ │ 微信, HN, V2EX │ │ • check_channel_status() │ │
│ │ │ │ • get_tuned_affinities() │ │
│ │ │ │ • get_channel_performance() │ │
│ │ │ │ • get_source_relations() │ │
│ │ │ │ │ │
│ │ │ │ Resources (2): │ │
│ │ │ │ • source://leaderboard │ │
│ │ │ │ • source://daily-digest │ │
│ │ │ │ │ │
│ │ │ │ Storage: │ │
│ │ │ │ ~/.source-tracker/data.db │ │
│ └────────────────────┘ └─────────────────────────────────────┘ │
└──────────────────────────────────────────────────────────────────────┘
# 从源码安装
git clone https://github.com/your-username/source-tracker.git
cd source-tracker
pip install -e .
# 或直接安装
pip install source-tracker将以下配置添加到你的 Agent 的 MCP 设置中(以 Claude Code 为例,编辑 ~/.claude/settings.json):
{
"mcpServers": {
"source-tracker": {
"command": "source-tracker",
"args": []
}
}
}首次使用时,运行种子脚本填充 22 个默认搜索渠道:
python scripts/seed_channels.py告诉你的 Agent:
帮我检查 Source Tracker 的搜索渠道状态
Agent 会自动调用 check_channel_status(),输出类似:
📡 Source Tracker — 搜索渠道状态
✅ Ready (可直接使用)
• grok_search Grok AI 全网搜索
• tavily Tavily 全网搜索
• jina_web Jina 全网搜索
• arxiv arXiv 学术论文搜索
• github GitHub 搜索 (gh CLI)
⚙️ Needs Config (需配置后使用)
• twitter Twitter/X → 需要 Cookie
• xiaohongshu 小红书 → 需要 Cookie + Docker
📦 Not Installed (需安装)
• exa_search Exa 语义搜索 → mcporter install exa
• scrapling 反爬网页 → pip install scrapling
💡 提示:运行 agent-reach doctor 查看所有上游工具详细状态
安装 Skill 文件(可选,启用自然语言触发):
# 创建 symlink 到 Agent skills 目录
ln -s $(pwd)/skill ~/.agent/skills/source-tracker然后直接对 Agent 说:
"microfish 这个项目谁先报的?帮我溯源"
Source Tracker 支持 22 个搜索渠道,分为两层(Agent Reach / Extra)四种调用方式:
| 渠道 ID | 平台 | 层级 | 调用方式 | 需配置 |
|---|---|---|---|---|
grok_search |
全网 (Grok AI) | Extra | mcp | ❌ |
tavily |
全网 (Tavily) | Extra | mcp | ❌ |
jina_web |
全网 (Jina) | Extra | mcp | ❌ |
jina_read |
网页阅读 | Extra | mcp | ❌ |
exa_search |
全网 (Exa) | Agent Reach | mcp | ⚙️ 安装 |
arxiv |
学术论文 | Extra | mcp | ❌ |
google_scholar |
学术索引 | Extra | mcp | ❌ |
twitter |
Twitter/X | Agent Reach | cli | 🍪 Cookie |
weibo |
微博 | Agent Reach | python | ❌ |
wechat |
微信公众号 | Agent Reach | python | ❌ |
xiaohongshu |
小红书 | Agent Reach | mcp | 🍪 Cookie |
douyin |
抖音 | Agent Reach | mcp | ⚙️ 安装 |
reddit |
Agent Reach | python | ❌ | |
youtube |
YouTube | Agent Reach | cli | ❌ |
bilibili |
B站 | Agent Reach | cli | ❌ |
github |
GitHub | Agent Reach | cli | ❌ |
linkedin |
Agent Reach | mcp | ⚙️ 安装 | |
rss |
RSS 源 | Agent Reach | python | ❌ |
scrapling |
反爬网页 | Extra | skill | ❌ |
github_trending |
GitHub 趋势 | Extra | skill | ❌ |
v2ex |
V2EX 技术社区 | Agent Reach | python | ❌ |
hackernews |
Hacker News | Extra | skill | ❌ |
不同类型的信息会优先使用不同的搜索渠道:
| 信息类型 | 优先渠道 (亲和力 ≥ 0.8) | 次优渠道 |
|---|---|---|
| TREND | Grok, Twitter, 微博, Tavily | 小红书, Reddit, B 站 |
| CLAIM | Grok, Tavily, 微信公众号, Jina | Twitter, Reddit |
| TECH | GitHub, Jina, Exa, arXiv | Tavily, Reddit, YouTube |
Twitter/X (需要 Cookie):
# 使用 Agent Reach 配置
agent-reach configure twitter-cookies小红书 (需要 Cookie + Docker):
agent-reach configure xiaohongshuExa 语义搜索 (需要安装):
mcporter install exa自定义渠道注册:
通过 register_channel 工具注册自定义搜索渠道:
# Agent 会调用 MCP 工具
register_channel(
channel_id="my_custom_search",
name="我的自定义搜索",
invoke_method="mcp",
invoke_detail="mcp_my-server_search",
trend_affinity=0.5,
claim_affinity=0.8,
tech_affinity=0.3
)用户: "microfish 这个项目最近很火,谁先报的?"
Pipeline 流程:
- SCOUT 用 Grok/Tavily 做泛搜索,获取元特征
- GATE 分类为
TREND,选择渠道:grok_search,twitter,weibo,tavily - HUNT 并行搜索 4 个渠道,收集 Discovery 列表
- JUDGE 按时间排序,综合
time_confidence评分 - LEARN 记录 Winner,更新信源画像
输出:
🏆 最佳信源:@TechBro42 (Twitter/X)
首发时间:2026-03-11 14:00 (UTC+8)
内容摘要:发现了一个叫 microfish 的新框架...
信源类型:趋势首发型
ℹ️ 信源画像:该账号此前已有 3 次趋势首发记录,平均领先第二名 2.5 小时。
用户: "听说 OpenAI 要收购 Figma,这是真的吗?"
Pipeline 流程:
- SCOUT 用通用搜索工具获取初步结果和元特征
- GATE 分类为
CLAIM,选择渠道:grok_search,tavily,wechat,jina_web - HUNT 搜索并收集各渠道发现
- JUDGE 按权威度 (T1-T5) 评判,官方声明 > 权威媒体 > 自媒体
- LEARN 记录结果,沉淀信源信誉
🏆 最佳信源:Reuters (reuters.com)
权威等级:T2 (权威媒体)
内容摘要:据知情人士透露...
可信度评估:高 — 多家权威媒体交叉验证
ℹ️ 信源画像:Reuters 在 CLAIM 类溯源中累计命中 12 次,信誉分 8.42。
用户: "这个 Attention Is All You Need 论文的原作者是谁?"
Pipeline 流程:
- SCOUT 快速搜索获取初始线索
- GATE 分类为
TECH,选择渠道:github,arxiv,google_scholar,jina_web - HUNT 搜索学术和代码平台
- JUDGE 按
originality评分,原始论文 > 引用 > 二手报道 - LEARN 记录 Winner,标记为技术领袖
🏆 最佳信源:Vaswani et al. (arxiv.org)
原始性:1.0 (原始论文)
内容摘要:Attention Is All You Need, arXiv:1706.03762
信源类型:技术原创型
ℹ️ 信源画像:该作者在 TECH 类溯源中累计命中 5 次,信誉分 4.85。
| 工具 | 功能 | 关键参数 |
|---|---|---|
report_discovery |
记录溯源结果 | query, info_type, winner, runners_up, reasoning |
query_reputation |
查询信源信誉 | platform, author_name |
list_sources |
信誉排行榜 | info_type?, platform?, top_n?, sort_by? |
get_source_profile |
信源完整画像 | source_id |
correct_judgment |
纠正错误判断 | discovery_id, correction_type, correct_source?, new_info_type?, reason? |
register_channel |
注册搜索渠道 | channel_id, name, invoke_method, ... |
get_channel_registry |
查看渠道注册表 | (无参数) |
check_channel_status |
检测渠道状态 | (无参数) |
get_tuned_affinities |
渠道自动调优结果 | info_type? |
get_channel_performance |
渠道命中率统计 | info_type? |
get_source_relations |
信源共现关系 | source_id, min_cooccurrence? |
| 资源 URI | 内容 |
|---|---|
source://leaderboard |
信源信誉排行榜 (Top 20, Markdown 表格) |
source://daily-digest |
最近 24 小时溯源汇总 (按 info_type 分组) |
Source Tracker 使用指数衰减加权计算信源信誉分:
reputation = Σ(hit_value × e^(-λ × days_since_hit))
| 参数 | 值 | 说明 |
|---|---|---|
λ |
0.01 | 衰减系数,约 69 天半衰期 |
Winner hit_value |
1.0 | 评为 Winner 的权重 |
Runner-up hit_value |
0.3 | 评为候选的权重 |
Irrelevant hit_value |
0.0 | 与查询无关,不计分 |
这意味着:
- 近期的表现影响更大
- 一个月前的 Winner 贡献约
e^(-0.3) ≈ 0.74分 - 三个月前的 Winner 贡献约
e^(-0.9) ≈ 0.41分 - 长期不活跃的信源分数会自然下降
纠正机制支持三种修正:
wrong_winner— 更换 Winner,双方信誉重算false_positive— 标记为误判,Winner 信誉重算wrong_type— 更正信息类型并转移命中计数,需提供new_info_type
# 克隆项目
git clone https://github.com/your-username/source-tracker.git
cd source-tracker
# 创建虚拟环境
python -m venv .venv
source .venv/bin/activate
# 安装开发依赖
pip install -e ".[dev]"# 运行全部测试
python -m pytest tests/ -v
# 运行特定模块测试
python -m pytest tests/test_database.py -v
python -m pytest tests/test_reputation.py -v
python -m pytest tests/test_server.py -vpython -m mypy src/source_tracker/ --ignore-missing-importsruff check src/source-tracker/
├── pyproject.toml # 项目配置 & 依赖
├── README.md # 本文件
├── docs/
│ └── specs/
│ ├── SPEC_FINAL.md # 唯一权威规格书
│ ├── SPEC_V2.md # [ARCHIVED]
│ ├── SPEC_V1.2_PREFLIGHT.md # [ARCHIVED]
│ └── SPEC_V1.2_CHANNEL_TUNING.md # [ARCHIVED]
├── src/
│ └── source_tracker/
│ ├── __init__.py
│ ├── server.py # MCP Server (11 Tools + 2 Resources)
│ ├── database.py # SQLite (4 表 + 8 索引)
│ ├── models.py # Pydantic (10 枚举 + 9 模型)
│ ├── reputation.py # 信誉评分引擎 (指数衰减)
│ ├── tuner.py # 渠道自动调优 (V1.2)
│ ├── channels/
│ │ ├── __init__.py
│ │ ├── registry.py # 渠道注册表 (22 渠道)
│ │ └── doctor.py # 渠道可用性检测
│ └── prompts/
│ ├── __init__.py
│ ├── gate.py # GATE 分类 System Prompt
│ └── judge.py # JUDGE 评判 System Prompt
├── skill/
│ └── SKILL.md # Agent Skill 编排文件
├── scripts/
│ ├── daily_monitor.py # 定时监控脚本
│ └── verify_doc_code_consistency.py # 文档↔代码一致性验证
└── tests/
├── test_scaffold.py # 骨架测试
├── test_models.py # 数据模型测试
├── test_database.py # 数据库层测试
├── test_reputation.py # 信誉引擎测试
├── test_registry.py # 渠道注册表测试
├── test_doctor.py # 渠道检测测试
├── test_server.py # MCP Server 测试
├── test_gate.py # GATE Prompt 测试
├── test_judge.py # JUDGE Prompt 测试
├── test_scout.py # SCOUT 阶段测试
├── test_tuner.py # 渠道调优测试
├── test_monitor.py # 监控测试
└── test_e2e.py # 端到端测试
Source Tracker 使用 SQLite,数据库文件位于 ~/.source-tracker/data.db,首次使用时自动创建。
四张核心表:
source_profiles— 信源画像 (信誉分、命中计数、标签)discoveries— 溯源记录 (查询、Winner、Runners-up)channel_registry— 搜索渠道注册表 (22 渠道 + 自定义)corrections— 纠正记录 (wrong_winner / false_positive / wrong_type)
MIT — 详见 LICENSE 文件。