4.6 KiB
4.6 KiB
Fabric 项目规划 v0.1
1. 项目目标
Fabric:一个可自部署的类 Discord 聊天系统,核心目标是提供稳定、低摩擦的沟通渠道。
MVP 成功标准
- 支持多人频道聊天 + 私聊
- 支持基础权限与审计日志
- 提供 Docker Compose 一键部署
- 单机可稳定服务 50~200 并发在线(MVP 目标)
2. 项目定位(一句话)
一个可自部署、类 Discord 的实时聊天系统;本体保持平台中立,通过插件生态对接外部系统。
3. MVP 必要功能
- 账号与组织
- 用户注册/登录(由中心服务负责)
- Guild 归属到某个中心服务(非全局单体)
- 聊天模型(明确范围)
- Guild(工作区)
- Channel(公开/私有频道)
- DM(1v1 私聊)
- 消息回复、编辑、删除、@提及
- 附件、表情、引用
- 不做 Thread(明确排除)
- 不做已读回执(明确排除)
- 实时通信
- WebSocket 实时消息推送
- 在线状态、输入中、消息同步
- 客户端检测到消息序号断片时,通过 API 按 range 回补
- 插件友好设计(本体中立)
- 本体不内置 OpenClaw 专属逻辑
- 提供稳定事件模型(消息创建/编辑/删除、成员事件、权限变更)
- 提供清晰 API 边界(鉴权、幂等、分页、速率限制、错误码)
- 为外部插件保留扩展点(Webhook、Bot Token、Outbound 回调)
- 权限与审计
- 当前策略:所有用户无权限差别,均可增删改查 guild/channel/dm/聊天记录
- 审计日志保留时间/大小由每个 guild 自行配置
4. 建议技术栈(v0.1)
- API:NestJS(REST + WS)
- Realtime:WebSocket Gateway
- DB:PostgreSQL
- Cache/Queue:Redis(会话态 + 异步任务)
- Storage:MinIO(附件)
- Deploy:Docker Compose(app + pg + redis + minio)
4.1 部署与边界模型(新增决策)
- 采用“两套后端”模型:
- 中心服务(Identity Hub):管理用户身份与登录态
- Guild 服务(Guild Node):管理 Guild/Channel/DM/消息数据
- 一个中心服务可挂载多个 Guild 服务
- 不同中心服务彼此完全独立(A 的用户无法登录 B)
- 一个 Guild 服务只能注册到一个中心服务
- Guild 服务注册时需证明持有中心服务 secret(共享密钥握手)
5. 模块拆分(对应仓库)
Fabric.Backend- Auth/Workspace(Guild)
- Chat Core(Channel、DM、消息;不含 Thread)
- Integration Surface(Webhook、Bot Token、扩展回调)
- Permission & Audit
Fabric.Frontend- 工作区/频道 UI
- 消息流、输入框、回复/编辑/删除/@
- 平台中立 UI(不内置 OpenClaw 专属交互)
Fabric.OpenclawPlugin- OpenClaw 侧适配与路由配置
- 会话映射、回执状态、错误处理
- 工具调用卡片与审批流(approve/reject)
- Webhook + Gateway 双模式(MVP 先做 Webhook)
Fabric.Desktop- Desktop 客户端壳(后续)
Fabric.Android- Android 客户端壳(后续)
6. 里程碑(6 周参考)
注:OpenClaw 集成能力仅在
Fabric.OpenclawPlugin实现,Fabric 本体不承担 OpenClaw 专属逻辑。
Week 1:需求冻结 + 架构设计
- PRD 冻结
- 架构图、数据模型、接口草案
Week 2:基础业务 API
- 登录注册、工作区、频道、消息 REST API
- 基础前端页面(频道列表 + 消息流)
Week 3:实时通信
- WebSocket 推送
- 在线状态、输入中、消息同步
Week 4:插件集成(在 Fabric.OpenclawPlugin)
- Agent 绑定配置
- 消息路由与回写
- 工具状态卡片(running/success/error)
- approve/reject 审批流
Week 5:权限与运维
- 角色权限(admin/member)
- 审计日志
- 健康检查、日志聚合、Compose 完善
Week 6:稳定性与发布
- 压测与性能调优
- Bug 修复
- MVP 发布文档与部署指南
7. 仓库组织
Fabric(主仓库)- 挂载子模块:
Fabric.OpenclawPluginFabric.BackendFabric.FrontendFabric.DesktopFabric.Android
- 挂载子模块:
8. 当前状态
- 所有仓库已创建为 Public
Fabric.*已作为子模块挂载到Fabric- 本体保持平台中立:不包含 OpenClaw 专属业务逻辑
- OpenClaw 相关能力集中在
Fabric.OpenclawPlugin - 已确定:Guild 可分布在不同服务器;中心服务/ Guild 服务双层架构
- 待定:消息顺序一致性细则、插件扩展契约 v1 细节
- 本文件为第一版规划,后续按里程碑持续细化