排名是怎么算出来的
本页完整公开榜单的信号来源、收录标准、算分公式与同分规则——全部可独立复算。排名不可购买:不存在任何影响名次的付费项。
How the ranking works
This page fully documents the signal sources, inclusion criteria, scoring formula, and tie-breaking rules behind the board — all independently reproducible. Rankings cannot be bought: no payment affects any position.
本页不是营销文案:这里的每一条都与线上代码一一对应(公式实现在 assets/ranking.js,收录面在 scripts/signal-registry.json,接口在 数据 API)。改任何一处,页面、接口与代码会一起变。
一、三句话版本
- 收录谁:由平台维护的公开策展清单决定(当前 36 个条目、6 个分类),不是 GitHub 搜索结果的镜像。
- 怎么排:公开信号分 = star 数 + 0.25 × fork 数,降序排列;公式随每个接口响应一起下发。
- 钱在哪:不在名次里——榜单免费公开,付费只买数据访问(API 配额);任何付费都不改变任何名次。
二、信号来源
- 信号数据取自 GitHub 公开 API(对每个收录仓库调用一次
/repos/{owner}/{repo}),字段为公开可查的 star 数、fork 数、主语言与最近推送时间。 - 我们不使用 GitHub 的搜索排序结果作为名次:直接镜像它会变成转卖 GitHub 服务(GitHub API 条款 H 节所禁)。名次来自我们自己的公开公式,star 数只是输入之一。
- 不采集任何私有数据:不上榜方后台、不采购数据、不使用无法公开举证的"内部指标"。
三、收录标准
- 收录范围为面向开发者的 AI 工具类开源项目(当前分类:智能体框架、编码智能体、LLM 应用平台、模型运行时等 6 类)。
- 收录与移除由平台依据公开标准编辑决定:项目真实存在且持续维护、仓库公开可访问、与 AI 工具分类直接相关。每条收录理由在策展清单中注明、公开可查。
- 收录与名次均不接受付费、申请或交换;认为应当增删条目的,通过帮助中心提交理由即可,免费。
- 收录条目不构成平台对该项目的推荐或背书。
四、算分公式与同分规则
text
score = stars + 0.25 × forks (公式版本 1.0.0)
- 分数降序排列即名次;
0.25的含义是 fork 的信息量约为 star 的四分之一,该权重自榜单上线起固定,调整必须升公式版本号并在本页公告。 - 同分规则(依次比较):① 分数高者在前;② 分数相同,最近有推送(pushedAt 较新)者在前;③ 再同,star 数高者在前;④ 仍同,按收录 id 字典序——保证排序全序确定、可复算。
- 排序实现只读
score / pushedAt / stars / id四个字段;即使数据里混入付费字段,也不参与任何比较——这不是承诺,是有自动化守卫钉死的代码事实(同信号、不同付费字段 ⇒ 排序结果完全一致)。
五、更新频率与数据时点
- 信号按固定周期采集,页面与接口均注明数据时点(
updatedAt)。 - 公开接口响应缓存 60 秒;数据分两层:收录清单随站点部署更新(改清单必须走人工复核),指标(stars / forks / 最近推送时间)由每日自动任务刷新。任一层取不到都回落到最近一份有效数据,并如实标注数据时点,不编造、不猜测。
- 榜单为空时显示空态——空数组是有效响应,绝不会用示例条目顶替真实榜单。
六、完整性与反操纵
- 名次不可购买:不存在付费收录、付费提升名次、保名次或名次交易产品;任何声称能影响名次的渠道均与本平台无关。
- 异常信号(短时间暴涨、刷星、互刷)会被人工复核并剔除;被剔除的信号不计入名次。
- 公式与权重变更受版本号管理(当前
1.0.0),历史版本可追溯;接口响应中的signal.version即数据所用的公式版本。
七、如何独立验证
This page is not marketing copy: every statement here maps one-to-one to the live code (formula in assets/ranking.js, inclusion in scripts/signal-registry.json, API in Data API). Change any of them and page, API, and code change together.
1. The three-sentence version
- Who is listed: a publicly maintained curation list decides (currently 36 entries across 6 categories) — not a mirror of GitHub search results.
- How ranked: public signal score = star count + 0.25 × fork count, descending; the formula ships with every API response.
- Where money is: nowhere — the board is free and public, payment buys data access (API quota) only; no payment changes any rank.
2. Signal sources
- Signals come from the GitHub public API (one call to
/repos/{owner}/{repo}per listed repo): publicly verifiable star count, fork count, primary language, and last-push time. - We do not use GitHub's search ranking as our rank: mirroring it would amount to reselling GitHub's service (prohibited by GitHub's API Terms, section H). Our rank comes from our own public formula; star count is just one input.
- No private data is collected: no advertiser backends, no purchased datasets, no "internal metrics" that cannot be publicly evidenced.
3. Inclusion criteria
- The scope is developer-facing open-source AI tools (currently 6 categories: agent frameworks, coding agents, LLM platforms, model runtimes, etc.).
- Inclusion and removal are editorial decisions under published criteria: the project genuinely exists and is actively maintained, the repository is public, and it directly fits an AI-tool category. The reason for each inclusion is recorded in the curation list and publicly checkable.
- Neither inclusion nor rank can be paid for, applied for, or traded; to propose adding or removing an entry, open a ticket via the Help Center — it's free.
- Inclusion is not an endorsement or recommendation by the Platform.
4. Formula & tie-breaking
text
score = stars + 0.25 × forks (formula version 1.0.0)
- Ranks follow the score in descending order. The
0.25weight treats a fork as roughly a quarter of a star's information; it has been fixed since launch, and any change must bump the formula version and be announced on this page. - Tie-breaking (in order): ① higher score first; ② equal score — more recent push (newer
pushedAt) first; ③ still equal — higher star count first; ④ otherwise by curated id lexicographically — guaranteeing a total, reproducible order. - The sort reads exactly four fields:
score / pushedAt / stars / id. Even if payment fields were injected into the data, they would not participate in any comparison — a code fact pinned by automated guards (same signals, different payment fields ⇒ identical ordering), not a promise.
5. Freshness & data timestamp
- Signals are collected on a fixed schedule; both the page and the API carry the data timestamp (
updatedAt). - The public endpoint caches for 60 seconds; the data has two layers: the inclusion list ships with a site deployment (changing it always goes through review), while metrics (stars / forks / last push time) are refreshed by a daily automatic task. If either layer is unavailable, the last valid data is used and the data timestamp is stated honestly — nothing is fabricated or guessed.
- An empty board renders an empty state — an empty array is a valid response; sample entries never substitute for the real board.
6. Integrity & anti-manipulation
- Rankings cannot be bought: there is no paid inclusion, paid rank boost, rank guarantee, or rank-trading product; any channel claiming to influence rank is unaffiliated with us.
- Abnormal signals (sudden spikes, star farming, reciprocal starring) are manually reviewed and excluded; excluded signals do not count toward rank.
- Formula and weight changes are version-managed (currently
1.0.0) and traceable;signal.versionin each API response identifies the formula version used for that data.
7. How to verify independently
- Take any entry's
repofield and queryhttps://api.github.com/repos/{owner}/{repo}for its public star and fork counts. - Compute
score = stars + 0.25 × forkswith the formula above and compare it to thescorereturned by the Data API. - Sort using the tie-breaking rules to reproduce the full ranking — it will match the page.
- If anything does not match, open a ticket via the Help Center; we will investigate and respond within 24 hours.