从 GreatAgent 到 Mihomo:wwqgtxx 的工具整合与核心维护
从免配置整合包到 TUN 适配、协议接入与规则修复,在具体工程问题中持续维护开源工具
第一幕 · 把工具交到用户手中
在 GAE 与 GoAgent 流行的年代,代理工具的部署、浏览器配置和版本更新往往需要用户逐项处理。GreatAgent 官方更新历史记录了 wwqgtxx 对这些使用环节的整合。
历史页将 2012 年 10 月 1 日记为项目启动日,列出 wwqgtxx-goagent 与 wwqgtxx-wallproxy 的初版及 30 个公共服务端。2013 年 2 月的记录转向自动更新;同年 6 月 23 日,维护者写下迁移说明:
“由于原项目被封,我们决定迁移到greatagent这个地址,并更改软件名称,使大家可以在贴吧公开讨论这个软件包。”
这里保留的是项目自己的历史记录。此后的日志继续记载浏览器更新、自动更新程序维护和 PAC 白名单改造;它们说明了整合与维护工作的延续,但不能替代已经缺失的早期 Git 证据。[8][9]
第二幕 · 在 Alpha 分支找到工程足迹
从旧工具的更新日志转向 Mihomo,需要先选对分支。仓库默认 main 分支当前保留的是另一套 Python 项目内容;Go 代理核心的实现和 wwqgtxx 的相关提交,应沿 Alpha 分支核验。
2022 年 10 月 6 日 19:23:38(UTC+8),wwqgtxx 提交了对旧 TUN 适配层的替换。提交说明只有一句:
“chore: use sing-tun to replace old tun_adapter”
具体改动在 go.mod 中接入 sing-tun,新增 listener/sing_tun 的配置和监听适配,并删除旧 listener/tun 实现。这里可确认的是对上游网络组件的接入与重构,不能据此把 sing-tun 或其依赖网络栈的全部实现归为个人原创。[13][1]
第三幕 · 把新协议接入既有核心
TUN 负责接收系统流量,出站适配则决定核心如何与远端协议对接。新增协议不只是增加一个配置名称,还要把拨号、数据包连接和生命周期管理接入已有接口。
2023 年 9 月 21 日 10:28:28(UTC+8),wwqgtxx 提交“feat: support Hysteria2”,新增 Hysteria 2 出站适配,并复用 metacubex/sing-quic/hysteria2 组件。
这份 diff 能证明他参与了 Hysteria 2 在核心中的接入。它不证明协议由他发明,也不证明 Mihomo 是同行中最早支持该协议的项目;稳定版本何时包含这些改动,仍需另外对照发布标签。[2]
第四幕 · 兼容性争议中的不同选择
2026 年 7 月,用户在 Mihomo #2967 与 Xray-core #6477 报告:升级 Xray 服务端后,既有 Mihomo REALITY 客户端出现认证失败。2026 年 7 月 12 日 12:57:54(UTC+8),wwqgtxx 在 #2967 回复:
“我们对xray的决定不做评论,但是也不会对我们的当前实现做出任何修改”
8 月 8 日,另一位贡献者 LOVECHEN 在 PR #3094 提议增加 reality-opts.client-ver。核验时该 PR 已关闭且未合并,因此这项提议不能写成 wwqgtxx 或 Mihomo 已交付的兼容性修复。
Xray 维护者 RPRX 后来在 #6477 的 9 月 11 日回复中,将其服务端检查解释为对 Client Hello 指纹中 X25519MLKEM768 缺失问题的处理。用户对升级兼容性的诉求、wwqgtxx 当时的处理立场和上游的安全理由应分别呈现;不同日期的解释也不能拼成一条已经解决问题的因果链。[15][4][16][5][6]
第五幕 · 回到一条域名规则
长期维护的另一面,是那些不以新协议命名的修补。2026 年 9 月 10 日 08:16:49(UTC+8),wwqgtxx 提交“fix: DomainSet wildcard matching with overlapping rules”。
改动处理通配符与更具体域名规则重叠时的匹配问题:例如同时存在 *.example.com 与 dead.a.example.com 时,a.example.com 仍应匹配通配符。代码调整了匹配回退路径,并为这些组合增加测试。
从 TUN 适配到出站协议,再到域名集合中的边界情况,能够逐项核验的提交构成了他的核心贡献。它们足以说明持续的工程参与,无需再附加未经实测的吞吐、功耗或“极低毫秒级”承诺。[3]