写了个命令行工具:写代码前先搜一遍开源方案,顺便打个分(MCP Server)

5 小时 34 分钟前
 skyzt

最近在用 Claude Code 的时候注意到一个现象:让它实现一个功能,比如限流中间件,它会立刻开始写代码。一个 Map 加时间戳的玩具实现,转眼就出来了。但它不会提 express-rate-limit 已经存在了,3.3k star ,MIT 协议,接入只要 30 秒。

我自己也差不多,业务一赶,第一反应从来不是"先搜搜有没有现成的"。

GitHub 全站 star 排名前几名,build-your-own-x 、awesome 、public-apis ,加起来一百多万 star ,全是在教人"先找现成的"。但真正在动手之前去查一遍的流程,一直没有被工具化——尤其是对 AI Agent 来说。

所以写了个东西,叫 wheel-hub:

它做什么

三个能力:

  1. 按功能关键词搜索 GitHub 现成方案
  2. 给单个仓库打 0-100 分,附结论
  3. 同类方案横向对比,排出推荐

打分逻辑是四个维度加权:

结论分四档:>=75 建议直接用,>=55 可以改造用,>=35 值得看看,再低或者已归档就别碰。

举两个实际输出。ollama 打了 96 分( ADOPT )。比较有意思的是 torvalds/linux:24 万+ star 。有个细节:内核的 GPL-2.0 是通过 COPYING 文件声明的,GitHub 的自动识别没法把它归类成标准许可证( license 字段返回 NOASSERTION ),于是 Trust 维度如实只给了 20 分,总分 86 。引擎只认数据源,不看 star 脸色。

接入方式

MCP ( Claude Code 示例,其他客户端同理):

claude mcp add wheel-hub --env GITHUB_TOKEN=ghp_xxx -- npx -y @wheel-hub/mcp

不带 token 也能用,匿名 60 次/小时;带 GitHub token 是 5000 次/小时。

命令行:

npm i -g @wheel-hub/cli
wheel-hub find "SSO login" --lang typescript
wheel-hub evaluate ollama/ollama

实现上的一些细节

TypeScript monorepo ,三个包。打分引擎是零依赖纯函数:输入 GitHub 元数据,输出分数和理由数组。以后想接 npm 、PyPI 或者 OSSInsight 的历史数据,评分逻辑不用动。

写的过程中踩了几个坑,记一下:

  1. MCP 客户端只透传白名单环境变量,GITHUB_TOKEN 必须显式写进客户端配置的 env 里,否则 Server 会静默跑在匿名限流上,很隐蔽
  2. npm 的防 typosquatting 规则会拦截和已有包"过于相似"的名字,wheel-hub 这个名字就因为和已有的 wheelhub 包相似被拒了,最后 CLI 包用了 @wheel-hub/cli 、命令名保留 wheel-hub 的组合
  3. npm 新包发布后,公共 CDN 会有几分钟的 404 缓存窗口,第一次发布时容易误以为失败

现状

刚发 0.1.2 ,功能上还不完整。路线图里有几件事:挖 awesome 列表做第二数据源、接 OSSInsight 的 star 历史让增速评估更准、做一个依赖停止维护的提醒功能,以及给识别不出许可证的仓库加一层文件原文解析,减少误报。

欢迎试用,也欢迎拍砖——尤其是打分权重这块,popularity/momentum/maintenance/trust 的比例是我拍的,如果有更合理的定法希望聊聊。

418 次点击
所在节点    程序员
1 条回复
KingGaruda
4 小时 0 分钟前
写代码前先搜一遍开源方案。。怎么衡量 开源方案 和你代码实际需求的匹配度的? 你做这个工具的时候有借鉴什么开源方案么。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1239968

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX