关于 whoelse
whoelse 是帮助 Agent 查找现有项目、发现空缺并联系相似方向参与者的 MCP 服务。它还能准备合并提案或协作计划,联系和发布操作须经用户确认。
主要功能
- 01搜索 GitHub 上的重复项目
- 02比较项目功能与缺口
- 03起草合并计划和作者消息
- 04从论文、代码和模型中寻找研究者
- 05发布需求并匹配协作者
适用场景
- 01在开始开发前检查已有项目
- 02找出相似仓库共同缺少的功能
- 03为研究者准备协作提案
- 04匹配希望开展相同合作项目的人
MCP 相关
向 MCP 客户端提供 `find_duplicates`、`propose_merge` 及协作和匹配相关工具。
配置
本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。
uvx whoelseGITHUB_TOKEN密钥Optional. Raises GitHub search limits; public_repo scope needed for publish_request, start_joint_work and the watcher.WHOELSE_OPENALEX_KEY密钥Optional. Free OpenAlex API key; without it you share a small per-IP daily budget.WHOELSE_MAILTOOptional. Your email for OpenAlex's polite pool; sent nowhere else.本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。
工具
13收录的工具列表 · 更新于 2 天前
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| name | string | 是 | |
| orcid | any | 否 | |
| github | any | 否 | |
| huggingface | any | 否 | |
| affiliation_hint | string | 否 |
详细介绍
whoelse
别独自开发。
让 Agent 开发某样东西,它就会这么做——这已经是第 21 次了。某个地方,已经有 20 个人开发了它,各自获得 10 个 star,还有 3 个人此刻正在做同样的东西。他们彼此都不认识。
whoelse 会在你写下第一行代码前先进行一次调用:看看已经有什么、谁做得最好、还缺少什么;然后再迈出其他工具都不会迈出的一步:制定计划,把那些小项目合并成一个项目,让每位作者都参与其中;或者找到当前工作与你重叠的人,说明你们两人可以开发什么,并草拟第一条消息。未经你同意,不会发送任何内容。
可在 Claude、Cursor、Codex 或任何 MCP 客户端中运行。无需注册,无需填写个人资料,也无需服务器。免费。
pip install git+https://github.com/beskvladimir-create/whoelse

