From be05d47dd456cd2e82251dad75a73daf865892ab Mon Sep 17 00:00:00 2001 From: DrSmoothl <1787882683@qq.com> Date: Tue, 14 Jul 2026 21:29:34 +0800 Subject: [PATCH] docs(readme): redesign project landing page Add project-native hero and runtime flow visuals with responsive SVG layouts and decorative motion. Expand setup, integration, architecture, contribution, and licensing guidance for current releases. --- README.md | 162 ++++++++++++++++++++++++++-------- assets/readme/hero.svg | 150 +++++++++++++++++++++++++++++++ assets/readme/runtime-map.svg | 140 +++++++++++++++++++++++++++++ 3 files changed, 417 insertions(+), 35 deletions(-) create mode 100644 assets/readme/hero.svg create mode 100644 assets/readme/runtime-map.svg diff --git a/README.md b/README.md index 6c526501..b6c40505 100644 --- a/README.md +++ b/README.md @@ -1,61 +1,153 @@ -

- SnowLuma -

-

- Next Remote Protocol Framework. + SnowLuma 将 QQ 原生会话桥接到 OneBot、WebUI 与自动化工具

- Release - Build - NPM - Stars + 最新版本 + 构建状态 + SnowLuma SDK 版本 + SnowLuma MCP 版本 + GitHub Stars

- Releases · - Issues · - QQ 群 · - Telegram + 快速开始 · + 运行链路 · + 动作参考 · + SDK · + MCP · + 问题反馈

