
一、背景:AI 開發工具的網絡困境
隨住 AI 編程助手(Claude Code、GitHub Copilot、Cursor 等)、AI 對話工具(ChatGPT、Claude)以及套件管理器(npm、pip、cargo)日益成為開發者嘅核心工作流,一個長期被忽視嘅問題逐漸浮現:系統代理模式無法覆蓋所有應用嘅網絡流量。
喺傳統嘅系統代理(System Proxy)模式下:
| 場景 | 是否自動走代理 |
|---|
| 瀏覽器訪問 ChatGPT | 是 |
| VS Code 內置瀏覽器 | 是 |
終端執行 npm install | 否,需手動設定 HTTP_PROXY |
| Claude Code CLI | 否,需手動配置環境變數 |
| IDE 內置 AI 補全 | 唔確定,取決於應用實現 |
pip install / cargo build | 否 |
開發者唔得不反覆配置 HTTP_PROXY、HTTPS_PROXY、ALL_PROXY 等環境變數,甚至為唔同工具單獨設定代理參數。呢個唔止繁瑣,仲極易出錯——唔記得配置某個終端窗口就會導致連接超時、依賴安裝失敗。
二、TUN 模式的核心優勢
TUN(Tunnel)模式透過喺系統層建立虛擬網卡,喺網絡棧嘅最底層攔截所有流量,從根本上解決咗上述問題。
┌─────────────────────────────────────────────┐
│ 應用層(瀏覽器/終端/IDE/AI工具) │
│ ChatGPT Claude Code npm pip Cursor │
└──────────────────┬──────────────────────────┘
│ 所有流量
▼
┌──────────────────────────────────────────────┐
│ TUN 虛擬網卡 (198.18.0.1) │
│ tun2socks → SOCKS5 代理 │
└──────────────────┬───────────────────────────┘
│
▼
┌──────────────────────────────────────────────┐
│ Xray 代理核心(智能/全局路由) │
└──────────────────────────────────────────────┘
開啟 TUN 模式後,終端、IDE、AI 工具唔使任何額外配置,即可自動通過代理訪問網絡。
「接管全部網絡流量,終端/IDE/AI 工具唔使額外配置」
三、對 AI 開發工作流的具體便利性提升
1. Claude Code / Cursor 等 AI CLI 工具:零配置即用
以往使用 Claude Code 嗰陣,用戶需要:
export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890
claude
TUN 模式下:
claude
2. AI 模型 API 調用:開發測試無縫銜接
調用 OpenAI、Anthropic 等 API 開發應用嗰陣,唔再需要喺代碼中寫死代理配置或喺運行環境中注入代理變數。TUN 模式令 fetch、axios、httpx 等 HTTP 客戶端嘅請求喺操作系統層面被自動路由。
3. 套件管理器與依賴下載:告別超時
npm install、pip install、cargo build、go get 等命令喺 TUN 模式下全部自動通過代理,唔再出現因網絡不通導致嘅依賴安裝失敗同長時間等待。
4. Git 操作:推拉自如
git clone、git push、git pull 等 SSH/HTTPS 協議嘅 Git 操作亦被 TUN 完整覆蓋,唔使單獨為 Git 配置代理。
四、穩定性保障機制
TUN 模式深度介入系統網絡棧,如果處理不當會導致「斷網」。我們透過以下機制確保穩定性:
1. 防路由迴圈(Anti-Routing Loop)
代理伺服器 IP → 走原始閘道(繞過 TUN)
直連 IP 列表 → 走原始閘道(繞過 TUN)
0.0.0.0/1 → 走 TUN(代理所有其他流量)
128.0.0.0/1 → 走 TUN
代理伺服器自身嘅流量被排除喺 TUN 之外,避免「代理自己代理自己」嘅死迴圈。
2. Watchdog 進程守護
特權輔助進程(Helper)內置 Watchdog 機制,每 5 秒檢測 Electron 主進程是否存活。一旦主進程崩潰或被意外殺死,Watchdog 自動執行清理:
- 刪除 TUN 路由規則
- 恢復原始 DNS 配置
- 終止 tun2socks 進程
- 恢復系統網絡至正常狀態
即使應用崩潰,用戶嘅網絡都唔會中斷。
3. DNS 泄漏防護
TUN 模式強制將 DNS 查詢路由到 8.8.8.8 和 1.1.1.1,防止 DNS 請求走本地 ISP 導致嘅解析污染或泄漏問題,確保 AI 工具能正確解析 api.openai.com、api.anthropic.com 等域名。
4. 跨平台特權輔助服務
| 平台 | 實現方式 | IPC 通道 |
|---|
| macOS | 特權輔助進程(launchd) | Unix Socket (/var/run/sulian-helper.sock) |
| Windows | Windows 服務(SulianHelper) | Named Pipe (\\.\pipe\sulian-helper) |
| Linux | pkexec 提權 | 直接進程管理 |
各平台均透過獨立嘅特權服務執行網絡操作,主進程本身唔使提權,符合最小權限原則。
5. 優雅的錯誤恢復
當 TUN 啟動失敗(如 Helper 未安裝)嗰陣,系統會:
- 自動檢測錯誤類型(
"helper service"、"Access is denied" 等)
- 觸發 Helper 安裝引導彈窗
- 引導用戶一鍵安裝特權服務
- 安裝完成後自動重試連接
五、智能路由與全局路由
TUN 模式支援兩種路由策略:
- 全局代理:所有流量經代理出站,適合對 AI 服務穩定性要求極高嘅場景
- 智能分流:國內域名/IP 直連,海外流量走代理——既保證 AI 工具嘅可訪問性,又唔影響國內服務嘅訪問速度
六、技術實現細節
啟動流程
1. 從 Xray 配置中提取代理伺服器 IP
↓
2. 域名解析為 IP(防止路由迴圈)
↓
3. 檢測系統預設閘道同本地網卡
↓
4. 平台特權服務初始化
- macOS: 特權輔助進程 / osascript 降級
- Windows: Windows 服務
- Linux: tun2socks 直接進程管理
↓
5. 建立 TUN 虛擬網卡(198.18.0.1)
↓
6. 配置分流路由規則
- 代理伺服器 IP → 原閘道
- 直連 IP → 原閘道
- 0.0.0.0/1 + 128.0.0.0/1 → TUN
↓
7. 配置 DNS(8.8.8.8, 1.1.1.1)
↓
8. 啟動 Watchdog 進程守護
關鍵組件
| 組件 | 作用 |
|---|
| tun2socks | 將 TUN 網卡流量轉發到 SOCKS5 代理 |
| wintun.dll | Windows 平台 TUN 驅動(來自 WireGuard) |
| sulian-helper | 跨平台特權輔助服務(Go 編寫) |
| Xray | 代理核心,支援多協議同智能路由 |
七、總結
| 維度 | 系統代理模式 | TUN 模式 |
|---|
| 瀏覽器 | 自動 | 自動 |
| 終端 / CLI | 需手動配置 | 自動 |
| AI 工具(Claude Code 等) | 需手動配置 | 自動 |
| IDE AI 補全 | 唔確定 | 自動 |
| 套件管理器 | 需手動配置 | 自動 |
| Git SSH/HTTPS | 需手動配置 | 自動 |
| 崩潰後網絡恢復 | 不涉及 | Watchdog 自動恢復 |
| DNS 防泄漏 | 無 | 有 |
TUN 模式嘅改造,本質上係將「代理配置」呢個長期困擾開發者嘅負擔從應用層下沉到咗操作系統層。對於日益依賴 AI 工具嘅現代開發工作流嚟講,TUN 模式唔係錦上添花,而係真正嘅基礎設施級改進——令開發者專注於編碼同創造,而唔係反覆排查「點解連唔上」。