《秀秀 3.0 最终诉求界定文档》

编制:2026-05-26(阶段一核心交付物)
立项:2026-05-26
终验:2026-11-26(半年内 100% 完成)
中间节点:2026-07-26(核心调研+方案雏形)/ 2026-08-26(阶段性大成果)
视角:按守一指定的 7 模块组织
项目代号:秀秀 3.0 = TailChat 改造为多甲乙方独立部署的即时通讯软件


〇、项目元数据

内容
项目目标 把秀秀(TailChat)改造为可独立部署、甲方公网互联、乙方自主接入的即时通讯软件
主决策人 守一(最终验收)
项目主责 金祥(统筹)+ 自动化开发程序/Bot Team/Bot Skill
调研 Q/CC
测试 实习生
服务器 狗云(当前 chat.lidazhiai.com 在跑),未来要扩多台
时间表 半年内 100% 完成,每周至少一次 HTML 汇报
当前已有底盘 TailChat v1.11.10 (Apache-2.0) + 自研 xiuxiu:v2.5.11-renderfix 镜像 + 49 条已实现功能
唯一未完成历史要求 "TailChat 作为 OpenClaw 正式 Channel"(守一已决定纳入 3.0)

一、模块一:产品功能

1.1 目标

秀秀 3.0 = 类微信的即时通讯软件,参考飞书 / 钉钉 / Discord 的协作能力,但比这些产品更适合"乙方独立部署 + 接入公网"

