justme c6d0c8637e
ci/woodpecker/push/web-build Pipeline was successful
ci/woodpecker/push/verify Pipeline was successful
ci/woodpecker/push/dev-image Pipeline failed
ci: mount the NuGet cache in Agent restore stages [CI]
2026-10-21 13:54:17 +08:00
2026-10-04 21:46:39 +08:00

MoShiro

MoShiro 旨在解决跨网络线路质量难以量化的问题:

  • 家宽到海外 VPS 的延迟、丢包、抖动随时段波动,单点 ping 无法反映真实体验;
  • 不同代理、游戏、流媒体服务对线路的敏感度各异,缺少统一的评价口径。

它通过 Agent 之间的主动测量采集原始数据,由 Backend 推算指标,并按服务模型(REALITY、Hysteria2、Minecraft 等)对线路评分与排序。

组件

组件 职责
Agent 统一采集节点,默认同时监听和拨号;可部署在 VPS、家宽或 NAT 后
Backend 注册、线路编排、存储、分析和 REST / SSE
Web 匿名只读展示端 display 与管理端 admin
                 Backend ---- REST / SSE ---- Web
                 ^     ^
                 |     | 每个 Agent 独立建立 wss,汇报自身及线路状态
                 |     |
              Agent A <=====> Agent B
                    直连测量

Agent 默认向其他可拨号 Agent 建立测量线路,A→B 和 B→A 分别记录;节点不连接自身。 管理端统一展示 Agent,在线路画板中按方向开关测量、查看连接状态和立即重试。 家宽或 NAT 后的 Agent 仍可拨出;入站测量需要其他节点能够访问其监听地址和端口。 可在本地 agent.json 中显式设置 listen.enabled: false 关闭监听,节点身份和程序保持统一。

快速开始

环境:.NET SDK 10(版本见 global.json)、Node.js 与 npm。

cd backend && dotnet run --project src/MoShiro.Backend -- --urls http://localhost:5000   # Backend
npm ci --prefix web && npm run dev --prefix web                                          # Web(另开终端,仓库根目录)

展示端 http://localhost:5173/,管理端 http://localhost:5173/admin/。首次访问管理端进入认领向导,认领码输出在后端日志。

构建与测试:

dotnet build MoShiro.slnx -c Release
dotnet test --solution MoShiro.slnx
npm run build --prefix web

文档

主题 文档
架构与数据链路 architecture
线协议与方法 protocol
采集引擎与任务 measurement
分析、存储、查询 analysis · storage · query
安全:威胁模型、访问控制、注册与身份 security · access · enrollment
REST / SSE 接口 api
构建、发布、CI、部署与更新 deployment
仓库结构与代码风格 project-layout · coding-style
路线图 roadmap
子项目 backend · fleet · agent · web

贡献与自动化代理的工作约定见 AGENTS.md。

许可证

Apache License 2.0

S
Description
Network path quality monitoring
Readme Apache-2.0
28 MiB
1 Stars 1 Watchers 0 Forks
2026-10-08 13:04:28 -07:00
Languages
C# 69.7%
TypeScript 19.2%
Shell 5%
CSS 2.6%
Python 2.2%
Other 1.3%