--- title: NixMsg 产品边界确认 type: decision permalink: main/projects/25464650-ed5d-440e-b362-190f2852d451/nix-msg-产品边界确认 stable_id: de0503ed-3d77-400d-a0bb-bbe44371f906 scope: project memory_type: decision project_id: 25464650-ed5d-440e-b362-190f2852d451 usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 status: active revision: 7 request_id: nixmsg-20260930-0412-boundary-rev7 created_at: '2026-09-29T18:07:17.185616+00:00' updated_at: '2026-09-29T20:17:29.126490+00:00' tags: - nixmsg - prd - boundary --- 用户在整理 PRD 前确认的产品边界: 1. 使用者:偏向程序或设备自动收发,但人在 App、网页里看消息也需要,后续可能用于聊天类消息通讯。 2. 服务器不保留历史供翻看。是否保留历史由客户端自行决定,我们只提供 SDK。 3. 密码分两种,都要:登录密码(端连服务器必须用,防止冒充),和对话密码(别人要给这个端发消息,得先知道这个密码)。 4. 对话密码输对一次就记住,之后直接发;对方改对话密码后,所有人要重新输。 5. 所有端在同一个圈子:谁都能看到别的端在不在线;能不能发消息,只看对方有没有设对话密码。 6. 把设了对话密码的端拉进群,要先输对它的对话密码;进群后群消息直接能收到。 7. 需要网页管理后台:开通端、改密码、看在线、管群、查消息送没送到。 8. 第一批 SDK:Go、Java/Android、JavaScript/TypeScript(浏览器和 Node.js)、Python。 9. 服务端:单个 Go 程序,内置 MQTT,部署只放一个文件。所有消息先经服务器处理,设备之间不直接转发。端口(2026-09-30 修订,取代原来的“一个程序一个端口”):端连服务器尽量只用一个固定端口;后台网页、MQTT、Redis(如确有需要)等可以用不同端口;一个端口能承载时优先一个端口。 10. 消息大小:单条消息上限 256 KB,不做分块和断点续传。用户曾选过不限大小、自动分块,已明确推翻,原因是分块麻烦、维护难。大文件传输后续另行实现(例如先上传到服务器再发送链接),这一版不做。 11. 消息送到(或过期、撤回)后,服务器马上删掉消息内容,只留“谁发给谁、什么时候、送没送到”的记录供后台查。记录保留多久可以自己设定,也可以不留;不留则送完后连记录一起删除,后台只能看到未送完的消息。 12. 设了对话密码的 B 主动给 A 发消息后,A 回复 B 不用再输密码;B 改对话密码后,A 也要重新输。 13. 同一个端(同一个编号)只能在单台设备上登录。用户曾选过多台同时登录,已明确推翻。要多台就开多个端;发出的消息不同步到其他设备。 14. 端自助注册要做(2026-09-30 确认,推翻 0.1 文档里“端自己注册本期不做”):SDK 提供注册,以及修改自己的登录密码和对话密码,让端应用里能实现注册、登录、改密。管理员在后台决定是否开启注册,并设置注册安全码;只有带正确安全码才能注册。管理员更换安全码后,已注册的端照常使用;之后注册必须用新码,旧码无法注册。