Skip to content

MiChongs/WutherCore

Repository files navigation

WutherCore modular network routing illustration

WutherCore

一个可组合的跨平台 Rust 代理内核

Required CI GitHub Release Telegram Chat Rust 1.85+ MIT License

快速开始 · 下载 · 功能矩阵 · 配置指南 · 架构 · API · 参与贡献

WutherCore 读取 YAML 配置,负责订阅更新、节点选择、规则分流、DNS 解析、透明代理和运行状态管理。仓库提供代理内核与命令行工具,不包含桌面或移动端 GUI。

Important

项目仍在 1.0 之前。当前版本适合能够阅读日志、维护配置并自行验证服务端兼容性的用户;配置结构与 API 仍可能调整。

为什么做这个内核

配置清楚 模块可换 平台能力集中 运行过程可观察
YAML 配置可以先 check、再 explain,启动前就能看到错误和最终运行计划。 入站、DNS、规则、选择器、出站协议、流量接管和 API 分成独立 workspace crate。 同一套运行时覆盖普通代理、TUN、TPROXY、REDIRECT 与 Android VpnService 接入。 原生 /v1 API 与 Clash 兼容接口提供状态、流量、连接、节点和策略组信息。

关键能力

领域 已实现
入站 同端口 HTTP / SOCKS5,访问认证,局域网共享
节点 本地节点、订阅拉取、过滤、重命名、去重与磁盘缓存
选择 手动、负载均衡、URLTest、Smart 学习、固定与回避
路由 域名、IP、端口、进程、嗅探结果、内联规则与外部规则集
DNS 多上游、缓存、IPv6 策略、Fake IP、Hosts、Fallback 与独立 UDP/TCP 监听
流量接管 TUN、TPROXY、REDIRECT、自动路由、排除项和失败回滚
管理 原生 HTTP API、Clash 兼容 API、连接管理、测速、流量与日志
持久化 节点评分、Smart 学习、手动选择、Pin 与运行状态
工具 配置校验与解释、Mihomo 配置迁移、订阅刷新、规则集转换、Store 管理

完整的能力边界、协议实现与成熟度说明见 功能矩阵

平台与协议

平台

平台 普通代理 透明代理
Windows HTTP / SOCKS5 TUN
Linux HTTP / SOCKS5 TUN / TPROXY / REDIRECT
macOS HTTP / SOCKS5 TUN
Android 宿主应用接入 VpnService FD / root

透明代理会修改系统网络状态,通常需要管理员或 root 权限。先验证普通代理,再启用 capture;平台准备和排错见 配置指南排错手册

出站协议

基础 Shadowsocks 系列 TLS / UUID 系列 QUIC / 隧道
Direct、Block、HTTP、SOCKS5、DNS Hijack Shadowsocks、Shadowsocks 2022、SSR、Snell Trojan、VLESS、VMess、AnyTLS Hysteria、Hysteria 2、TUIC、WireGuard、SSH、Mieru、Sudoku、TrustTunnel

不同协议的 UDP、复用和传输层组合并不完全相同。功能矩阵只表示代码路径已经实现,不代替与具体服务端版本的兼容性测试。

下载与版本通道

预编译产物在 GitHub Releases 提供,覆盖 Linux、Android、Windows 和 macOS 的主要架构。

通道 版本格式 用途
Release vX.Y.Z 已完成正式发版检查,标记为 Latest
Pre-release vX.Y.Z-alpha.Nbeta.Nrc.N 提前验证新版本,不替代 Latest

每个版本都附带 SHA256SUMS 和 GitHub 构建证明。下载后可以校验:

sha256sum -c SHA256SUMS
gh attestation verify <archive.zip> --repo MiChongs/WutherCore

标签规则、完整平台矩阵和维护者操作步骤见 发版指南

快速开始

需要 Rust 1.85 或更高版本;rust-toolchain.toml 默认使用 stable 工具链。

git clone https://github.com/MiChongs/WutherCore.git
cd WutherCore
cargo build --release -p wuther-core

复制一份示例配置并替换其中的订阅地址或节点:

cp examples/desktop.yaml config.yaml

Windows PowerShell 可以使用:

Copy-Item examples\desktop.yaml config.yaml

先检查配置,再启动:

