Security audit workflow - vulnerability scan → verification
npx skills add linliu0210/source_tracker --skill "source-tracker"
Install specific skill from multi-skill repository
# Description
信息溯源与信源信誉追踪。追溯信息源头(谁先报的、谁说的最准、原作者是谁),长期积累信源画像。Triggers on: 谁先报的, 谁最先说的, 消息来源, 信息溯源, 最早发布, 首发, 源头, 这个消息可信吗, 这是真的吗, reliable source, 谁做的这个, 原作者, original author, 信源排名, 信源画像, source reputation, 搜索渠道状态, 检查渠道, /trace, /source, /reputation, /source-doctor
# SKILL.md
name: source-tracker
description: "信息溯源与信源信誉追踪。追溯信息源头(谁先报的、谁说的最准、原作者是谁),长期积累信源画像。Triggers on: 谁先报的, 谁最先说的, 消息来源, 信息溯源, 最早发布, 首发, 源头, 这个消息可信吗, 这是真的吗, reliable source, 谁做的这个, 原作者, original author, 信源排名, 信源画像, source reputation, 搜索渠道状态, 检查渠道, /trace, /source, /reputation, /source-doctor"
Source Tracker — 信息溯源与信源信誉系统
追踪"谁说得最早"和"谁说得最准",长期积累信源画像。
Source Tracker 通过 SCOUT → GATE → HUNT → JUDGE → LEARN 五段式 Pipeline,将用户输入的一条信息自动溯源到最早/最可靠的发布源,并将结果沉淀为信源信誉数据。
触发条件
当用户的输入包含以下关键词或意图时,激活本 Skill:
溯源类
- "谁先报的"、"谁最先说的"、"消息来源"、"信息溯源"
- "最早发布"、"首发"、"源头"
可信度验证类
- "这个消息可信吗"、"这是真的吗"、"reliable source"
技术归因类
- "谁做的这个"、"原作者"、"original author"
信源查询类
- "信源排名"、"信源画像"、"source reputation"
系统管理类
- "搜索渠道状态"、"检查渠道"
Slash 命令
/trace— 执行完整溯源 Pipeline/source— 查询信源画像/reputation— 查询信源信誉排行榜/source-doctor— 检查搜索渠道可用状态
信息分类体系
本系统将信息分为三大类:
| 类别 | 代号 | 溯源目标 | 核心问题 |
|---|---|---|---|
| 趋势/热点 | TREND |
时效性优先:找最早报道者 | "谁最先嗅到了这个风向?" |
| 事实/声明 | CLAIM |
可信度优先:找权威一手信源 | "这是真的吗?来源可靠吗?" |
| 技术/开发 | TECH |
归因优先:找原始作者/仓库 | "这个技术/工具是谁做的?" |
编排流程(9 步)
Step 0: 解析用户意图
接收用户提供的信息文本。如果用户使用 slash 命令(/source、/reputation、/source-doctor),直接跳转到对应的快捷操作(见下方"快捷操作"节)。
溯源目标解析:从用户输入中识别显式溯源目标:
| 用户关键词 | tracing_goal | 说明 |
|---|---|---|
| "最早""首发""时间线""谁先" | earliest |
优先按时间排序 |
| "可信""权威""真假""验证" | most_reliable |
优先按权威度排序 |
| "谁做的""原作者""仓库""代码" | original_author |
优先按原创性排序 |
| 无明确指定 | auto |
由 GATE 按 info_type 自动对应 |
Step 1: SCOUT — 泛搜索
执行一次快速通用搜索,获取真实数据供 GATE 分类时参考。
操作:
- 使用 Tavily 或 Jina Web 进行通用搜索(取决于可用性)
- 从搜索结果中提取元特征:
observed_languages: 语言分布(如{"zh": 7, "en": 3})observed_platforms: 出现的平台(如["36kr", "zhihu", "reddit"])observed_themes: 主题线索(如["open-source", "trending"])- 将结果封装为
ScoutResult传递给 GATE
搜索工具选择:
- 优先使用 mcp_tavily_tavily_search(query=...) — 速度快、覆盖面广
- 备选使用 mcp_jina_search_web(query=...) — 适合中文内容
延迟预算:1-3 秒(SCOUT 应快速完成,不需要精确)
Step 2: GATE — 门控分类
使用 GATE System Prompt 对用户输入进行分类,基于 SCOUT 的实际数据做出判断。
操作:
- 调用
check_channel_status()获取当前可用渠道列表 - 将用户原始文本 + 可用渠道列表 + SCOUT 结果 + tracing_goal_hint 组装为 GATE prompt
- 发送给 LLM,获取分类结果(JSON 格式)
GATE 输出结构(V2):
{
"info_type": "TREND | CLAIM | TECH | MIXED",
"tracing_goal": "earliest | most_reliable | original_author | auto",
"dominant_language": "zh | en | mixed",
"sub_queries": [
{
"query": "优化后的搜索查询",
"type": "TREND | CLAIM | TECH",
"search_channels": ["grok_search", "twitter", "tavily"]
}
],
"reasoning": "基于 SCOUT 证据的分类理由"
}
渠道选择参考:
| 信息类型 | 中文优先 | 英文优先 | 通用 |
|---|---|---|---|
| TREND | jina_web, weibo, tavily | grok_search, twitter, tavily | grok_search, twitter, weibo, jina_web, tavily |
| CLAIM | jina_web, wechat, tavily | grok_search, tavily, jina_read | grok_search, tavily, wechat, jina_web, jina_read |
| TECH | (无语言差异) | (无语言差异) | github, exa_search, jina_web, arxiv, tavily |
MIXED 处理:如果分类结果为 MIXED,GATE 会自动拆分为多个子查询。对每个子查询独立执行 Step 3-7。
Step 3: 渠道可用性过滤
基于 Step 2 返回的 check_channel_status() 结果,过滤 GATE 选出的渠道:
- ✅
ready→ 正常使用 - ⚙️
needs_config→ 跳过,并在最终输出中提示用户配置 - 📦
not_installed→ 跳过,并在最终输出中提示用户安装 - ❌
unavailable→ 静默跳过
重要:如果所有渠道都不可用,回退到该类型的默认渠道中任何 ready 状态的渠道。如果仍无可用渠道,通知用户并中止。
Step 4: HUNT — 多源搜索
按过滤后的渠道列表逐个执行搜索。
渠道自动调参 (V1.2):当
use_tuned=True时,渠道排序会使用衰减加权后的有效亲和度
(effective affinity),而非静态默认值。数据不足 5 次时自动回退为默认值。
使用/tune-channels查看当前调参结果。
搜索工具映射(按 channel_id → 工具调用):
| 渠道 ID | 调用方式 |
|---|---|
grok_search |
mcp_grok-search_web_search(query=...) |
tavily |
mcp_tavily_tavily_search(query=...) |
jina_web |
mcp_jina_search_web(query=...) |
jina_read |
mcp_jina_read_url(url=...) |
exa_search |
MCP via mcporter: exa_search(query=...) |
arxiv |
mcp_arxiv-mcp-server_search_papers(query=...) |
google_scholar |
mcp_google-scholar_search_google_scholar_key_words(query=...) |
twitter |
CLI: xreach search "query" --json |
weibo |
Python: agent-reach weibo search |
wechat |
Python: agent-reach wechat search |
xiaohongshu |
MCP: xiaohongshu_search |
douyin |
MCP: douyin_search |
reddit |
Python: agent-reach reddit search |
youtube |
CLI: yt-dlp --dump-json URL |
bilibili |
CLI: yt-dlp --dump-json URL |
github |
mcp_github-mcp-server_search_repositories(query=...) 或 CLI: gh search repos "query" |
linkedin |
MCP: linkedin-mcp-server |
rss |
Python: python -c "import feedparser" / feedparser.parse(url) |
scrapling |
Skill: scrapling-fetch |
github_trending |
Skill: github-trending-fetch |
v2ex |
Python: agent-reach v2ex search |
hackernews |
Skill: hackernews-fetch |
收集结果:将每个渠道的搜索结果标准化为 Discovery 格式:
{
"source_platform": "twitter", # 渠道 ID
"source_author": "@TechBro42", # 作者/账号名
"source_url": "https://...", # 原始链接
"published_at": "2026-03-11T14:00", # ISO 8601 时间戳
"time_confidence": 1.0, # 时间可信度 0.0-1.0
"content_snippet": "...", # 内容摘要 (≤300 字)
"relevance_score": 0.9 # 与查询的相关度 0.0-1.0
}
追踪渠道命中 (V1.2-preflight):在搜索过程中同时记录每个渠道的命中情况:
channels_used = []
for channel in selected_channels:
results = search(channel, query)
channels_used.append({
"channel_id": channel.channel_id,
"hit": len(results) > 0, # 是否返回了相关结果
"result_count": len(results) # 返回结果数量
})
此数据将在 LEARN 阶段传给
report_discovery,用于后续渠道性能分析。
时间可信度参考:
1.0= API 返回精确时间0.7= 页面显示 "3小时前"0.5= 只有日期0.2= 推断的(如 "近日")0.0= 无时间信息
Step 5: JUDGE — 评判排序
将所有 Discovery 提交给 JUDGE System Prompt,由 LLM 执行。JUDGE 接收 tracing_goal 参数以切换评分策略:
- 事件聚类:判断哪些结果说的是同一件事,标记不相关的为
irrelevant - 按 tracing_goal 评分:
- earliest (或 TREND 默认):
score = (1/rank_by_time) × time_confidence × relevance - most_reliable (或 CLAIM 默认):
score = authority_tier × relevance × time_recency_bonus- 权威等级:T1(1.0) > T2(0.8) > T3(0.6) > T4(0.4) > T5(0.2)
- original_author (或 TECH 默认):
score = originality × relevance - 选出 Winner + Runners-up,给出判断理由
平局打破规则:
- 同分同时发布 → 按
time_confidence更高者胜出 - TREND 同小时内 → 按权威度打破
- CLAIM 同权威等级 → 按发布时间更早者胜出
- TECH 同原创性 → 更详细的内容胜出
信息不足时:标记为 is_inconclusive = true,仍选出最佳候选但注明置信度不足。
Step 6: LEARN — 沉淀学习
调用 Source Tracker MCP Server 将结果写入数据库:
report_discovery(
query = "用户原始查询",
info_type = "TREND",
winner = {
"source_platform": "twitter",
"source_author": "@TechBro42",
"source_url": "https://...",
"published_at": "2026-03-11T14:00",
"content_snippet": "..."
},
runners_up = [...],
reasoning = "JUDGE 的判断理由",
tracing_goal = "earliest",
dominant_language = "zh",
channels_used = [ # V1.2-preflight
{"channel_id": "grok_search", "hit": true, "result_count": 3},
{"channel_id": "tavily", "hit": true, "result_count": 5},
{"channel_id": "twitter", "hit": false, "result_count": 0}
]
)
系统会自动:
- 创建/更新信源画像 (SourceProfile)
- 记录溯源发现 (Discovery)
- 更新命中计数 (total_hits + 类型命中)
- 重算指数衰减信誉分
Step 7: 展示结果
向用户展示格式化的溯源结果:
🏆 最佳信源:@TechBro42 (Twitter/X)
首发时间:2026-03-11 14:00 (UTC+8)
内容摘要:[snippet]
信源类型:趋势首发型
ℹ️ 信源画像:该账号此前已有 3 次趋势首发记录,平均领先第二名 2.5 小时。
如果有渠道因不可用而被跳过,在结果末尾附加提示:
💡 提示:以下渠道未参与本次搜索:
• twitter — 需要配置 Cookie → 运行 `agent-reach configure twitter-cookies`
• exa_search — 需要安装 → `mcporter install exa`
快捷操作
/source — 查询信源画像
直接调用 get_source_profile(source_id) 或 query_reputation(platform, author_name) 展示信源画像。
/reputation — 信源排行榜
调用 list_sources(top_n=10) 展示信源信誉排行榜。支持可选过滤参数:
info_type: 按信息类型过滤 (TREND/CLAIM/TECH)platform: 按平台过滤sort_by: 排序字段 (reputation_score, total_hits, ...)
/source-doctor — 搜索渠道诊断
调用 check_channel_status() 并展示格式化的渠道状态报告。
/trace — 完整溯源
等同于执行完整的 7 步编排流程。
/channel-performance — 渠道性能分析
调用 get_channel_performance() 展示各搜索渠道的历史命中率统计。支持可选参数:
info_type: 按信息类型过滤 (TREND/CLAIM/TECH)
/tune-channels — 渠道自动调参
调用 get_tuned_affinities() 展示各渠道的有效亲和度 vs 默认亲和度。使用 ↑↓= 箭头标示渠道被提升或降权。支持可选参数:
info_type: 按信息类型过滤 (TREND/CLAIM/TECH)
MCP Server 工具清单
本 Skill 通过以下 Source Tracker MCP 工具与数据库交互:
| 工具 | 用途 | 使用阶段 |
|---|---|---|
report_discovery |
记录溯源结果 | LEARN (Step 6) |
query_reputation |
查询信源信誉 | 快捷查询 |
list_sources |
信源排行榜 | 快捷查询 |
get_source_profile |
信源完整画像 | 快捷查询 / Step 7 |
correct_judgment |
纠正错误判断 (new_info_type for wrong_type) |
用户反馈 |
register_channel |
注册新渠道 | 管理操作 |
get_channel_registry |
查看渠道注册表 | 管理操作 |
check_channel_status |
检测渠道状态 | Step 2-3 / 诊断 |
get_channel_performance |
渠道命中率统计 | 快捷查询 (V1.2-preflight) |
get_tuned_affinities |
渠道自动调参结果 | 快捷查询 (V1.2) |
get_source_relations |
信源共现关系 | 快捷查询 (V1.2-preflight) |
MCP Resources:
| 资源 URI | 内容 |
|---|---|
source://leaderboard |
信源信誉排行榜 (Top 20, Markdown) |
source://daily-digest |
最近 24h 溯源汇总 (按类型分组) |
错误处理
- 搜索渠道全部不可用:通知用户配置至少一个搜索渠道后重试
- 搜索结果为空:告知用户未找到相关信息,建议扩大搜索范围或使用其他渠道
- JUDGE 结果 inconclusive:展示最佳候选但明确标注置信度不足,建议用户补充更多信源
- 用户纠正判断:指导用户使用
correct_judgment工具修正错误的溯源结果
安装配置
1. 安装 Source Tracker MCP Server
pip install source-tracker # 或 uvx source-tracker
2. 配置 MCP Client
将以下配置添加到 Agent 的 MCP 设置中:
{
"source-tracker": {
"command": "source-tracker",
"args": ["serve"]
}
}
3. 安装 Skill
ln -s /path/to/source-tracker/skill ~/.agent/skills/source-tracker
4. 检查渠道状态
首次使用时,告诉你的 Agent:
帮我检查 Source Tracker 的搜索渠道状态
Agent 会自动调用 check_channel_status() 并显示哪些渠道可用。
# Supported AI Coding Agents
This skill is compatible with the SKILL.md standard and works with all major AI coding agents:
Learn more about the SKILL.md standard and how to use these skills with your preferred AI coding agent.