Skip to content

About

GitHub 账号仓库总览面板:CI / 许可证 / Release / Issue / 分支 / Star·Fork 一张表看完,双击即用 | Local dashboard scanning all your GitHub repos: CI, license, releases, issues, branches, stars - clickable links

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

74 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

GitHub 仓库扫描总览(Github-Repo-Scan)

把 GitHub 账号名下所有仓库的情况(CI / 许可证 / Release / Issue / 分支 / Star·Fork / 健康分 / 可选 14 天流量)拉成本地总览面板,每个单元格都带 GitHub 跳转链接。

远程仓库:https://github.com/ReSerendipity/Github-Repo-Scan

三种用法

方式 命令 说明
双击启动(推荐) 启动面板.bat 双击即启动本地服务并自动打开浏览器
交互面板 node server.mjs 同上,命令行方式启动;支持 --port 换端口
远程+本地对照 node scan.mjs [owner] 扫远程账号并对照本机 Git 仓库,重新生成 dashboard.html + scan-data.json
仅本地扫描 node scan.mjs --local-only 只扫本机 Git 仓库(不访问 GitHub),并入现有快照
本地范围/深度 node scan.mjs --local-paths "a;b" --depth 5 临时指定本地扫描根目录(分号分隔)与深度
仅远程 node scan.mjs --remote-only 跳过本地对照
仅重渲染 node scan.mjs --render-only 不重新扫描,按现有快照重渲染面板(改样式/主题后用)
启动前自动扫描 node server.mjs --scan-on-start=always 启动时若需扫描,会先开页面(用现有快照)再在后台扫描,不阻塞打开;模式 always/stale/first/off(--scan-on-start off 与 --scan-on-start=off 两种写法皆可),默认 stale(快照比 autoScanMaxAgeHours 旧才扫),由 scan-config.json 的 autoScanOnStart 控制;面板「启动前扫描」开关可联动切换 always/off。附加 --no-open 可禁止自动打开浏览器

指定账号:默认扫当前 gh 登录账号;node scan.mjs someUser 可扫指定账号。

页面功能