1.2 核心功能需求(守一新 18 条 #4 #5)

功能 现状
消息 文字消息、@提及、回复引用、Markdown 渲染、消息搜索、消息右键菜单 ✅ 已实现
消息 消息转发 ✅ 守一已自研落地(v1 报告错把它列为"不支持")
消息 消息多选 ✅ 守一已自研
消息 消息置顶 ✅ 守一已自研
消息 群发消息(@everyone / @角色 / 多接收人广播) 🟡 TailChat 原生不支持,需扩展
群组 群组双层结构(群组→面板)、群主/管理员/普通成员、邀请系统
联系人 好友系统(昵称#discriminator)、联系人置顶 ✅ 含守一 E1
客户端 Web / Windows / Mac / iOS / Android 多端 🟡 Web/Win/Android 已有,Mac/iOS 待
体验 暗色/亮色主题、PWA、桌面通知、手机端回车=换行 ✅ A1 守一自研
体验 时间显示、输入中状态(typing) ✅ B6 守一 260408 落地
Windows 右键复制(输入框)、刷新不丢失输入草稿 ✅ A2/A3 守一自研

1.3 待开发功能(明确)

F1 桌面快捷方式(守一明确):
- 点快捷方式→直进对话窗口
- 手机版 + Windows 版(手机版优先
- 点链接/按钮→直接跳转对话页

技术路径:deep link / URL Scheme / Electron protocol handler。预估 MVP 2-3 天。

1.4 已冻结/暂缓(守一决策)


二、模块二:部署架构

2.1 目标(守一新 18 条 #2 #3)

2.2 当前底盘(已有)

甲方:chat.lidazhiai.com(45.153.129.198,腾讯云 CVM73439)
镜像源母机:81.70.146.110(腾讯云,sync-xiuxiu.sh 自动同步)
镜像:xiuxiu:v2.5.11-renderfix
容器栈:service-core + mongo + redis + minio + whisper + traefik(6 跑)
未启动:service-openapi + service-all-plugins + tailchat-admin(3 个 compose 定义但 docker compose up 没启)

2.3 部署架构需求

需求 现状
甲方服务器+公网通信能力 ✅ 已有 chat.lidazhiai.com
乙方在自家机起独立 TailChat 实例 ❌ 待设计
多个乙方实例通过甲方互通 ❌ 待设计(联邦/桥接/中继协议待选)
乙方自主决定哪些账号/Bot 接入甲方公网 ❌ 待设计(乙方控制台 + 授权机制)
HTTPS + Let's Encrypt 通配符证书
Nginx WebSocket + X-Forwarded-Proto + 关闭 http2
Docker Compose 一键部署 ✅ 当前 yml 已有
镜像同步机制(母机→部署机) ✅ sync-xiuxiu.sh 可参考
乙方部署包工具化(要给乙方用,不是自己用) ❌ 待设计

2.4 关键约束(v3/v2.5.11 镜像欠债)

守一决策 2:v3 镜像欠债暂不处理。但风险未消:
- 前端修复(IME / 字符限制 / Service Worker / MentionDropdown)仅靠 docker cp 热修
- index.tsx 4 月 7 日备份 + 4 月 9 日改动直写容器,不在镜像里
- 容器一旦 force-recreate 改动全丢

3.0 启动时建议至少做"运维硬规则":重启容器前必须备份热更新文件。

2.5 服务器规模建议(来自 ima [G-15])


三、模块三:通信模式

3.1 目标(守一新 18 条 #3)

                    甲方服务器(公网核心)
                  chat.lidazhiai.com 当前实例
                    │
       ┌────────────┼────────────┐
       │            │            │
   乙方A实例     乙方B实例      乙方C实例
   xx.com:443  yy.com:443    zz.com:443
   (独立部署)  (独立部署)   (独立部署)

每个乙方实例:本地真人/Bot/Agent 完整运行
跨乙方通信:经甲方服务器中继
乙方接入权:每个乙方自主决定哪些账号/Bot 可接入甲方公网

3.2 通信链路需求

链路 描述 实现状态
真人 → 真人(同实例) 乙方内部聊天 ✅ TailChat 原生 Socket.IO
真人 → 真人(跨实例,经甲方) 跨乙方公司聊天 ❌ 待设计
真人 → Bot(同实例) 乙方用户调本地 Bot ⚠️ openapi 容器未起
Bot → Bot(跨 Bot) Agent 互联 ⚠️ 同上
乙方 Bot → 甲方公网 → 乙方/真人 跨实例 Bot 通信 ❌ 待设计

3.3 关键技术决策

3.4 跨乙方协议选型(待定)


四、模块四:身份体系

4.1 目标(守一新 18 条 #4)

真人用户 与 Bot 用户严格区分
- 真人用户只能在真人区发布内容
- Bot 用户只能在 Bot 区发布内容

4.2 源码地基(重大利好)

TailChat 源码 User.type 字段原生三态
- normalUser — 真人
- pluginBot — 插件 Bot
- openapiBot — OpenAPI Bot

这意味着身份系统的基础已经存在,不需要从零设计。但当前数据库 38 个用户全是 normalUserBot 没注入到 users 表(42 个 openapps 注册但没对应 users)。

4.3 实现路径

步骤 描述 估计
1 Bot 注册时同步生成对应 pluginBot / openapiBot 类型的 user 记录 改 openapi.bot.login 服务
2 现有 42 个 openapps 反向回填 users(type=openapiBot) 一次性 migration script
3 前端按 user.type 过滤消息流 client/web 增强
4 后端 API 增加 type-based 权限校验 service-core 增强

4.4 乙方账号自主授权(守一新 18 条 #3)


五、模块五:朋友圈体系(守一新 18 条 #4)

5.1 目标

双信息流双标签
- "真人秀" 标签 → 仅展示 user.type=normalUser 的朋友圈内容
- "Bot 秀" 标签 → 仅展示 user.type=pluginBot/openapiBot 的朋友圈内容
- 用户可在两个标签间自由切换

5.2 源码现状

5.3 实现路径

步骤 描述
1 后端:新建 moments 集合(用户/Bot 朋友圈条目)+ 评论/点赞表
2 后端:moments service(list / publish / like / comment)
3 后端:list API 按 user.type 过滤 → 真人秀 / Bot 秀
4 前端:双 Tab + 信息流列表(Web + 桌面 + 移动)
5 前端:发布器(图文/视频/链接)
6 服务端:内容审核(敏感词 / 图片审核 hook)

预估工作量:中等偏大,这是 3.0 最重要的产品差异点,需要在阶段六的开发方案中重点排期。

5.4 设计约束


六、模块六:API 能力

6.1 目标(守一新 18 条 #5)

6.2 源码现状(很强)

6.3 当前状态

状态
API 代码 ✅ 完整在 v2.5.11 镜像
service-openapi 容器 ❌ 从未启动
实际可用性 ❌ 端口 3003 实测 000 无响应
复活成本 极低docker compose up -d service-openapi 一行

6.4 3.0 增量需求


七、模块七:品牌改造

7.1 目标(守一原始要求 #15)

7.2 源码改造抓手(来自 425 条源码调研)

抓手 改造方式
运行时可改 serverName / serverEntryImage / announcement config.setClientConfig API,无需重编
主题色 regPluginColorScheme + 23 个 reg 扩展点 插件机制
服务端 mixin / hook 插件机制
硬编码必须改源码 About.tsx:39consts.ts:25 的 "Tailchat" 字样 改源码 + 重编镜像
安装包 Electron productName / Android app_name / iOS bundle_id 改 build 配置

7.3 当前状态

7.4 3.0 品牌改造排期

按守一决策"最后再说":
- 阶段一:先冻结清单,不开始
- 阶段五(品牌性测试):作为测试维度之一
- 阶段六(开发方案设计):纳入完整改造排期
- 阶段七:实际执行


八、关键决策与锁定项汇总

8.1 守一已决策(共 8 项)

# 内容 影响
1 圆桌会议保留冻结,作为科研资产 不开发,与 TailChat Topic 插件链锁定 v2.5.11
2 v3 镜像欠债暂不处理 风险存在,建议运维硬规则
3 乙方真独立部署(另起服务器,不是多租户共享) 阶段五测试须 2+ 台不同服务器
4 品牌素材 9 项最后再说 排到阶段六/七
5 30 款源码调研延后 阶段二/三延后
6 功能整合三维度清单最高优 已完成
7 Bot 接入方案选 [#03] OpenClaw Channel TailChat 注册为 OpenClaw 原生 channel
8 历史要求 19(TailChat 作为 OpenClaw 正式 Channel)纳入 3.0 与 #7 一致

8.2 待守一确认(共 4 项)

# 内容 影响
1 3 容器(service-openapi / all-plugins / admin)是否授权启动 阻塞 17 条 Bot 能力复活
2 API 密钥(MiniMax + Anthropic)何时 rotate 安全债,已暴露在对话历史
3 "维度 C 首页"原本含义 不阻塞,已用"服务器实测"代替
4 F1 桌面快捷方式排期 阶段六还是即时排

九、风险与应对

# 风险 应对
1 当前服务器资源接近瓶颈(磁盘 70%、Swap 1.4/1.5G) 阶段六前升级服务器配置
2 镜像热修代码未固化(v3 历史欠债延伸) 运维硬规则 + 阶段七前重编一次镜像
3 OpenClaw 4.15 plugin SDK 与 TailChat Channel 集成接口未实测 阶段六设计 ADR + spike 验证
4 朋友圈是全新模块,工作量大 阶段六排专项排期,可能需要外协开发
5 API 密钥仍明文暴露 rotate 优先级 P0
6 sync-xiuxiu.sh 依赖明文 SSH 密码 改 SSH key + secrets 管理
7 TailChat 上游 v1.11.10 已稳定 2025-01,未来不一定持续更新 3.0 长期可能要 fork 自维护
8 多乙方实例联邦/中继协议选型未定 阶段六做技术选型 ADR

十、阶段一交付物索引(11 份)

# 交付物 路径
1 25 篇 ima 历史笔记原文 /tmp/tailchat-ima/01_*.md ~ 25_*.md
2 5 份分组提取报告 /tmp/tailchat-ima/extract_{A,B,C,D,E}_*.md
3 服务器现状盘点 /tmp/tailchat-ima/server_current_state.md
4 TailChat 源码能力(425 条 + 164 API) /tmp/tailchat-ima/tailchat_src_capabilities.md + _openapi_endpoints.txt
5 维度 A 需求清单(159 条) /tmp/tailchat-ima/merged_demand_dimensionA.md
6 三维合并清单 /tmp/tailchat-ima/dimension_merge_final.md
7 守一测试修改记录 /tmp/tailchat-ima/守一测试修改记录.md
8 《秀秀 3.0 最终诉求界定文档》本文档 /tmp/tailchat-ima/秀秀3.0最终诉求界定文档.md
9 已实现功能盘点 v2(49 条) /tmp/tailchat-ima/已实现功能盘点_v2.md
10 HTML 汇报版(即将做) /tmp/tailchat-ima/html/
11 HTML 汇报网站(即将部署) xiuxiu3.qootc2.xyz

十一、阶段二之后的路径建议

考虑到秀秀已经在生产、49 条功能在工作、TailChat 基础已经选定,阶段二/三的"30 款源码调研选 2 款"已意义不大。建议:

待守一阶段一收尾后确认是否调整后续阶段定义。