diff --git a/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 设备通讯需求.md b/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 设备通讯需求.md index 0f3381e..6d47d8e 100644 --- a/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 设备通讯需求.md +++ b/projects/25464650-ed5d-440e-b362-190f2852d451/NixMsg 设备通讯需求.md @@ -8,40 +8,25 @@ memory_type: prd project_id: 25464650-ed5d-440e-b362-190f2852d451 usage_profile_id: 0c9feb46-d06e-43cd-9ef0-c5813c84a998 status: active -revision: 7 -request_id: nixmsg-prd-20260930-0110 +revision: 8 +request_id: nixmsg-prd-20260930-docs-r8 created_at: '2026-09-29T15:43:54.496883+00:00' -updated_at: '2026-09-29T17:15:57.912231+00:00' +updated_at: '2026-09-29T19:45:16.587475+00:00' tags: - nixmsg - requirements --- -NixMsg 是自部署的消息中转服务。参与者是对等的端:每个端有自己的标识,同时发送和接收。端可以组成群,群成员看到同一份群消息。交付物是服务端、网页管理后台和各语言 SDK。 +NixMsg 是自建消息中转。正式文档:docs/PRD.md 与 docs/DEVELOPMENT.md(2026-09-30,版本 0.1)。根目录 t.md 是写文档前的思考草稿,不是规范。 -用途(用户确认 2026-09-30): -- 以程序自动处理为主(执行指令、上报数据),后续也可能用于人与人的消息通讯 -- 服务器不保留可翻阅的历史消息;是否保留历史由客户端自己决定,我们只提供 SDK +用途:以程序和设备自动收发为主,人在 App 或网页里收发也要。服务器不保存可翻阅的历史,历史由客户端自己决定。 -密码与可见范围(用户确认): -- 登录密码:端连服务器用,没有或输错就连不上 -- 通讯密码:可选,别的端给它发消息时必须带上,知道密码才能跟它通讯 -- 所有端在同一个圈子:谁都能看到别的端是否在线;能否发消息只看对方有没有通讯密码 -- 把设了通讯密码的端拉进群,要先输对它的通讯密码;进群后群消息直接能收到 +身份:对等的端,有编号,同一编号只能一处登录。可以组群,群消息只存一份,到点按当时成员投递,入群前的消息不补。 -管理与 SDK(用户确认): -- 需要网页管理后台:开通端、改密码、看在线、管群、查消息送没送到 -- 第一批 SDK:Go、Java(含 Android)、JavaScript/TypeScript(浏览器和 Node.js)、Python -- 嵌入式第一批不出 SDK,靠完整公开的底层协议接入 +密码:登录密码和对话密码都要。对话密码输对一次就记住,对方改密后失效。对方先单聊过,可以免密回复。拉进群必须当次带对话密码。谁都能看到别人是否在线。 -部署与规模:单机,暂不做集群;端数量 1000 以内,可能有嵌入式。 +消息:单条正文最大 256 KiB,不分块。可选离线保留并带过期时间,弱网至少送达一次。可定时、可延迟、可撤回。送达、过期或撤回后立刻删正文,只留不含正文的记录,保留天数可配置。 -消息语义: -- 发送时可选择对方不在线是否保留,保留消息有过期时间,超时销毁 -- 弱网尽量送达,至少一次,消息带 ID 供接收方去重 -- 可撤回已提交、对方尚未接受、且未过期的消息 -- 可指定何时发送,也可以固定每条消息的发送延迟;到点后再按在线状态和是否保留投递 -- 群消息只存一份,成员看到同一条;每个成员各自有投递状态 -- 建群者是群主并管理成员;到点时按当时成员投递;入群前的消息不补 +实现:单机一个 Go 进程,内置 MQTT,一个端口,SQLite。管理后台用于开通端、改密码、看在线、管群、查送达。SDK:Go、Java/Android、JavaScript/TypeScript、Python。嵌入式本期不出 C SDK,按协议直接接 MQTT。 -文档:用户要求在 docs/ 下写 PRD 和开发文档,不写代码;交给 Grok 开发组开发,完成后再交回审核。边界问题每轮问 1-2 个。 \ No newline at end of file +未逐条口头确认、已写入 PRD 第 9 节的默认:改密不影响已提交消息;回执默认开启;断线 60 秒宽限;记录默认留 7 天;防重标记留 24 小时。 \ No newline at end of file