diff --git a/PLAN.md b/PLAN.md new file mode 100644 index 0000000..9351746 --- /dev/null +++ b/PLAN.md @@ -0,0 +1,103 @@ +# Fabric 项目规划 v0.1 + +## 1. 项目目标 +**Fabric**:一个可自部署的类 Discord 聊天系统,核心目标是提供稳定、低摩擦的 **Agent 沟通渠道**,并对 OpenClaw 友好。 + +### MVP 成功标准 +- 支持多人频道聊天 + 私聊 +- 支持接入 OpenClaw Agent 并在频道内对话 +- 支持基础权限与审计日志 +- 提供 Docker Compose 一键部署 +- 单机可稳定服务 50~200 并发在线(MVP 目标) + +## 2. 项目定位(一句话) +> 一个可自部署、类 Discord 的实时聊天系统,原生支持 OpenClaw/Agent 双向协作。 + +## 3. MVP 必要功能 +1. **账号与组织** + - 用户注册/登录 + - 工作区(Workspace) +2. **聊天模型** + - 频道(公开/私有) + - 私聊(1v1) + - 消息回复、编辑、删除、@提及 +3. **实时通信** + - WebSocket 实时消息推送 + - 在线状态、输入中、消息同步 +4. **OpenClaw 集成(核心差异化)** + - Agent 绑定与配置 + - 可配置路由:频道消息 -> OpenClaw session + - 消息回写与工具状态展示 + - “工具调用卡片”与审批流(approve/reject) + - Webhook + Gateway 双模式(MVP 先做 Webhook) +5. **权限与审计** + - 基础角色(admin/member) + - 审计日志(关键操作留痕) + +## 4. 建议技术栈(v0.1) +- **API**:NestJS(REST + WS) +- **Realtime**:WebSocket Gateway +- **DB**:PostgreSQL +- **Cache/Queue**:Redis(会话态 + 异步任务) +- **Storage**:MinIO(附件,MVP 可选) +- **Deploy**:Docker Compose(app + pg + redis + minio) + +## 5. 模块拆分(对应仓库) +- `Fabric.Backend` + - Auth/Workspace + - Chat Core(频道、私聊、消息) + - OpenClaw Integration(Webhook/Gateway、session 路由、回写) + - Permission & Audit +- `Fabric.Frontend` + - 工作区/频道 UI + - 消息流、输入框、回复/编辑/删除/@ + - Agent 状态与工具卡片展示 +- `Fabric.OpenclawPlugin` + - OpenClaw 侧适配与路由配置 + - 会话映射、回执状态、错误处理 +- `Fabric.Desktop` + - Desktop 客户端壳(后续) +- `Fabric.Android` + - Android 客户端壳(后续) + +## 6. 里程碑(6 周参考) +### Week 1:需求冻结 + 架构设计 +- PRD 冻结 +- 架构图、数据模型、接口草案 + +### Week 2:基础业务 API +- 登录注册、工作区、频道、消息 REST API +- 基础前端页面(频道列表 + 消息流) + +### Week 3:实时通信 +- WebSocket 推送 +- 在线状态、输入中、消息同步 + +### Week 4:OpenClaw 集成 +- Agent 绑定配置 +- 消息路由与回写 +- 工具状态卡片(running/success/error) + +### Week 5:权限与运维 +- 角色权限(admin/member) +- 审计日志 +- 健康检查、日志聚合、Compose 完善 + +### Week 6:稳定性与发布 +- 压测与性能调优 +- Bug 修复 +- MVP 发布文档与部署指南 + +## 7. 仓库组织 +- `Fabric`(主仓库) + - 挂载子模块: + - `Fabric.OpenclawPlugin` + - `Fabric.Backend` + - `Fabric.Frontend` + - `Fabric.Desktop` + - `Fabric.Android` + +## 8. 当前状态 +- 所有仓库已创建为 Public +- `Fabric.*` 已作为子模块挂载到 `Fabric` +- 本文件为第一版规划,后续按里程碑持续细化