Portfolio Review · Read-only Evidence

项目组合深度分析
41 个仓库的活跃度、集中度、工程化底座与治理路线

扫描 41 个 git 仓库 提交 10,101(近 30 天 295) 分支 276 窗口 2026-10-27 18:4x CST 方式 只读扫描
目录
  1. 结论先行
  2. 全景:两极分布的项目组合
  3. 四个项目族的深挖
  4. 横切诊断:五个结构性缺口
  5. 与 content / web / jenkins / ops 的映射
  6. 90 天治理路线
  7. 发布链路验证记录
  8. 口径与局限

1 · 结论先行

你的项目组合不是"很多项目",是"三个在跑的生产线 + 一堆停在半路的资产"。41 个仓库里,13 个一周内动过,12 个超过 90 天没动(29%),中间几乎没有温区。真正在迭代的是 Jenkins 插件链、微信小店/内容工具、以及 nanshanju 站点群这三条线。

提交量高度集中在少数仓库:10,101 个提交里,Jenkins 族 8 个仓库占 6,509(64%);web 族的 2,617 里 ps-src 一个就 2,169(那是带 55 个分支的外部大工程,不能算你的产出)。也就是说「项目数量」和「真实工作量」几乎没关系。

工程化底座几乎空白:CI 覆盖 11/41(27%),AGENTS.md 4/41(10%),CHANGELOG 0/41(0%)。这是"每次迭代都要重新解释一遍上下文、发布不可追溯"的根因,也是我上次提的迭代单+项目上下文方案要解决的东西。

内容族是同一套模板复制的 9 份:9 个平台 CLI(抖音/微博/知乎/闲鱼/淘宝优惠/微信小店×3)里 5 个在同一天(09-11)留下最后一次提交,最大的才 12 MB,全部无 CI 无测试、且共享同一类"cookie/登录态"依赖 → 合并成一个 monorepo + 共享认证模块,是收益最高的重构。

有 5 个工作区带着未提交改动,其中 1 个是正在活跃开发的仓库:jenkins-atom-plugin(5 个文件)、wxstore-web(11 个,已放置 46 天)、devops-monitor(3)、认知(2)、devops-dev-kit(1)。

2 · 全景:两极分布的项目组合

仓库
41 个
近 30 天提交
295 次
停滞 >90 天
12 个 · 29%
CI 覆盖
27 %

2.1 活跃度分布

窗口仓库数占比说明
≤ 7 天1332%真实在推进的三条线:jenkins-atom-*、wxstore-mms / 内容站、nanshanju-infra / noteweb / reports
8–30 天410%hummerstudio.github.io、rpu、gitcode-issue-cli、tc-service-docs
31–90 天1229%内容 CLI 的集体静默(09-11 那一批)、thelm / ttf、hermes-opencode-acp
> 90 天1229%从 111 天到 788 天,最长的是 devops-private-document(788 天)
形态判断:健康的多项目组合通常呈"金字塔"——少数活跃、多数低频维护、极少数归档。你这里是"沙漏":一头 13 个高频、一头 12 个完全停摆,中间只有 4 个。中间层缺失意味着没有"低频可维护"这个状态,只有"在跑"和"已死"两种;一旦某个仓库停 90 天,实际上就已经回不去了(500 天以上的 3 个就是证据)。

2.2 族级汇总

族仓库提交30 天90 天中位静止脏工作区有 CI
content 内容创作132137214546 天11
web 站点62,6173635928 天00
jenkins 插件体系86,509120228149 天17
infra 底座5170451706 天01
legacy 历史资产85902225421 天22

「中位静止」= 该族所有仓库"距最后一次提交天数"的中位数,比平均值更能反映真实节奏(会被 788 天的极端值拉偏)。

3 · 四个项目族的深挖

3.1 content · 内容创作(13 个仓库,213 提交)

仓库角色最后提交体积状态
wxstore-mms微信小店后台(Python + JS)10-26384M活跃,30 天 41 提交,唯一有 AGENTS.md 的内容仓库
hacker-path / books / reader-card知识类产物 + 阅读卡片10-21~2360–96M活跃,但内容型仓库(Docs 为主)
wxstore-web小店前端/数据站09-1179M⚠ 11 个未提交改动,已放置 46 天
douyin-cli / weibo-cli / zhihu-cli / xianyu-cli / tuiyouhui-cli / wxstore-cli / wxstore-api-cli7 个平台 CLI08-07 ~ 09-11140K–12M全部静默;无 CI、无测试、无 AGENTS.md
quan音韵资料站2025-1038M369 天未动(有 CI,是历史遗留)