功能 实现
扫描更新 页面右上角「重新扫描」→ 本地服务 → gh CLI → GitHub API;完成后表格原地刷新,同时把 dashboard.html 与 scan-data.json 写回磁盘
自动刷新 工具栏可选每 10 / 30 / 60 分钟自动扫描一次,选择会记住
明暗切换 右上角主题按钮(默认浅色;GitHub 亮 / 暗两套配色),切换后选择记忆在浏览器 localStorage
排序 全部表头可点击:仓库 / 健康 / CI 状态 / 许可证 / Release / Issue / 远程分支 / 本地分支 / Star / Fork / 语言 / 流量 / 最近推送;再点一次切换升降序,空值恒沉底,排序选择会记住
健康评分 每仓 0-100 分:CI 40 + 新鲜度 30 + Issue 卫生 15 + 发布节奏 15(归档仓打七折),A/B/C/D 四档,悬停看构成
自定义视图 「+存视图」把当前搜索/筛选/排序存成命名视图,下拉一键切换,保存在浏览器 localStorage
流量(14天) 设环境变量 SCAN_WITH_TRAFFIC=1 后重新扫描,展示近 14 天浏览量与克隆数(每仓多 2 次 API 调用,需 push 权限)
筛选与搜索 按仓库名/描述搜索、按语言筛选、按状态筛选(CI 通过/失败/运行中/无 CI/有 Issue/未声明许可证)、一键隐藏 fork
CI 趋势 每仓展示最近 5 次 Actions 运行的点阵(绿=通过、红=失败、黄=运行中),悬停看时间与结论
本地对照 每仓显示本机是否有对应 Git 仓库(本地有 / 本地缺失),主表「本地分支」列与「本地」列带本地/远程分支标注、脏状态、领先落后;支持按本地状态筛选与排序
仅本地视图 「仅扫本地」只读本机 .git;「仅本地仓库」模式列出全部本机仓库(含远程账号名下没有的),「本地目录…」设置扫描范围
API 配额 页脚实时显示 GitHub API 剩余额度与重置时间
CI/CD 状态 最近一次 GitHub Actions 运行:通过 / 失败 / 运行中 + 工作流名与触发分支,点击直达该次运行页
许可证类型 SPDX 标识(MIT、Apache-2.0 等),点击直达 LICENSE 文件页
CLI 形态 每仓三态:CLI(有正式命令行入口:manifest bin/entry_points 或 cli 命名入口文件)/ 脚本集(scripts·tools 目录承载命令行脚本但无统一入口)/ 无;本地有克隆的仓按本地代码检测,远程-only 仓走文件树 + 清单(pushedAt 未变复用快照);悬停看判定依据;gradlew、vitepress build 之类构建工具链不算仓库自有 CLI
Release 最新发布 tag + 名称 + 时间,点击直达 release 页
Issue 开放 issue 数(不含 PR),点击直达 issues 页;开放 PR 数单独列出并链接
分支 主表「远程分支」列(GitHub 默认分支名 + 分支总数,带「远程」标签)与「本地分支」列(本机检出分支 + 其远程跟踪分支,带「本地/远程」标签)相邻展示,一眼区分远程与本地;悬停可查看全部远程分支 / 全部本地分支 / 全部远程跟踪分支名单(超 50 个截断并显示总数);过长分支名单行省略号截断、悬停查看全名;点击直达 branches 页
仓库信息 star / fork / 主语言 / 描述 / 可见性 / 最近推送,均链接到对应 GitHub 页面
可见性排序/筛选 「可见性」列可点表头按公开/私有排序(私有优先);状态筛选下拉含「仅公开 / 仅私有」;顶部指标卡显示公开/私有数量
仓库大小 「大小」列显示 GitHub 磁盘占用(自动 KB/MB/GB 换算),可点表头排序;顶部指标卡显示总大小
最近变更文件 「最近变更」列显示最近一次提交变更的文件数,点「N 文件」就地展开文件清单(A 增 / M 改 / D 删,带 +− 行数,链接到提交页)
导出 CSV 右上角「导出 CSV」把当前筛选/排序结果导出为 UTF-8(带 BOM)CSV,Excel 可直接打开
隐藏归档 工具栏「隐藏归档」复选框一键隐藏 archived 仓库
低健康分筛选 状态筛选「仅低健康分(<50)」快速定位问题仓库
启动前自动扫描 面板「启动前扫描」开关 + scan-config.json 的 autoScanOnStart(always/stale/first/off),双击启动面板可先自动扫描再打开
只扫本账户 面板「只扫本账户」开关(默认开启)+ scan-config.json 的 localOwnerOnly;开启后本地对照只保留当前 gh 登录账号名下的仓库,第三方克隆与纯本地仓被忽略
创建时间排序 「创建时间」列可点表头按仓库创建时间排序
语言分布 顶部「语言分布」面板按仓库数 Top 8 展示各语言占比条(颜色取自 GitHub 语言色)
聚合视图 顶部「聚合视图」面板一键列出 CI 失败 / 低健康分(<50) / 未声明许可证 / 无 CI 记录 / 本地缺失 的数量,点 chip 直接套用对应筛选
复制 clone 右上角「复制 clone」把当前可见仓库的 git clone <url> 命令批量复制到剪贴板(Excel/终端可直接粘贴)
仅归档筛选 状态筛选含「仅归档仓库」;聚合视图面板单独列出归档仓库数量,点 chip 一键筛选
Star 排行榜 顶部「排行 Top5」面板按 Star 数从高到低展示仓库名与占比条;点面板内 Star/Fork/Issue/健康分 按钮可切换排行指标(点击仓库名直达 GitHub)
归档仓库分区 顶部「归档仓库」独立分区汇总列出全部 archived 仓库(含健康分档),不参与活跃度评比;状态筛选另有「仅归档仓库」可一键只看归档
聚合视图可折叠 顶部「聚合视图」容器(指标卡 + 聚合 chip + 语言分布 + 排行 + 归档分区)可一键折叠/展开,折叠偏好记入浏览器 localStorage,下次打开自动记住
Star 周增长趋势 表格中该列已改为「本地分支」;近 7 天 Star 增量仍在顶部指标卡「本周新增★」与 Star 排行榜 Top5「+N/周」展示(基于 scan-data-history.json 按天累积,红涨绿跌遵循 A 股惯例,需 ≥6 天历史,否则显示「—」不编造数据);导出 CSV 仍含「近7天★」列
先探测再扫描(增量) 「重新扫描」默认先拉一次仓库列表(1–2 次 GraphQL)与上次快照逐仓比对;未变的仓库直接复用上次明细(许可证 / CI / 提交 / 流量),不发任何额外请求 —— 无变更时秒级返回。元信息显示「本次:无变更·复用快照 / 增量扫描 N/M / 强制全量 · 用时」。按住 Shift 点「重新扫描」= 强制全量扫描
启动不阻塞 + 自动刷新 启动时若触发自动扫描,服务先开页面(现有快照)再后台扫描;页面每 3 秒轮询 /api/status,扫描完成后自动刷新,无需手工等待或刷新页面
魔搭魔粒余额 顶部「魔搭魔粒」条展示 ModelScope(魔搭社区)魔粒余额(可用 / 总 / 冻结),点击「刷新」走 GET /openapi/v1/magicubes/balance 实时拉取;打开页面只读本地缓存(瞬开、不刷网络)。认证优先 MODELSCOPE_API_TOKEN 环境变数,其次 scan-config.json 的 modelscopeToken,兜底复用本机 modelscope login 登录态(零配置)

