TimSimpsonJr/researcher
GitHub: TimSimpsonJr/researcher
一款 Claude Code 插件,通过置信度门控的多跳网络研究将任意主题自动整理为带引用和交叉链接的 Obsidian 知识库笔记,无需付费 API。
Stars: 6 | Forks: 0
# Researcher
    
Researcher 是一款 Claude Code 插件,能够为您进行真实的网络研究,并将结果整理归档为完成的笔记。只需交给它一个主题或一份包含五十个主题的列表,几分钟后,您的 Obsidian 库中就会有一批新笔记等待查阅。每一条笔记都经过了充分的研究和来源质量评估,并与您现有的笔记建立了交叉链接。它会按照您一贯的方式存入您的知识库,使用 `[[wikilinks]]` 链接到您现有的笔记,并在底部附上来源部分。
它运行在 Claude Code 自身的 subagents(或您机器上的本地模型)上,因此无需配置单独的 API key,也不必关注每次搜索产生的账单。
## 工作原理
**您的主题** → resolver 规划深度和模式 → 运行 **hop loop**(搜索并划分来源等级 → 抓取并清理页面 → 总结 → 评估置信度),不断循环直到收集了足够的信息或达到预算上限 → **quality gate** 将内容单薄的主题打回重做 → **Librarian** 将带有引用的笔记归档到您的知识库中,扫描 wikilinks,并建议后续线索。
## 您可以用它做什么
- **查询任何事物。** `/researcher "南卡罗来纳州车牌读取器的历史"`,它会返回一组带有链接的小型笔记,而不是 14 个打开的浏览器标签页。
- **交给它一整个列表。** 将它指向一个包含多个主题的文件,它会处理完所有的主题,而不仅仅是前几个。
- **并行处理大批量任务。** 有 30 或 50 个主题?Researcher 会将它们分发并同时进行研究,而不是一个接一个地处理,然后将它们全部写入您的知识库。(这是最新的功能,专为有大量处理需求的用户设计。)
- **让它寻找下一个线索。** 在处理完一个批次后,它会回读刚写下的内容,找出值得追踪的未决问题,并主动提议对这些内容也进行研究。
- **将一切集中在一处。** 新笔记会链接到您已有的笔记并存在于您的知识库中,而不是在另一个独立的应用程序里。
## 它的实用之处
它会检查自己的来源:一篇同行评审的论文或官方数据集比随意的博客文章更有分量,并且研究会一直进行,直到收集了足够的可靠材料或到达合理的停止点。
对于任何模糊或庞大的任务,它会先向您展示计划:包括它将要做什么,以及大致会消耗的时间与 token。然后由您来决定是否开始。
除了您已为 Claude 支付的费用外,它不产生任何额外成本。这些工作通过 Claude Code 完成,如果您有本地模型(Ollama),还可以选择由其来进行总结。
## 快速开始
从 Fieldwork marketplace 安装它:
```
/plugin marketplace add TimSimpsonJr/fieldwork-plugins
/plugin install researcher@fieldwork
```
只需设置一次您的知识库位置:
```
/researcher-setup
```
然后就可以研究任何内容了:
```
/researcher "any topic"
```
设置向导会逐步引导您完成配置,并且在未经询问的情况下绝不会擅自更改任何内容。
## 三种运行方式
- **单一主题。** `/researcher "量子计算"` 会从头到尾研究单个主题。
- **批次处理。** `/researcher batch topics.md` 会处理文件中的一系列主题。当主题数量超过大约 10 个时,它会自动切换到并行批处理引擎。
- **线索追踪。** 在处理完一个批次后,它会在您的新笔记中发现并建议后续主题,由您决定要追踪哪些内容。
## 底层机制
一次运行背后的工作机制。
### Depth
规划器为每个主题分配一个 depth,这决定了它在停止之前会挖掘得多深:
| Depth | Hop limit | Confidence target | Typical use |
|--------------|-----------|-------------------|---------------------------------------------|
| `quick` | 1 | 0.6 | 快速查找或小型的澄清问题 |
| `standard` | 3 | 0.7 | 大多数日常主题 |
| `deep` | 4 | 0.8 | 需要第一手资料的技术或政策工作 |
| `exhaustive` | 5 | 0.9 | 达到研究论文级别的覆盖范围 |
### 研究循环
每个主题都会运行一个循环:搜索来源(按可信度评分)、抓取并清理页面(带有缓存机制,因此绝不会重复下载相同内容)、进行总结,然后决定下一步做什么。规划器要么继续沿着选定的线索深挖,要么因为资料已足够而停止,或者在来源相互矛盾或报道陷入停滞时重新规划。最后的 quality check 会将内容单薄的主题打回重做(最多两次),之后便会将其标记并继续处理下一个。
### 来源评级
每个来源都会获得一个从 T1(同行评审作品、原始文档、官方数据集)到 T4(评论专栏、个人博客、社交媒体帖子)的等级,并带有单独的标志以表明其是否为第一手来源。主题的置信度综合了四个方面:来源等级的多样性、主题被覆盖的程度、是否出现了第一手来源,以及总体来源数量是否充足。第二个信号会监测是否存在矛盾,并可自行触发重新规划。
### 笔记去向
Researcher 将撰写好的内容交给其配套插件 [Librarian](https://github.com/TimSimpsonJr/librarian),由它将研究内容转化为规范的知识库笔记:分类归入正确的文件夹、打上标签、通过 wikilink 链接到已有内容,并保持 map-of-content 页面的实时更新。(Researcher 需要 Librarian 才能运行;请从同一个 Fieldwork marketplace 安装。)
### 运行需求
Researcher 在三个 tier 上运行,并会自动检测您当前所处的层级:
| Tier | 您拥有的内容 | 您获得的功能 |
|----------|-----------------------------------------------------|---------------------------------------------------------------------|
| **Base** | Claude Code(仅此而已) | 完整的 pipeline,全部通过 subagents 完成 |
| **Mid** | Base,加上 [Ollama](https://ollama.com) | 总结工作在您的本地机器上完成 |
| **Full** | Mid,加上 SearXNG, Playwright, yt-dlp, Whisper | 私密搜索、重度依赖 JavaScript 的页面、YouTube 及音频转录 |
`/researcher-setup` 会检查您现有的工具,并可以为您启动这些可选组件。
### 项目布局
请参阅 [MANIFEST.md](MANIFEST.md) 以获取完整的文件树以及各组件之间的组合方式。
## 面向开发者
```
pip install -r requirements.txt
pip install pytest pytest-mock
pytest tests/ -v
```
Python 测试套件包含 389 个测试,全部为离线运行,无需 API key。批处理工作流的 JavaScript helpers 有其自己的 `node --test` 套件(在仓库根目录运行 `node --test`)。
**前置要求:** Python 3.12,[Claude Code](https://docs.anthropic.com/en/docs/claude-code),以及一个 [Obsidian](https://obsidian.md/) 知识库。
**可选配置(Full tier):** Docker(用于 SearXNG),Ollama,Playwright,`yt-dlp`,`openai-whisper`。
## Fieldwork 套件的一部分
- [Researcher](https://github.com/TimSimpsonJr/researcher):将来源整理为带引用的笔记
- [Magpie](https://github.com/TimSimpsonJr/magpie):分析 FOIA/数据并转化为发现
- [Librarian](https://github.com/TimSimpsonJr/librarian):将发现整理为带链接的知识库笔记(共享层)
- [Copydesk](https://github.com/TimSimpsonJr/copydesk):以您的口吻撰写发现报告
## 许可证
MIT
标签:AI风险缓解, Claude Code, Obsidian, Python, 数据可视化, 无后门, 特征检测, 知识管理, 自动化研究, 请求拦截, 逆向工具