Rustzen 目前包含几类并不相同的项目。把它们放在一张表里,边界比“统一平台”更清楚:

项目 当前职责 不需要先变成什么
rustzen-admin Rust + React 的工程参考 所有产品必须接入的中央后台
Zen Clear 开发者的 macOS 磁盘分析与清理 覆盖所有系统垃圾的一键清理器
Rustzen Zipper 发布打包和 zip 归档 完整发布平台
Rustzen Clipboard 探索本地优先的剪贴板工具 先解决所有跨端同步问题

后台、权限、插件、多端、云同步和统一账号都可以继续扩展,但一起推进,会把个人项目迅速推成一个维护不起的平台。

产品边界来自具体问题

Zen Clear 是最明显的例子。

“清理 Mac”是一个很大的市场描述,真正落到开发者机器上,问题更具体:node_modules、Cargo target、Docker、Xcode 和 IDE 数据占了多少空间?哪些可以重建?删除后会影响哪个项目?

它不需要先覆盖所有系统垃圾,也不需要用一个黑盒按钮替用户做决定。先解释开发环境里的占用,再处理清理动作,就已经是一条完整路径。

其他项目也一样。Rustzen Zipper 不必变成发布平台,先把归档和打包做稳;Rustzen Clipboard 不必先解决跨端同步,先验证本地记录、搜索和资源占用是否值得做。

共享的是判断,不是所有代码

Rustzen 项目之间共享的是一些工程取向,而不是统一技术栈:尽量缩小运行边界、减少不必要的外部依赖,并把真实命令和仓库规则写清楚。SQLite-first 适用于 rustzen-admin 等需要本地存储的项目;Rustzen Zipper 是没有运行时数据库的 CLI 和 npm 包,rustzen-admin 也保留了可分离的后端与前端。

但这些倾向不等于必须抽出一个通用框架。只有当多个项目真的出现相同需求、接口和维护责任时,共享代码才有价值。为了“看起来统一”提前抽象,往往只是把一个仓库的问题变成多个仓库的依赖。

判断是否需要共享能力时,我只看三件事:

产品、工程和内容分开放

Rustzen 的产品代码不应该承担所有记录工作。

rustzen = 产品与工程实现
idaibin/skills = 可独立安装的专业能力
blog = 公开 Prompt、长期经验与判断
feeds-hub = 短周期信息流

分开以后,产品仓库不需要复制通用 Skill 或公开 Prompt,Skills Catalog 也不会混入具体业务内容。长期复盘和可复制 Prompt 留在 blog,短周期信息留在 feeds-hub。每个仓库都能说明自己拥有什么,也能说明自己不负责什么。

多仓库的成本

把项目拆小不会自动减少工作量。多个仓库意味着发布、文档和版本都要分别维护,有些基础能力也会暂时重复。

目前要验证的是每个工具能不能独立成立。等至少两个项目出现稳定的共同需求,再抽共享能力;在此之前,重复一点发布和文档工作,比先维护一个没有真实消费者的通用框架更容易判断。