本地 Git 仓库扫描(对照 + 独立)

  • 远程与本地对照:扫描远程账号的同时遍历本机目录找 Git 仓库,每个远程仓库在「本地」列显示:本地有(本地分支 · 对应远程分支(若有)· 干净 / 未提交 n / ↑领先 ↓落后)或本地缺失。
  • 仅本地扫描:node scan.mjs --local-only 或面板「仅扫本地」——只读本机 .git(remote / 分支 / HEAD / status / rev-list),不访问 GitHub、不 fetch、不推送;面板「仅本地仓库」模式列出全部本机仓库。
  • 本地独有仓库:本机存在但远程账号名下没有对应的仓库(改名、fork 后删库、纯本地实验仓),单独区块列出。
  • 只保留本账号仓库(默认开启):本地对照只保留远程归属为当前 gh 登录账号的仓库——第三方克隆(如 ComfyUI、box64、sd-scripts 等)与无 GitHub 远程的纯本地仓会被忽略,不再出现在本地对照与「本地独有」里(控制台会提示忽略了几个)。面板工具栏「只扫本账户」开关可随时切换,记忆在 scan-config.json 的 localOwnerOnly,显式设成 false 才关闭。
  • 扫描范围:默认 = 用户主目录(只看 1 层)+ 桌面 / 文档 / 下载(深度 4);scan-config.json 的 localScanRoots(字符串或 { "path": "...", "depth": 2 })+ localScanDepth 持久配置,--local-paths / --depth 临时覆盖,面板「本地目录…」可视化保存。隐藏目录、node_modules 等重目录、符号链接自动跳过,最多 500 个仓库。
  • 对照规则:本地 remote URL 解析出 owner/repo 与远程精确匹配;无 GitHub remote 或 owner 不同但仓库名唯一时按名字兜底;同名多候选不猜(标记 ambiguous,进「本地独有」)。
  • 依赖:git 在 PATH 即可,无需 gh 登录;--remote-only 可关掉本地对照。
  • 配置文件:scan-config.json 含本机路径,已加入 .gitignore 不入库;还可配置 autoScanOnStart(启动前自动扫描模式:always/stale/first/off,默认 stale)、autoScanMaxAgeHours(stale 模式下判定「过期」的小时数,默认 6)与 localOwnerOnly(只保留本账号仓库,默认 true)。
  • 魔搭魔粒(ModelScope):面板顶部「魔搭魔粒」条显示你的魔粒余额,来自官方 OpenAPI GET /openapi/v1/magicubes/balance。认证三选一(优先级从高到低):① 设环境变数 MODELSCOPE_API_TOKEN(在 modelscope.cn/my/access/token 申请,稳定推荐);② 把 token 写入 scan-config.json 的 modelscopeToken 字段;③ 零配置复用本机 modelscope login 产生的 ~/.modelscope/credentials/cookies 登录态(cookie 过期后重新 modelscope login 即可)。命令行也可直接 node modelscope.mjs [--refresh] 打印余额。

