overlap-analysis
分析两个电话号码之间的关系重叠情况,包括共同对端、共享设备、直接通话、重叠比例和关键证据点。适用于用户询问两个号码有没有共同联系人、共同设备或联系圈重叠;不负责多跳路径解释、单号画像、群体分析或地域对比。
Files6
View on GitHubSKILL.mdskills/custom/phone-network-analysis/overlap-analysis/SKILL.md
GitHuboverlap-analysis
这个 skill 是做什么的
这是一个 YiGraph 风格的重叠关系分析 skill,专门回答“两个号码到底重叠了多少、重叠在哪些地方、这种重叠是否异常”这类问题。
它不重点回答“这两个号码怎么连起来”,那是 association-path-analysis 的职责;
它重点回答的是:
- 两个号码有没有 共同对端
- 两个号码有没有 共享设备
- 两个号码有没有 直接通话
- 这些重叠关系的 数量、比例、强弱等级
- 哪些共同对端 / 共享设备是最值得优先核查的 关键证据点
- 下一步应该优先查什么
它属于一个 高级分析 skill,建立在基础算子 graph-operator 之上,用于把基础查询结果包装成更像 YiGraph 的业务解释输出。
和 YiGraph 的关系
这个 skill 主要对齐 YiGraph 里的这几类能力:
Graph Query / common_neighbor
- 对应“两个节点的共同邻居是谁”
- 在电话网络任务里,对应“两个号码的共同对端是谁”
relationship_filter / aggregation_query
- 对应“边和关系的筛选、计数、聚合”
- 在电话网络任务里,对应“共享设备数、共同对端数、重叠率、强弱分级”
YiGraph 风格的解释层
- 不只返回原始列表,还返回:
- 重叠强度判断
- Top 证据节点
- 风险提示
- 下一步调查建议
- 不只返回原始列表,还返回:
也就是说,这个 skill 不是直接把 YiGraph 的原始服务搬进来,而是:
复用 YiGraph 的问题分类方式 + 查询能力映射方式 + 解释风格,结合你当前电话网络数据做适配实现。
实际调用脚本
/mnt/skills/custom/phone-network-analysis/overlap-analysis/scripts/overlap_analysis_wrapper.py
推荐调用方式
cd /mnt/skills/custom/phone-network-analysis/overlap-analysis/scripts && python3 overlap_analysis_wrapper.py \
--phone-a "<PHONE_A>" \
--phone-b "<PHONE_B>" \
--top-k 10 \
--min-common-counterparty 1
参数说明
--phone-a:号码 A--phone-b:号码 B--call-graph-path:通话边文件,默认/mnt/datasets/phone-network/processed/unified/call_edges.csv--device-graph-path:号码-设备边文件,默认/mnt/datasets/phone-network/processed/graph_views/unified/edges_phone_imei.parquet--graph-format:通话边文件格式,默认csv--source-col:通话边起点列,默认src_user_id--target-col:通话边终点列,默认dst_counterparty_id--device-source-col:号码-设备边起点列,默认user_id--device-target-col:号码-设备边终点列,默认imei--top-k:返回多少个共同对端 / 共享设备证据预览,默认10--min-common-counterparty:判定“共同对端重叠”时的最低证据数门槛,默认1
推荐输出结构
前端分析时,建议固定输出下面这几部分:
直接配对信号
- A→B 是否直接通话
- B→A 是否直接通话
共同对端重叠分析
- A 的对端数
- B 的对端数
- 共同对端数
- Jaccard 重叠率
- Top-K 共同对端证据
共享设备重叠分析
- A 的设备数
- B 的设备数
- 共享设备数
- Jaccard 重叠率
- Top-K 共享设备证据
综合重叠强度判断
- strong / medium / weak / none
关键证据点排序
- 哪些共同对端最值得查
- 哪些共享设备最值得查
下一步调查建议
Markdown 报告
这个 skill 适合回答哪些问题
- “这两个号码有没有共同联系人?”
- “这两个号码的重叠关系强不强?”
- “它们有没有共享设备?”
- “这两个号码是否属于同一个联系圈?”
- “共同对端多不多?值不值得继续查?”
- “共享设备是不是异常强证据?”
和 association-path-analysis 的区别
association-path-analysis:回答 怎么连起来的overlap-analysis:回答 重叠得有多强
你可以把它理解成:
- 路径 skill 负责“链路”
- overlap skill 负责“重合度”
两者是互补关系,不是重复关系。
前端首测推荐参数
建议先用:
top_k=10min_common_counterparty=1
如果结果太泛,再逐步收紧到:
top_k=5min_common_counterparty=2
文件输出说明(必须遵守)
脚本会自动生成 Markdown 报告,并保存到:
/mnt/user-data/outputs/
前端执行时的强制要求
当 overlap_analysis_wrapper.py 返回 JSON 后:
- 必须读取返回结果中的
report_path - 必须确认该文件存在
- 最终回复中必须把这个 Markdown 文件作为最终产物交付
- 不要只打印
report_path这个字符串
推荐执行流程
先执行分析脚本,例如:
cd /mnt/skills/custom/phone-network-analysis/overlap-analysis/scripts && python3 overlap_analysis_wrapper.py \
--phone-a "<PHONE_A>" \
--phone-b "<PHONE_B>" \
--top-k 10 \
--min-common-counterparty 1
如果返回结果里有:
report_path
则继续确认文件存在:
test -f "<REPORT_PATH>" && echo "REPORT_EXISTS"
然后在最终回答中:
- 正常展示分析结果
- 单独列出报告文件路径
- 把该 Markdown 文件作为最终报告产物返回
说明
如果前端只显示路径文本而没有下载卡片,这通常不是分析脚本失败,而是文件交付动作没有被明确执行。 因此,调用本 skill 时,必须把“报告文件交付”当成最后一步,而不是只展示路径。