V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
moonrailgun
V2EX  ›  分享创造

Tailchat —— 插件化的开源聊天平台

  •  
  •   moonrailgun · 94 天前 · 2645 次点击
    这是一个创建于 94 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前言 First of all

    大家好,我是moonrailgun,今天为大家介绍的是我个人开发的开源插件式聊天软件: Tailchat

    Tailchat 是一款易拓展、方便使用,并且完全免费开源的聊天平台。在部分思想上借鉴了 discord 并在此致敬!

    动机 Motivation

    曾经痴迷于 TRPG, 并花了 4 年的业余时间做了人生第一款聊天软件 TRPG Engine。但是受限于题材方面的问题,使用的人虽然一直有,但是并没有太多。

    而且因为开发之初受到经验的限制,虽然当初经过了很多次重构,但是仍然背负上了很多的技术债务。而且因为当初没有做好分布式架构的设计,因此在面对实际的单机业务性能瓶颈时也没有非常好的解决方案,导致在高峰期只能让用户处于相对慢的系统响应中。

    因此我将在 TRPG Engine 的开发中遇到的问题收集起来,并重新整理了我的业务需求,开发出了新的继承者 Tailchat

    因为最开始首先于小众的业务, Tailchat 的设计之初就做好了易于拓展的准备。定位是除了核心的聊天场景以外,其他的业务需要都是由插件提供的。甚至是聊天的富文本渲染方式、消息的通知也是由插件提供的。作为使用者 /开发者,能够方便得为 Tailchat 拓展新的能力,或者将已有的能力集成到 Tailchat

    Tailchat 名字来源于其 logo ,是两只猫尾巴纠缠在一起的形象,表示猫与猫之间最直接的沟通方式。

    功能 Feature

    登录页

    1.png

    登录页除了支持正常的 登录注册,为降低使用门槛还允许先进行 游客访问,无需注册直接使用。同时还支持 忘记密码 功能。向通过用户发送邮件来帮助用户重置密码

    NOTICE: 忘记密码功能需要管理员配置 SMTP 服务

    此处以访客为例,创建一个名为 猫之使徒 的访客:

    2.png

    进入主页面后如下显示: 3.png

    可以通过点击最上面的认领账号来补充用户信息以方便下次登录

    添加好友

    切换到 添加好友 标签页,可以看到系统为您生成的 4 位唯一标识:

    4.png

    在本例中的唯一标识是猫之使徒#1216,您可以通过将这段字符串发送给好友来添加好友。

    5.png

    插件中心

    Tailchat 设计之初就提供了强大的插件系统,通过插件系统能极大拓展Tailchat自身的能力。

    6.png

    NOTICE: 插件本身设计是运行在 可信执行环境(TEE) 中, 请不要随意通过手动安装的方式安装不明来源的第三方插件

    个人设置

    7.png

    用户可以在左下方的"···"中打开个人设置。可以自定义头像,修改名称,修改密码等操作。

    8.png

    通过剪裁工具可以很方便的选出自己想要的部分

    9.png

    系统设置

    在系统设置中可以修改界面语言和界面主题。

    主题除了 Tailchat 自带的暗色主题亮色主题以及根据当前系统设置自动切换的自动以外均为插件提供

    10.png

    目前 Tailchat 支持的语言仅为 简体中文英语。欢迎有能力的开发者帮助 Tailchat 进行国际化翻译的工作

    群组聊天

    11.png

    点击左上角导航栏的绿色加号即可创建群组

    12.png

    预设了两个布局模板,直接选择默认群组

    13.png

    随意取个名字,点击创建。系统则会创建一个群组并自动跳转到该群组

    界面布局如下:

    14.png

    15.png

    输入框支持 @ 群组成员:

    16.png

    群组设置

    点击左上角的标题栏可以点开群组详情页

    17.png

    点击查看详情可以进入到群组的详情页

    18.png

    在此处可以:

    • 修改群组头像
    • 修改群组名称
    • 管理群组面板

    面板管理

    19.png

    创建面板可以直接创建一个面板,内置的面板类型有:

    • 聊天频道
    • 面板分组
    • 网页面板

    网页面板可以直接输入一个网址,可以将自己喜好的网址直接集成到 Tailchat 的群组侧边栏

    20.png

    比如我们插入一个访问 Bilibili 的网页面板,则效果如下:

    21.png

    22.png

    NOTICE: 因为浏览器的安全策略问题,如果当前 Tailchat 使用了 https 协议,那么只能支持嵌入 https 协议的网页

    NOTICE: 因为浏览器的安全策略问题,嵌入的网址需要允许被使用 iframe 嵌入

    相关连接

    开源地址:

    原文地址:

    13 条回复    2022-04-04 13:28:46 +08:00
    89ao
        1
    89ao  
       94 天前 via iPhone
    点赞楼主。
    建议描述一下本项目解决什么问题,
    以帮助大家判断在什么场景下选择使用~
    madlifer
        2
    madlifer  
       94 天前
    我感觉这个产品的定位没有说清楚,TRPG Engine 我大概能够理解到是用于 TRPG 游戏的专门的聊天产品,虽然我也不是很懂 TRPG ,但至少在你看来有场景支撑。

    但这个 Tailchat 定位是聊天场景?那就跟 discord 很相似了,而且功能也很相似,同样 discord 支持各种插件,所以我跟楼上都没太明白这个产品的应用场景。

    如果还是应用于 TRPG ,那么我觉得可以把一部分功能固化下来,让产品更垂直,虽然靠插件的方式也可以实现 TRPG ,但对于你想要获取到的精准用户来说体验反而不好了,认同感也会下降。
    jasy
        3
    jasy  
       94 天前 via iPhone
    @89ao 本项目没解决什么问题,只是个人研究🧐
    rizon
        4
    rizon  
       94 天前
    想问个问题啊,
    演示版本的服务端是运行在哪的?直接用 github 的 action 就可以吗? 这个东西一直想看看的还没怎么研究。
    如果用的是 github action 当服务器的话,存储持久化问题怎么解决的?
    rizon
        5
    rizon  
       94 天前
    麻烦 再想问另一个问题啊, 服务端使用 minio 这个是做什么用处的?我没看代码,就是好奇架构
    谢谢
    wordx
        6
    wordx  
       92 天前 via Android
    有计划开发桌面版吗
    patrickyoung
        7
    patrickyoung  
       91 天前
    不懂就别滥用名词,TEE 不是你这么定义的
    moonrailgun
        8
    moonrailgun  
    OP
       87 天前
    @madlifer tailchat 的定位是基于实时通讯场景为核心的业务整合。通过插件机制可以将不同的业务整合在一起。

    在国内类似的商业产品有飞书,在设计思想与目标上是一致的,不过飞书是 toB 产品,tailchat 侧重点会更加偏向 toC
    moonrailgun
        9
    moonrailgun  
    OP
       87 天前
    @rizon 目前是运行在自己的服务器上的。如果用 github action 的话。。github 的 action 本身只是一个 ci ,并不能对外提供服务。。。
    moonrailgun
        10
    moonrailgun  
    OP
       87 天前
    @rizon 服务端使用 minio 可以方便进行分布式部署,minio 天生就是为分布式存储场景而设计的,而且 api 与 s3 完全兼容
    moonrailgun
        11
    moonrailgun  
    OP
       87 天前
    @wordx 有的,桌面版会基于 webview 为核心做一些原生支持。
    moonrailgun
        12
    moonrailgun  
    OP
       87 天前
    @patrickyoung 抱歉。我只是想表达插件设计本身为了满足比较高要求的需求,在权限的隔离上目前没有做的非常好。因此不推荐随便使用不明来源的插件(类似手机不建议安装非商店应用)。可能 TEE 说明不是非常准确,请问正确的说法是什么呢?我会在我能修改的地方进行修改的
    moonrailgun
        13
    moonrailgun  
    OP
       87 天前
    @89ao 感谢提醒,我会补充到文档上的

    对于个人用户,可以用于搭建自己的私欲空间(如亲友分享信息与沟通,up 主或者博客主搭建自己的粉丝圈,可以通过自己设计自己的群组来展示作品)
    对于企业用户,可以用于搭建私有化的企业通讯环境。基于国内企业与生俱来的对 saas 行业的不信任,私有化部署是对企业有很强的安全感的一种解决方案,并且通过 tailchat 设计之初的插件机制能够将企业内不同应用的能力整合在一起。
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2740 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 14:21 · PVG 22:21 · LAX 07:21 · JFK 10:21
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.