惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
人人都是产品经理
人人都是产品经理
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
T
The Exploit Database - CXSecurity.com
N
News and Events Feed by Topic
Latest news
Latest news
cs.CL updates on arXiv.org
cs.CL updates on arXiv.org
C
CXSECURITY Database RSS Feed - CXSecurity.com
IT之家
IT之家
V
V2EX
WordPress大学
WordPress大学
Apple Machine Learning Research
Apple Machine Learning Research
Cisco Talos Blog
Cisco Talos Blog
K
Kaspersky official blog
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
S
SegmentFault 最新的问题
小众软件
小众软件
A
Arctic Wolf
酷 壳 – CoolShell
酷 壳 – CoolShell
腾讯CDC
宝玉的分享
宝玉的分享
Last Week in AI
Last Week in AI
G
GRAHAM CLULEY
罗磊的独立博客
T
Tor Project blog
C
Cisco Blogs
美团技术团队
博客园 - Franky
月光博客
月光博客
博客园 - 三生石上(FineUI控件)
T
Threat Research - Cisco Blogs
Cyberwarzone
Cyberwarzone
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
有赞技术团队
有赞技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Security Latest
Security Latest
博客园 - 司徒正美
Hugging Face - Blog
Hugging Face - Blog
Spread Privacy
Spread Privacy
J
Java Code Geeks
C
CERT Recently Published Vulnerability Notes
大猫的无限游戏
大猫的无限游戏
S
Securelist
The Cloudflare Blog
博客园 - 叶小钗
D
Darknet – Hacking Tools, Hacker News & Cyber Security
阮一峰的网络日志
阮一峰的网络日志
雷峰网
雷峰网
Project Zero
Project Zero

秋实-Allenyou 的小窝

【笔记】人工智能与模式识别 复习笔记 - 秋实-Allenyou 的小窝 【教程】使用 Keyd 将 Copilot 键映射为可用的组合键并修复触摸板防误触失效问题 机械革命无界 15X 的 Arch Linux 开荒指南 我在用什么?(2026 版) - 秋实-Allenyou 的小窝 关于 Next.js SSG 生成 RSS Feed 文件的另一思路 从零开始的 NixOS 体验 - 秋实-Allenyou 的小窝 2025:迷茫中转向 - 秋实-Allenyou 的小窝 我在用什么?(2025 版) - 秋实-Allenyou 的小窝 【杂谈】关于 AIGC 的一些思考 - 秋实-Allenyou 的小窝 【记录】一种在主机通过 Docker 容器名解析容器 IP 的方法 【记录】如何在 Next.js 中优雅的调用 Matomo 统计 从信号与系统角度看 OI/XCPC 中的傅里叶变换运用 - 秋实-Allenyou 的小窝 【杂谈】答《博客作者呀,我想采访你这 9 个问题!》 - 秋实-Allenyou 的小窝 FurryCTF 2024 寒假赛 调试窗口 题解 2024:“我”的大学生活 - 秋实-Allenyou 的小窝 【游记】CCPC 2024 重庆站尾杀记 - 秋实-Allenyou 的小窝 【游记】ICPC 2024 亚洲区域赛南京站打铁记 - 秋实-Allenyou 的小窝 【杂谈】这次 Furrygooo 结束后我的一些体验 - 秋实-Allenyou 的小窝 【教程】使用阿里云 OSS + CDN 加速 Gravatar 【记录】 一次罗技鼠标驱动冲突问题的排查经历 - 秋实-Allenyou 的小窝 【记录】我是如何用 Next.js 重构我的博客的 - 秋实-Allenyou 的小窝 【教程】如何用 Git 快速搭建简单的 CI - 秋实-Allenyou 的小窝 我的DN42 Peering信息 - 秋实-Allenyou 的小窝 【进度】博客重构计划 - 秋实-Allenyou 的小窝 这是一个正经的2023总结 - 秋实-Allenyou 的小窝 【题解】Luogu P9769 [HUSTFC 2023] 简单的加法乘法计算题 2023新年谜题总结 - 秋实-Allenyou 的小窝 【教程】浅谈Linux服务器的一些基础安全技巧 - 秋实-Allenyou 的小窝 Goodbye, 2022~ - 秋实-Allenyou 的小窝 【教程】使用 Docker 开服,优雅地隔离不同版本JDK - 秋实-Allenyou 的小窝 【旧文补档】2020年终总结 & 2021新年计划 - 秋实-Allenyou 的小窝 【旧文补档】写个脚本监控你的VPS SolusVM面板适用 - 秋实-Allenyou 的小窝 【旧文补档】建立自己的私人网盘!在CentOS VPS上安装NextCloud - 秋实-Allenyou 的小窝 【旧文补档】2019,再见!2020,你好! - 秋实-Allenyou 的小窝 【旧文补档】新一代USB来袭,一起捋一捋USB的“前世今生” - 秋实-Allenyou 的小窝 【旧文补档】矩阵学习笔记 - 秋实-Allenyou 的小窝
使用 Golang 重写 gh-proxy - 秋实-Allenyou 的小窝
2025-02-14 · via 秋实-Allenyou 的小窝

