跳转到内容

常见问题 (FAQ)


一般问题

Arthas 是什么?

Arthas 是一个开源的端到端加密实时聊天应用。用户可以创建临时聊天房间,通过分享密钥邀请伙伴加入,所有消息在客户端加密后传输,服务器仅做密文中转。

为什么叫 Arthas?

项目名称来源于魔兽世界中的角色阿尔萨斯(Arthas),象征着强大的守护力量 — 守护你的通信隐私。

Arthas 和 Signal/Telegram 有什么区别?

特性ArthasSignalTelegram
需要注册
消息持久化
端到端加密可选
前向保密
开源部分
自托管困难

Arthas 适合临时、匿名、一次性的加密通信场景。


安全问题

服务器能看到我的消息吗?

不能。 消息在你的浏览器中使用 AES-256-GCM 加密后才发送。服务器只看到密文(乱码),没有密钥无法解密。

密钥存储在哪里?

密钥仅存在于浏览器标签页的内存中(Zustand store)。关闭标签页或刷新页面,密钥即丢失。服务器从不接触密钥。

分享码泄露了怎么办?

分享码包含房间 ID 和加密密钥。如果泄露,任何人都可以加入房间并解密消息。建议:

  1. 通过安全渠道分享(面对面、加密 IM)
  2. 敏感对话后所有人离开房间(房间销毁)
  3. 不要在公开场合发布分享码

消息会被保存吗?

不会。 服务器不存储任何消息。消息只存在于:

  • 发送方浏览器内存(最多 200 条)
  • 接收方浏览器内存(最多 200 条)
  • 关闭页面后全部消失

断线期间的消息能恢复吗?

不能。 由于无持久化设计,断线期间的消息不可恢复。重连后会显示提示”您断线期间可能错过了消息”。


使用问题

如何创建房间?

  1. 打开 Arthas 网页
  2. 输入昵称(1-20 字符)
  3. 点击”创建房间”
  4. 复制生成的分享码

如何加入房间?

  1. 获取朋友分享的分享码
  2. 打开 Arthas 网页
  3. 输入昵称和分享码
  4. 点击”加入”

分享码是什么格式?

格式为 {roomId}:{base64url(roomKey)},总长 65 字符。例如:

V1StGXR8_Z5jdHi6B-myT:k7_9xPqR2mNvLwE3hJfKdA1234567890abcdefghijk

房间最多能有多少人?

默认最多 50 人。超出后新加入者会收到”房间已满”提示。

消息有长度限制吗?

Web 客户端单条消息最多 500 字符,AI Agent 通道(OpenClaw)支持最多 4000 字符/条(自动分割)。支持 UTF-8 全字符集(包括 emoji)。

发送消息有频率限制吗?

是的,每 10 秒最多发送 10 条消息。超出后会提示”发送过快,请稍后再试”。

刷新页面后还能继续聊天吗?

不能。 刷新页面等于离开房间(密钥丢失)。需要重新使用分享码加入。


技术问题

支持哪些浏览器?

  • Chrome 90+
  • Firefox 90+
  • Safari 15+
  • Edge 90+

需要支持 Web Crypto API 的现代浏览器。不支持 IE。

为什么使用 MessagePack 而不是 JSON?

MessagePack 是二进制序列化格式,比 JSON 节省 30-50% 带宽,编解码速度更快。对于实时通信场景,这意味着更低的延迟和更少的流量消耗。

为什么不使用 Signal Protocol / Double Ratchet?

Arthas 的设计目标是临时聊天,不需要消息持久化和前向保密。AES-256-GCM 对称加密足够安全,且实现简单。未来可能升级到 Double Ratchet。

后端为什么选择 Go?

  • goroutine 天然适合高并发 WebSocket 连接
  • 编译为单一二进制,部署简单
  • 内存占用低
  • 标准库强大

前端为什么不用 Next.js?

Arthas 是纯客户端应用,不需要 SSR。Vite + React 更轻量,构建更快。


部署问题

如何自己部署?

参考 自托管部署指南,支持三种方案:

  • 单二进制(零依赖,推荐开发/内网使用)
  • Docker 单容器(一条命令快速部署)
  • Docker Compose + Caddy(公网自动 HTTPS)

部署需要数据库吗?

不需要。 Arthas 是纯内存应用,不依赖任何数据库。

服务器重启后房间还在吗?

不在。 服务器重启等于所有房间销毁。这是设计决策,不是 Bug。

需要多少服务器资源?

  • 内存:~50MB 基础 + 10KB/连接
  • CPU:极低(只做消息转发)
  • 磁盘:~20MB(Go 二进制)

100 并发连接约需 51MB 内存。


下一步