{
  "type": "excalidraw",
  "version": 2,
  "source": "infra-field-guide local editable architecture",
  "elements": [
    {
      "id": "program-zone",
      "type": "rectangle",
      "x": 40,
      "y": 175,
      "width": 710,
      "height": 625,
      "angle": 0,
      "strokeColor": "#a9d4e6",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 3,
      "version": 1,
      "versionNonce": 3,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "region",
        "name": "请求产生的位置",
        "responsibility": "本机或 VPS；不同程序、用户和进程环境可以不同",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "route-zone",
      "type": "rectangle",
      "x": 790,
      "y": 140,
      "width": 405,
      "height": 660,
      "angle": 0,
      "strokeColor": "#a9d4e6",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 6,
      "version": 1,
      "versionNonce": 6,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "region",
        "name": "这一次选择的路径",
        "responsibility": "由客户端与系统路由共同决定",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "platform-zone",
      "type": "rectangle",
      "x": 1235,
      "y": 175,
      "width": 325,
      "height": 625,
      "angle": 0,
      "strokeColor": "#a9d4e6",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 9,
      "version": 1,
      "versionNonce": 9,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "region",
        "name": "外部 API / 平台",
        "responsibility": "网络出口只是观测的一部分",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "program-route",
      "type": "arrow",
      "x": 340,
      "y": 455,
      "width": 85,
      "height": 0,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 24,
      "version": 1,
      "versionNonce": 24,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          85,
          0
        ]
      ],
      "startBinding": {
        "elementId": "program",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "routing",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "program",
        "destination": "routing",
        "payload": "程序发出实际请求",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "choose-direct",
      "type": "arrow",
      "x": 565,
      "y": 380,
      "width": 260,
      "height": 90,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 25,
      "version": 1,
      "versionNonce": 25,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          -90
        ],
        [
          260,
          -90
        ]
      ],
      "startBinding": {
        "elementId": "routing",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "direct",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "routing",
        "destination": "direct",
        "payload": "直接连接",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "choose-proxy",
      "type": "arrow",
      "x": 710,
      "y": 455,
      "width": 115,
      "height": 0,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "dashed",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 28,
      "version": 1,
      "versionNonce": 28,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          115,
          0
        ]
      ],
      "startBinding": {
        "elementId": "routing",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "proxy",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "routing",
        "destination": "proxy",
        "payload": "显式应用代理路径",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "choose-vpn",
      "type": "arrow",
      "x": 565,
      "y": 530,
      "width": 260,
      "height": 130,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "dashed",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 29,
      "version": 1,
      "versionNonce": 29,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          0,
          130
        ],
        [
          260,
          130
        ]
      ],
      "startBinding": {
        "elementId": "routing",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "vpn",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "routing",
        "destination": "vpn",
        "payload": "系统路由选用的 exit node 或 VPN",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "direct-api",
      "type": "arrow",
      "x": 1160,
      "y": 290,
      "width": 105,
      "height": 125,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 32,
      "version": 1,
      "versionNonce": 32,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          0
        ],
        [
          50,
          125
        ],
        [
          105,
          125
        ]
      ],
      "startBinding": {
        "elementId": "direct",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "api",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "direct",
        "destination": "api",
        "payload": "使用直接公网出口请求外部 API",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "proxy-api",
      "type": "arrow",
      "x": 1160,
      "y": 475,
      "width": 105,
      "height": 0,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 33,
      "version": 1,
      "versionNonce": 33,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          105,
          0
        ]
      ],
      "startBinding": {
        "elementId": "proxy",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "api",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "proxy",
        "destination": "api",
        "payload": "代理端向 API 建立连接",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "vpn-api",
      "type": "arrow",
      "x": 1160,
      "y": 660,
      "width": 105,
      "height": 145,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 2.5,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 34,
      "version": 1,
      "versionNonce": 34,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "points": [
        [
          0,
          0
        ],
        [
          50,
          0
        ],
        [
          50,
          -145
        ],
        [
          105,
          -145
        ]
      ],
      "startBinding": {
        "elementId": "vpn",
        "focus": 0,
        "gap": 1
      },
      "endBinding": {
        "elementId": "api",
        "focus": 0,
        "gap": 1
      },
      "startArrowhead": null,
      "endArrowhead": "arrow",
      "elbowed": false,
      "customData": {
        "kind": "edge",
        "source": "vpn",
        "destination": "api",
        "payload": "VPN 或 exit node 的出口访问 API",
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "title",
      "type": "text",
      "x": 40,
      "y": 28,
      "width": 1520,
      "height": 45.900000000000006,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 1,
      "version": 1,
      "versionNonce": 1,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 34,
      "fontFamily": 2,
      "text": "公网出站 · 平台看到的是这次请求实际走的出口",
      "originalText": "公网出站 · 平台看到的是这次请求实际走的出口",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 700,
        "boldFirstLine": false,
        "guide": {
          "title": "公网出站 · 平台看到的是这次请求实际走的出口",
          "description": "参考：直接连接、显式应用代理、系统 VPN / exit node 是可选分支；不表示同时启用。",
          "width": 1600,
          "height": 1100,
          "evidence": [
            "../01-vps-basics.md",
            "../07-network-and-proxies.md",
            "../08-troubleshooting.md"
          ],
          "state": {
            "canonical": "每个进程、代理客户端与操作系统的实际配置",
            "writers": "有权修改程序配置、凭据与路由的 owner",
            "receipts": "同一程序的真实请求、IPv4/IPv6、DNS路径与服务端结果"
          },
          "question": "同一台机器上的不同程序为什么可能有不同出口？",
          "status": "reference-model"
        }
      }
    },
    {
      "id": "subtitle",
      "type": "text",
      "x": 40,
      "y": 82,
      "width": 1520,
      "height": 25.650000000000002,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 2,
      "version": 1,
      "versionNonce": 2,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 19,
      "fontFamily": 2,
      "text": "参考：直接连接、显式应用代理、系统 VPN / exit node 是可选分支；不表示同时启用。",
      "originalText": "参考：直接连接、显式应用代理、系统 VPN / exit node 是可选分支；不表示同时启用。",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    },
    {
      "id": "program-zone-heading",
      "type": "text",
      "x": 60,
      "y": 190,
      "width": 670,
      "height": 29.700000000000003,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 4,
      "version": 1,
      "versionNonce": 4,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 22,
      "fontFamily": 2,
      "text": "请求产生的位置",
      "originalText": "请求产生的位置",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 700,
        "boldFirstLine": false
      }
    },
    {
      "id": "program-zone-sub",
      "type": "text",
      "x": 60,
      "y": 224,
      "width": 670,
      "height": 21.6,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 5,
      "version": 1,
      "versionNonce": 5,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 16,
      "fontFamily": 2,
      "text": "本机或 VPS；不同程序、用户和进程环境可以不同",
      "originalText": "本机或 VPS；不同程序、用户和进程环境可以不同",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    },
    {
      "id": "route-zone-heading",
      "type": "text",
      "x": 810,
      "y": 155,
      "width": 365,
      "height": 29.700000000000003,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 7,
      "version": 1,
      "versionNonce": 7,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 22,
      "fontFamily": 2,
      "text": "这一次选择的路径",
      "originalText": "这一次选择的路径",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 700,
        "boldFirstLine": false
      }
    },
    {
      "id": "route-zone-sub",
      "type": "text",
      "x": 810,
      "y": 189,
      "width": 365,
      "height": 21.6,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 8,
      "version": 1,
      "versionNonce": 8,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 16,
      "fontFamily": 2,
      "text": "由客户端与系统路由共同决定",
      "originalText": "由客户端与系统路由共同决定",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    },
    {
      "id": "platform-zone-heading",
      "type": "text",
      "x": 1255,
      "y": 190,
      "width": 285,
      "height": 29.700000000000003,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 10,
      "version": 1,
      "versionNonce": 10,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 22,
      "fontFamily": 2,
      "text": "外部 API / 平台",
      "originalText": "外部 API / 平台",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 700,
        "boldFirstLine": false
      }
    },
    {
      "id": "platform-zone-sub",
      "type": "text",
      "x": 1255,
      "y": 224,
      "width": 285,
      "height": 21.6,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 11,
      "version": 1,
      "versionNonce": 11,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 16,
      "fontFamily": 2,
      "text": "网络出口只是观测的一部分",
      "originalText": "网络出口只是观测的一部分",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    },
    {
      "id": "program",
      "type": "rectangle",
      "x": 70,
      "y": 380,
      "width": 270,
      "height": 150,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#e9f7fc",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 12,
      "version": 1,
      "versionNonce": 12,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "program-text",
          "type": "text"
        },
        {
          "id": "program-route",
          "type": "arrow"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "应用 / CLI / worker",
        "responsibility": "实际进程与实际用户 / 请求使用的 token / 登录态",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "program-text",
      "type": "text",
      "x": 88,
      "y": 412.5,
      "width": 234,
      "height": 81.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 13,
      "version": 1,
      "versionNonce": 13,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "应用 / CLI / worker\n实际进程与实际用户\n请求使用的 token / 登录态",
      "originalText": "应用 / CLI / worker\n实际进程与实际用户\n请求使用的 token / 登录态",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "program",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "routing",
      "type": "rectangle",
      "x": 425,
      "y": 380,
      "width": 285,
      "height": 150,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#e9f7fc",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 14,
      "version": 1,
      "versionNonce": 14,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "routing-text",
          "type": "text"
        },
        {
          "id": "program-route",
          "type": "arrow"
        },
        {
          "id": "choose-direct",
          "type": "arrow"
        },
        {
          "id": "choose-proxy",
          "type": "arrow"
        },
        {
          "id": "choose-vpn",
          "type": "arrow"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "出口决策",
        "responsibility": "客户端代理支持与配置 / NO_PROXY 与目标地址 / IPv4 / IPv6 + OS 路由",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "routing-text",
      "type": "text",
      "x": 443,
      "y": 399.0,
      "width": 249,
      "height": 108.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 15,
      "version": 1,
      "versionNonce": 15,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "出口决策\n客户端代理支持与配置\nNO_PROXY 与目标地址\nIPv4 / IPv6 + OS 路由",
      "originalText": "出口决策\n客户端代理支持与配置\nNO_PROXY 与目标地址\nIPv4 / IPv6 + OS 路由",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "routing",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "direct",
      "type": "rectangle",
      "x": 825,
      "y": 235,
      "width": 335,
      "height": 110,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 16,
      "version": 1,
      "versionNonce": 16,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "direct-text",
          "type": "text"
        },
        {
          "id": "choose-direct",
          "type": "arrow"
        },
        {
          "id": "direct-api",
          "type": "arrow"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "直接连接",
        "responsibility": "本机 / VPS 的公网出口",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "direct-text",
      "type": "text",
      "x": 843,
      "y": 261.0,
      "width": 299,
      "height": 54.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 17,
      "version": 1,
      "versionNonce": 17,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "直接连接\n本机 / VPS 的公网出口",
      "originalText": "直接连接\n本机 / VPS 的公网出口",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "direct",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "proxy",
      "type": "rectangle",
      "x": 825,
      "y": 420,
      "width": 335,
      "height": 110,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#e9f7fc",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 18,
      "version": 1,
      "versionNonce": 18,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "proxy-text",
          "type": "text"
        },
        {
          "id": "choose-proxy",
          "type": "arrow"
        },
        {
          "id": "proxy-api",
          "type": "arrow"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "显式应用代理 · 可选",
        "responsibility": "HTTP CONNECT / SOCKS5 等",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "proxy-text",
      "type": "text",
      "x": 843,
      "y": 446.0,
      "width": 299,
      "height": 54.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 19,
      "version": 1,
      "versionNonce": 19,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "显式应用代理 · 可选\nHTTP CONNECT / SOCKS5 等",
      "originalText": "显式应用代理 · 可选\nHTTP CONNECT / SOCKS5 等",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "proxy",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "vpn",
      "type": "rectangle",
      "x": 825,
      "y": 605,
      "width": 335,
      "height": 110,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#e9f7fc",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 20,
      "version": 1,
      "versionNonce": 20,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "vpn-text",
          "type": "text"
        },
        {
          "id": "choose-vpn",
          "type": "arrow"
        },
        {
          "id": "vpn-api",
          "type": "arrow"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "VPN / exit node · 可选",
        "responsibility": "路由匹配流量才进入该出口",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "vpn-text",
      "type": "text",
      "x": 843,
      "y": 631.0,
      "width": 299,
      "height": 54.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 21,
      "version": 1,
      "versionNonce": 21,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "VPN / exit node · 可选\n路由匹配流量才进入该出口",
      "originalText": "VPN / exit node · 可选\n路由匹配流量才进入该出口",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "vpn",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "api",
      "type": "rectangle",
      "x": 1265,
      "y": 370,
      "width": 265,
      "height": 170,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#e9f7fc",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 22,
      "version": 1,
      "versionNonce": 22,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "api-text",
          "type": "text"
        },
        {
          "id": "direct-api",
          "type": "arrow"
        },
        {
          "id": "proxy-api",
          "type": "arrow"
        },
        {
          "id": "vpn-api",
          "type": "arrow"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "外部 API",
        "responsibility": "看到实际来源连接 / 另验身份、地区、配额 / 与平台使用规则",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "api-text",
      "type": "text",
      "x": 1283,
      "y": 399.0,
      "width": 229,
      "height": 108.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 23,
      "version": 1,
      "versionNonce": 23,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "外部 API\n看到实际来源连接\n另验身份、地区、配额\n与平台使用规则",
      "originalText": "外部 API\n看到实际来源连接\n另验身份、地区、配额\n与平台使用规则",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "api",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "choose-direct-label-bg",
      "type": "rectangle",
      "x": 629,
      "y": 252,
      "width": 155,
      "height": 26.950000000000003,
      "angle": 0,
      "strokeColor": "#ffffff",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 26,
      "version": 1,
      "versionNonce": 26,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {}
    },
    {
      "id": "choose-direct-label",
      "type": "text",
      "x": 634,
      "y": 254,
      "width": 145,
      "height": 22.950000000000003,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 27,
      "version": 1,
      "versionNonce": 27,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 17,
      "fontFamily": 2,
      "text": "无代理的请求",
      "originalText": "无代理的请求",
      "textAlign": "center",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    },
    {
      "id": "choose-vpn-label-bg",
      "type": "rectangle",
      "x": 624,
      "y": 623,
      "width": 167,
      "height": 26.950000000000003,
      "angle": 0,
      "strokeColor": "#ffffff",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 30,
      "version": 1,
      "versionNonce": 30,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {}
    },
    {
      "id": "choose-vpn-label",
      "type": "text",
      "x": 629,
      "y": 625,
      "width": 157,
      "height": 22.950000000000003,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 31,
      "version": 1,
      "versionNonce": 31,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 17,
      "fontFamily": 2,
      "text": "路由选中时",
      "originalText": "路由选中时",
      "textAlign": "center",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    },
    {
      "id": "dns-choice",
      "type": "rectangle",
      "x": 40,
      "y": 850,
      "width": 490,
      "height": 155,
      "angle": 0,
      "strokeColor": "#e7c979",
      "backgroundColor": "#fff5d9",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 35,
      "version": 1,
      "versionNonce": 35,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "dns-choice-text",
          "type": "text"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "DNS 在哪解析也要确认",
        "responsibility": "HTTP / SOCKS 的客户端实现不同。 / 例如 socks5 与 socks5h 可使 / DNS 在本机或代理侧解析。",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "dns-choice-text",
      "type": "text",
      "x": 58,
      "y": 871.5,
      "width": 454,
      "height": 108.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 36,
      "version": 1,
      "versionNonce": 36,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "DNS 在哪解析也要确认\nHTTP / SOCKS 的客户端实现不同。\n例如 socks5 与 socks5h 可使\nDNS 在本机或代理侧解析。",
      "originalText": "DNS 在哪解析也要确认\nHTTP / SOCKS 的客户端实现不同。\n例如 socks5 与 socks5h 可使\nDNS 在本机或代理侧解析。",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "dns-choice",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "verify-outbound",
      "type": "rectangle",
      "x": 555,
      "y": 850,
      "width": 490,
      "height": 155,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#e9f7fc",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 37,
      "version": 1,
      "versionNonce": 37,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "verify-outbound-text",
          "type": "text"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "在真实进程中验收",
        "responsibility": "不要用另一用户的终端代替 worker。 / 检查代理变量、IPv4 / IPv6 与请求。 / Tunnel 入站不替你切换 API 出口。",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "verify-outbound-text",
      "type": "text",
      "x": 573,
      "y": 871.5,
      "width": 454,
      "height": 108.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 38,
      "version": 1,
      "versionNonce": 38,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "在真实进程中验收\n不要用另一用户的终端代替 worker。\n检查代理变量、IPv4 / IPv6 与请求。\nTunnel 入站不替你切换 API 出口。",
      "originalText": "在真实进程中验收\n不要用另一用户的终端代替 worker。\n检查代理变量、IPv4 / IPv6 与请求。\nTunnel 入站不替你切换 API 出口。",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "verify-outbound",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "account-boundary",
      "type": "rectangle",
      "x": 1070,
      "y": 850,
      "width": 490,
      "height": 155,
      "angle": 0,
      "strokeColor": "#6ab9db",
      "backgroundColor": "#ffffff",
      "fillStyle": "solid",
      "strokeWidth": 2,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": {
        "type": 3
      },
      "seed": 39,
      "version": 1,
      "versionNonce": 39,
      "isDeleted": false,
      "boundElements": [
        {
          "id": "account-boundary-text",
          "type": "text"
        }
      ],
      "updated": 0,
      "link": null,
      "locked": false,
      "customData": {
        "kind": "node",
        "name": "出口不是账号结果保证",
        "responsibility": "ASN / 机房 IP / 住宅属性是不同概念。 / 协议加密不授予第三方访问权限。 / 遵守账号、地区与平台使用规则。",
        "evidence": [
          "../01-vps-basics.md",
          "../07-network-and-proxies.md",
          "../08-troubleshooting.md"
        ],
        "evidenceStatus": "reference-model"
      }
    },
    {
      "id": "account-boundary-text",
      "type": "text",
      "x": 1088,
      "y": 871.5,
      "width": 454,
      "height": 108.0,
      "angle": 0,
      "strokeColor": "#163a5f",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 40,
      "version": 1,
      "versionNonce": 40,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 20,
      "fontFamily": 2,
      "text": "出口不是账号结果保证\nASN / 机房 IP / 住宅属性是不同概念。\n协议加密不授予第三方访问权限。\n遵守账号、地区与平台使用规则。",
      "originalText": "出口不是账号结果保证\nASN / 机房 IP / 住宅属性是不同概念。\n协议加密不授予第三方访问权限。\n遵守账号、地区与平台使用规则。",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": "account-boundary",
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": true
      }
    },
    {
      "id": "footer",
      "type": "text",
      "x": 40,
      "y": 1058,
      "width": 1520,
      "height": 21.6,
      "angle": 0,
      "strokeColor": "#365775",
      "backgroundColor": "transparent",
      "fillStyle": "solid",
      "strokeWidth": 1,
      "strokeStyle": "solid",
      "roughness": 0,
      "opacity": 100,
      "groupIds": [],
      "frameId": null,
      "index": null,
      "roundness": null,
      "seed": 41,
      "version": 1,
      "versionNonce": 41,
      "isDeleted": false,
      "boundElements": null,
      "updated": 0,
      "link": null,
      "locked": false,
      "fontSize": 16,
      "fontFamily": 2,
      "text": "实线：请求路径　虚线：可选代理 / VPN 分支。协议的加密、UDP 与 transport 差异见网络章节；选择协议不保证账号安全或服务可用。",
      "originalText": "实线：请求路径　虚线：可选代理 / VPN 分支。协议的加密、UDP 与 transport 差异见网络章节；选择协议不保证账号安全或服务可用。",
      "textAlign": "left",
      "verticalAlign": "top",
      "containerId": null,
      "autoResize": false,
      "lineHeight": 1.35,
      "customData": {
        "weight": 400,
        "boldFirstLine": false
      }
    }
  ],
  "appState": {
    "viewBackgroundColor": "#ffffff",
    "gridSize": null
  },
  "files": {}
}
