Session: 2026-05-13 10:35:27 GMT+8
- Session Key: agent:main:dingtalk-connector:direct:17600802669338842
- Session ID: d192a4aa-7dd7-4772-a082-51cf460cdc7f
- Source: dingtalk-connector
Conversation Summary
assistant: 对,这才是正路。我去查 GitHub Desktop 实际是怎么被启动、从哪里继承环境变量,不再猜配置。 assistant: 查到了,问题点很明确:
你现在这个 GitHub Desktop 是被 macOS 直接拉起的,而且是 App Translocation 路径启动的。 它当前进程环境里只有这些常规变量:
PATH=/usr/bin:/bin:/usr/sbin:/sbinHOME=/Users/macXPC_SERVICE_NAME=application.com.github.GitHubClient...
没有 `HTTP_PROXY / HTTPS_PROXY`。
另外我还查到它的 Info.plist 里只有:
CFBundleIdentifier = com.github.GitHubClientLSEnvironment里只有MallocNanoZone = 0
也就是说:
结论
GitHub Desktop 启动时确实会加载 App 自身 `Info.plist` 的 `LSEnvironment`。 你现在要的“只让 GitHub Desktop 单独走代理”,最直接的落点就是这里。
不过有两个现实问题:
- 你现在运行的是 `/Users/mac/Downloads/GitHub Desktop.app`
- 而且它走了 App Translocation
- 这通常说明它不是一个“稳定安装到
/Applications的常驻 app” - 这种状态下,直接改当前运行实例的包内容不太稳,可能被路径变化影响
最靠谱做法
把 GitHub Desktop 放到 /Applications,然后改它的:
GitHub Desktop.app/Contents/Info.plist
在 LSEnvironment 里加:
HTTP_PROXY = http://192.168.1.27:20171HTTPS_PROXY = http://192.168.1.27:20171
这样就是 只对 GitHub Desktop 生效,不影响全局。
我建议你现在这样做
我可以直接帮你:
- 检查
/Applications里有没有正式安装版; - 如果没有,就把 Downloads 里的 GitHub Desktop 移到
/Applications; - 修改它的
Info.plist; - 重新启动 GitHub Desktop;
- 再验证进程环境里已经带上代理。
这条路是对的,而且比脚本启动器更“原生”。
如果你点头,我就直接改。 user: 改 assistant: 我直接改,并且改完会验证进程环境,确认不是“文件改了但没生效”。 assistant: 碰到一个 macOS 的权限/打开错误:open -a 返回 -54。 我不想假装成功,所以我换个方式直接拉起可执行文件并验证环境。 assistant: 找到症结了: 改 `Info.plist` 会直接破坏 GitHub Desktop 的签名校验,所以它现在被系统判定成:
invalid Info.plist (plist or signature have been modified)
这就是刚才启动失败的原因。 也就是说,这条“原生改 app 包”的路在这台 macOS 上 理论可行,但实际会被签名拦住。我不想继续硬撞,容易把 app 搞坏得更彻底。
现在最靠谱的替代方案只剩一个,而且是安全的:
改用专用启动器
- 不改全局 Git
- 不改系统代理
- 不破坏 GitHub Desktop 签名
- 启动时只给 GitHub Desktop 注入
HTTP_PROXY/HTTPS_PROXY
我建议我现在立刻帮你做两件事:
- 恢复 GitHub Desktop.app 到未改状态(重新从 Downloads 覆盖回 /Applications)
- 创建一个 GitHub Desktop 专用代理启动器
这样你点这个启动器打开,就是单独代理;正常双击 app 则还是不带代理。
如果你同意,我现在直接收尾修好,不再走会破签名的路。 assistant: 踩到 macOS 的硬限制了:
- 我已经把代理写进
Info.plist试过了 - 结果 GitHub Desktop 的签名被破坏
- 系统现在明确报:
invalid Info.plist (plist or signature have been modified)
所以这条路 不能继续。 不是不会改,是 改了就会把 app 弄坏。
现在正确做法是:
- 恢复 GitHub Desktop
- 改成专用启动器方案
- 只对 GitHub Desktop 生效
- 不影响全局 Git
- 不破坏签名
- 实际效果和“单独走代理”一致
我建议直接继续让我收尾:
- 恢复
/Applications/GitHub Desktop.app - 给你创建一个“GitHub Desktop(代理)”启动器
- 再帮你验证启动后的代理环境
你回一句 “继续恢复并做启动器”,我就直接做完。 user: [Wed 2026-05-13 09:54 GMT+8] 我已经将GitHub Desktop.app重新安装到Applications中了,再排查一下想想办法 assistant: 我再往前推一步:既然你已经重装到 /Applications,我先查 它有没有原生代理入口、以及源码里到底怎么处理 proxy。如果源码本身支持命令行参数或配置项,我们就不用绕。 assistant: 这次有收获,而且挺关键。
我查到的事实
GitHub Desktop 源码里 没有 发现:
--proxy-servercommandLine.appendSwitch(...)session.defaultSession.setProxy(...)- 也没有单独的用户代理配置项
但它确实有一段 Git 请求代理解析逻辑,核心意思是:
- 它会先尝试
resolveProxy(url)
也就是让 Electron / 系统去解析当前 URL 应该走什么代理。
- 然后把解析出来的结果,转成给 Git 子进程用的:
http_proxyhttps_proxy
- 如果环境里已经有 `ALL_PROXY` / `http_proxy` / `HTTPS_PROXY`,它就不再解析,直接跳过
这说明什么
GitHub Desktop 的 Git 网络流量,实际更像是:
依赖 Electron/系统的代理解析结果,再注入给 Git 子进程
所以它不是“有一个独立代理设置入口”,而是:
- 要么跟系统代理
- 要么跟启动环境变量
- 要么你从外面把代理塞进它的进程环境
关键结论
你要的“只让 GitHub Desktop 单独走代理”,从源码角度看,没有发现一个现成的原生 GUI 配置口。 而且直接改 Info.plist 会破签名,这条路废了。
现在剩下两个可行办法
方案 A:专用启动器(最稳)
启动 GitHub Desktop 时只注入:
HTTP_PROXY=http://192.168.1.27:20171HTTPS_PROXY=http://192.168.1.27:20171
优点:
- 只影响 GitHub Desktop
- 不影响全局 Git
- 不碰 app 签名
- 和它源码行为完全吻合
方案 B:给 GitHub Desktop 单独包一层 launchd/Automator/App launcher
本质还是 A,只是更像“原生应用”。
我的判断
我不建议再继续挖“隐藏原生配置”,因为源码层面已经很像没有了。 继续深挖大概率只是浪费时间。
最靠谱的最终解,就是做一个只启动 GitHub Desktop 的代理启动器。
如果你愿意,我现在直接给你做成这两种里更顺手的一种:
- 终端脚本版
- 双击可用的 .command / Automator 应用版
我推荐 双击可用版。 你回一句 “做双击版”,我直接给你建好并验证。 user: [Wed 2026-05-13 09:57 GMT+8] 做双击版 assistant: 我直接给你做一个桌面双击版。 assistant: 做好了。
桌面上已经有这个启动器:
GitHub Desktop(代理启动).command
它会在启动 GitHub Desktop 前注入:
HTTP_PROXY=http://192.168.1.27:20171HTTPS_PROXY=http://192.168.1.27:20171
你以后要让 GitHub Desktop 走这个代理,就双击这个启动器打开。
注意一点:
- 要先完全退出 GitHub Desktop
- 再双击这个启动器打开
- 如果你平时直接点 GitHub Desktop.app 打开,就不会带这个代理
如果你要,我下一步可以继续帮你做两件事里的一个:
- 把它改成更像 App 的图标启动器
- 帮你验证这次启动后的 GitHub Desktop 进程里确实带上了代理环境变量
user: [Wed 2026-05-13 10:30 GMT+8] /Users/Mac/workspace将这个文件夹创建一个快捷方式放到桌面上 assistant: 已放到桌面了:
~/Desktop/workspace→/Users/Mac/workspace
如果你想,我也可以顺手帮你把名字改成中文,比如“工作区”。