justme 08f261293c web: equal-width cells, grey in-progress bucket and a time axis under each direction on the line cards
Rows are laid out as protocol, cells and value on one line per metric. Each direction gets its own axis with ticks on the hour; cells without data and the bucket still being filled are grey.
2026-10-21 16:59:13 +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%