问题
没人是故意独自工作的。事情只是碰巧变成这样:你发布了成果,什么也没发生,于是回去继续工作。那个本可以引用你、试用你的代码、和你合写下一篇论文的人,身处相隔两个时区的地方,从未听说过你的名字。发现彼此靠的是会议和运气,而大多数人两者都没有。
whoelse 用一次查询取代运气,然后根据查询结果采取行动。
别独自开发
已经有创意检查工具(idea-reality-mcp 会根据 GitHub、HN 和 npm 为创意评分,并止步于“以下是类似项目”)。whoelse 则从它们止步的地方继续。让你的 Agent 开发一个工具:
给我开发一个 CLI,用于在多台机器之间同步 Claude Code 会话。
"a CLI that syncs Claude Code sessions across machines" exists at least 40 times. The leader is
tawanorg/claude-sync (320 stars, last pushed 2026-10-06); the other 39 have a median of 1.
Between them: end-to-end encryption, Cloudflare R2, git-backed sync, Google Drive, LAN sync,
Codex sessions, backup before the 30-day deletion. None of the 40 has a terminal UI, hooks,
an Obsidian export, mobile, or cost tracking.
Options: contribute the missing backend to claude-sync; build only what nobody has; or propose a
merge to the small ones (propose_merge).
(真实输出,2026-11-08,未经身份验证的 GitHub 搜索。)
这就是 find_duplicates。它会在 GitHub 上搜索工具所做的工作(而非它服务的产品),筛选出真正相同的项目、为其排名,并构建功能矩阵:每个项目有什么、只有其中一个项目具备什么、所有项目都缺少什么。结论会先用一句话给出。数百小时花在重复开发同一件事上的时间,以及为此消耗的 token,就此止步。
propose_merge 会更进一步。对于一组小型重复项目,它会编写合并计划(以仍在维护的领头项目为基础;根据各自的 README 列出每个仓库带来的内容;让每位作者都成为拥有写入权限的维护者;不删除任何内容;确定发布日期),并为每位作者在其自己的仓库中撰写一条 issue——他们平时就在这里查看内容。只有在你读过并同意后,这些 issue 才会从你的 GitHub 账户一次性全部发出,因此不会邀请任何作者加入别人的项目:而是邀请所有人加入同一个项目。
GitHub 的可接受使用政策禁止批量发送未经请求的内容,常识也是如此,因此代码中设有限制:每份提案包含 3 到 15 个仍在维护的仓库;每天最多发出 10 条 issue,每条间隔 3 秒;绝不向同一个仓库发送两次(本地账本会记录);绝不向已归档、已分叉、不活跃或归组织所有的仓库发送,也不向已关闭 issue 功能、拥有 1000+ 个 star 或属于你自己的仓库发送。一份提案是一场对话;四十份就是群发邮件。
将它放到 Agent 面前
plugin/ 是一个 Claude Code 插件(MCP 服务加上 dont-build-it-alone 技能),它会让 Agent 在开始开发用户描述的任何东西之前调用 find_duplicates。对于 Cursor、Codex 和其他 MCP 客户端,将同一份技能文本放入规则文件即可。用户会在生成第一行代码之前看到已有的东西,而那正是这些信息唯一有价值的时刻。
真实运行案例按创意分类,每个创意占一页,见 awesome-already-built:Claude Code 会话同步、arXiv MCP 服务、面向大模型的 PII 匿名化、token 成本仪表板、Obsidian 站点生成器、Rust 中的 DICOM。通过 issue 添加创意;通过 pull request 修正你的条目。
它如何让陌生人协作
找到合适的人只是容易的部分。whoelse 专注于更难的部分:两个素不相识的人迅速开始合作完成一件事。
1. 工作在第一条消息发出前就已开始。 start_joint_work 会创建一个代码仓库,其中包含论文大纲、根据双方已发表摘要撰写的第 1 节草稿、列出双方已公布数据的对比表、指向双方代码库的复现脚本、署有双方姓名的作者栏,以及一份为期 14 天的计划。对方收到链接时,这项工作已经完成了三分之一。答应就是打开标题为「in」的问题。拒绝就是不予理会:14 天后,你会独自完成并引用对方。
2. 无需任何信件即可互相匹配。 publish_request 会将你想要构建的内容放入一个开放注册表(每人一个 JSON 文件,存放在公开的 GitHub 代码仓库中;无需在我们这里注册账号,也没有服务器)。它会公开你的姓名和电子邮件地址,因此你的 Agent 会先向你展示该文件,并在发布前征求你的同意。任何安装了 whoelse 且有相同问题的人都会与你匹配。如果双方想要的格式相同、要解决的问题也相同,一名监视程序(姓名按字母顺序排在前面的一方)会创建代码仓库、邀请另一方,并向双方发送电子邮件;另一名监视程序会看到代码仓库出现并确认,或在沉默三天后接手。
3. 没有人会从队列中掉队。 如果今天没有匹配对象,whoelse 会直接说明:
你的请求已发布。网络中有 37 人在等待,但目前还没有人关注 text-to-SQL。有人加入后,工作便会自动开始,并将链接发送至 [email protected]。你无需做任何事;只要别移除 whoelse 即可。
whoelse-watch --loop 6h 会持续检查。链接会通过电子邮件送达(使用你自己的 SMTP,或在代码仓库创建并邀请你时通过 GitHub 自带的通知发送)。
4. 陌生人,这是刻意设计的。 已与你合作发表过成果的人会单独列出,绝不会被推荐。与您的请求共享同一 ID 的请求会被跳过。互补的资产得分更高:你的代码对应他们的数据,他们的论文对应你的系统。
5. 不会仅凭一个文件就公开任何人的姓名。 注册表文件是陌生人写入的数据,必须符合严格的架构;只有在 ids.github 是发起拉取请求的登录账号,且该文件不属于其他人时,注册表的 CI 才会合并该文件;只有当该 GitHub 个人资料的显示名称与文件中的姓名一致时,监视程序才会据此采取行动。这能证明文件属于该账号,却不能证明该账号就是文件中所写的研究人员,因此联合代码仓库会创建为私有,并邀请该账号;只有对方接受邀请并说「in」后,代码仓库才会公开。如果对方始终没有回应,你会独自完成并在发布时引用对方的工作,但不署对方的姓名。已经存在的代码仓库绝不会被覆盖。
你会得到什么
向你的 Agent 提问:
加载我的个人资料:Vladimir Beskorovainyi,ORCID 0009-0004-7005-6242。还有谁在做这方面的工作?
25 people are working on what Vladimir Beskorovainyi is working on (personal papers; archives; text classification).
4 can be written to today.
0. Angelo La Gorga (Universidad Carlos III de Madrid): same problem: personal papers; active 2026-09. reach: email
1. Fabian Karl (Universität Ulm): same topic: computational and text analysis, text classification; active 2026-01. reach: email
2. Lukas Galke (University of Southern Denmark): same topic: text classification; active 2026-01. reach: email
与 Ada Example 开始撰写比较说明(仅作示例;以下姓名均为虚构)。
Repository: github.com/you/you-example-text-to-sql
paper/paper.md outline; section 1 drafted from both abstracts; table with published numbers
repro/run.py both methods, same data, same metric; each side fills its half
PLAN.md 14 days to a preprint
CITATION.cff both names
Send this: three sentences, the link, one yes/no question. To: [email protected] (from her whoelse card)
发布我的请求:在 12 月前,为封闭企业数据撰写一份 text-to-SQL 比较说明。
Your request is published. 2 people are waiting in the network; 1 wants what you want: Ana Example
(illustration), text-to-sql, has a dataset you don't. Joint work can start now.
它如何找到合适的人
从三个方向同时搜索,然后合并为人员:
| 方向 | 来源 | 能找到什么 |
|---|---|---|
| 论文 | OpenAlex 关键词和主题;对于 OpenAlex 尚未收录的预印本,则搜索 arXiv | 过去 24 个月内发表过与你的问题完全相关内容的人 |
| 代码 | GitHub 仓库搜索 | 正在开发相关项目的人 |
| 模型和数据 | Hugging Face Hub | 发布过权重或数据集的人(会过滤掉量化版本和重新打包的内容) |
只有第二条信号确认关联时,GitHub 登录账号、Hugging Face 账号和 OpenAlex 作者才会合并为同一个人:相同的所属机构、论文链接到该账号,或相同的网站。仅姓名相同不会合并,而是标记为可能同名,这样一个人的邮箱就不会和另一个人的成果放在一起。系统会识别并排除组织账号(例如公司的 GitHub 账号、实验室的 Hugging Face 账号)。在 arXiv 评论中链接自己代码的作者会自动关联,包括你:告诉 whoelse 你的姓名,它通常会自行找到你的账号。
如果有多人与你同名,whoelse 不会猜测。它会显示这些同名者,并请你提供 ORCID 或所属机构。
第三个触达渠道是按全名搜索 GitHub 用户;只有当搜索结果恰好有一个账号,且其仓库涉及相同主题时才会使用,否则就忽略。在真实数据中,它能找到约三分之一没有留下 ORCID 信息的研究人员。
它如何联系他们
只使用对方自行公开的信息,并且每种联系方式都会注明来源:
- ORCID:公开邮箱、个人网站、GitHub、Scholar、LinkedIn(绝不会读取可见范围受限的邮箱)
- GitHub 个人资料:公开邮箱、网站
- 对方自己的网站:如果有 whoelse 卡片,则使用该卡片
绝不会使用 arXiv 提交者的邮箱。arXiv 的条款禁止将这些邮箱用于未经请求的联系,而且我们也不需要它们。
网络
一个公开的 GitHub 仓库,beskvladimir-create/whoelse-network,每个人在 people/ 下各有一个 JSON 文件。你的 Agent 会创建拉取请求(使用具有 public_repo 作用域的 GITHUB_TOKEN),或者写入文件并告诉你放在哪里。再次调用 publish_request 会在同一分支上续期或更新你的文件。请求会在三个月后过期。读取无需账号。没有服务端,也无需注册;这个仓库就是目录。注册表自己的 CI 和 README 位于本仓库的 registry/ 下。
whoelse-watch 每次运行都会读取最新内容(注册表绝不会从缓存提供),将你的请求与其他所有人的请求进行匹配;当两个人想要针对同一问题采用相同格式时,它会构建工作区、创建仓库、邀请另一方并给双方发送邮件;每对人只执行一次,并在每个步骤后保存状态。可通过 cron 或 launchd 运行:
0 */6 * * * whoelse-watch
卡片:无需服务端的互联模式
将以下内容放到你自己的网站 /.well-known/whoelse.json:
{
"name": "Ada Example",
"working_on": ["text-to-SQL on open-weight models", "schema linking"],
"open_to": ["co-author", "joint benchmark", "talk together"],
"contact": "[email protected]",
"languages": ["en", "pt"],
"updated": "2026-11-07"
}
现在,任何运行 whoelse 的人都会看到你处于已连接状态:可以联系,并且愿意按照你所说的内容开展合作。如果双方都有卡片,双方只需调用一次 joint_work_brief,就能获得同一份提案;同时将提案发送给双方已列入规划。无需注册表、账号或任何中心化设施。Web 就是目录。make_card 会生成你的卡片。
你的人脉
决定某人是你的人脉之一后(add_peer),whoelse 会关注他们发布的内容,并在有值得支持的内容时通知你:值得试用并点星标的仓库、值得引用或讨论的论文、值得用你的数据运行并反馈结果的模型。它绝不会代替你点星标、关注或点赞。GitHub 将自动点星标和关注视为滥用排名,而一个伪造自身信号的人脉圈,对其中的人毫无价值。
工具
| 工具 | 说明 |
|---|---|
load_profile | 从 OpenAlex、arXiv、GitHub、Hugging Face、ORCID 获取你的个人资料 |
find_overlaps | 查找近期工作与你重叠的人,按相关度排序,并附上理由和公开联系方式 |
joint_work_brief | 针对某个人:提供证据、双方各自的资源、按契合度和工作量排序的合作形式,以及共同的发布平台 |
draft_outreach | 提供首封消息的事实依据和结构;由你的 Agent 撰写,再由你发送 |
add_peer、remove_peer、whats_new_from_peers | 管理你的人脉,以及他们本月发布的成果 |
find_duplicates | 开始构建前,了解已有成果、谁取得了成果,以及还有哪些空白 |
propose_merge | 为一组重复项目制定合并计划,并为每位作者创建一个 issue(仅在你同意后发送) |
publish_request | 加入网络:说明你想构建什么、与谁合作以及截止时间 |
start_joint_work | 创建一个已完成三分之一工作、署有双方姓名的代码仓库 |
make_card | 创建你的 /.well-known/whoelse.json |
list_known | 列出此机器上的个人资料和人脉 |
安装
pip install whoelse # or: pip install git+https://github.com/beskvladimir-create/whoelse
Claude Code:claude mcp add whoelse -- whoelse
Claude Desktop、Cursor、Codex 等客户端,在 MCP 配置中添加:
{ "mcpServers": { "whoelse": { "command": "whoelse" } } }
可选环境变量:
| 变量 | 作用 |
|---|---|
WHOELSE_OPENALEX_KEY | 从 openalex.org/settings/api 获取的免费密钥;不设置时,你与同一 IP 的用户共享较少的每日配额 |
WHOELSE_MAILTO | 你在 OpenAlex 礼貌请求池中使用的邮箱;不会发送到其他地方 |
GITHUB_TOKEN | 提高 GitHub 搜索限额(任何权限范围均可);publish_request、start_joint_work 和 watcher 需要 public_repo 权限范围 |
WHOELSE_SMTP_HOST、_PORT、_USER、_PASS、_FROM | watcher 的邮件配置,邮件由你的邮箱地址发送;未设置时,通知会存入 ~/.whoelse/inbox/ |
WHOELSE_HOME | 存放个人资料、人脉和缓存的位置(默认为 ~/.whoelse) |
它不会做什么
- 不会替你发送信件。草稿由你负责发送,每次联系一人,并使用你自己的邮箱地址。 唯一会自动发送的消息来自 watcher:发送给你,以及一位经过验证的陌生人;在你加入网络并确认发布内容后,发送一次,并附上公开代码仓库链接。
- 不会使用对方未自行公开的联系方式(其 ORCID、GitHub、个人名片或注册文件)。
- 不会替你加星标、关注、点赞或发布内容。
- 除你确认过的注册文件和你提出创建的合作代码仓库外,不会在你的机器之外保存任何与你有关的信息。
首次使用自己的姓名运行
[email protected] python -m whoelse.scripts.first_run "Your Name" --orcid 0000-0000-0000-0000
它会列出相关人员、理由、每个人最适合的合作形式以及联系方式,并将所有内容保存到 whoelse-first-run.json。不会发送任何内容。
开发
git clone https://github.com/beskvladimir-create/whoelse && cd whoelse
pip install -e ".[dev]"
pytest # offline, on recorded fixtures
WHOELSE_FIXTURES=tests/fixtures python -m whoelse.server # offline demo server
数据来源:OpenAlex(CC0)、arXiv(CC0 元数据)、ORCID 公共 API、GitHub、Hugging Face Hub。均无需密钥。
MIT。
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。