蛮荒 · 网络供应链(VPN / 机场 / 出站路径)
状态:已落地(可运维) · 更新 2026-07-13
仓库:joy-cli · 相关 commit 见 git log --oneline --grep=net-path
0. 一句话
把 机场 / Clash / 系统代理 / 出口身份 当作供应链一环,而不是用「公开代理 46 万 alive」冒充出口能力。
神州生产域必须 DIRECT;蛮荒 clearnet 探价可用 mixed-port;鬼市 onion 走 Tor 分轨。
1. 定位
| 是 |
不是 |
| 出站路径健康 + 串线检测 + Board 闭环 |
暗网成交 / 代付 / 洗钱 |
| 订阅 hash、节点数 Δ、延迟、geo/ASN |
订阅 URL / 节点 server 明文进面板 |
| scutil 系统代理是否指向 789x |
把 free proxy dump 当 KPI |
2. 五层模型(N0–N5)
| 层 |
内容 |
实现 |
| N0 |
配置/订阅元数据 hash、profile 文件数、节点数 Δ |
probe-proxy-path.py → n0_subscription_meta |
| N1 |
Clash Meta controller :9090 / Verge :9097 |
n1_controllers + primary |
| N2 |
选中节点 /delay 抽样 |
n2_delays |
| N3 |
双出口 IP + geo/ASN |
n2_n3_egress(ipify + ip-api) |
| N4 |
scutil 系统代理 ON/OFF → 789x(期望 ON) |
system_proxy |
| N5 |
global 模式 / 生产域未 DIRECT(串线) |
n4_n5_isolation |
3. 文件地图
| 路径 |
职责 |
scripts/manhuang/clashctl |
控制面入口(status/mode/ensure-direct/probe/regression) |
scripts/manhuang/clash-api.py |
vendored 通用 API CLI(Hsiifu3/clash-verge-skill) |
scripts/manhuang/probe-proxy-path.py |
主探针(默认 / --deep) |
scripts/manhuang/check-net-path-regression.sh |
回归:crit 串线 → exit 2 |
scripts/manhuang/actions-to-board.sh |
findings → Board observe |
scripts/manhuang/run-quote-probe.sh |
管线内嵌 net-path |
configs/launchd/com.feibisi.manhuang-net-path.plist |
每 15min --deep |
configs/manhuang/proxy-path.example.yml |
controller / never_via_proxy |
configs/manhuang/clash-rules-shenzhou-direct.snippet.yaml |
生产 DIRECT 规则草案 |
~/.cache/manhuang/net-path/status.json |
最新状态 |
~/.cache/manhuang/net-path/history/YYYYMMDD.jsonl |
历史曲线 |
docs/ops/manhuang-net-path.md |
本文 |
4. 日常命令
cd ~/Projects/joy-cli
# —— 控制面 CLI(现成 API 客户端 + 本仓缺口)——
# 通用 status/mode/切节点:vendored clash-api.py
# upstream https://github.com/Hsiifu3/clash-verge-skill (MIT,零依赖)
# 本仓封装:
bash scripts/manhuang/clashctl status
bash scripts/manhuang/clashctl mode rule
bash scripts/manhuang/clashctl ensure-direct # rule + 生产 DIRECT 检查/热加载
bash scripts/manhuang/clashctl sys-proxy # 期望 ON
bash scripts/manhuang/clashctl groups
# 亦可用:python3 scripts/manhuang/clash-api.py --api http://127.0.0.1:9090 status
# 深探(延迟 + 串线 + scutil + geo)
bash scripts/manhuang/clashctl probe --deep
# 或: python3 scripts/manhuang/probe-proxy-path.py --deep
# 回归(期望改完 Clash 后 PASS)
bash scripts/manhuang/clashctl regression
# 更严:系统代理+global 也失败
bash scripts/manhuang/clashctl regression --strict
# findings → Board(12h 节流;--force 重发)
bash scripts/manhuang/actions-to-board.sh
bash scripts/manhuang/actions-to-board.sh --dry-run
# 装/重载定时(若未 load)
cp configs/launchd/com.feibisi.manhuang-net-path.plist ~/Library/LaunchAgents/
launchctl bootout gui/$(id -u)/com.feibisi.manhuang-net-path 2>/dev/null || true
launchctl bootstrap gui/$(id -u) ~/Library/LaunchAgents/com.feibisi.manhuang-net-path.plist
4.1 现成 CLI 调研结论(2026-07-13)
| 工具 |
结论 |
| clash-verge-skill |
已 vendoring 为 clash-api.py,本机 ClashX Meta :9090 实测可用 |
| mihomosh |
更全的独立 Mihomo 工具箱;需配 mihomo-path,与 ClashX Meta GUI 目录不完全一致,未默认采用 |
| clashtui / mihoro |
自管内核,易与 ClashX Meta 双开冲突,不装 |
| 官方 |
无业务 CLI,只有 external-controller REST |
5. 2026-07-13 实测与处置记录(Mac 麟悦)
5.1 处置前
| 项 |
值 |
| Clash |
Meta · global · mixed :7893 |
| 系统代理 |
ON → 127.0.0.1:7893 |
| 串线 |
crit(global + 系统代理 + 生产域未 DIRECT) |
| 回归 |
FAIL |
5.2 已执行处置(脚本/API,非 GUI)
PATCH /configs → mode=rule(live controller :9090)
- 从当前订阅缓存生成增强配置,rules 顶部 prepend 生产 DIRECT,
PUT /configs?force=true 热加载
- 落地文件:
~/.config/clash.meta/config-shenzhou-direct.yaml(含订阅节点,勿提交 git)
- Clash Verge enhance:
profiles/rnT7uCOncus6.yaml prepend 同步
~/.config/clash.meta/config.yaml 基线 mode=rule + DIRECT 列表
- 串线探针改为:以 live DIRECT 规则覆盖为主(mixed-port 200 ≠ 走机场)
5.3 处置后
| 项 |
值 |
| mode |
rule |
| 生产 DIRECT |
weixiaoduo / feicode / support / mall 等 已在 rules 前 16 条 |
| 系统代理 |
必须保持 ON → 127.0.0.1:7893(本机否则上不了外网) |
| 串线 risk |
ok / info(系统代理 ON 是常态,不是缺陷) |
| 回归 |
check-net-path-regression.sh → PASS |
| 出口 geo 例 |
HK · 节点延迟 ~145ms |
5.4 运维约定(2026-07-13 菲比斯确认)
系统代理必须开着。 本机外网依赖 Clash「设置为系统代理」;关掉之后浏览器和多数 App 上不了外网。
| 要做 |
不要做 |
| Clash mode=rule |
用 global 把所有流量(含生产域)塞进节点 |
| 生产域 DOMAIN-SUFFIX … DIRECT 置顶 |
靠 关闭系统代理 来「隔离」神州 |
| 蛮荒 clearnet 探价走 mixed-port |
把 scutil 系统代理 ON 当成故障去关 |
订阅更新后重跑 --deep / 回归,确认 DIRECT 仍在最前 |
为了回归绿而去关系统代理 |
隔离手段 = rule + 生产 DIRECT,不是关代理。
6. 与 collect / 面板
manhuang.net_path 由 collect_manhuang() 读 status.json
- 出口环不再用
proxies_alive 大数刷绿
- 通道 tab:N0–N5 卡、延迟表、串线 findings、系统代理 ON/OFF、geo
- 公开代理池默认折叠
7. Board 闭环
| 项 |
值 |
| 项目 |
P-manhuang-net(owner linuxjoy) |
| family |
observe |
| capability |
observability_ops(威胁类用 security_ops) |
| 节流 |
同 title hash 12h(MANHUANG_BOARD_THROTTLE_S) |
| 任务正文 |
含 next + 规则草案路径 |
8. 铁律
- 订阅 URL / 节点私钥 永不进 git / dashboard JSON
- 不成交、不代付、不对第三方写 exploit
- 神州生产变更仍走 devops / 人工;Board 只 observe
- 系统代理必须保持 ON(本机否则上不了外网;菲比斯 2026-07-13 确认)
- 隔离靠 rule + 生产 DIRECT,绝不靠关系统代理
9. 相关文档
10. 与供应链 chain_v2
status.json 含 path_id(controller+mode+selected+egress 哈希)
- 串线
risk=crit 时探针默认跑 clashctl ensure-direct(MANHUANG_AUTO_ENSURE=0 可关)
- collect 将 path_id / system_proxy 并入
chain.breaks(如 path_serial / path_sys_proxy_off)
11. 下一步(未做)
- 本地 mmdb 解析 ASN(现用 ip-api;maxminddb 因 PEP668 未装)
- scutil 异常列表与生产域是否在 ExceptionsList
- 神州健康检查强制 direct 的自动化(与 joy web / 监控联动)
- 出口 IP 信誉列表对撞(可选)
- Board 按
chain.breaks[].reason 自动发 observe 任务