01
背景与目标
远期愿景:聊天中产生点子 → 唤起 AI 澄清成结构化需求 → 建临时群协作 → Agent 服务实现 → 验收后自动解散群组,形成工作流闭环。点击下方节点查看各阶段说明(MVP1 只做第一步的地基)。
02
用户与使用场景
不开放注册,预置 5 个团队账号;PC 客户端常驻使用,服务端工程骨架已就绪。
👥
用户
lamolabs 团队成员,共 5 人,预置账号,不开放注册
💬
场景
工作日常沟通;PC 客户端(nexo-im-pc)常驻使用
🖥️
服务端
nexo-im-api(Hono + PostgreSQL + WebSocket,工程骨架已就绪)
03
功能需求
P0 缺一不可,P1 资源不足可顺延。点击「在原型中体验」跳转到模拟器并自动演示对应能力。
FR-1P0
账号与登录
- 预置 5 个团队账号(用户名 + 密码),登录成功获得会话凭证
- 登录失败给出明确提示;不做开放注册、找回密码
- 同一账号仅单端在线,后登录踢前登录
FR-2P0
会话列表与换人聊天
- 展示团队成员列表,点击任一成员即可发起/进入单聊
- 已有会话按最近一条消息时间倒序排列
- 点击切换会话,聊天窗口正确切换上下文
FR-3P0
文本消息收发
- 会话内发送文本消息,对方在线时 WebSocket 实时收到
- 对方离线时消息落库,重新上线后完整拉到
- 发送有成功/失败反馈,失败可重发
FR-4P0
历史消息
- 进入会话拉取最近一页消息,向上滚动分页加载更早消息
- 同一会话内消息顺序稳定(刷新、重连后顺序不变)
FR-5P1
未读数
- 会话列表展示各会话未读条数,进入会话后清零
FR-6P1
在线状态
- 成员列表/会话中显示对方在线、离线状态
04
交互原型模拟器
纯前端模拟的 IM 客户端,覆盖本 MVP 全部 P0/P1 行为。配合右侧控制台操作(踢下线、断线重连、网络故障、对方上下线/来消息),可逐条触发并自动勾选底部验收标准。
ⓘ 以下为高保真原型,所有数据均在浏览器内存中模拟,非真实服务
N
Nexo IM
lamolabs 团队内部工作 IM · 预置账号,不开放注册
05
明确不做(Out of Scope)
以下能力本期一律不做,避免范围蔓延;AI 能力自 MVP2 起分期引入。
✕群聊(后续与「临时群组」一并设计)
✕图片、文件、语音、视频消息
✕消息撤回、编辑、引用回复、表情回应、@提及
✕消息搜索
✕移动端、多端同步、离线推送
✕全部 AI 能力(需求澄清、建群、agent 实现等)
✕端到端加密(团队内部自用,暂不需要)
06
非功能需求
规模按 5 人设计,不设高并发指标;重点是可靠与可恢复。
PostgreSQL
消息持久化
服务重启不丢失已确认送达的消息
≤ 1s
端到端延迟
正常网络下消息端到端延迟不超过 1 秒
5 人 · 单实例
部署规模
按 5 人团队设计,服务端单实例部署即可
自动重连
断线恢复
客户端断线后自动重连,重连后自动补齐断线期间的消息
07
验收标准(端到端场景)
在上方原型中完成对应操作会自动勾选(标有「已在原型中验证」),也可手动点击勾选。
✓
A 用预置账号登录成功;错误密码被明确拒绝
已在原型中验证✓
A 在成员列表点击 B 发起会话,发送消息,B 端 1s 内实时收到
已在原型中验证✓
B 回复后 A 实时收到,双方看到的消息顺序完全一致
已在原型中验证✓
A 切到 C 聊天再切回 B,两个会话上下文互不串扰(换人聊天)
已在原型中验证✓
B 离线期间 A 持续发消息,B 重新登录后完整收到(原型中以本端断线重连补齐演示)
已在原型中验证✓
客户端刷新/重启后历史消息完整、顺序不变,向上翻页可加载更早消息
已在原型中验证✓
同账号第二处登录时,第一处被踢下线
已在原型中验证✓
(P1)未读数正确累计与清零;(P1)在线状态正确变化
已在原型中验证
0 / 8
08
约束与说明
本文档只定义「做什么」;消息协议、表结构、seq 设计等属技术方案,另行评审。
需求文档中「用户」一律指 lamolabs 团队 5 名成员。
MVP 验收人:团队全员试用一周,日常沟通可完全替代现用工具即视为达成目标。