性能与增量

  • 变更探测(增量):深度扫描前先比对 listing 级字段(pushedAt / star / fork / issue / PR / 分支 / 发布 / 可见性 / 归档 / CI 是否在跑);未变的仓库跳过每仓 REST 调用、复用上次快照(repoUnchanged() 判定)—— 无变更时几乎零请求、秒级返回;CI 运行中的仓库会重查(可能刚出结果)。
  • 扫描并行化:许可证与 CI 记录按并发 8 并行拉取,全账号全量扫描约 5–15 秒(旧版串行需 30–40 秒)。
  • 仓库分页:GraphQL 每页 100 个、最多 5 页(500 个),超出会在页面提示截断。
  • 许可证链接增量复用:pushedAt 未变的仓库直接复用上次快照里的 LICENSE 链接,省一半 REST 调用。
  • 自动重试:GitHub API 5xx / 429 / 网络抖动自动重试(最多 3 次、递增退避)。

依赖说明(是否依赖 gh CLI)

  • 排序、筛选、明暗切换:纯浏览器 JS,零依赖,离线可用。
  • 扫描取数:需要一个带凭据的 GitHub API 通道。当前实现复用本机 gh CLI(登录态存在系统 keyring,token 不落盘);本地服务只是把 gh 的调用包成页面可点的按钮。
  • 不想装 gh:设 GH_TOKEN(或 GITHUB_TOKEN)环境变量即自动走 token 直连兜底通道(REST+GraphQL,gh 缺失或未登录时自动生效);token 走环境变量、不落盘。
  • 直连通道默认严格校验 TLS 证书;仅当本机代理拦截证书链导致校验失败时,设 SCAN_INSECURE_TLS=1 显式放宽(仅对 api.github.com 放宽重试一次,对应评估报告 R2 P2-4)。

前置:Node ≥ 18(CI 在 Node 22 上验证,见 .github/workflows/release.yml);扫描功能需要 gh CLI 已登录(gh auth login)。

文件

  • 启动面板.bat —— 双击启动(UTF-8 无 BOM + chcp 65001,中文提示不乱码)
  • dashboard.html —— 交互面板(每次扫描重新生成,数据内嵌,双击即开)
  • server.mjs —— 本地服务(页面一键扫描的后端;仅监听 127.0.0.1,带跨站来源校验)
  • scan-core.mjs —— 扫描/取数/合并共享核心(并行 / 分页 / 重试 / 增量)
  • render-dashboard.mjs —— 面板渲染模块(生成单页 HTML,注入 assets/dashboard-client.js)
  • shared.mjs —— 路径 / 本地配置 / 大小格式化共享基础
  • assets/dashboard-client.js —— 面板客户端应用(纯浏览器 JS,独立资产,渲染时注入)
  • scan.mjs —— 命令行扫描入口(--render-only 仅重渲染)
  • scan-data.json —— 最近一次扫描的数据快照(schema 3,含本地对照结果)
  • scan-config.json —— 本地扫描配置(可选;含本机路径不入库,面板「本地目录…」会写入)
  • scan-data-history.json —— Star 周增长趋势的本地快照历史(按天累积,纯本地运行时数据,已加入 .gitignore 不入库)
  • scan-audit.jsonl —— 扫描审计日志(结构化 JSONL,本机留痕不入库;设 SCAN_AUDIT_KEY 可启用逐行 HMAC 防篡改,对应评估报告 R2 P2-8)
  • tests/core.test.mjs —— 冒烟测试
  • tests/direct-api.test.mjs —— 直连 API 测试
  • hooks/pre-push —— 推送前自动跑 node --test 的冒烟测试门闸(需复制到 .git/hooks/ 启用)
  • docs/ —— adr/ 架构决策记录与 tech-debt.md 技术债登记随仓库分发;README.internal.md 是维护者对内说明,按约定不入库(克隆里取不到)

快照入库策略:scan-data.json / dashboard.html / all_repos_report.txt / scan_run*.txt 为生成物快照,按约定随主分支入库以保留每次扫描的可回溯性(接受大 diff);快照刷新与代码变更分批提交。决策细节见 docs/adr/0003-snapshot-committing.md。路径脱敏(对应评估报告 R2 P1-3):入库快照中的本地路径已相对化为 ~/…(不含本机用户目录名),页面点击「打开文件夹」由本地服务展开还原并校验路径在扫描根目录内。

测试

node --test

本地门禁:新克隆需要各激活一次

下面三道落地前闸门不会随克隆自动生效——未激活时它们惰性存在,改动只能等 push 之后的 CI 兜底。

