9.5 KiB
项目工作台 MVP 设计
目标
构建一个以项目为中心、面向私有部署的个人与小团队工作台。产品要解决资料分散、任务分散、AI 对话分散、用时找不到的问题,让每个项目都有统一位置承载任务、笔记、文件、AI 对话、收集内容和轻量任务分发。
第一版不是完整协作套件、即时通讯工具或企业知识图谱。它是一个项目优先的工作空间,重点是可靠收集、组织、搜索和 AI 辅助整理。
目标用户
- 同时管理多个主题或项目的个人知识工作者。
- 需要整理项目资料并分发任务的团队负责人。
- 私有部署环境中的内部用户,通过管理员创建账号或邀请码注册。
产品范围
MVP 包含
- 以项目为中心的工作空间。
- 项目 Dashboard 作为项目默认首页。
- 项目 inbox,用于手动收集和承接系统事件。
- 任务列表,支持状态和排序,并为未来看板视图预留模型能力。
- 统一的 Markdown 笔记/文档对象。
- 项目内文件和链接资料。
- 项目内标签,用于筛选项目对象。
- AI 会话归属于具体项目。
- AI 会话可以引用项目笔记和资料。
- AI 辅助分析 inbox 内容,并建议生成任务、笔记或资料。
- 跨项目关键词搜索和全文搜索。
- 向系统内用户分发任务。
- 显式共享任务关联对象。
- 响应式 Web 前端,并由 Tauri 包装为桌面客户端。
- Tauri 桌面能力:登录持久化、文件拖拽上传、系统通知、全局快捷键快速收集。
- Go Gin + Gorm 后端,数据库使用 PostgreSQL。
- 服务端本地文件存储。
- 系统 AI key,以及用户可选配置自己的 AI key。
MVP 不包含
- 真正的实时即时通讯。
- 项目级成员体系和完整角色权限协作。
- 匿名公开任务分享。
- AI 自主 Agent 执行系统。
- 语义搜索或向量搜索。
- 移动端原生 App。
- 浏览器插件、邮件、IM 或第三方渠道收集集成。
- 离线编辑或本地优先同步。
- 高级本地桌面集成,例如开机启动、后台剪贴板监听、文件系统索引。
核心信息架构
应用分为全局外壳和项目工作区。
全局外壳:
- 项目列表。
- 全局搜索。
- 浏览器式打开标签页。
- 用户/账号设置。
- AI key 设置。
项目工作区:
- Dashboard。
- Inbox。
- 任务。
- 笔记和资料。
- AI 会话。
- 项目设置。
项目 Dashboard 是默认项目视图。它展示待处理 inbox、当前任务、最近笔记/资料、最近 AI 会话和最近项目事件。
核心对象
Project
项目是一个主题工作空间。它拥有任务、inbox 条目、笔记、资料、AI 会话、项目内标签和项目事件。
InboxItem
InboxItem 是等待处理的原始收集内容或系统事件。来源包括:
- 手动输入文本。
- 粘贴链接。
- 上传文件。
- AI 输出保存到 inbox。
- 内部任务事件、评论、状态变化。
外部渠道通过 source_type 字段预留,但 MVP 不实现外部渠道接入。
InboxItem 在处理后仍作为原始记录保留。处理动作可以将其标记为 processed,但不会删除原始内容。
Task
任务支持:
- 标题。
- 描述。
- 状态。
- 排序字段,用于未来看板视图。
- 截止时间。
- 负责人。
- 项目内标签。
- 显式共享的关联对象。
- 评论或活动记录。
第一版 UI 使用列表。数据模型为未来 Todo/Doing/Done 看板列预留空间。
Note
笔记和文档合并为同一种 Markdown 对象。通过模板、长度、标签和使用意图区分会议纪要、PRD、研究笔记或轻量文档。
Source
Source 是原始资料,例如上传文件或链接。MVP 使用服务端本地文件存储。文件路径逻辑必须集中在一个后端文件服务中,不应散落在各个 handler 里。
AISession
AI 会话归属于一个项目,并以卡片形式出现在项目 AI 会话列表中。每个 session 拥有自己的消息历史和上下文,可以引用项目笔记和资料。
MVP 中的 AI session 是普通项目聊天,不是自主 Agent 运行。模型应为未来 Agent 化 session 预留空间,例如目标、状态、产出物和执行日志。
Tag
标签是项目内标签。它们可以附加到项目内对象,用于该项目内筛选。跨项目查找依赖全局搜索,而不是全局标签。
ProjectEvent
项目事件记录重要活动,例如任务分发、评论、状态变化、AI 输出保存到 inbox、笔记更新和文件上传。事件可展示在项目 Dashboard 和类 inbox 的消息流中。
User
用户体系面向私有部署。注册方式是管理员创建账号或邀请码注册。公开自助注册 SaaS 不在 MVP 范围内。
关键流程
收集到项目 Inbox
用户将文本、链接或文件添加到项目 inbox。在 Tauri 中,全局快捷键打开快速收集窗口。如果主窗口当前处于某个项目,该项目作为默认投递目标;否则用户需要选择目标项目。
内容进入 inbox 时不会自动触发 AI 分析。用户需要建议时,可以点击“分析/整理”。
AI 辅助处理 Inbox
当用户点击“分析/整理”时,后端调用选定的 AI provider。AI 返回结构化建议列表,包含候选任务、笔记或资料。
用户查看建议列表,编辑标题或基础字段,勾选要创建的候选项,然后确认。AI 不能在未确认时直接创建正式对象。创建出的对象需要保留对原始 inbox item 的引用。
项目 AI 对话
用户在项目下打开一个 AI session 卡片。该 session 有自己的消息历史。用户可以用 @ 选择器引用项目笔记或资料。AI 回复可以保存到 inbox、转换为笔记,或关联到任务。
任务分发
用户可以把任务指派或共享给另一个系统用户。接收者能看到任务本身,以及被显式共享的关联对象。接收者不会自动获得项目级访问权限。
公开分享链接是未来能力,不属于 MVP 行为。
全局搜索
用户可以跨项目搜索。MVP 搜索范围包括:
- 项目名称。
- 任务标题和描述。
- 笔记标题和 Markdown 正文。
- 资料标题、文件名、URL,以及可提取到的正文文本。
- AI session 标题和消息文本。
- Inbox 文本。
搜索使用 PostgreSQL 全文搜索,并支持关键词搜索。语义搜索后置。
AI Key 策略
系统配置默认 AI provider/key。用户可以配置自己的 provider/key。如果用户配置了自己的 key,优先使用用户 key;否则可以回退到系统 key。
因为允许回退到系统 key,MVP 必须包含:
- AI 调用日志。
- 基础用户级限流。
- 错误记录。
- 用户 key 的安全存储。
- 清晰的 provider 选择逻辑。
后端设计
后端技术栈:
- Go。
- Gin HTTP API。
- Gorm ORM。
- PostgreSQL。
- 服务端本地文件存储。
建议后端模块:
- 认证和邀请。
- 项目。
- Inbox。
- 任务。
- 笔记和资料。
- AI 会话。
- 搜索。
- 文件。
- 标签。
- 事件。
- AI provider 网关。
文件模块拥有所有文件系统路径和元数据规则。Handler 不应直接构造存储路径。
前端与 Tauri 设计
前端是响应式 Web 应用,桌面优先,同时保证移动浏览器可用。Tauri 包装同一套前端作为桌面客户端。
Tauri MVP 能力:
- 登录状态持久化。
- 文件拖拽上传。
- 系统通知。
- 全局快捷键快速收集。
浏览器式标签页保存页面级状态,例如打开的项目、任务详情、笔记、资料或 AI session。滚动位置等复杂内部状态不要求进入 MVP。编辑器草稿和 AI 输入草稿应单独保存,避免数据丢失。
权限
MVP 使用保守共享模型:
- 项目内容默认仅创建者可见,除非通过任务显式共享。
- 任务接收者可以看到任务。
- 任务接收者只有在对象被显式共享时,才能看到关联笔记、资料或文件。
- 项目级成员和角色体系后置。
测试与验证
后端:
- AI key 选择、inbox 处理、任务共享可见性、标签项目隔离、文件元数据处理的单元测试。
- 项目搜索、任务分发、inbox 转对象的集成测试。
前端:
- 项目 Dashboard、inbox 建议确认、AI session 列表、任务列表、快速收集表单的组件测试。
- 收集、分析、确认、搜索、任务指派流程的端到端测试。
桌面端:
- 手动验证文件拖拽上传、系统通知、快速收集快捷键、Tauri 登录持久化。
风险
- 如果项目协作、真实消息和自主 Agent 进入 MVP,系统会迅速变得过宽。
- 系统 AI key 回退会带来成本和滥用风险,必须配套日志和限流。
- PostgreSQL 全文搜索对中文内容可能需要额外调优。
- 服务端本地文件存储简单,但需要认真处理备份、路径规则和未来迁移。
- AI 建议必须可审核、可撤销,否则用户会失去信任。
里程碑
- 后端基础:认证、用户、项目、PostgreSQL schema、文件元数据、服务端本地存储。
- 项目工作区外壳:项目列表、项目 Dashboard、标签页、路由。
- Inbox 和收集:手动 inbox、上传/链接/文本收集、Tauri 快速收集。
- 笔记、资料和项目内标签。
- 任务列表、指派、评论/事件、显式共享关联对象。
- AI session 和 @ 引用选择器。
- AI inbox 分析和建议列表确认。
- 全局全文搜索。
- Tauri 桌面完善:通知、登录持久化、拖拽上传验证。