使用 Golang 重写 gh-proxy

2025/2/14

本文最后修改于 480 天前,请注意文章内容的时效性。

一直以来,我都高度依赖自部署的 hunshcn/gh-proxy 项目加速 GitHub 上的文件下载。然而,这个项目在我的 Docker 服务器上运行起来非常不优雅——基于 Python 开发导致最终 Docker 镜像大小达到了惊人的 940MB,最终我在 DeepSeek 的帮助下使用 Golang 重写了这个项目,将 Docker 镜像的体积缩小到了原有的 1%。

项目地址

项目目前以与原项目相同的 MIT License 开源,项目地址为 Allenyou1126/gh-proxy-go

目前项目暂未提供编译好的二进制文件,需要自行 Clone 后构建。

Docker 镜像可以自行 Clone 后进行构建,也可以通过 ghcr.io/allenyou1126/gh-proxy-go:[最新版本号] 获取,具体请参见 Github Package 的版本号。

一部分原项目通过代码中变量控制的配置项在重构时改为了使用环境变量 / .env 文件控制,详情请参见 README 文件。

部署后使用方法与原项目相同。

重构过程

首先,我向 DeepSeek-R1 模型提问(打开联网搜索与深度思考):

请你用Golang的GIN框架重构以下一段基于Python Flask的代码,仅用一个文件完成
[原项目的app.py文件]

要求在一个文件内完成的目的是防止 DeepSeek-R1 模型过度设计,导致最终输出超过长度限制被截断。

很快,DeepSeek 给出了它的思考与代码。生成的代码质量非常高,扔进 Goland 里面将几个未处理 err 的问题修复之后就能正常运行了。

不过,为了让这个项目启动更快,我手动将原本在启动时动态下载的前端资源下载到了项目中,并通过 Golang 的 go:embed 功能嵌入生成二进制文件中。

//go:embed static/*
var fs embed.FS

// init()
slog.Debug("Loading index.html")
if indexHTML, err = fs.ReadFile("static/index.html"); err != nil {
  slog.Error("Error loading static files.")
  os.Exit(1)
}
slog.Debug("index.html loaded.")

slog.Debug("Loading favicon.ico")
if iconData, err = fs.ReadFile("static/favicon.ico"); err != nil {
  slog.Error("Error loading static files.")
  os.Exit(1)
}
slog.Debug("favicon.ico loaded.")

此外,再加上一些日志语句以及环境变量开关,这个项目就算完成了。

感想

DeepSeek 真好用啊……不过 cznorth 跟我聊这件事的时候跟我说 Claude 3.5 Sonnet 模型在代码能力上会有更好表现,下次可以试一试。

快进到我直接被 AI 取代失业