./target/release/wuther-core check config.yaml
./target/release/wuther-core run -c config.yaml

Windows 可执行文件位于 target\release\wuther-core.exe。也可以不单独构建:

cargo run --release -p wuther-core -- check config.yaml
cargo run --release -p wuther-core -- run -c config.yaml

最小配置

version: 1
profile: desktop
name: my-profile

listen:
  local: 7890
  panel: 9090
  share: false

feeds:
  airport: "https://example.com/your-subscription"

groups:
  main:
    choose: smart
    use: [airport]

route:
  preset: cn_smart
  final: main

resolver:
  mode: smart

explain 查看 profile 默认值补全后的 RuntimePlan

wuther-core explain config.yaml

可直接修改的示例:

文件 场景
examples/desktop.yaml 桌面端最小配置
examples/router.yaml 路由器与透明代理
examples/android.yaml Android VpnService
examples/with_feed.yaml 订阅过滤和重命名
examples/manual_only.yaml 只使用手动节点
examples/daily.yaml 自定义分组与路由

一条连接如何通过内核

flowchart LR
    Client["应用流量"] --> Inbound["HTTP / SOCKS5<br/>TUN / TPROXY / REDIRECT"]
    Inbound --> Runtime["Runtime 调度"]
    Runtime --> Inspect["嗅探与进程识别"]
    Inspect --> Resolver["DNS / Fake IP"]
    Resolver --> Route["路由与规则集"]
    Route --> Select["手动 / LB / URLTest / Smart"]
    Select --> Outbound["出站协议与传输层"]
    Outbound --> Network["目标网络"]

    Config["YAML / Profile"] -.编译.-> Runtime
    Feeds["订阅与规则集"] -.更新.-> Route
    Runtime -.状态.-> API["原生 API / Clash API"]
    Runtime -.指标.-> Observe["日志 / 流量 / 连接"]
Loading

更完整的模块边界、启动过程和数据流见 架构说明

命令行

wuther-core run -c <file>                        启动内核
wuther-core check <file>                         校验配置
wuther-core explain <file>                       输出编译后的 RuntimePlan
wuther-core migrate mihomo <input> -o <output>  迁移 Mihomo 配置
wuther-core feeds list <file>                    列出订阅
wuther-core feeds refresh <file>                 立即刷新订阅
wuther-core ruleset list <file>                  列出外部规则集
wuther-core ruleset refresh <file>               立即刷新外部规则集
wuther-core ruleset convert <in> <out>           转换规则集格式
wuther-core store info                           查看持久化存储
wuther-core store reset                          清空学习数据

每个命令都支持 --help。规则集转换支持 YAML、文本、sing-box JSON 和 WutherCore RRS,输入格式通常可以自动识别。

文档

文档 内容
文档中心 从使用、开发或集成角度选择入口
功能矩阵 能力、协议、平台支持和限制
配置指南 配置结构、Profile、验证与迁移
架构说明 workspace 边界、连接路径和扩展点
管理 API 鉴权、原生 /v1 端点和兼容接口
排错手册 权限、TUN、DNS、订阅与日志排查
路线图 当前重点与 1.0 前的完成标准
内核设计文档 更详细的设计背景和实现说明
构建性能 Cargo 构建与编译性能配置
构建脚本 多平台构建脚本和产物
发版指南 正式版、预发布、标签、校验和构建证明

开发与协作

cargo fmt --all --check
cargo check --workspace --all-targets
cargo test --workspace
cargo doc --workspace --no-deps
python scripts/check-repository.py

提交代码前请阅读 CONTRIBUTING.md。Bug 和功能建议使用 Issue 表单,配置讨论与一般问题放在 Discussions

安全问题不要公开提交 Issue,请按照 SECURITY.md 私下报告。维护方式、PR 门禁和管理员紧急合并路径见 GOVERNANCE.md

License

third_party/xray-transport 之外使用 MIT License 开源,third_party/xray-transport 使用 MPL License

About

Modular cross-platform proxy core in Rust with YAML configuration, HTTP/SOCKS5, TUN/TPROXY capture, policy routing, DNS, subscriptions, and a management API.

Topics

Resources

Code of conduct

Contributing

Security policy

Stars

Watchers

Forks

Releases

Packages

Used by

Contributors

Languages