Smarty:Harmony 上的 WireGuard Smart Agent
0. 它解决的核心痛点
普通 VPN / WireGuard App 常见体验:
- 到公司要连 A,回家要连 B,咖啡店要不要连还得想
- 全隧道一开,内网视频、本地打印机、银行 App 全遭殃
- 人肉点连接,忘了关/切错配置,要么裸奔要么全堵
Smarty 的 Smart Agent 把「我现在在哪类网络」映射成「该用哪份 WG 配置,还是直连」——规则按序匹配,命中即执行。人少点按钮,网络策略跟着环境走。
名字里的 Agent = 本机网络策略代理,不是写代码的 LLM Agent。
1. 应用场景(主菜)
场景 A:公司 Wi‑Fi 自动进内网隧道
谁: 公司有自建 WireGuard,手机要访问 Git、跳板、内网文档。
痛点: 连上公司 SSID 还要再开 VPN;离开公司忘了关,流量仍绕远程。
怎么用脑子配:
| 条件 | 动作 |
|---|---|
| Wi‑Fi SSID = 公司名 | 启用「公司 WG」配置 |
| 其它 | 不匹配本条,交给后面规则 |
可再加:SSID 是公司访客网 → 另一份仅开放门户的配置,或直连。
价值: 进门自动进隧道,出门自动卸(若后续规则写了直连/家庭配置)。
场景 B:家庭 / 工作室 双配置切换
谁: 家里有 NAS、旁路由 WG;出差酒店要用「回国/回实验室」另一条 peer。
痛点: 多份 wg-quick 配置来回导入切换,易切错 AllowedIPs。
配法示意:
wifiSsid == Home→ 家庭隧道(AllowedIPs 可只含内网段,见场景 D)wifiSsid == 公司→ 公司隧道- 默认(蜂窝 / 陌生 Wi‑Fi)→ 出行用隧道,或按需直连
价值: 一份 App 管多身份,环境变策略变。
场景 C:仅在「公网 / 不信任网络」才强制隧道
谁: 只在酒店、机场、地铁 Wi‑Fi 上要加密出口;自家宽带信任直连。
配法示意:
| 顺序 | 条件 | 动作 |
|---|---|---|
| 1 | SSID ∈ 家庭/公司白名单 | direct(不走 VPN) |
| 2 | 其它 Wi‑Fi 或蜂窝 | 启用「出行 WG」 |
也可用网关特征(wifiGateway)区分「真·家庭路由」和同名钓鱼 SSID(在网关稳定可辨时)。
价值: 信任网络省延迟、省电;不信任网络自动套隧道。
场景 D:分应用分流——只有指定 App 走隧道
谁: 企业微信/邮箱/代码工具要进内网,短视频、地图、支付想走运营商直连。
痛点: 全局 VPN 拖垮延迟、触发风控、耗电。
能力: App-based split tunneling(按应用进不进 VPN)。
典型组合:
- 浏览器、SSH 客户端、企业 App → 进隧道
- 视频、游戏、本地智能家居 App → 不进隧道
价值: 「该保护的保护,该本地的本地」——比全隧道更接近日常可用。
场景 E:IPv4 / IPv6 环境差异下的策略
谁: 部分运营商或园区只有 IPv6 好用,或 Endpoint 只发布在某一栈。
规则类型: ipv4Available / ipv6Available。
举例:
- 仅 IPv6 可用 → 切到「IPv6 Endpoint」那份配置
- 双栈都有 → 默认配置
- 异常到几乎无公网栈 → 直连或提示(策略上至少别傻等)
价值: 弱网/特殊运营商下少「连不上却不知道为什么」。
场景 F:隧道 + 内置浏览器,专开「必须走代理环境」的 Web
谁: 内网 Wiki、只在 WG 后可访问的管理台、临时文档站。
痛点: 系统浏览器书签乱、和日常浏览混在一起;快捷方式不好钉。
能力: 同 App 内 ArkWeb——历史、书签、图标、桌面快捷方式(WebShortcutAbility)。
用法:
- Smart Agent 已保证当前网络下隧道正确
- 在内置浏览器打开内网 URL,钉到桌面
- 日常外网浏览仍可用系统浏览器 + 分流策略
价值: 「办公内网入口」和「日常上网」心理分区,少切配置、少记 IP。
场景 G:Endpoint 解析不稳定时的 DoH
谁: Endpoint 是域名,明文 DNS 被劫持/污染,导致 UDP 握手永远对不上真 IP。
能力: 解析隧道 Endpoint 走 DoH(README 默认阿里 dns.alidns.com)。
价值: 不解决「政治级对抗」,但能减少普通污染/中间人瞎解析导致的假死连接。 (最终仍取决于你的 WG 服务端与密钥是否只给你自己用。)
场景 H:鸿蒙设备上的自建远程访问(开发者 / 实验室)
谁: 只有鸿蒙手机/平板当移动终端,要回实验室树莓派、家宽 NAS、云上 WG。
痛点: 生态里成熟 WG 客户端选择少;要策略还得自己拼。
价值: 开源可改、可编 arm64 原生数据面(BoringTun),适合 自建 + 自用 + 可接受动手 的人。 不适合要商店级售后的纯小白。
场景 I:给鸿蒙网络/VPN 开发当参考实现
谁: 要在 Harmony 上做 VpnExtensionAbility、socket protect、ArkTS↔Rust 的人。
可抄的不是商业方案,而是路径:
- 配置解析与持久化
- 策略引擎与 VPN 生命周期
- protect 隧道 socket 再挂 vNIC(防环)
ohrs出.so的工程脚本
价值: 样板与踩坑清单,比从零读文档快。
2. 场景 × 能力速查
| 你的目标 | 主要靠 | 规则/配置要点 |
|---|---|---|
| 到公司自动连内网 | Smart Agent + 多配置 | SSID → 公司 tunnel |
| 家/公司/出行三套身份 | 多配置 + 有序规则 | 白名单 SSID 优先,默认兜底 |
| 信任网直连、外面才 VPN | 规则动作direct | 前序白名单 direct,其后强制隧道 |
| 只有办公 App 走隧道 | 分应用分流 | 企业 App 进,娱乐 App 出 |
| 内网网页当「小程序」用 | 内置浏览器 + 快捷方式 | 先保证隧道,再钉书签 |
| 域名 Endpoint 解析不稳 | DoH | 检查 DoH 与 Endpoint 域名 |
| 双栈/单栈差异 | ipv4/ipv6 条件 | 为不同栈备不同 Endpoint 配置 |
| 学习鸿蒙 VPN 集成 | 源码 | 扩展能力 + 原生库构建 |
3. 一套「日常可用」的规则思维模板
按 从具体到兜底 写(与「有序匹配」一致):
1. 公司 SSID → 配置「corp」
2. 家庭 SSID → 配置「home」(AllowedIPs 建议收敛到内网段)
3. 已知安全网关/热点 → direct
4. 默认(蜂窝+陌生Wi‑Fi)→ 配置「travel」或按风险选择 direct
再单独设:
- 分流: 哪些包名走 VPN
- 浏览器: 仅把「隧道后资源」放进内置书签
改策略时只动规则表,少改密钥与服务端。
4. 哪些场景它(当前)不太适合
| 场景 | 原因 |
|---|---|
| 要商店安装、零维护的全家桶 | 早期开源,需自建编译/签名/更新 |
| 多 Peer 复杂 mesh、动态路由编排 | README 按单 Peer wg-quick 客户端描述 |
| 多设备配置云同步 | 定位本机,无同步叙事 |
| 合规审计的企业统一 MDM 下发 | 未见企业管控面;密钥与策略在本机 |
| 把「Smart Agent」当成 AI 运维机器人 | 只是规则选路,不会自己写策略或排障 |
5. 能力底账(需要时再翻)
| 块 | 要点 |
|---|---|
| VPN | VpnExtensionAbility;BoringTun 数据面;挂 vNIC 前 protect UDP |
| 配置 | 多份导入;标准 Interface/Peer 字段 |
| Smart Agent | 开/关;有序规则;wifiSsid / wifiGateway / ipv4Available / ipv6Available;隧道或 direct |
| 其它 | 分应用分流;Endpoint DoH;ArkWeb 书签/历史/桌面快捷方式 |
| 构建 | scripts/build_native.* → libwg_boringtun.so;hvigor 打 HAP |
| 风险 | 无自动化测试套件;许可证与密钥自负;商用前自测握手/分流/断网恢复 |
环境(SSID / 网关 / IP 栈)
→ Smart Agent 规则
→ 选配置 or 直连
→(可选)按 App 分流
→ BoringTun 转发
→(可选)内置浏览器访问隧道内资源
6. 链接
- 源码:https://github.com/pnparadise/smart-agent-harmony
- BoringTun:https://github.com/cloudflare/boringtun
场景为基于公开能力的用法推演;具体菜单名与规则 UI 以你克隆的版本为准。