---- +SnowLuma 是面向 QQ 客户端的 TypeScript 互操作运行时。它把 QQ 原生会话转换为 [OneBot v11](https://github.com/botuniverse/onebot-11) 动作与事件,并通过 WebSocket、HTTP、WebUI、SDK 和 MCP 提供统一入口;每个账号拥有独立会话,适合机器人开发、自动化与协议研究。 -SnowLuma 是一个基于 TypeScript 的协议转换框架,旨在为 QQ 客户端提供 [OneBot v11](https://github.com/botuniverse/onebot-11) 标准接口,支持 WebSocket/HTTP 适配、多账号并行及 WebUI 管理。 - -> ⚠️ **免责声明**:SnowLuma 是独立的第三方互操作项目,**与腾讯 / QQ 无任何隶属或授权关系**。本项目**仅供学习与技术研究**,请遵守《QQ 用户协议》及适用法律;软件按"现状"提供、不附带任何担保,使用风险自负。详见 [`EULA.md`](EULA.md)。 +> [!CAUTION] +> **使用边界**:SnowLuma 是独立的第三方互操作项目,**与腾讯 / QQ 无任何隶属或授权关系**。本项目仅供学习与技术研究,请遵守《QQ 用户协议》及适用法律;软件按“现状”提供、不附带任何担保,使用风险自负。详见 [`EULA.md`](EULA.md)。 > -> ⚠️ **Disclaimer**: SnowLuma is an independent, third-party interoperability project with **no affiliation with or endorsement by Tencent / QQ**, provided **for study and research only**, "as is" without warranty. Comply with the QQ User Agreement and applicable law; use at your own risk. See [`EULA.md`](EULA.md). +> **Disclaimer**: SnowLuma is an independent third-party interoperability project with no affiliation with or endorsement by Tencent / QQ. It is provided for study and research only, “as is” and without warranty. See [`EULA.md`](EULA.md). -## 特性 +## 运行链路 -- **OneBot v11 兼容**:支持文本、音视频、Markdown、JSON 等消息格式。 -- **高性能架构**:TypeScript 全栈,基于 pnpm monorepo 管理,核心逻辑分离。 -- **现代化管理**:内置 WebUI 面板,支持实时日志、密码热更、多账号管理。 -- **多适配器支持**:WebSocket (Server/Client)、HTTP (Server/Post)。 -- **数据持久化**:使用 SQLite 存储好友、群组等关系数据。 +

+ QQ 会话经过协议桥接与 OneBot 标准化后连接到 WebSocket、HTTP、WebUI、SDK 和 MCP +

+ +SnowLuma 将会话接入、协议解析、身份映射、OneBot 转换和网络适配拆成清晰边界。多个 QQ 账号可以并行运行,同时保持独立状态、日志与连接配置。 + +## 核心能力 + +| 场景 | SnowLuma 提供 | +| --- | --- | +| OneBot 接入 | OneBot v11 动作与事件,支持 WebSocket 服务端 / 客户端及 HTTP 服务端 / 上报 | +| 消息与媒体 | 文本、图片、语音、视频、文件、回复、提及、转发及 JSON / XML 卡片等常见消息元素 | +| 多账号运行 | 每个 QQ 账号独立维护会话、身份映射、消息存储与网络适配器 | +| WebUI 管理 | 账号状态、实时日志、连接配置、动作调试、密码管理与可定制总览 | +| 开发者工具 | 提供 [`@snowluma/sdk`](packages/sdk/README.md) 与 [`@snowluma/mcp`](packages/mcp/README.md) | +| 可观察错误 | 关键解析与执行失败会留下明确上下文,不以静默丢弃掩盖问题 | ## 快速开始 -1. 从 [Releases](https://github.com/SnowLuma/SnowLuma/releases) 下载最新发布包并解压。 -2. 运行 `./launcher.bat` (Windows) 或 `./launcher.sh` (Linux)。 -3. 访问 `http://localhost:5099` (初始账号 `admin`,密码见控制台输出)。 +### 1. 选择发行包 -无人值守部署可同时设置 `SNOWLUMA_ACCEPT_EULA=1` 与 `SNOWLUMA_ACCEPT_PRIVACY=1` 完成协议确认。两项必须同时设置;移除任意变量后会恢复按当前协议版本检查 WebUI 同意记录。设置这些变量即表示您已阅读并同意 [`EULA.md`](EULA.md) 与 [`PRIVACY.md`](PRIVACY.md)。 +前往 [Releases](https://github.com/SnowLuma/SnowLuma/releases) 下载与你的平台匹配的版本: -## 许可 / License +| 平台 | 完整版(内置 Node.js,推荐) | Lite(需要 Node.js 22+) | +| --- | --- | --- | +| Windows x64 | `SnowLuma-vX.Y.Z-win-x64.zip` | `SnowLuma-vX.Y.Z-win-x64-lite.zip` | +| Linux x64 | `SnowLuma-vX.Y.Z-linux-x64.tar.gz` | `SnowLuma-vX.Y.Z-linux-x64-lite.tar.gz` | +| Linux arm64 | `SnowLuma-vX.Y.Z-linux-arm64.tar.gz` | `SnowLuma-vX.Y.Z-linux-arm64-lite.tar.gz` | -SnowLuma 采用 **源码可见非商业许可(SnowLuma Source-Available Non-Commercial License)**,见 [`LICENSE`](LICENSE)。**这不是 OSI 开源许可**:源码公开供查看、学习与非商业自托管,但**禁止任何商业使用**(出售、转售、付费托管 / 代搭 / 代运营等),公开发布修改版须事先书面授权。随附的原生附加组件(`snowluma-*.node` 等)为专有组件,不在本许可范围内。二进制发行包另受 [`EULA.md`](EULA.md) 约束;商业授权请联系 motricseven@foxmail.com。参与贡献请阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md)。 +完整版适合直接解压运行;Lite 版只移除了内置 Node.js,其余运行时依赖与 WebUI 静态资源保持一致。 -SnowLuma is under a **source-available, non-commercial** license (see [`LICENSE`](LICENSE)) — **NOT** an OSI open-source license. The source is published for study and non-commercial self-hosting; **commercial use is prohibited** without prior written permission, and the bundled native addon (`snowluma-*.node`) is proprietary and not covered by this license. +### 2. 启动 SnowLuma + +Windows 运行 `launcher.bat`。Linux 在解压目录执行: + +```bash +chmod +x launcher.sh +./launcher.sh +``` + +### 3. 打开 WebUI + +浏览器访问 [`http://localhost:5099`](http://localhost:5099)。初始账号为 `admin`,随机密码会显示在启动日志中;登录后即可接入已启动的 QQ 进程并配置 OneBot 连接。 + +
+无人值守部署:通过环境变量确认协议 + +同时设置以下两个变量可跳过 WebUI 的协议确认页面: + +```bash +SNOWLUMA_ACCEPT_EULA=1 +SNOWLUMA_ACCEPT_PRIVACY=1 +``` + +两项必须同时设置,且环境变量确认不会写入持久化同意记录。设置变量即表示运营者已阅读并同意 [`EULA.md`](EULA.md) 与 [`PRIVACY.md`](PRIVACY.md)。 + +
+ +## 选择接入方式 + +| 入口 | 适合场景 | 参考 | +| --- | --- | --- | +| WebSocket / HTTP | 对接现有 OneBot 机器人框架 | [OneBot 动作参考](docs/onebot-actions.md) | +| TypeScript SDK | 编写类型安全的客户端与消息逻辑 | [`packages/sdk`](packages/sdk/README.md) | +| MCP | 让支持 MCP 的工具查询或调用 SnowLuma 动作 | [`packages/mcp`](packages/mcp/README.md) | +| WebUI | 管理运行状态、日志、账号与连接 | 启动后访问 `http://localhost:5099` | + +## 开发与贡献 + +本地开发需要 Node.js 22+ 与项目锁定版本的 pnpm。所有日常开发基于 `dev` 分支: + +```bash +git clone https://github.com/SnowLuma/SnowLuma.git +cd SnowLuma +git checkout dev +pnpm install +pnpm typecheck +pnpm test +``` + +- 先读 [`CONTEXT.md`](CONTEXT.md) 了解模块边界与项目词汇。 +- 提交代码前阅读 [`CONTRIBUTING.md`](CONTRIBUTING.md) 与 [`CODE_OF_CONDUCT.md`](CODE_OF_CONDUCT.md)。 +- 开发方向与已完成事项见 [`RoadMap.md`](RoadMap.md)。 + +
+主要目录 + +| 路径 | 作用 | +| --- | --- | +| `packages/protocol` | QQ 协议定义、数据包解析、消息推送与 OIDB 服务 | +| `packages/onebot` | OneBot 动作执行、事件转换与网络适配 | +| `packages/core` | 运行时编排、QQ 会话桥接与 WebUI 服务端 | +| `packages/webui` | React 管理界面 | +| `packages/sdk` | 对外发布的 TypeScript SDK | +| `packages/mcp` | 面向 MCP 客户端的动作目录与执行入口 | + +
+ +## 使用边界与许可 + +> [!IMPORTANT] +> SnowLuma 使用 **源码可见非商业许可**,**不是 OSI 开源许可**。源码可用于查看、学习、非商业自托管及私下修改;任何商业使用,以及公开发布修改版或衍生版,均需事先取得书面授权。 + +- 完整条款见 [`LICENSE`](LICENSE)。 +- 随附的原生附加组件为专有组件,不在源码许可范围内。 +- 二进制发行包另受 [`EULA.md`](EULA.md) 与 [`PRIVACY.md`](PRIVACY.md) 约束。 +- 商业授权请联系 `motricseven@foxmail.com`。 + +SnowLuma is source-available for study and non-commercial self-hosting, but it is **not OSI open source**. Commercial use and public distribution of modified or derivative versions require prior written permission. Bundled native components are proprietary and excluded from the source license. + +## 社区与支持 + +- [提交问题](https://github.com/SnowLuma/SnowLuma/issues) +- [QQ 群](https://qm.qq.com/q/g3UMLpWALe) +- [Telegram](https://t.me/napcatqq) ## 鸣谢 -参考了 [LagrangeV2](https://github.com/LagrangeDev/LagrangeV2) 的协议定义与 [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 的实现思路。 - ---- +项目参考了 [LagrangeV2](https://github.com/LagrangeDev/LagrangeV2) 的协议定义与 [NapCatQQ](https://github.com/NapNeko/NapCatQQ) 的实现思路。

- + SnowLuma 贡献者

diff --git a/assets/readme/hero.svg b/assets/readme/hero.svg new file mode 100644 index 00000000..21203122 --- /dev/null +++ b/assets/readme/hero.svg @@ -0,0 +1,150 @@ + + SnowLuma — QQ 到 OneBot 的现代协议桥 + SnowLuma 将多个 QQ 原生会话经过协议、桥接与 OneBot 三层处理,连接到 WebSocket、HTTP、WebUI、SDK 与 MCP。 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + QQ INTEROPERABILITY · ONEBOT V11 · MULTI-ACCOUNT + + + SnowLuma + + + + 把 QQ 原生会话,稳定地桥接到 + OneBot、WebUI 与自动化工具。 + + 一个运行时,管理多账号、动作调用、事件分发与实时状态。 + + + + + Windows x64 + + + + + Linux x64 / arm64 + + + + + + TypeScript + + + + + + LIVE SESSION ROUTING + + + + + + QQ · 01 + ONLINE + + + + + QQ · 02 + ONLINE + + + + + QQ · N + READY + + + + + + + + + + + SNOWLUMA RUNTIME + Protocol → Bridge → OneBot + 独立会话 · 类型化动作 · 可追踪事件 + + + + + + + + + + OneBot v11 + ACTIONS · EVENTS + + + + WebUI + STATUS · LOGS + + + + SDK / MCP + TOOLS · STREAMS + + + + diff --git a/assets/readme/runtime-map.svg b/assets/readme/runtime-map.svg new file mode 100644 index 00000000..497d025d --- /dev/null +++ b/assets/readme/runtime-map.svg @@ -0,0 +1,140 @@ + + SnowLuma 运行链路 + QQ 进程接入后,数据经过协议桥接、OneBot 标准化,再分发到 WebSocket、HTTP、WebUI、SDK 与 MCP。 + + + + + + + + + + + + + + + + + + + + + + + + + RUNTIME MAP · FROM SESSION TO CONSUMER + 一条事件如何穿过 SnowLuma + 每层只承担一种职责,多个 QQ 账号各自拥有独立、可追踪的会话链路。 + + + + PIPE + MAP + OUT + + + + + + + 01 · 会话接入 + + + + + + QQ · ACCOUNT 01 + QQ · ACCOUNT 02 + + + 多个 QQ 进程 + 独立接入、独立登录状态 + 每个账号单独路由 + + + + + + 02 · 协议桥接 + + + + + + PACKET → EVENT + PROTOCOL · BRIDGE + + + 解析与身份映射 + 协议数据转换为内部事件 + 异常路径保留可观察信息 + + + + + + 03 · 标准化 + + + + OneBot v11 + ACTIONS ↔ EVENTS + + + 统一动作与事件 + 参数校验、动作执行 + 事件转换与消息存储 + + + + + + 04 · 消费端 + 按场景自由组合 + + + + + WS + + + + HTTP + + + + WebUI + + + + SDK + + + + MCP + + + + 多个适配器可同时启用 + + + + + + 一次接入,统一管理运行状态、日志、连接与动作调用。 + SNOWLUMA / RUNTIME MAP + +