项目停更了,我为什么还留着它

一个近万Star的公众号RSS项目在2026年5月被作者归档,仓库变成只读。按常见建议,我应该立刻迁移;但我没有马上删除。它曾长期稳定供给我的晨报,也暴露过最危险的“软失效”:接口仍返回200,内容却已经停止更新。停更项目不是当天死亡,也绝不能按正常项目继续信任。留下它,需要备份、探针、替代路径和明确退役条件。

2026年5月11日,WeWe RSS仓库被作者归档。

【官方文档】https://github.com/cooderl/wewe-rss

页面顶部现在明确写着:

1
2
This repository was archived by the owner.
It is now read-only.

它有约9700个Star,能把微信公众号文章转成RSS、Atom和JSON,也能抓取历史文章。

我曾经把它接进每日情报系统。

看到“归档”后,我没有立刻删。

但今天回看运行节点,它的两个容器已经停止了四周:

1
2
wewe-rss     Exited (137) 4 weeks ago
wewe-rss-db Exited (0) 4 weeks ago

18400端口也没有监听。

这组事实正好说明:没立刻删是对的,把它当作仍在正常运行也是错的。

GitHub归档到底意味着什么

归档不是“代码定时自毁”。

已有镜像、数据库和容器仍然可能继续运行。只要外部接口不变,老版本甚至能稳定工作很久。

但归档会拿走最关键的预期:

  • 不再接受正常提交;
  • 安全漏洞未必有人修;
  • 外部平台改接口后无人适配;
  • 依赖升级和镜像构建可能停止;
  • 社区问题只能留在旧记录里。

对WeWe RSS尤其致命,因为它依赖的不是稳定开放API,而是微信读书登录态和外部请求链路。

项目README自己就提醒:添加公众号过快可能进入“今日小黑屋”,登录状态会失效需要重新扫码,默认更新任务要控制延迟,某些请求会经过项目维护者提供的服务。

项目活跃时,这些风险还能通过更新追赶。项目停更后,每次外部变化都可能成为最后一根稻草。

最危险的故障,不是容器挂掉

容器退出其实很好发现。

监控能看到进程没了,端口不通,HTTP请求失败。

真正危险的是我之前遇到的“软失效”:

1
2
3
RSS接口:200 OK
Feed内容:能正常解析
最新文章:永远停在旧日期

表面所有健康检查都是绿色。

真实错误只出现在容器日志里:

1
Error: 暂无可用读书账号!

登录态已经掉了,服务却继续把旧Feed端给你。抓取脚本会误判成“这几天公众号没有更新”。

这比直接报错更坏,因为它把故障伪装成了没有新闻。

对信息系统来说,数据不再更新却不报错,比服务离线更危险。

一个HTTP 200,证明不了信息还活着

我后来补了一层底部探针,不再只请求Feed接口。

思路是:

1
2
3
表层检查:HTTP能否访问
内容检查:最新文章时间是否推进
底层检查:容器日志是否出现无可用账号

探针读取过去24小时日志,捕捉关键错误;命中后才发提醒,正常时保持静默。

简化版逻辑如下:

1
2
3
4
5
logs=$(docker logs --since 24h wewe-rss 2>&1)

if printf '%s' "$logs" | grep -q '暂无可用读书账号'; then
printf 'WeWe RSS登录态已失效,需要重新扫码\n'
fi

为了避免同一故障每天刷屏,还要给提醒加熔断时间。

这里有一个边界:日志关键字只是当时版本的实测信号。项目停更后如果外部错误文案改变,探针也可能失效,所以还需要“最新文章时间”这种独立检查。

为什么当时没有立刻删除

因为它仍然有三类资产价值。

历史数据还在

数据库中有订阅源、历史文章和账号配置。立刻删除容器和数据卷,等于在迁移前先烧掉旧仓库。

正确顺序是:

1
2
3
4
5
停止自动依赖
→ 导出OPML和历史数据
→ 验证替代方案
→ 并行观察
→ 再决定是否删除旧数据

旧Feed可以作为只读档案

即使不再更新,已有文章仍可能有查询价值。只读保存与继续依赖是两回事。

替代方案也需要验证

RSSHub、自建抓取器、其他公众号聚合服务都有各自限制。没有实测就切过去,只是把一个已知风险换成未知风险。

所以我保留了数据和部署记录,但不再默认它是健康生产链路。

我还踩过一次“任务耦合”事故

WeWe RSS不是唯一问题。

我的RSS流水线里,iOS限免拆包最初被写在博客发布脚本中。后来我为了避免羊毛内容挤占博客,暂停了博客任务。

结果是:博客停了,App推荐也一起消失。

数据源仍在更新,主RSS任务也在运行,但拆包逻辑没有任何独立入口。

修复后我把链路拆成:

1
2
3
每日RSS任务
├─ 常规信息抓取
└─ iOS限免拆包

博客发布继续暂停,限免筛选恢复。

这件事和“停更项目”是同一个教训:

不要把一个仍有价值的功能,焊死在一个随时可能停掉的组件里。

停更项目还能不能继续用

我现在用四个条件判断。

WeWe RSS曾经满足“可以暂留”的条件:部署在内网、能导出OPML、有数据库备份、调用频率受控。

截至2026年8月22日,容器已停止四周,说明它已经从“生产服务”退到“待整理遗产”。下一步应该是确认数据卷、导出仍有价值的订阅配置,再决定是否彻底清理,而不是直接重启后继续假装一切正常。

如果你还在运行它,至少做这六件事

  1. 导出OPML;
  2. 备份数据库和Compose文件;
  3. 不把管理界面直接暴露公网;
  4. 降低抓取频率,保留更新间隔;
  5. 同时检查HTTP、内容新鲜度和容器日志;
  6. 准备第二条获取路径,不新增关键业务依赖。

还有一条:不要因为仓库有近万Star,就把停更风险外包给人气。

这套判断适合谁

适合继续短期保留的人:

  • 已经稳定部署,有完整历史数据;
  • 服务只在内网使用;
  • 能做数据库备份和日志监控;
  • 正在验证替代方案;
  • 可以接受登录失效后人工扫码。

应该尽快退役的人:

  • 正准备从零部署;
  • 想把它作为唯一信息入口;
  • 没有数据库备份;
  • 管理端直接暴露公网;
  • 没能力判断Feed是否已经停止更新。

我的最终判断已经变化:

项目刚归档时,我选择保留;容器停止四周后,我不再把它视为生产服务。旧数据先救出来,依赖必须拆走。

这不是对开源项目不忠诚。恰恰是尊重现实:代码可以留下,责任边界已经改变。

「每天帮你踩一个 AI 的坑,省下一小时。」

你的自托管清单里,有没有一个早已停更却仍在单点支撑业务的项目?

关联阅读