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。

配法示意:

  1. wifiSsid == Home → 家庭隧道(AllowedIPs 可只含内网段,见场景 D)
  2. wifiSsid == 公司 → 公司隧道
  3. 默认(蜂窝 / 陌生 Wi‑Fi)→ 出行用隧道,或按需直连

价值: 一份 App 管多身份,环境变策略变。


场景 C:仅在「公网 / 不信任网络」才强制隧道

谁: 只在酒店、机场、地铁 Wi‑Fi 上要加密出口;自家宽带信任直连。

配法示意:

顺序条件动作
1SSID ∈ 家庭/公司白名单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)。

用法:

  1. Smart Agent 已保证当前网络下隧道正确
  2. 在内置浏览器打开内网 URL,钉到桌面
  3. 日常外网浏览仍可用系统浏览器 + 分流策略

价值: 「办公内网入口」和「日常上网」心理分区,少切配置、少记 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. 能力底账(需要时再翻)

要点
VPNVpnExtensionAbility;BoringTun 数据面;挂 vNIC 前 protect UDP
配置多份导入;标准 Interface/Peer 字段
Smart Agent开/关;有序规则;wifiSsid / wifiGateway / ipv4Available / ipv6Available;隧道或 direct
其它分应用分流;Endpoint DoH;ArkWeb 书签/历史/桌面快捷方式
构建scripts/build_native.*libwg_boringtun.sohvigor 打 HAP
风险无自动化测试套件;许可证与密钥自负;商用前自测握手/分流/断网恢复
环境(SSID / 网关 / IP 栈)
    → Smart Agent 规则
    → 选配置 or 直连
    →(可选)按 App 分流
    → BoringTun 转发
    →(可选)内置浏览器访问隧道内资源

6. 链接

场景为基于公开能力的用法推演;具体菜单名与规则 UI 以你克隆的版本为准。