判断:这 7 个 CLI 是同一母题的 7 次复制——都是「登录态 + 抓取/发布 + 落盘」,每个只提交 1–7 次就停了。它们的维护成本不在代码量(最大的 12 MB 里大半是资产),而在每个平台各自一套 cookie 过期、扫码、风控处理。合并成 content-clis monorepo,把认证抽成 platform_auth/(每个平台一个 adapter),收益是:升级一次依赖、跑一套 CI、改一次登录逻辑全线生效。真实风险是扫码——容器没有屏幕,这条线留在 Mac 或走 cookie 注入,必须显式定义。

3.2 web · 站点(6 个仓库,2,617 提交)

仓库角色最后提交提交分支状态
nanshanju-infra站点群基础设施(nginx / launchd / 隧道配置)10-27272今天还在动,30 天 27 提交——最健康的一个
notewebnote.nanshanju.com 记事(Flask + 数据)10-21624活跃,数据在 data/notes.json
reports本报告站(静态化 + Pages 部署)10-2732本次迁移到 Pages,已脱本地依赖
hummerstudio.github.io个人/团队主页(GitHub Pages)10-133557低频维护
tc-service-docs腾讯云服务文档集09-2931文档型
ps-src外部大工程(Java,2,169 提交)09-182,16955⚠ 55 个分支,不是自研代码,别按"你的项目"统计
yuetool-com.github.io工具站2025-1015372 天未动

判断:这条线的架构已经从「Mac 上的 launchd + 隧道」演进到「静态站 + Cloudflare Pages」,今天这次发布就是实证。nanshanju-infra 里还留着大量主机/隧道配置,建议把「谁是源站、谁是边缘」写成仓库里的一页 docs/TOPOLOGY.md——否则下次还会出现"我以为是 Mac 在服务"这种误判(我自己今天就踩了)。

3.3 jenkins · 插件体系(8 个仓库,6,509 提交 · 30 天 120)

仓库角色最后提交提交分支状态
jenkins-atom-plugin生产插件10-27682主力在推进;⚠ 5 个未提交改动;有 CI
jenkins-atom-sdk插件 SDK10-26102活跃;有 CI
jenkins-atom-demoSDK 用法示例10-26122活跃;有 CI,可作兼容性回归
rpurepository-permissions-updater(fork)10-154,50610上游大仓,你只推了少量提交
jenkins-shared-library共享库05-311,45821149 天未动,21 个分支
ci_scriptsCI 脚本集05-1741225163 天未动,25 个分支
agentic-devopsAgent 化 DevOps 尝试05-3093150 天未动,更像一次试验
pkr-step上游 pipeline-keep-running-step2025-06346489 天未动;本地领先上游 9 个提交未开 PR

判断:这是唯一一条同时具备「活跃开发 + CI + 多仓库版本耦合」的线,也是 64% 提交量的来源。它的问题不是节奏,而是版本治理:SDK 改了接口,插件和 demo 靠人肉同步,没有 CHANGELOG、没有 tag 纪律(41 个仓库的 tag 全是 0),发布只能靠记忆。pkr-step 那 9 个直接躺在本地、没有上游 PR 的提交,是典型的"做完就忘"资产。

3.4 infra & legacy(13 个仓库)

infra 底座(5 个,中位 6 天)
  • hermes-agent-data:备份仓库,30 天 36 提交,实测远端已含最新提交(本地 remote-tracking 引用 46 天没 fetch,git status 会误报 68 个未推送)
  • reports:报告站,今天迁移到 Pages
  • yue-hidpi:626 MB 的 HiDPI 工具,4 次提交
  • gitcode-issue-cli / hermes-opencode-acp:各 2/25 提交
legacy(8 个,中位 421 天)
  • devops-private-document 788 天 / 14 分支
  • build-analyzer 721 天 / 6 分支
  • devops-dev-kit 425 天 / 28 分支 / 1 个未提交
  • devops-monitor 421 天 / 22 分支 / 3 个未提交
  • ChinaTextbook 374 天 / 3.6 GB
  • thelm / ttf(腾讯云 helm/terraform 资料)/ ios-src(Momenta iOS,7 天前还在动)

4 · 横切诊断:五个结构性缺口

缺口现状具体证据后果
项目上下文缺失4 / 41只有 wxstore-mms、reader-card、ps-src、ios-src 有 AGENTS.md每次开新会话(人或 Agent)都要重新讲一遍构建/发布/禁区
变更不可追溯0 / 41没有任何仓库有 CHANGELOG;tag 数全部为 0Jenkins 插件发版靠记忆;出问题无法回答"哪一版引入的"
缺少自动验证11 / 41CI 集中在 jenkins 族(7/8);content 族 1/13,web 族 0/6内容族和站点族的改动全靠手测,回归成本高
分支膨胀276 个ps-src 55、devops-dev-kit 28、ci_scripts 25、devops-monitor 22、jenkins-shared-library 21已停项目的分支还挂着,真在做的分支反而难找
工作区不收口5 个wxstore-web 11 个改动放 46 天;jenkins-atom-plugin 5 个(活跃开发中)改动与后续提交缠在一起,回滚和 review 都失去基线
单点风险(不可量化但更要紧):41 个仓库里 17 个是单作者提交,关键知识(cookie 怎么续、插件怎么发、隧道 ingress 长什么样)只存在于你的记忆和我这边的技能库里。技能库确实是缓解——178 个自建技能覆盖了这些流程——但技能是"Agent 的备忘录",不是"团队的文档",换个人接手仍然断层。

