# 场景 4：科研协作智能匹配

> **执行方式：AI Agent 直接执行**（无脚本，需语义理解匹配理由）

## 目标

分析研究者的代码仓库特征，在 GitLink 上搜索互补项目和潜在合作者，生成有说服力的匹配推荐及理由。

## 参数获取

向用户询问：
1. **源仓库**（必需）：owner 和 repo（可从当前目录 git remote 自动解析）
2. **额外搜索关键词**（可选）：不填则从仓库自动提取
3. **推荐上限**（可选，默认 5）

## Agent 执行步骤

### Step 1: 分析源仓库画像

```bash
gitlink-cli repo +info --owner <o> --repo <r> --format json
gitlink-cli repo +members --owner <o> --repo <r> --limit 20 --format json
gitlink-cli issue +list --owner <o> --repo <r> --state open --limit 30 --format json
```

从返回数据中提取（需 AI 理解）：
- **技术栈**：从 language 字段 + description 推断具体技术（如 "Go + CLI + DevOps"）
- **领域主题**：从 description 提取 3-5 个有意义的科研/技术领域词
- **现有成员技能画像**：成员数量和活跃度
- **help-wanted 需求**：扫描 Issue 标题含 "help wanted" / "求助" / "good first issue" 的
- **仓库定位**：工具类 / 库 / 应用 / 论文代码 / 数据集

### Step 2: 提取搜索关键词

AI 从源仓库画像中提取 3-5 个搜索关键词：
- 互补语言/框架（如源用 Python，则搜索 C++/Rust 高性能库）
- 相关领域词（如源做 NLP，则搜索 "text processing", "tokenizer", "embedding"）
- 不要用过于宽泛的词（如 "code", "test", "tool"）

### Step 3: 搜索候选仓库

对每个关键词：
```bash
gitlink-cli search +repos --keyword "<kw>" --limit 5 --format json
```

合并去重（按 full_name），排除源仓库自身。
API 返回结构：`{ok, data: {projects: [...]}}`

如果候选太多（>15），AI 筛选最相关的 10 个进行深度分析。

### Step 4: 分析候选仓库

对每个候选仓库获取：
```bash
gitlink-cli repo +info --owner <co> --repo <cr> --format json
gitlink-cli repo +members --owner <co> --repo <cr> --limit 20 --format json
gitlink-cli issue +list --owner <co> --repo <cr> --state open --limit 30 --format json
```

### Step 5: AI 匹配评估（核心）

对每个候选仓库，AI 从五个维度评估并给出 0-100 的匹配评分：

#### 1. 技能互补性（权重 30%）
- 源仓库和候选仓库的技术栈不同 → 互补性高
- 完全相同的技术栈 → 互补性低，但可能有协作深化机会
- AI 需要判断：技术差异是有意义的互补还是无关

#### 2. 领域重叠度（权重 20%）
- 两个仓库的领域主题有多少重叠
- 完全无关的领域 → 低分；相同领域不同方法 → 高分

#### 3. help-wanted 匹配度（权重 20%）
- 候选仓库有没有源方技能可以解决的 help-wanted issue
- 不只是计数，要判断 Issue 内容是否匹配源方技能

#### 4. 生态桥接（权重 15%）
- 两个仓库是否在同一个技术生态中
- 比如都用 PyTorch、都做数据处理管线、都是 CLI 工具等

#### 5. 已有合作基础（权重 15%）
- 是否有共享的贡献者
- 是否相互引用（README 中的 URL 引用）

**匹配等级：**
| 评分 | 等级 | 建议 |
|------|------|------|
| ≥ 70 | Strong | 强烈推荐，可主动联系 |
| 50-69 | Good | 推荐关注 |
| 30-49 | Possible | 可保持关注 |
| < 30 | Weak | 不推荐 |

### Step 6: 生成推荐理由

**关键：每个推荐必须有具体的、有说服力的理由，不能是模板套话。**

好理由 vs 坏理由：

| 坏理由（不要写） | 好理由（应该写） |
|-----------------|-----------------|
| "技术栈互补" | "源方是 Go CLI 工具，候选是 Rust 高性能计算库，可在数据处理管线协作" |
| "领域重叠" | "双方都在 NLP 领域，源方做推理优化，候选做模型量化，技术上有直接结合点" |
| "有 help-wanted" | "候选有3个关于 API 文档的 help-wanted Issue，源方擅长 CLI 开发正好互补" |

### Step 7: 输出结果

1. **控制台摘要**：Top 5 匹配结果表格（排名、仓库、评分、等级、一句话理由）
2. **JSON 文件**（可选）：`output/collab-match-{date}.json`
3. **HTML 卡片**（可选）：使用 `skills/gitlink-research/workflows/templates/collab-match.html` 模板

## 注意事项

- 推荐质量 > 数量，宁可只推荐 2 个优质匹配，不要堆砌 10 个低质量匹配
- 如果候选仓库没有实质内容（空 description、0 成员、僵尸仓库），直接跳过
- 匹配理由要用中文、短句、具体
- 如果找不到高质量匹配，诚实告知用户"当前领域在 GitLink 上暂无可协作项目"
