![]()
2023年,Discord更新了隐私政策,明确保留将用户数据用于AI训练的权利。对于普通玩家,这不过是服务条款里又一行小字。但对于每天和固定队友开黑的Shyn来说,这行字像一根刺。
他的小队用了Discord六年。六年里,他们聊过游戏战术、工作吐槽、家庭琐事,甚至有人在语音里求婚。所有这些,都躺在Discord的服务器上,现在可能要变成训练AI的饲料。「我不是阴谋论者,」Shyn在博客中写道,「但'works fine'和'works for me'是两回事。」
三个月后,他发布了Squawk——一个开源、自托管的语音文字聊天工具。没有账号系统,没有外部服务器,数据不出局域网。项目上线GitHub当天,星标数破千。有人在评论区问:「这和Mumble有什么区别?」Shyn的回复很直接:「Mumble像2005年的Winamp,我想要的是2024年的Spotify。」
WebRTC的"最后一公里"陷阱
WebRTC(网页实时通信技术)的浏览器API文档写得很清楚:创建对等连接、交换offer和answer、添加ICE候选地址。Shyn花了一个周末就搭出了原型,语音通话流畅得让他有点飘。
然后卡在了信号层。
WebRTC只负责音频传输,不管「怎么找到对方」。你需要一个信令服务器来撮合最初的握手。Shyn选了Socket.io,实现起来很干净,但引出一个他没想到的问题:默认情况下,没有任何机制阻止客户端把WebRTC信号转发给完全不相干的房间。
![]()
换句话说,A房间的用户理论上可以劫持信令服务器,向B房间的用户发送连接请求。Shyn的修复方案很简单:在转发任何offer、answer或ICE候选之前,强制校验发送者和接收者是否在同一个房间。代码不多,逻辑直白,「但很容易漏掉,」他写道,「尤其是当你满脑子想着'反正跑在私有VPN里'的时候。」
这种思维陷阱他踩了不止一次。Tailscale(零配置私有虚拟专用网络)确实把Squawk藏在了内网,但Shyn很快列出三个不能因此放松警惕的理由:一是Tailscale网络里的人未必都值得信任;二是万一哪天想开放给更多人,安全基础必须已经打好;三是好习惯就是好习惯,跟威胁模型无关。
他最终补上的功能清单,比最初计划长了一倍:速率限制防止暴力破解、操作日志审计、基于令牌的房间访问控制、管理员权限分级。单看都不复杂,但「把所有攻击面想一遍,比写代码耗时长」。
权限设计的"房东逻辑"
Squawk的权限系统刻意做得简单:谁创建频道,谁就是房东。能踢人、改名、删房。没有复杂的角色矩阵,没有Discord式的服务器-频道-子频道三级结构。
Shyn的解释带着产品经理式的冷感:「小团体的社交契约不需要代码强制执行。你朋友不会因为你没给'管理员'头衔就乱踢人,真乱踢的,你本来也不会和他玩。」
这种设计选择贯穿整个项目。没有用户注册,因为「朋友不需要账号来证明身份」;没有消息持久化,因为「语音聊完就散,文字只是辅助」;没有移动端App,只有响应式网页,因为「我不想维护两个代码库,而PWA(渐进式网页应用)够用了」。
![]()
但妥协也是真实的。WebRTC在移动端的耗电问题他没解决,「开黑三小时,电量掉一半」。iOS的WebKit限制让后台音频播放变得诡异,「锁屏后可能断连,也可能不断,看苹果心情」。这些他写进了README的「已知问题」栏,没有粉饰。
GitHub上的讨论区有人提议加端到端加密。Shyn回复:「可以,但会显著增加延迟。对于跑在私有VPN里的工具,这是用体验换安全感。我不确定值不值。」他没有假装这是技术无能,而是把权衡摊开给所有人看。
自建工具的隐性成本
Squawk的部署文档只有三行:装Node.js,克隆仓库,npm start。但Shyn承认,「能看懂这三行的人,和需要这三行的人,重叠度不高」。他的目标用户是「愿意为了隐私多走一步」的开发者或小团队,不是普通玩家。
这指向一个尴尬现实:隐私工具的用户基数,和隐私意识的普及程度,从来不是线性关系。Discord有2亿月活,不是因为它不可替代,而是因为「够用且不用想」。Squawk的星标增长曲线在发布后两周趋于平缓,最终停在2400左右——对于一个个人项目不算差,但和主流工具的量级相比,可以忽略。
Shyn没有表现出失落。他在博客里算了一笔账:运行Squawk的服务器是一台闲置的树莓派4,功耗5瓦,电费可以忽略;Tailscale免费版支持20台设备,他的小队用了7台;唯一持续的成本是时间——每次更新后手动部署,偶尔帮朋友排查连接问题。
「这不是给所有人的解决方案,」他写道,「但对我来说,知道我的对话只存在于我和朋友的设备之间,这种确定感值回票价。」
项目发布三个月后,有人在Issues区提交了一个有趣的反馈:他的小队从Discord迁移到Squawk后,开黑频率反而下降了。原因出乎意料——Discord的「在线状态」指示灯创造了一种社交压力,让人更容易被拉进语音房;而Squawk没有在线状态,「想聊就发消息,不想聊就消失,反而让游戏时间变得更纯粹」。
Shyn把这个观察置顶在了讨论区。他没有评论这是好是坏,只是留下了一个问题:「当工具不再设计得让人上瘾,用户行为会变成什么样?」
特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。
Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.