# MoShiro MoShiro 旨在解决跨网络线路质量难以量化的问题: - 家宽到海外 VPS 的延迟、丢包、抖动随时段波动,单点 ping 无法反映真实体验; - 不同代理、游戏、流媒体服务对线路的敏感度各异,缺少统一的评价口径。 它通过 Agent 之间的主动测量采集原始数据,由 Backend 推算指标,并按服务模型(REALITY、Hysteria2、Minecraft 等)对线路评分与排序。 ## 组件 | 组件 | 职责 | | --- | --- | | Agent | 统一采集节点,默认同时监听和拨号;可部署在 VPS、家宽或 NAT 后 | | Backend | 注册、线路编排、存储、分析和 REST / SSE | | Web | 匿名只读展示端 `display` 与管理端 `admin` | ```text 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。 ```sh cd backend && dotnet run --project src/MoShiro.Backend -- --urls http://localhost:5000 # Backend npm ci --prefix web && npm run dev --prefix web # Web(另开终端,仓库根目录) ``` 展示端 ,管理端 。首次访问管理端进入认领向导,认领码输出在后端日志。 构建与测试: ```sh dotnet build MoShiro.slnx -c Release dotnet test --solution MoShiro.slnx npm run build --prefix web ``` ## 文档 | 主题 | 文档 | | --- | --- | | 架构与数据链路 | [architecture](docs/design/architecture.md) | | 线协议与方法 | [protocol](docs/design/protocol.md) | | 采集引擎与任务 | [measurement](docs/design/measurement.md) | | 分析、存储、查询 | [analysis](docs/design/analysis.md) · [storage](docs/design/storage.md) · [query](docs/design/query.md) | | 安全:威胁模型、访问控制、注册与身份 | [security](docs/security/security.md) · [access](docs/security/access.md) · [enrollment](docs/security/enrollment.md) | | REST / SSE 接口 | [api](docs/api/api.md) | | 构建、发布、CI、部署与更新 | [deployment](docs/ops/deployment.md) | | 仓库结构与代码风格 | [project-layout](docs/dev/project-layout.md) · [coding-style](docs/dev/coding-style.md) | | 路线图 | [roadmap](docs/roadmap.md) | | 子项目 | [backend](backend/README.md) · [fleet](backend/fleet/README.md) · [agent](backend/agent/README.md) · [web](web/README.md) | 贡献与自动化代理的工作约定见 [`AGENTS.md`](AGENTS.md)。 ## 许可证 [Apache License 2.0](LICENSE)