关于 DevGlobe
DevGlobe 是面向人类与 AI Agent 的开源人才图谱,可在 3D 地球上查找开发者并按技能、地点和语言搜索。它基于 GitHub 与 StackOverflow 的贡献信号进行综合评分,并提供可公开访问的 MCP 端点。
主要功能
- 013D 地球展示开发者位置
- 02基于向量与混合检索的开发者搜索
- 030–100 综合评分(6 个维度)
- 04按国家、语言及分数排序的排行榜
- 05无需凭据即可访问的远程 MCP 端点
- 06VS Code 扩展支持私有编码统计
适用场景
- 01按技能或地区查找开源开发者
- 02让 AI Agent 搜索公开开发者资料
- 03在本地以示例数据体验开发者图谱界面
MCP 相关
该项目向 MCP 客户端提供托管在 /mcp 的远程端点,用于搜索公开开发者资料;验证过的 Agent 还可请求经开发者同意的引荐。
配置
远程服务无需本地安装。选择你使用的客户端,复制配置或使用一键安装。
https://www.devglobe.dev/mcpclaude mcp add --transport http sajeetharan-devglobe https://www.devglobe.dev/mcp{"mcpServers":{"sajeetharan-devglobe":{"type":"http","url":"https://www.devglobe.dev/mcp"}}}在 Cursor 中打开{"servers":{"sajeetharan-devglobe":{"type":"http","url":"https://www.devglobe.dev/mcp"}}}在 VS Code 中打开{"mcpServers":{"sajeetharan-devglobe":{"type":"http","url":"https://www.devglobe.dev/mcp"}}}{"mcpServers":{"sajeetharan-devglobe":{"serverUrl":"https://www.devglobe.dev/mcp"}}}命令在终端中运行;JSON 粘贴到对应客户端的 MCP 配置后重启。需要授权的服务会在首次连接时提示登录。
工具
8| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
| limit | integer | 否 | 结果数上限,范围为 1 到 20 |
| query | string | 是 | 必填的自然语言公开搜索意图,例如 "TypeScript maintainers" 或开发者姓名 |
| language | string | 否 | 可选的主要编程语言,例如 "TypeScript" |
| location | string | 否 | 可选的公开地点文本,例如 "Germany" 或 "Colombo" |
| opportunityType | enum | 否 | 可选的、由本人声明的当前机会类型;不要推断其可用状态employment | contract | open-source | speaking | mentoring |
| availableForAgents | boolean | 否 | 仅当用户需要查找接受已验证 Agent 请求的个人资料时,才设为 true |
详细介绍
🌐 DevGlobe
面向人类和 AI Agent 的开源人才图谱。
超过 26,000 名开发者 · 根据星标、提交、仓库影响力和 StackOverflow 声望排名 · 可按技能、地点和语言搜索
DevGlobe 是面向人类和 AI Agent 的开源人才图谱。它将 3D 开发者地图与 Azure Cosmos DB 向量和混合搜索相结合,根据真实贡献信号而非单纯的人气,发掘相关专业人才。长远愿景是构建一个尊重同意的发现层,让 AI Agent 能找到合适的人类协作者。
动态应用托管在 Azure Container Apps 上。产品、API、MCP、Agent Skill 和 Agent 就绪情况相关文档另行发布于 GitHub Pages。
重要
**将 AI Agent 连接到 DevGlobe:**兼容 MCP 的 Agent 可使用托管端点
https://www.devglobe.dev/mcp,无需凭据即可搜索公开的开发者档案。经过验证的 Agent 还可以申请由开发者批准的引荐。请参阅 MCP 设置指南。**编码时展示自己的动态:**安装 DevGlobe: Live Coding Globe,选择 Go Live,即可在开发时出现在地球仪上,同时生成私密的编码统计数据。此扩展绝不会读取源代码、文件路径、仓库、分支或按键记录。
🎬 观看 DevGlobe 演示
✨ 功能
- 交互式 3D 地球仪 — 使用 Three.js 探索标注在真实地理位置上的开发者
- AI 驱动的搜索 — 通过 Azure Cosmos DB 提供混合搜索和向量搜索(例如“AI 和深度学习”“全栈 JS 开发者”)
- 综合评分 — 从 6 个维度为每位开发者打分,范围为 0–100
- 排行榜 — 按国家或语言筛选,或按分数、星标和提交数排序
- 开发者档案 — 点击任意标记,查看详细统计数据、热门仓库和贡献明细
- 远程 MCP 访问 — Agent 可通过托管工具发现开发者,并申请需经同意的引荐
- VS Code 扩展 — 在开发者地球仪上展示动态、生成私密编码统计数据、搜索开发者,并在编辑器中配置 MCP
- 适配移动设备 — 在小屏幕上提供底部抽屉式筛选器和全宽搜索框
🚀 快速开始
选项 1:零配置(示例数据,无需数据库)
git clone https://github.com/sajeetharan/devglobe.git
cd devglobe
npm install
npm run dev
# Open http://localhost:3000
未配置 Cosmos DB 凭据时,应用会自动回退到捆绑的示例数据(20 位开发者)。无需 API 密钥、无需模拟器、无需设置——只需克隆并运行。
文本搜索完全支持离线使用。向量/混合搜索需要 Azure OpenAI(见选项 3)。
选项 2:Cosmos DB Emulator(本地完整数据库体验)
适用于开发 API 层或数据管道的贡献者:
-
安装 Cosmos DB Emulator — 在此处下载(Windows、通过 Docker 使用的 macOS,或 Linux Docker)
-
启动模拟器,并等待其在
https://localhost:8081就绪 -
将示例数据植入模拟器:
npm run seed-emulator -
创建
.env.local(植入脚本会为你打印此内容):COSMOS_ENDPOINT=https://localhost:8081 COSMOS_KEY=C2y6yDjf5/R+ob0N8A7Cgv30VRDJIWEHLM+4QDU5DE2nQ9nDuVTqobD4b8mGGyPMbIZnqyMsEcaGQy67XIw/Jw== -
运行应用:
npm run dev
上面的模拟器密钥是 Microsoft 的众所周知的模拟器密钥——它有意公开,且只能在本地使用。
选项 3:完整 Azure 后端(向量 + 混合搜索)
适用于包含 AI 驱动搜索的完整体验:
# .env.local
COSMOS_ENDPOINT=https://your-account.documents.azure.com:443/
COSMOS_KEY=your-cosmos-key
AZURE_OPENAI_ENDPOINT=https://your-openai.openai.azure.com/
AZURE_OPENAI_KEY=your-openai-key
EMBEDDING_DEPLOYMENT=text-embedding-3-small
AZURE_OPENAI_CHAT_DEPLOYMENT=gpt-4o-mini
AZURE_OPENAI_CHAT_DEPLOYMENT 可在身份卡片上生成趣味事实。聊天部署不可用时,卡片会使用基于事实的个人资料文案。
生产环境通过 Azure Container Apps 提供 Next.js 应用,通过 Azure Functions 提供高流量公共 API 读取,并通过 Azure Blob Storage 提供开发者快照。有关资源布局、环境切换和部署检查,请参阅 docs/azure-backend.md。
npm run dev
🏗️ 技术栈
| 层 | 技术 |
|---|---|
| 前端 | React 19、Three.js (react-globe.gl)、Next.js 15 |
| 搜索 | Azure Cosmos DB(向量 + 混合搜索) |
| API | Next.js API Routes |
| 托管 | Azure Container Apps 和 Azure Functions |
| 数据管道 | Node.js 脚本(GitHub GraphQL、StackOverflow API、地理编码) |
📊 评分公式(0–100)
| 维度 | 权重 | 来源 |
|---|---|---|
| GitHub Stars | 20% | 所有仓库的星标总数 |
| GitHub 提交 | 20% | 年度提交活动 |
| 仓库影响力 | 15% | Fork 数 + 关注者数 |
| SO 声望 | 25% | StackOverflow 声望 |
| SO 参与度 | 15% | 答案采纳率 × 数量 |
| 社区 | 5% | 关注者数 + 徽章 |
所有维度均经过对数归一化,以防止离群值占据主导。
🔧 构建完整数据集
需要 API 密钥——将 .env.example 复制为 .env,并填入你的令牌。
npm run fetch-github # Fetch top devs from GitHub GraphQL
npm run fetch-stackoverflow # Enrich with StackOverflow reputation
npm run geocode # Convert locations to lat/lng
npm run build-data # Run full pipeline
npm run upload-cosmos # Upload to Azure Cosmos DB
开发者凭据
经社区验证的凭据会明确存储在每位开发者的文档中。不要根据星标数、关注者数或个人资料文本推断凭据。
{
"login": "example",
"specialTags": ["github-star", "microsoft-mvp", "aws-community-builder"]
}
支持的 ID:github-star、microsoft-mvp、google-developer-expert、docker-captain、cncf-ambassador、aws-hero 和 aws-community-builder。旧版 docker-champion ID 仍受支持。上传脚本会保留源 JSON 中的此字段,列表、详情和搜索 API 会从 Cosmos DB 投影此字段。
从官方 GitHub Stars、Google Developer Experts 和 CNCF Ambassadors 名单中填入完全匹配的 GitHub 登录名:
npm run populate-special-tags # Dry run
npm run populate-special-tags -- --apply # Patch verified matches in Cosmos DB
该命令会保留现有标签,并且可幂等执行。其他凭据必须有明确标明开发者 GitHub 账号的官方个人资料;不要通过匹配显示名称来填入凭据。
📁 项目结构
├── index.html # Entry HTML
├── src/
│ ├── main.jsx # Application bootstrap
│ ├── App.jsx # Root component, data loading
│ ├── components/
│ │ ├── Globe.jsx # 3D globe (react-globe.gl)
│ │ ├── Leaderboard.jsx # Ranked sidebar with filters
│ │ ├── SearchBar.jsx # Hybrid/vector search input
│ │ ├── DetailPanel.jsx # Developer detail card
│ │ ├── Header.jsx # Top bar with branding
│ │ └── LoadingOverlay.jsx # Loading state
│ └── utils/
│ ├── scoring.js # Composite scoring algorithm
│ └── format.js # Number formatting helpers
├── api/
│ ├── developers.js # List all developers
│ ├── developer.js # Single developer lookup
│ └── search.js # Cosmos DB vector/hybrid search
├── scripts/ # Data pipeline scripts
├── styles/main.css # Dark theme styles
└── data/
└── developers-sample.json # Sample data for local dev
🌍 部署到 Azure Container Apps
推送到 main 后,GitHub Actions 会通过 OIDC 在 Azure Container Registry 中构建独立的 Next.js 镜像,并将其部署到 Azure Container Apps。部署身份需要在应用资源组范围内拥有 Contributor 访问权限,以及以下仓库变量:AZURE_CLIENT_ID、AZURE_TENANT_ID 和 AZURE_SUBSCRIPTION_ID。
必需的环境变量:
| 变量 | 用途 |
|---|---|
COSMOS_ENDPOINT | Azure Cosmos DB 终结点 |
COSMOS_KEY | Azure Cosmos DB 密钥 |
COSMOS_DATABASE | 数据库名称 |
COSMOS_CONTAINER | 容器名称 |
COSMOS_ACTIVITY_CONTAINER | 滚动 GitHub 活动容器(activities) |
COSMOS_CONTACTS_CONTAINER | 私密生命周期邮件联系人容器(developer-contacts) |
COSMOS_ENGAGEMENT_CONTAINER | 经隐私筛选的互动事件(默认值:engagement-events) |
COSMOS_CONTRIBUTION_STATE_CONTAINER | 共享的 GitHub 推荐配额状态(默认值:contribution-opportunity-state) |
ENGAGEMENT_HASH_SECRET | 用于会话窗口去重的 HMAC 密钥;默认使用 SESSION_SECRET |
ACTIVITY_INGEST_SECRET | 活动收集器端点的 Bearer 密钥 |
RESEND_API_KEY | 用于认领和审批邮件的可选 Resend API 密钥 |
EMAIL_FROM | Resend 已验证域名上的发件人 |
COSMOS_WATCHLIST_CONTAINER | 可选的私密关注列表容器名称(默认值:watchlists) |
COSMOS_IMPACT_HISTORY_CONTAINER | 可选的影响快照容器名称(默认值:impact-history) |
COSMOS_LIVE_PRESENCE_CONTAINER | 用户选择加入的实时心跳容器(默认值:live-presence) |
COSMOS_CODING_STATS_CONTAINER | 私密每日编码汇总数据(默认值:coding-stats) |
CRON_SECRET | 受保护的 cron 端点与 Azure Timer Functions 共用的 Bearer 令牌 |
EMAIL_PREFERENCE_SECRET | 用于每周邮件退订链接的 HMAC 密钥;默认使用 SESSION_SECRET |
生命周期邮件属于事务性邮件,并会尽力发送。认领操作使用通过 GitHub OAuth 授权的已验证主邮箱;自荐操作则会收集经明确同意后提供的通知邮箱地址。地址仅存储在私密的 developer-contacts 容器中,绝不会通过公共 API 暴露,也不会复制到开发者文档中。部署前请创建该容器:
npm run setup-contacts-container
请参阅生命周期邮件 PRD。
已认领个人资料的可见性洞察使用带哈希会话 ID 的允许列表互动事件。部署前,请使用 node scripts/setup-engagement-container.js 创建启用了 TTL 的容器。有关事件语义、隐私阈值和删除行为,请参阅互动分析规范。
已认领的开发者还可以配置个性化开源贡献推荐。候选项仅来自近期、未分配且公开的 GitHub issue,且所在仓库需提供贡献指南。部署前,请使用 node scripts/setup-contribution-state-container.js 创建共享配额状态容器。请参阅贡献机会规范。
已验证用户可以在用户菜单中明确选择加入每周一发送的周报。首次运行会记录私密的对比基线,但不会发送邮件;之后只有在排名变动、出现新的贡献机会或存在待处理的介绍请求时才会发送消息,并包含指向相关操作且带有来源归因的深层链接。Azure Functions 应用会在每周一 13:00 UTC 调用 /api/cron/weekly-digest;只有设置了 productUpdatesEnabled: true 的已验证联系人符合条件。每封邮件使用按用户和周生成的幂等键,并包含一键退订标头和已签名的退订链接。
根据公开且未认领的个人资料,生成供人工审核的激活队列和每周社交焦点:
npm run activation-campaign -- --limit=100 --output=data/activation-campaign.json
该命令只读访问 Cosmos DB,不会发送消息或获取私密联系人信息。请先审核每份草稿,再通过适当的公开渠道联系开发者。
实时开发者动态
「动态」选项卡采用匿名方式,为已编入索引的开发者展示滚动更新的 24 小时动态。部署前,请创建专用的 Cosmos 容器:
npm run setup-activity-container
将 functions/activity-ingest 部署为 Azure Timer Function,并配置以下应用程序设置:
ACTIVITY_INGEST_URL=https://your-site.example/api/activities/ingest
ACTIVITY_INGEST_SECRET=the-same-secret-configured-on-the-site
计时器每分钟调用一次采集器,与 GitHub 宣布的轮询间隔一致。GitHub 的公开 Events API 尽力提供服务,可能会延迟或遗漏事件;浏览器每 15 秒刷新一次,并不保证 GitHub 源会在此间隔内送达数据。要完整采集三页数据,必须提供有效的 GITHUB_TOKEN;匿名回退模式仅检查一页。Cosmos 动态容器的 TTL 为 48 小时,而 API 仅提供最近 24 小时的数据。
实时编码状态与私密统计
当开发者处于活跃状态时,/space 地球仪每 30 秒接收一次来自 DevGlobe 编辑器扩展的自愿加入心跳。编辑器无活动满一分钟后,心跳会暂停。在线状态实时显示 90 秒,并会以「最近在编码」状态保留最多 15 分钟。开发者可以选择分享有限的编码状态,明确指定编码 Agent 和模型,加入 25 分钟或 50 分钟的专注时段,并接收已登录用户发出的限频挥手。使用相同语言的专注开发者会在地球仪上形成临时连接;停止在线状态后,会返回一份私密的陪伴回顾。每日编码总时长、连续记录、成就、语言时长和编辑器时长仅根据连续有效的心跳计算,且只有已登录的开发者本人可以查看。DevGlobe 不会推断 Agent 使用情况,也不会为此功能收集源代码、文件路径、代码库、分支、提示词、回复、模型流量或击键记录。
在生产环境启用该功能前,请预先创建这两个启用了 TTL 的容器:
npm run setup-live-presence-container
npm run setup-coding-stats-container
编辑器目录提供针对 VS Code、Cursor、Windsurf、VSCodium、Positron、Void 和 Antigravity 的定制安装方式。版本 v0.6.0 可从 Marketplace 和 GitHub Releases 获取。同一个 VSIX 也适用于兼容的 VS Code 分支;要发布到 Open VSX,需要使用 devglobedev 命名空间和 OVSX_PAT 仓库机密。
手动运行 发布编辑器扩展 工作流,验证并打包一个构件,然后选择 GitHub Release、Visual Studio Marketplace 或 Open VSX 作为发布目标。发布者凭据仅存储在 VSCE_PAT 和 OVSX_PAT GitHub Actions 机密中。
影响历史记录采集
将 functions 目录部署到 Azure Function App,并为每 15 分钟运行一次的影响历史记录计时器配置以下应用程序设置:
IMPACT_HISTORY_URL=https://www.devglobe.dev/api/cron/impact-history
CRON_SECRET=the-same-secret-configured-on-the-container-app
计时器会以受 RU 限制的批次继续采集当前 UTC 日期的数据。请在 Container App 上保留 IMPACT_HISTORY_CONCURRENCY 和 IMPACT_HISTORY_BATCH_SIZE 设置,因为 Next.js 端点会执行 Cosmos 操作。
邮件验证提醒
Azure Functions 应用每天 14:00 UTC 调用受保护的提醒端点。应用仅向满足以下条件的未验证联系人发送提醒:已同意接收事务性邮件,且在之前 72 小时内未收到过提醒;联系人验证通过后,会立即停止接收提醒。
请在 Azure Function App 上配置以下应用程序设置:
EMAIL_VERIFICATION_REMINDERS_URL=https://www.devglobe.dev/api/cron/email-verification-reminders
WEEKLY_DIGEST_URL=https://www.devglobe.dev/api/cron/weekly-digest
CRON_SECRET=the-same-secret-configured-on-the-container-app
请部署完整的 functions 目录,以包含每个计时器及其 function.json。
支持 DevGlobe
DevGlobe 由独立团队维护,可免费使用。GitHub 赞助有助于支付 Azure 托管与可观测性、公共数据更新、基于 GitHub API 的处理、安全更新、测试和开源维护的费用。
赞助绝不会影响开发者排名、搜索位置、内容审核或对开发者私人信息的访问。有关赞助档位、权益、费用和当前里程碑,请参阅资金与透明度政策。
🤝 贡献
欢迎贡献!请参阅 CONTRIBUTING.md,了解设置说明以及需要帮助的方面。
🤖 MCP 服务
DevGlobe 提供托管的 Streamable HTTP MCP 端点,用于公开发现开发者以及需要用户同意的 Agent 介绍:
https://www.devglobe.dev/mcp
公开搜索和个人资料查询可匿名使用。介绍请求和状态轮询需要已签发的 Agent 凭据。对于不支持远程 MCP 的客户端,仍可使用本地 stdio 连接器:
npm run mcp
请参阅 docs/mcp-server.md,了解凭据配置、Cosmos DB 设置、客户端配置和同意流程。docs/agent-readiness.md介绍了机器可读的发现机制、WebMCP 和外部 DNS-AID 部署步骤。
📄 许可证
MIT — 详情请参阅 LICENSE。
如果觉得这个仓库有用,请 ⭐ 为它点星!
由 @sajeetharan 倾情打造 ❤️
评论
一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。