lcl101
V2EX  ›  macOS

终结 macOS 终端代理配置噩梦!全自动同步代理到 Shell、Git、NPM、Yarn 和 Docker

  •  1
     
  •   lcl101 · 1 day ago · 1852 views

    🔗 项目开源地址

    👉 GitHub - lcl-101/Proxy-Sync-Daemon


    😫 痛点:你是否也经常遇到这些情况?

    1. 终端网络割裂:在 macOS 上开启了 Clash 、Surge 或 Shadowrocket 后,浏览器冲浪十分顺畅,但在终端里 git clonenpm installdocker pull 依旧卡死超时。
    2. 繁琐的手动配置:每次开代理都要在终端手动输入一堆 export http_proxy=...;关了代理要是忘记取消配置,终端又会报 Connection Refused 无法联网。
    3. 三方工具代理污染:为了下载依赖配了 NPM 或 Git 代理,下完后忘记删,后续切换了网络或关了代理,导致其他工作直接卡死。
    4. Dock 栏图标乱飞:用了一些后台小工具,却在 Dock 栏和 Cmd + Tab 切换栏占位置,完全不够优雅。

    🚀 解决方案:Proxy-Sync-Daemon (psync)

    psync 是一个专为 macOS 开发者的极轻量级、全自动代理感知与同步守护进程。它结合了高能的 Go 核心 CLI 守护进程Swift 原生顶部状态栏托盘控制端,能够实时感知系统代理状态,并秒级同步到您的各类开发环境中!

    📸 托盘界面预览

    • 服务运行中:在右上角呈现高对比度闪电 Template 图标。
    • 服务停止:图标自动置灰,完美契合 macOS 原生设计风格。
    ⚡ 服务启动状态 (运行中) 💤 服务关闭状态 (已停止)

    🌟 核心亮点 (Key Features)

    • ⚡ 全自动感应,无缝切换:原生监听 macOS 系统的 scutil --proxy。每当你的代理软件启停或更换端口时,守护进程自动捕捉。更强的是,它能自动解析代理软件的 ExceptionsList (绕过列表),自动转换成终端能识别的 no_proxy 网段!
    • ⚙️ 细粒度勾选,各取所需:内置“同步选项配置”子菜单,您可以单独勾选允许同步的目标(例如:只自动同步 Shell 环境变量与 Git 全局代理,保持 Docker 或 NPM 处于直连直通,防止镜像源污染)。
    • **🧹 一键无痕还原 (Clean)**:无论是点击托盘菜单的“清理代理配置”还是在终端敲入 psync clean,瞬间将 Git, NPM, Yarn, Docker 及 Shell 全部恢复到 Direct (直连)状态。
    • 🍎 纯原生自包含 App:通过内置的 build_app.sh 脚本,可将 Go 二进制完全打包嵌入 Swift GUI 内部,生成自包含的 ProxySync.app。双击即用,无需全局安装任何运行依赖,纯后台运行无 Dock 栏图标占位。
    • 🛡️ 权限体检提示:首次启动会自动检测读写所有权。如因网络权限或配置文件只读导致失败,会弹出原生 NSAlert 并提示一键修复命令,新手也能秒上手。

    🛠️ 三方生态的修改逻辑(优雅且不损坏配置)

    • Shell: 通过在 ~/.zshrc~/.bashrc 尾部追加一句 eval "$(psync init)" 挂载钩子,每次新建 Shell 会话或键入命令时极速拉取最新代理环境变量,开销小于 0.1ms
    • Git: 动态写入或清除系统全局配置项 git config --global http.proxy / https.proxy
    • NPM / Yarn: 自动读取 ~/.npmrc~/.yarnrc,仅在尾部追加或剔除代理项,绝不损坏您的注册表、私有凭证等其它配置项。
    • Docker: 解析 ~/.docker/config.json,仅注入或清空 proxies.default 块,对现有 credential helpers 等无任何副作用。

    📦 如何快速获取和上手?

    1. 获取安装包

    您可以直接前往 GitHub Releases 下载编译打包好的 ProxySync.zip,解压即得 ProxySync.app

    (当然,您也可以克隆项目源码并直接在本地运行 ./build_app.sh 脚本自行构建。)

    2. 命令行集成

    将生成的 ProxySync.app 拖入 /Applications 文件夹下,然后在您的 ~/.zshrc 尾部添加别名和初始化钩子即可:

    # 1. 别名挂载
    alias psync="/Applications/ProxySync.app/Contents/MacOS/psync"
    
    # 2. 注册终端自动同步
    eval "$(psync init)"
    

    💬 结语

    这个小工具完全开源,无任何网络上传行为,完全在本地安全运行。如果你也曾被 macOS 终端的网络割裂和频繁复制 export proxy 搞得心态爆炸,欢迎试用并给项目点个 🌟 Star

    欢迎大家在帖子里提 Bug 、提 PR 或给出任何改进意见,我们一起把它打磨得更完美!

    👉 项目 GitHub 链接: https://github.com/lcl-101/Proxy-Sync-Daemon

    24 replies    2026-06-18 15:21:17 +08:00
    MacsedProtoss
        1
    MacsedProtoss  
       1 day ago via iPhone   ❤️ 1
    你在搞笑吧 tun 都不会配?我就没见过谁 surge 需要手动配 proxy 的
    lcl101
        2
    lcl101  
    OP
       1 day ago
    @MacsedProtoss 不是所有有人都和你一样的网络环境
    MacsedProtoss
        3
    MacsedProtoss  
       1 day ago via iPhone
    @lcl101 这是网络环境的问题吗?用 system proxy 那你买啥 surge 根本就脱裤子放屁
    zooo
        4
    zooo  
       1 day ago
    蹲个后续
    Arispex
        5
    Arispex  
       1 day ago   ❤️ 1
    @MacsedProtoss 真是,现在 macOS 的主流代理软件都是一键启用 tun 模式的
    Arispex
        6
    Arispex  
       1 day ago
    @MacsedProtoss 看到这个帖子第一眼以为 op 不知道有 tun 模式这个东西
    intoext
        7
    intoext  
       1 day ago
    很神奇 我还就喜欢这种割裂的,更有辨识度。

    我日常开两个代理软件,一个 v2rayN,一个 Karing,分别用于两个不同的浏览器。
    甚至我会时不时去看 ip.me 是哪国的 IP / 这有助于刷 ticktok / x 的本地推送。

    safari 不支持独立代理刚刚好,就用它来打开一些纯国内或者一些实名认证(很多,比如图书馆网络、星巴克 wifi 等)。
    其余的应用,需要开国外,直接在 v2rayN 或者 Karing 一键搞成系统代理一般也就可以了。
    如果还不行那就开 tun 。
    到现在还没有遇到什么卡壳的应用这几个都不行的
    darksword21
        8
    darksword21  
    PRO
       1 day ago
    1. 现在都用 tun
    2. 就算是 AI 写的,能不能把 emoji 去掉,太明显了
    churchmice
        9
    churchmice  
       1 day ago via Android
    优雅个啥,一个 tun 就能解决的问题
    Dream4U
        10
    Dream4U  
       1 day ago
    终端网络割裂:在 macOS 上开启了 Clash 、Surge 或 Shadowrocket 后,浏览器冲浪十分顺畅,但在终端里 git clone 、npm install 、docker pull 依旧卡死超时。

    看到这里就有点纳闷了,是咋用的?
    FringJX
        11
    FringJX  
       1 day ago
    这个网站的用户都是路由器翻墙了,基本不需要这些了
    stimw
        12
    stimw  
       1 day ago
    有个场景可能有用,就是有公司 vpn 开不了 tun 的
    cutiechi
        13
    cutiechi  
       1 day ago
    @stimw 可以把 vpn 用 kasm 装在 docker 里
    380cc
        14
    380cc  
       1 day ago
    唉 完全看不懂写的什么。我接下来有个比较常见的场景,很多资源都需要连公司 vpn 软件才能访问,当开启公司 vpn 时,clash verge 这种分流软件就不能用了,你这个能解决我这个需求吗?
    lcl101
        15
    lcl101  
    OP
       1 day ago
    🎉 Proxy-Sync-Daemon (psync) v1.1.0 版本发布!
    本次更新带来了针对 Antigravity IDE 的全自动、物理隔离代理同步支持,完美解决了开发过程中 IDE 的 AI 助手与第三方插件无法加载网络登录和进行连接的核心痛点。

    🌟 新增特性与优化:
    ⚡ 物理隔离代理注入:
    单应用级隔离同步:开启后,仅将代理配置绑定到 IDE 的运行生命周期中,在本地实现了针对单一 IDE 应用的流量强制代理接管效果。
    真正零污染:只对 IDE 本身生效,Chrome 浏览器、微信等其他所有应用依然保持最纯粹的系统直连。
    📁 多包名/路径自动兼容:
    自动检测并同时兼容您本地安装的 Antigravity.app 与 Antigravity IDE.app ,无论双击打开哪个图标,都可瞬间享受到完美的代理接管。
    🧹 原生一键清理 (Clean):
    当关闭代理或运行 psync clean 时,代理设置会被干净地从 IDE 应用中完全卸载,无痕还原直连,不留任何配置残留。
    wuruxu
        16
    wuruxu  
       1 day ago
    没出现过代理 浏览器能用终端不能用的情况
    Uplay
        17
    Uplay  
       1 day ago
    @380cc 这个我现在是用 Antify 实现的但是有时候会出现问题
    fortitudeZDY
        18
    fortitudeZDY  
       22h 19m ago via iPhone   ❤️ 1
    不爱回复的我也看笑了……
    CakeJu
        19
    CakeJu  
       10h 19m ago
    @380cc #14 同有这种需求
    CakeJu
        20
    CakeJu  
       10h 16m ago
    可能只有楼主自己有这个需求,建议 vibe 个别的
    A2umiA
        21
    A2umiA  
       8h 22m ago
    和 tun 比,优势在哪
    zthxxx
        22
    zthxxx  
       4h 17m ago
    @stimw #11 VPN 的底层也是 tun + 路由表 + DNS ,本质上可以多个共存也能 dialer-proxy 看你需要~
    zthxxx
        23
    zthxxx  
       4h 12m ago
    @380cc #14 给你的 ClaudeCode / Code 说:

    分析下我的系统中 clash verge 的配置 与 ____ VPN 的 tun + 路由表 + DNS ,帮我改为 clash verge 路由表 + DNS 分流优先,对于 内网域名/IPDR 分流再分流回 ____ VPN tun 设备,对于连上内网 WiFi 后触发让 内网域名/IPDR 分流回到 DIRECT 直连
    urfree
        24
    urfree  
       4h 7m ago
    网络时代,不要闷头做开发
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   2579 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 156ms · UTC 11:28 · PVG 19:28 · LAX 04:28 · JFK 07:28
    ♥ Do have faith in what you're doing.