闸门 作用 激活命令 自查命令
hooks/pre-push 推送前跑 node --test,失败即阻断 cp hooks/pre-push .git/hooks/pre-push diff hooks/pre-push .git/hooks/pre-push(无输出即未分叉)
.pre-commit-config.yaml(gitleaks) 提交前扫密钥 pre-commit install pre-commit run gitleaks-system --all-files
.qoder/settings.json(编码 agent 编辑后闸门) 核心模块被编辑即跑 node --test cp hooks/qoder-settings.example.json .qoder/settings.json 向 node hooks/post-edit-validate.mjs 送一条 tool_input.file_path 指向 scan-core.mjs 的 JSON 事件,全绿时应回报 ✓ …(N 项)

.qoder/ 不入库,所以脚本本体(hooks/post-edit-validate.mjs)虽随仓库分发,却没有调用方;hooks/qoder-settings.example.json 就是那份可复制的调用方注册,内容与本机生效注册逐字一致。已有 .qoder/settings.json 的话,把 hooks.PostToolUse 这一段并进去即可,别整体覆盖。

hooks/pre-push 是版本库内的唯一来源,复制到 .git/hooks/ 后生效。两份一旦分叉,实际执行的是 .git/hooks/ 那一份,版本库里的改动不会生效——上面那条 diff 就是用来发现这件事的(本仓曾真的分叉过一行注释)。

未采用 git config core.hooksPath hooks 这种更省事的接法:它会让 git 不再看 .git/hooks/pre-commit,等于顺手关掉 gitleaks 密钥门(hooks/ 目录里没有 pre-commit 入口)。

覆盖:CI 状态映射、相对时间分档、时区格式化、fmtSize 大小换算、computeStarWeek 周增长(含历史不足 / 无历史)、repoUnchanged 变更探测、面板渲染(内嵌数据转义 / XSS 注入防护 / 默认主题 / 配额展示)。

维护者须知:客户端脚本专项守卫与「提交前必须运行 node --test」的开发纪律说明写在维护者对内文档 docs/README.internal.md 里——该文件按约定不入库,克隆里取不到;可机检的等价约束见上表「本地门禁」与 .github/workflows/test.yml。

数据口径

  • CI 取最近一次工作流运行(Actions runs 接口,任意分支/标签),显示工作流名与触发分支;从无运行记录显示「无 CI 记录」。
  • Issue 数为开放 issue,不含 PR(GraphQL 的 issues 连接天然排除 PR;PR 数单列)。
  • 分支数为 GitHub 远程分支总数(不含 tag);面板「远程分支」列与「本地」列的 本地/远程 标注区分 GitHub 分支与本机检出分支。
  • 许可证链接来自 GET /repos/{owner}/{repo}/license;根目录没有标准 LICENSE 文件时只显示标识、不带链接。
  • CLI 判定为静态启发式:入口 = 根清单(package.json bin / pyproject [project.scripts]·[tool.poetry.scripts] / setup.py·setup.cfg entry_points / Cargo [[bin]])或 cli.py·__main__.py 等 cli 命名入口文件;仅散装命令行脚本(scripts/tools 目录)计为「脚本集」;判定不实跑命令,仅为面板参考。
  • 本工具面向个人账号(查询走 user(login:)),组织账号暂不支持。
  • Star 周增长趋势:每仓「近7天★」= 当前 Star 数 − 约 7 天前本地快照里的 Star 数;历史来自 scan-data-history.json(每次远程全量扫描按自然日去重追加一条)。历史不足 6 天时显示「—」,不会凭空推算增量。红涨绿跌遵循 A 股涨跌配色惯例。
  • 本地对照:↑n 本地领先远程 n 个提交、↓n 落后 n 个(基于本地缓存的远程 refs,不自动 fetch,需要刷新先手动 git fetch);「未提交 n」为工作区改动文件数(含未跟踪);「本地缺失」= 远程有但扫描范围内没有对应目录。分支标注:「本地」= 本机当前检出的本地分支,「远程」= 该分支的远程跟踪分支(如 origin/main,同样来自本地缓存的 refs,不自动 fetch);无远程跟踪分支(未 push 的纯本地分支)只显示「本地」。

About

GitHub 账号仓库总览面板:CI / 许可证 / Release / Issue / 分支 / Star·Fork 一张表看完,双击即用 | Local dashboard scanning all your GitHub repos: CI, license, releases, issues, branches, stars - clickable links

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages