mcpField
W
whoelse

whoelse

本地服务
github.com/beskvladimir-create开发工具03 天前更新

关于 whoelse

whoelse 是帮助 Agent 查找现有项目、发现空缺并联系相似方向参与者的 MCP 服务。它还能准备合并提案或协作计划,联系和发布操作须经用户确认。

主要功能

  1. 01搜索 GitHub 上的重复项目
  2. 02比较项目功能与缺口
  3. 03起草合并计划和作者消息
  4. 04从论文、代码和模型中寻找研究者
  5. 05发布需求并匹配协作者

适用场景

  1. 01在开始开发前检查已有项目
  2. 02找出相似仓库共同缺少的功能
  3. 03为研究者准备协作提案
  4. 04匹配希望开展相同合作项目的人

MCP 相关

向 MCP 客户端提供 `find_duplicates`、`propose_merge` 及协作和匹配相关工具。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"beskvladimir-create-whoelse": {
"command": "uvx",
"args": [
"whoelse"
],
"env": {
"GITHUB_TOKEN": "<GITHUB_TOKEN>",
"WHOELSE_OPENALEX_KEY": "<WHOELSE_OPENALEX_KEY>",
"WHOELSE_MAILTO": "<WHOELSE_MAILTO>"
}
}
}
}
启动命令uvx whoelse
需要配置的环境变量
GITHUB_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+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiwhoelse0.1.0

工具

13

收录的工具列表 · 更新于 2 天前

参数类型必填说明
namestring是
orcidany否
githubany否
huggingfaceany否
affiliation_hintstring否

详细介绍

whoelse

别独自开发。

让 Agent 开发某样东西,它就会这么做——这已经是第 21 次了。某个地方,已经有 20 个人开发了它,各自获得 10 个 star,还有 3 个人此刻正在做同样的东西。他们彼此都不认识。

whoelse 会在你写下第一行代码前先进行一次调用:看看已经有什么、谁做得最好、还缺少什么;然后再迈出其他工具都不会迈出的一步:制定计划,把那些小项目合并成一个项目,让每位作者都参与其中;或者找到当前工作与你重叠的人,说明你们两人可以开发什么,并草拟第一条消息。未经你同意,不会发送任何内容。

可在 Claude、Cursor、Codex 或任何 MCP 客户端中运行。无需注册,无需填写个人资料,也无需服务器。免费。

pip install git+https://github.com/beskvladimir-create/whoelse

whoelse:Agent 写下第一行代码前会说什么


问题

没人是故意独自工作的。事情只是碰巧变成这样:你发布了成果,什么也没发生,于是回去继续工作。那个本可以引用你、试用你的代码、和你合写下一篇论文的人,身处相隔两个时区的地方,从未听说过你的名字。发现彼此靠的是会议和运气,而大多数人两者都没有。

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、_FROMwatcher 的邮件配置,邮件由你的邮箱地址发送;未设置时,通知会存入 ~/.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。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。