2026/9/23
为什么做 Specola
Specola 是面向开发者的规则分流工具。你用纯文本 TOML 写清楚:哪些连接直连、哪些拒绝、 哪些走你自己运营或有权使用的代理服务器。Specola 按域名、IP、端口或发起连接的进程, 把这套规则应用到本机的每一条连接上。
我们首先为运行 Omarchy 和 Arch Linux 的开发者而做。
要解决的问题
一台开发机会同时和很多网络打交道:
git、cargo、npm、docker pull需要走公司代理或区域镜像;- 预发环境的 API 只能经过跳板网关访问;
- 浏览器、聊天和音乐应该保持直连;
- 某个内部工具根本不该访问外网。
常见方案都不太合适。HTTP_PROXY 环境变量有一半工具不认,还会漏进你不希望生效的 shell;
系统级 VPN 或 TUN 把所有流量一刀切;各个工具自己的代理参数分散在十几个配置文件里。
真正需要的是一个文件写明“这个进程、这个域名、这个网段 → 那条路由”,再由路由器对每个程序 强制执行——包括那些无视代理设置的程序。
Specola 是什么
Specola 由两个进程组成:
specola-core:C++20 + Asio 协程实现,负责监听、规则、代理组、DNS 和透明数据面。 它可以无界面运行,同一份配置在笔记本、开发虚拟机和构建机上都能用。- Qt Quick (QML) 桌面 UI:负责启动和监控 Core,并展示每条连接命中的规则。它只通过本地 MessagePack RPC 接口与 Core 通信。
在 Linux 上,Core 的增强模式使用 eBPF 而不是 TUN 设备:挂在 cgroup v2 上的程序在 socket 发起连接时就能看到所属进程和目标地址。没有命中任何规则的连接保持原始 socket,完全不经过用户态; 可能被规则接管的连接才会重定向到 Core 的本地监听,由完整规则列表做最终决定。原理见 《不用 TUN 的进程级分流》。
Specola 不是什么
Specola 是软件,不是网络服务。它不包含服务器、IP 地址、带宽或匿名服务,只把你本机的流量 送往你自己配置的目标和代理。默认配置只做直连。
为什么是 Omarchy
Omarchy 用户本来就生活在纯文本配置里:Hyprland 快捷键、Waybar 模块、放在 Git 里的 dotfiles。 一个同样用配置文件驱动的路由器——一份 TOML、一个可以绑定到快捷键的无界面 Core——能融入这套工作流,而不是和它对着干。
Arch 内核也已经具备 eBPF 后端需要的全部条件:足够新的内核、cgroup v2 和 BTF。 《在 Omarchy 上使用 Specola》完整演示了配置过程,包括今天就能用的 Waybar 状态模块和 Hyprland 快捷键。
Specola 是独立产品,与 Omarchy 项目没有隶属或背书关系。
面向谁
- 需要给不同工具配置不同路由、并希望用声明式配置管理的开发者;
- 需要排查网络、想看到每条连接命中哪条规则的人;
- 想在 Linux 上做进程级分流、又不想用 TUN 设备的人。
如果只想要一个开关把所有流量送到一台服务器,更简单的工具就够了。
接下来
现在已经可用:Mixed HTTP/SOCKS5 监听,Direct / Global / Rule 模式,代理、代理组, 按域名、IP、GeoIP、端口和进程的规则,带 Fake-IP 的 DNS,以及 Linux eBPF 增强模式。
面向 Omarchy 的路线图:
- 官方 AUR 包;
- 支持切换模式的官方 Waybar 模块;
- 跟随当前 Omarchy 主题的 UI 配色;
- 用于快速切换模式和代理组的 Walker 菜单入口;
- 公开、可复现的路由器性能对比测试。
后续进展会发布在这个博客,入门请阅读手册。