项目停更了,我为什么还留着它
一个近万Star的公众号RSS项目在2026年5月被作者归档,仓库变成只读。按常见建议,我应该立刻迁移;但我没有马上删除。它曾长期稳定供给我的晨报,也暴露过最危险的“软失效”:接口仍返回200,内容却已经停止更新。停更项目不是当天死亡,也绝不能按正常项目继续信任。留下它,需要备份、探针、替代路径和明确退役条件。
2026年5月11日,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端口也没有监听。
这组事实正好说明:没立刻删是对的,把它当作仍在正常运行也是错的。
归档不是“代码定时自毁”。
已有镜像、数据库和容器仍然可能继续运行。只要外部接口不变,老版本甚至能稳定工作很久。
但归档会拿走最关键的预期:
- 不再接受正常提交;
- 安全漏洞未必有人修;
- 外部平台改接口后无人适配;
- 依赖升级和镜像构建可能停止;
- 社区问题只能留在旧记录里。
对WeWe RSS尤其致命,因为它依赖的不是稳定开放API,而是微信读书登录态和外部请求链路。
项目README自己就提醒:添加公众号过快可能进入“今日小黑屋”,登录状态会失效需要重新扫码,默认更新任务要控制延迟,某些请求会经过项目维护者提供的服务。
项目活跃时,这些风险还能通过更新追赶。项目停更后,每次外部变化都可能成为最后一根稻草。
容器退出其实很好发现。
监控能看到进程没了,端口不通,HTTP请求失败。
真正危险的是我之前遇到的“软失效”:
1
2
3
RSS接口:200 OK
Feed内容:能正常解析
最新文章:永远停在旧日期
表面所有健康检查都是绿色。
真实错误只出现在容器日志里:
1
Error: 暂无可用读书账号!
登录态已经掉了,服务却继续把旧Feed端给你。抓取脚本会误判成“这几天公众号没有更新”。
这比直接报错更坏,因为它把故障伪装成了没有新闻。
对信息系统来说,数据不再更新却不报错,比服务离线更危险。
我后来补了一层底部探针,不再只请求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和历史数据
→ 验证替代方案
→ 并行观察
→ 再决定是否删除旧数据
即使不再更新,已有文章仍可能有查询价值。只读保存与继续依赖是两回事。
RSSHub、自建抓取器、其他公众号聚合服务都有各自限制。没有实测就切过去,只是把一个已知风险换成未知风险。
所以我保留了数据和部署记录,但不再默认它是健康生产链路。
WeWe RSS不是唯一问题。
我的RSS流水线里,iOS限免拆包最初被写在博客发布脚本中。后来我为了避免羊毛内容挤占博客,暂停了博客任务。
结果是:博客停了,App推荐也一起消失。
数据源仍在更新,主RSS任务也在运行,但拆包逻辑没有任何独立入口。
修复后我把链路拆成:
1
2
3
每日RSS任务
├─ 常规信息抓取
└─ iOS限免拆包
博客发布继续暂停,限免筛选恢复。
这件事和“停更项目”是同一个教训:
不要把一个仍有价值的功能,焊死在一个随时可能停掉的组件里。
我现在用四个条件判断。
WeWe RSS曾经满足“可以暂留”的条件:部署在内网、能导出OPML、有数据库备份、调用频率受控。
截至2026年8月22日,容器已停止四周,说明它已经从“生产服务”退到“待整理遗产”。下一步应该是确认数据卷、导出仍有价值的订阅配置,再决定是否彻底清理,而不是直接重启后继续假装一切正常。
- 导出OPML;
- 备份数据库和Compose文件;
- 不把管理界面直接暴露公网;
- 降低抓取频率,保留更新间隔;
- 同时检查HTTP、内容新鲜度和容器日志;
- 准备第二条获取路径,不新增关键业务依赖。
还有一条:不要因为仓库有近万Star,就把停更风险外包给人气。
适合继续短期保留的人:
- 已经稳定部署,有完整历史数据;
- 服务只在内网使用;
- 能做数据库备份和日志监控;
- 正在验证替代方案;
- 可以接受登录失效后人工扫码。
应该尽快退役的人:
- 正准备从零部署;
- 想把它作为唯一信息入口;
- 没有数据库备份;
- 管理端直接暴露公网;
- 没能力判断Feed是否已经停止更新。
我的最终判断已经变化:
项目刚归档时,我选择保留;容器停止四周后,我不再把它视为生产服务。旧数据先救出来,依赖必须拆走。
这不是对开源项目不忠诚。恰恰是尊重现实:代码可以留下,责任边界已经改变。
「每天帮你踩一个 AI 的坑,省下一小时。」
你的自托管清单里,有没有一个早已停更却仍在单点支撑业务的项目?