LAMOLABS · DOGFOODING · AI-NATIVE WORK IM

Nexo IM — MVP 需求文档
交互演示版

本期唯一目标:把 IM 地基跑通 —— 团队 5 人能用它完成日常单聊(收发消息、换人聊天)。一切 AI 能力从 MVP2 开始,不属于本期。

状态:草案(待评审) 日期:2026-08-09 范围:仅 MVP1 · 单聊跑通 服务端:Hono + PostgreSQL + WebSocket
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 行为。配合右侧控制台操作(踢下线、断线重连、网络故障、对方上下线/来消息),可逐条触发并自动勾选底部验收标准。

ⓘ 以下为高保真原型,所有数据均在浏览器内存中模拟,非真实服务

Nexo IM — nexo-im-pc
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 验收人:团队全员试用一周,日常沟通可完全替代现用工具即视为达成目标。