手瓜一十雪 f04ec3ec36 Probe and reconnect to existing hooks
Add a lightweight pipe liveness probe and use it to detect/reconnect to existing SnowLuma hooks instead of always re-injecting. Introduces PROBE_TIMEOUT_MS (400ms) and QqHookClient.probePipe(pid, timeout) which quickly checks if the control pipe accepts a connection (no hello exchange). HookManager now parallel-probes freshly-enumerated processes (probeAndSeed) and fast-checks before injecting in loadProcess; positive hits mark the state as injected with method="reconnect" and avoid redundant injection. Also deduplicate login notifications in handleLoginState (skip if already logged in with the same UIN) and adjust the loginState emission ordering in QqHookClient.
2026-05-03 16:49:06 +08:00
2026-05-02 19:06:29 +08:00
2026-05-03 14:02:29 +08:00
2026-05-03 14:02:29 +08:00
2026-05-03 14:02:29 +08:00
2026-05-03 14:02:29 +08:00

❄️ SnowLuma

Next Remote Protocol Framework.

关于项目

项目处于开发初期,仅支持部分功能,持续高速迭代中,仅支持有头。

仓库结构

本仓库使用 pnpm workspace 进行多包管理。

SnowLuma/
├─ packages/
│  ├─ core/         @snowluma/core - Node.js 运行时(NTQQ packet sniffer + Hook + OneBot)
│  ├─ webui/        webui - React + Vite 前端
│  └─ runtime/      @snowluma/runtime - 发行包资源
│     ├─ launcher.bat
│     ├─ package.json   (随 dist 一起发布的运行时依赖清单)
│     └─ native/        平台预编译产物 (snowluma-win32-x64.{dll,node})
├─ tools/           辅助脚本(如 Python OneBot WS 测试)
├─ tsconfig.base.json
├─ tsconfig.json    monorepo 根 TS 项目(仅含 references)
├─ pnpm-workspace.yaml
└─ package.json     monorepo 根(脚本委托给 pnpm filter)

构建产物统一输出到仓库根 dist/,与发行流水线保持兼容。

常用命令

# 安装依赖
pnpm install

# 开发 — 核心运行时(tsx)
pnpm dev

# 开发 — WebUI 前端(vite dev server)
pnpm dev:web

# 仅构建核心
pnpm build

# 仅构建 WebUI
pnpm build:webui

# 一次构建核心 + WebUI 完整发行版(顺序固定 core → webui)
pnpm build:all

# 单元测试 / 类型检查 / Lint
pnpm test
pnpm typecheck
pnpm lint

# 直接对单个包操作
pnpm --filter @snowluma/core dev
pnpm --filter webui build

鸣谢

LagrangeV2 - Proto

NapCatQQ - Scaner/Packet

辅助编程

推荐 Opus4.6 + Gemini3.1pro 对本项目辅助开发

本项目大量使用Ai技术。

加入我们

SnowLuma-QQ

SnowLuma-Tg

S
Description
No description provided
Readme
64 MiB
Languages
TypeScript 98.9%
CSS 0.5%
JavaScript 0.5%