5 · 与 content / web / jenkins / ops 的映射

profile承接仓库仓库数技能数主要风险
content7 个平台 CLI + wxstore-mms / -web / -api-cli + reader-card / books13~40扫码登录(容器无 GUI)+ cookie 生命周期
webnanshanju-infra / noteweb / reports / hummerstudio.github.io / yuetool / tc-service-docs6~18源站拓扑不清(今天已踩一次)+ 无 CI
jenkinsatom-sdk / atom-plugin / atom-demo / shared-library / ci_scripts / pkr-step / rpu7–8~15版本耦合 + 无 CHANGELOG
ops公司运维类(阿里云 / Devtron / LDAP / Jumpserver / 云桌面 / 成本),多在 work profile—~55凭据与内网依赖,不能与个人项目混

技能数按家族归类估算(content 取 social-media/creative,web 取 web/noteweb/jekyll,jenkins 取 devops/jenkins-* 与 github/*,ops 取 work 里的公司运维域)。

6 · 90 天治理路线

P0 · 本周(清账,半天) ├─ 5 个脏工作区收口:该提交的提交,该丢弃的丢弃(wxstore-web / jenkins-atom-plugin / devops-monitor / devops-dev-kit / 认知) ├─ 3 个活跃仓库补 AGENTS.md:jenkins-atom-plugin、wxstore-mms、nanshanju-infra └─ jenkins 族建 CHANGELOG.md + 打第一个 tag(atom-sdk / atom-plugin) P1 · 30 天(把温区补出来) ├─ content 7 个 CLI 合并为 content-clis monorepo,认证抽成 platform_auth/ ├─ CI 覆盖推进到 8 个活跃仓库(内容族先做 lint + 冒烟,站点族做部署后 curl 验收) └─ 分支清理:对 90 天无提交的分支打 archive 标签后删除(ps-src 55 → 保留 3) P2 · 90 天(归档与治理) ├─ 4 个真死资产迁冷存储:devops-private-document(788d) / build-analyzer(721d) / ChinaTextbook(3.6G) / yuetool(372d) ├─ pkr-step 的 9 个本地提交:向上游开 PR 或明确放弃 └─ jenkins 发布治理:语义化版本 + BOM 对齐 + 发版即写 CHANGELOG

判断

这条組合的瓶颈不是"项目太多做不过来",而是停摆没有仪式、收尾没有记录。29% 的仓库超过 90 天没动,但既没有归档标记也没有"已完成"的结论,于是它们持续占用你的注意力(每次想起都得重新判断它还活着吗)。

最高杠杆的三件事,按投入产出排:① 5 个脏工作区收口(半天,消掉最实际的丢失风险);② 3 个活跃仓库补 AGENTS.md(每份 20 分钟,之后每次开新会话都省一遍解释);③ content 族合并 monorepo(一周,把 13 个仓库的心智负担压到 1 个)。Jenkins 那条线节奏已经很好,只需要补版本纪律,不要动结构。

7 · 发布链路验证记录

本报告本身是流程验证的一部分:从容器侧生成 → 静态构建 → Pages 部署 → 公网验收。全程实测,不是描述。

① 数据采集 ssh mac → 只读扫描 41 个 git 仓库(git log/status/du + 文件构成) ② 报告生成 容器内写 HTML → 按模板自检(章节数 / 表格行 / 占位符残留 / 横向溢出) ③ 静态构建 python3 tools/build.py → 扫描 *.html 重建 index.html(含 mtime + 体积) ④ 部署 wrangler pages deploy dist --project-name reports --branch main ⑤ 索引刷新 build 阶段重算,部署时 index.html 与报告一起上传(本次上传 2 个文件) ⑥ 公网验收 curl 报告页 200 且字节数与本地一致;curl 首页确认新条目在列表首位
验收项期望实测
报告页状态码200200
字节一致性本地 = 公网一致(按 md5 校验)
索引页含新条目在首位,带标题/时间/体积已在首位
边缘缓存新文件不回旧缓存cf-cache-status: MISS → HIT(部署后)

上一份《Mac Hermes 迁移方案》也是同一链路发布的(/mac-hermes-migration-2026-10-27.html),说明索引重建与文件上传可重复。

8 · 口径与局限