Skip to content

linliu0210/source_tracker

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

44 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

📡 Source Tracker

信息溯源与信源信誉系统 — 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           │     │
│  └────────────────────┘    └─────────────────────────────────────┘     │
└──────────────────────────────────────────────────────────────────────┘

🚀 快速开始

1. 安装

# 从源码安装
git clone https://github.com/your-username/source-tracker.git
cd source-tracker
pip install -e .

# 或直接安装
pip install source-tracker

2. 配置 MCP Client

将以下配置添加到你的 Agent 的 MCP 设置中(以 Claude Code 为例,编辑 ~/.claude/settings.json):

{
  "mcpServers": {
    "source-tracker": {
      "command": "source-tracker",
      "args": []
    }
  }
}

3. 初始化搜索渠道

首次使用时,运行种子脚本填充 22 个默认搜索渠道:

python scripts/seed_channels.py

4. 检查渠道状态

告诉你的 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 查看所有上游工具详细状态

5. 开始使用

安装 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 Reddit Agent Reach python
youtube YouTube Agent Reach cli
bilibili B站 Agent Reach cli
github GitHub Agent Reach cli
linkedin 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 xiaohongshu

Exa 语义搜索 (需要安装):

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
)

📖 使用示例

TREND — 趋势溯源

用户: "microfish 这个项目最近很火,谁先报的?"

Pipeline 流程:

  1. SCOUT 用 Grok/Tavily 做泛搜索,获取元特征
  2. GATE 分类为 TREND,选择渠道: grok_search, twitter, weibo, tavily
  3. HUNT 并行搜索 4 个渠道,收集 Discovery 列表
  4. JUDGE 按时间排序,综合 time_confidence 评分
  5. LEARN 记录 Winner,更新信源画像

输出:

🏆 最佳信源:@TechBro42 (Twitter/X)
   首发时间:2026-03-11 14:00 (UTC+8)
   内容摘要:发现了一个叫 microfish 的新框架...
   信源类型:趋势首发型

ℹ️ 信源画像:该账号此前已有 3 次趋势首发记录,平均领先第二名 2.5 小时。

CLAIM — 事实验证

用户: "听说 OpenAI 要收购 Figma,这是真的吗?"

Pipeline 流程:

  1. SCOUT 用通用搜索工具获取初步结果和元特征
  2. GATE 分类为 CLAIM,选择渠道: grok_search, tavily, wechat, jina_web
  3. HUNT 搜索并收集各渠道发现
  4. JUDGE 按权威度 (T1-T5) 评判,官方声明 > 权威媒体 > 自媒体
  5. LEARN 记录结果,沉淀信源信誉
🏆 最佳信源:Reuters (reuters.com)
   权威等级:T2 (权威媒体)
   内容摘要:据知情人士透露...
   可信度评估:高 — 多家权威媒体交叉验证

ℹ️ 信源画像:Reuters 在 CLAIM 类溯源中累计命中 12 次,信誉分 8.42。

TECH — 技术归因

用户: "这个 Attention Is All You Need 论文的原作者是谁?"

Pipeline 流程:

  1. SCOUT 快速搜索获取初始线索
  2. GATE 分类为 TECH,选择渠道: github, arxiv, google_scholar, jina_web
  3. HUNT 搜索学术和代码平台
  4. JUDGEoriginality 评分,原始论文 > 引用 > 二手报道
  5. LEARN 记录 Winner,标记为技术领袖
🏆 最佳信源:Vaswani et al. (arxiv.org)
   原始性:1.0 (原始论文)
   内容摘要:Attention Is All You Need, arXiv:1706.03762
   信源类型:技术原创型

ℹ️ 信源画像:该作者在 TECH 类溯源中累计命中 5 次,信誉分 4.85。

🛠️ MCP API 参考

Tools (11 个)

工具 功能 关键参数
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?

Resources (2 个)

资源 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 -v

类型检查

python -m mypy src/source_tracker/ --ignore-missing-imports

代码检查

ruff 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)

📄 License

MIT — 详见 LICENSE 文件。

About

MCP-based Agent Skill for information source tracing and reputation tracking

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages