从零开发简易科学上网内核的工程挑战(AI 辅助编程视角)

三局,这玩意儿真从零搞,难点根本不在“写个转发器”,而在“把一堆脏活累活都扛住”。

大概有这几坨:

  1. 协议设计
    握手怎么做
    认证怎么做
    多路复用要不要做
    UDP、TCP、DNS 怎么统一处理
    一开始图省事,后面基本都会因为扩展性重写

  2. 跨平台网络栈
    Windows / Linux / macOS / Android / iOS 行为全不一样
    TUN/TAP、系统代理、路由、DNS 接管方式都不同
    真正恶心的是平台兼容,不是 socket 那几行代码

  3. 性能
    连接一多就会暴露问题
    buffer、copy、锁竞争、协程调度、内存碎片、syscall 开销
    单连接能跑不代表实际能打

  4. 稳定性
    断线重连
    切换网络
    睡眠唤醒
    NAT / IPv6 / MTU / 分片
    异常现场一多,日志能把人看出 PTSD

  5. 加密与安全
    密钥交换
    重放保护
    前向安全
    会话恢复
    配置下发安全
    这里最怕“自己发明密码学”,那属于给自己上强度

  6. 流量与封装策略
    数据包怎么切
    header 怎么藏
    特征怎么避免太固定
    这些东西不是“能通信”就完了,而是“长期不炸”

  7. DNS 处理
    本地解析还是远端解析
    DoH / DoT / 纯 UDP
    污染、缓存、一致性、泄漏
    很多“明明连上了但就是怪”的锅都在 DNS

  8. 路由与分流
    全局、规则、按域名、按 IP、按进程
    GeoIP / GeoSite / 自定义规则
    规则系统越写越像半个解释器

  9. 可观测性
    日志
    tracing
    连接状态
    统计面板
    没这些你调试全靠玄学和心诚则灵

  10. 配置系统
    热更新
    配置兼容
    版本迁移
    schema 校验
    用户最爱把配置写成屎,然后骂核心不稳定

  11. 客户端生态
    GUI
    订阅
    配置导入导出
    系统集成
    真做产品时,核心代码量未必是最大头,外围才是

  12. AI 辅助编程本身的坑
    AI 很会写“看起来对”的网络代码
    但在并发、边界条件、协议状态机上特别容易埋雷
    能帮你搭架子、补样板、写测试
    不能替你验证协议正确性
    最后通常变成:AI 5 分钟出代码,你 5 小时抓包找锅

如果只做简易内核,工程上最现实的难点其实是:
先定义好最小目标
不要一上来就跨平台
不要一上来就自创协议
不要一上来就做规则引擎
不要一上来就搞“万能高性能架构”

不然很容易变成:

第一周:我要做下一代内核
第二周:先把 TCP 转发跑通
第三周:DNS 怎么又炸了
第四周:我还是去魔改现有项目吧

一句话锐评:
从零写“能跑”的不算太难,难的是写出“长期可维护、跨平台、稳定、可扩展、性能不烂”的。

如果你是想评估“AI 辅助下,从零到能用的 MVP 难度”,我可以继续按这个口径,给你拆成:
2 周原型
1 个月能自用
3 个月不至于坐牢维护
这种版本。