- 技术博客
- 文档
- 知识库
【免费下载链接】HelloGitHub
:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.
导读:本文以 HelloGitHub 月刊第 105 期(英文版,见 content/en/HelloGitHub105.md)为蓝本,逐项梳理本期收录的 40 个入门级开源项目,覆盖 C、C#、C++、CSS、Go、Java、JavaScript、Kotlin、Python、Rust、Swift、AI 与 Other 共 13 个分类,完整保留其中的代码示例与命令行操作。读完本文,你将快速掌握这些项目的核心定位与上手方式,并了解 HelloGitHub 月刊背后的内容采集与生成机制,知道如何借助 README_en.md 的索引继续浏览前后各期。
本期概览:13 个分类、40 个项目
HelloGitHub 以月刊形式分享 GitHub 上有趣、入门级的开源项目,每期内容按编程语言/技术领域分类编排,并在每月28 号更新。第 105 期共收录 40 个项目,分类与项目对应关系如下:
| 分类 | 项目 |
|---|---|
| C | fluent-bit、write-a-hash-table |
| C# | ArchiSteamFarm、qttabbar |
| C++ | love、WLED |
| CSS | latex-css |
| Go | gofakeit、hertz、lima、primitive、zap |
| Java | async-profiler、javaparser、kestra |
| JavaScript | Dexie.js、gitstars、jitsi-meet、mermaid、semantic-release |
| Kotlin | ChinesePinyin-CodeCompletionHelper |
| Python | grip、ha_xiaomi_home、pex、runlike、viztracer |
| Rust | himalaya、zoxide |
| Swift | ConfettiSwiftUI、MarkEdit |
| AI | garak、letta、MagicMirror、vllm、zerox |
| Other | awesome-low-level-design、bocker、docker-xiaoya、domain-driven-hexagon、Racer |
下面按分类逐项解读。
C 篇
fluent-bit:高效轻量的日志采集与处理工具
fluent-bit 是一个轻量且高效的日志采集、处理与转发工具,可从多种数据源实时采集日志数据,特点是低内存、低 CPU 占用,适合在资源受限的嵌入式或边缘环境中承担日志管道任务。它可以作为采集端接入各类日志系统,是构建可观测性基础设施的入门级选择。
write-a-hash-table:用 C 语言从零实现哈希表
该项目用 C 语言演示如何实现一个基于**开放寻址(open addressing)与双重散列(double hashing)**的哈希表,代码量约 200 行,预计学习时间为 1~2 小时。对想理解哈希表内部原理、数据结构与内存布局的初学者来说,是一份难得的“纸上得来终觉浅”的动手教程。
C# 篇
ArchiSteamFarm:开源的 Steam 卡片自动收集工具
这是用 C# 开发的多账号管理工具,能够在不安装、不运行 Steam 客户端的情况下自动收集 Steam 交易卡片。它支持 VAC 免疫(VAC immunity)与交易等功能,并兼容 Windows、Linux 与 macOS 平台。
qttabbar:为 Windows 资源管理器添加标签页
一个用 C# 编写的小工具,能让 Windows 资源管理器具备标签页能力,以多标签形式同时打开和管理多个文件夹,提升文件管理效率,适合作为 Windows 桌面效率工具入手。
C++ 篇
love:完全免费可商用的 2D 游戏引擎
love(LOVE2D)是一个免费、开源且可商用的 2D 游戏开发框架,使用 Lua 语言编写游戏逻辑,支持跨平台开发 2D 游戏,兼容 Windows、macOS、Linux、Android 与 iOS。对想体验“用脚本快速做小游戏”的开发者非常友好。
WLED:无线控制 LED 灯带
WLED 是运行在ESP32 与 ESP8266上的 Web 服务器,可通过 WiFi 控制 LED 灯带的颜色与特效,支持100 种特效、50 种调色板、250 个用户自定义预设等功能,是软硬件结合、物联网入门的典型项目。
CSS 篇
latex-css:让网页呈现 LaTeX 文档风格的 CSS 库
latex-css 是一套 CSS 样式库,可以让你的网站看起来像 LaTeX 排版文档,支持**定理(theorem)、定义(definition)、引理(lemma)、证明(proof)**等标签,并提供作者(author)、副标题(subtitle)、摘要(abstract)等可选 class 名。非常适合学术类静态站点快速获得学术排版观感。
Go 篇
gofakeit:快速生成假数据的 Go 库
gofakeit 是一个 Go 语言假数据生成库,支持随机生成姓名、地址、电话号码、日期等多种类型的数据。注意:它默认不支持生成中文假数据,但可以通过自定义扩展或调整生成逻辑来实现。官方示例展示了一组常用的生成函数:
gofakeit.Name() // Markus Moen gofakeit.Email() // alaynawuckert@kozey.biz gofakeit.Phone() // (570)245-7485 gofakeit.BS() // front-end gofakeit.BeerName() // Duvel gofakeit.Color() // MediumOrchid gofakeit.Company() // Moen, Pagac and Wuckert gofakeit.CreditCardNumber() // 4287271570245748 gofakeit.HackerPhrase() // Connecting the array won't do anything, we need to generate the haptic COM driver! gofakeit.JobTitle() // Director gofakeit.CurrencyShort() // USD无论是单元测试造数、接口 Mock 还是数据库填充,这些开箱即用的生成器都能直接调用。
hertz:字节跳动开源的 Go 微服务 HTTP 框架
hertz 是 CloudWeGo 团队为 Go 语言开发的高性能、易扩展 Web 框架,适合构建 RESTful API、微服务以及需要高吞吐的 Web 应用。据项目说明,该框架在字节跳动内部已被广泛应用并验证了稳定性与可靠性。
lima:在 macOS 上轻松运行 Linux 虚拟机
lima 是在 macOS 上创建和管理 Linux 虚拟机的工具,基于QEMU 与 macOS 原生虚拟化技术,开箱即用地提供轻量 Linux 虚拟机环境,支持运行各类 Linux 应用与工具,以及 Docker、Podman、K8s 等容器生态。第 105 期给出的完整操作流程如下:
# 安装 brew install lima # 启动 limactl start # 运行 Linux 命令 lima sudo apt-get install -y neofetch lima neofetch # 运行容器 lima nerdctl run --rm hello-world kubectl apply -f ...安装后先limactl start启动默认虚拟机,之后通过lima前缀直接在 macOS 终端里执行 Linux 命令,甚至可以在其中运行nerdctl(容器运行时)与kubectl,是 Mac 开发者体验 Linux 环境的低门槛方案。
primitive:用几何图形生成图像
primitive 是一个 Go 语言开发的命令行工具,通过图像处理算法把任意图片转换为仅由单一几何图形构成的艺术化图片,适合用来生成低多边形(low-poly)风格的创意图像。
zap:快速的结构化 Go 日志库
zap 是 Uber 开源的高性能日志库,专为需要快速、结构化日志的场景设计。相比其他 Go 日志库,zap 在性能上表现更优,尤其适合高并发下需要频繁记录日志的场景。第 105 期给出的核心用法如下:
logger, _ := zap.NewProduction() defer logger.Sync() // flushes buffer, if any sugar := logger.Sugar() sugar.Infow("failed to fetch URL", // Structured context as loosely typed key-value pairs. "url", url, "attempt", 3, "backoff", time.Second, ) sugar.Infof("Failed to fetch URL: %s", url)zap.NewProduction()创建生产级 Logger,Sync()负责冲刷缓冲区,Sugar()得到带Infow/Infof便捷方法的糖化接口——前者以键值对方式输出结构化上下文,后者保留传统格式化字符串风格,兼顾性能与易用性。
Java 篇
async-profiler:Java 性能分析工具
async-profiler 是一款低开销的 Java 采样型(sampling)剖析器,可用于 Java 应用的性能分析。它能帮助开发者定位 CPU 密集代码路径、排查内存泄漏,并分析线程锁竞争与线程间同步问题,是线上性能排查的常用工具。
javaparser:强大的 Java 代码解析库
javaparser 是一个纯 Java 实现的解析库,用于解析、分析与生成 Java 代码。它能把 Java 代码解析为抽象语法树(AST),支持从 Java 1.0 到 Java 21 的版本,可在此基础上开发代码分析工具、重构工具、编译器等高阶能力。
kestra:事件驱动的声明式编排平台
kestra 是用 Java 开发的事件驱动编排平台,用于简化定时与事件驱动工作流。它提供直观的 Web 界面、内置代码编辑器与数百个插件,用户可通过 YAML 代码轻松构建可靠的工作流,支持编排微服务、批处理任务、临时脚本、SQL 查询、数据同步等场景。
JavaScript 篇
Dexie.js:轻量级 IndexedDB 封装库
Dexie.js 是一个轻量 JavaScript 库,封装了浏览器的原生 IndexedDB API,让在客户端浏览器中存储和查询数据变得更简单,支持大容量数据存储、事务与索引等特性。第 105 期给出的示例代码:
const db = new Dexie('MyDatabase'); // Find some old friends const oldFriends = await db.friends .where('age').above(75) .toArray(); // or make a new one await db.friends.add({ name: 'HelloGitHub', age: 25, street: 'East 13:th Street', picture: await getBlob('HelloGitHub.png') });先以数据库名创建Dexie实例,随后即可通过 Promise/async 风格 API 完成链式查询与写入,相比直接操作原生 IndexedDB 大幅降低了心智负担。
gitstars:你的 GitHub Star 管理器
gitstars 是用于管理 GitHub 上收藏(Star)项目的工具,支持根据标签与编程语言对项目进行分类管理,适合 Star 数量较多的开发者整理个人收藏夹。
jitsi-meet:开源视频会议平台
jitsi-meet 是基于WebRTC构建的视频会议平台,提供高清音视频质量,支持私聊、举手、投票、虚拟背景等功能,兼容所有主流浏览器与移动平台,是自托管在线会议场景的开源选择。
mermaid:用类 Markdown 语法画图
mermaid 是一个开源绘图工具,支持通过类似 Markdown 的语法生成流程图、时序图、甘特图等多种图表。它通常以代码块的形式嵌入文档,让图表与文字同源维护,广受文档型项目欢迎。
semantic-release:自动化版本管理与发布工具
semantic-release 是基于 Node.js 的自动化版本管理与发布工具,通过**语义化版本(Semantic Versioning)**简化项目发布流程:它自动分析 Git 提交信息来推导版本号,并生成对应的变更日志(changelog),适合希望以提交信息驱动发布的团队。
Kotlin 篇
ChinesePinyin-CodeCompletionHelper:支持拼音输入的 JetBrains 插件
这是一款专为 JetBrains 系列 IDE 设计的插件,支持拼音与五笔输入法的代码补全功能,可以帮助习惯用中文拼音联想标识符的开发者提高编码效率。
Python 篇
grip:GitHub README 本地预览工具
grip 用于在本地预览 GFM(GitHub Flavored Markdown)文件。它基于 Flask 与 GitHub Markdown API,在本地环境中渲染出与 GitHub 上效果一致的 Markdown 页面。使用方式极为简单:
$ cd myrepo $ grip * Running on http://localhost:6419/在项目目录下直接运行grip,即可在http://localhost:6419/获得与 GitHub 一致的 README 预览效果,非常适合发布前检查文档渲染。
ha_xiaomi_home:小米开源的 Home Assistant 插件
这是小米官方开源的 Home Assistant 集成插件,可实现小米 IoT 智能设备与 Home Assistant 的无缝对接,支持设备发现、状态同步、远程控制等功能,是智能家居自动化入门的实用组件。
pex:把 Python 项目打包成单个可执行文件
pex 是一个开源 Python 项目打包工具,专为跨环境部署与无法访问公网的部署场景设计。它可以把 Python 项目及其全部依赖、甚至(可选地)Python 解释器一并打包成单个可执行文件(.pex),无需安装运行环境即可直接运行,支持 Linux 与 macOS。第 105 期的示例演示了打包并运行一个 Uvicorn 应用:
$ pex "uvicorn[standard]" -c uvicorn --inject-args 'example:app --port 8888' -ohellogithub-app.pex $ ./hellogithub-app.pex INFO: Started server process [2014] INFO: Waiting for application startup. INFO: ASGI 'lifespan' protocol appears unsupported. INFO: Application startup complete. INFO: Uvicorn running on http://127.0.0.1:8888 (Press CTRL+C to quit) ^CINFO: Shutting down INFO: Finished server process [2014]其中-c uvicorn指定入口命令,--inject-args注入启动参数,-o指定输出文件名;打包后直接./hellogithub-app.pex即可启动服务。
runlike:快速获取 Docker 容器启动命令
runlike 用于解析运行中的容器,自动生成对应的docker run启动命令。它能提取容器的端口绑定、卷映射、环境变量、网络设置等配置信息,非常适合容器的复制、调试与迁移场景。第 105 期以 redis 容器为例:
$ runlike -p redis docker run \ --name=redis \ -e "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin" \ -e "REDIS_VERSION=2.8.9" \ -e "REDIS_DOWNLOAD_URL=http://download.redis.io/releases/redis-2.8.9.tar.gz" \ -e "REDIS_DOWNLOAD_SHA1=003ccdc175816e0a751919cf508f1318e54aac1e" \ -p 0.0.0.0:6379:6379/tcp \ --detach=true \ myrepo/redis:7860c450dbee9878d5215595b390b9be8fa94c89 \ redis-server --slaveof 172.31.17.84 6379-p参数表示打印且不换行美化输出,工具会把容器实际运行参数还原为可直接执行的docker run命令。
viztracer:开箱即用的 Python 性能分析工具
viztracer 是一个高效易用的 Python 程序性能分析工具,帮助开发者调试代码、定位性能瓶颈。它在性能追踪上做了针对性优化,尽可能降低对被测程序的性能影响,支持时间线追踪、多进程分析、模块化追踪,并生成直观可交互的分析报告。第 105 期给出三步用法:
# 安装 pip install viztracer # 生成分析报告 viztracer my_script.py arg1 arg2 # 可视化查看报告 vizviewer result.json安装后直接以脚本为参数运行viztracer即可产出 JSON 报告,再用vizviewer打开报告进行可视化分析。
Rust 篇
himalaya:命令行邮件管理工具
himalaya 是用 Rust 开发的命令行邮件客户端,支持多账户、邮件收发、多种邮件协议(如 IMAP 与 SMTP)以及 PGP 加密等功能,适合喜欢纯终端工作流的用户。
zoxide:更聪明的 cd 命令
zoxide 是用 Rust 编写的效率型cd命令工具,灵感来自 z 与 autojump。它会根据用户访问频率自动为目录排序,快速定位最可能的目标目录,并支持模糊匹配与交互式选择,能显著减少在目录树中反复cd的操作。
Swift 篇
ConfettiSwiftUI:五彩纸屑动画效果的 Swift 库
ConfettiSwiftUI 是一个用于添加五彩纸屑(confetti)动画效果的 Swift 库,支持自定义纸片形状、爆炸半径与角度,可为应用的成功反馈、庆祝场景快速增加动效。
MarkEdit:为 macOS 设计的极简 Markdown 编辑器
MarkEdit 是免费开源的 macOS Markdown 编辑器,体积仅3 MB,界面清爽、专注写作。作者认为 Markdown 语法本身足够直观,因此不提供 Markdown 预览功能,让用户专注于纯文本编辑。
AI 篇
garak:开源的大模型漏洞扫描器
garak 是 NVIDIA 开发的开源工具,用于扫描**大型语言模型(LLM)**的漏洞,支持检测幻觉(hallucination)、数据泄漏、提示注入(prompt injection)、错误消息、有害内容生成与越狱(jailbreak)等潜在安全问题与不良行为,适合在模型上线前做安全评估。
letta:为 LLM 应用注入记忆能力的开发框架
letta 是一个 Python 框架,用于构建具备记忆能力的 LLM 应用,支持创建带长期记忆与持久状态的智能体(agent),并能集成多种 LLM API 服务,适合构建需要跨会话记忆的对话应用。
MagicMirror:零门槛的 AI 换脸应用
MagicMirror 是一个轻量、开箱即用的 AI 换脸工具,无需 GPU、可离线使用,一键即可尝试新发型、新穿搭等效果,降低了 AI 图像应用的门槛。
vllm:更高效的 LLM 推理与服务引擎
vllm 是一个高效易用的大语言模型推理引擎,针对推理速度慢、资源利用率低等问题设计。它基于 PyTorch 与 CUDA,融合了内存优化算法(PagedAttention)、计算图优化与模型并行化等技术,显著降低 GPU 显存占用并充分利用多 GPU 资源提升推理性能;同时与 HF(Hugging Face)模型无缝兼容,支持 GPU、CPU、TPU 等多种硬件平台,适用于实时问答、文本生成与推荐系统等场景。第 105 期的核心示例:
from vllm import LLM prompts = ["Hello, my name is", "The capital of France is"] # Sample prompts. llm = LLM(model="lmsys/vicuna-7b-v1.3") # Create an LLM. outputs = llm.generate(prompts) # Generate texts from the prompts.创建LLM实例并指定模型名后,调用generate()传入 prompt 列表即可批量生成文本,接入流程非常直接。
zerox:用视觉模型把 PDF 转成 Markdown
zerox 基于视觉模型 API 服务,提供将 PDF 文档转换为 Markdown 的功能。原理是先把原始文件(如 pdf、docx)转成图片,再交由视觉模型处理,最后汇总所有结果生成完整的 Markdown 文件。第 105 期的 TypeScript 示例:
import path from "path"; import { zerox } from "zerox"; const result = await zerox({ filePath: path.resolve(__dirname, "./hellogithub.pdf"), openaiAPIKey: process.env.OPENAI_API_KEY, });传入文件路径与 OpenAI API Key,zerox()返回转换后的 Markdown 结果,适合做文档解析与知识库入库。
Other 篇
awesome-low-level-design:系统详细设计学习资源合集
这是一个帮助开发者学习与掌握**底层设计(Low-Level Design,LLD)**的资源合集,包含各类系统的实现细节、示例代码与接口定义,非常适合面试准备与技术进阶。
bocker:只用百行 Shell 实现 Docker
bocker 用大约 100 行 Bash 脚本实现了 Docker 的基础功能,适合学习如何用简单脚本语言实现容器的核心能力,是理解容器原理的极佳入门材料。
docker-xiaoya:一键部署 Alist + Emby + Jellyfin 服务
docker-xiaoya 提供 Alist、Emby、Jellyfin 服务的一键部署方案,帮助快速搭建完整的家庭多媒体中心,支持 Linux、macOS、Windows 等平台。
domain-driven-hexagon:学习 DDD 与六边形架构的最佳实践
这是一个融合**领域驱动设计(DDD)与六边形架构(Hexagonal Architecture)**的示例项目,旨在帮助开发者理解如何设计高质量、可扩展、易维护的应用。
Racer:DIY 开源迷你赛车
Racer 是一辆基于ESP32-H2的迷你赛车,大小仅约五六厘米,能通过神经网络识别颜色并做出相应反应,还支持键盘控制,是软硬件结合与嵌入式 AI 的趣味项目。
从本期看 HelloGitHub 月刊的生产流程
第 105 期这样的月刊并非手工拼凑,仓库中的脚本揭示了内容生产的两个环节。
项目采集环节:仓库内的 script/github_bot/github_bot.py 是一个用于收集 GitHub 优质项目的 Bot。从源码结构看,它通过 GitHub Events API(/users/{username}/received_events)拉取关注用户的事件流,按DAY = 1过滤近一天的数据,只保留WatchEvent(Star 事件)且排除自己账号的项目(github_bot.py);随后请求仓库 API 获取 Star 数,并依据STARS = 100的临界值过滤掉 Star 过少的项目,按 Star 数降序排列(github_bot.py);最后通过smtplib.SMTP_SSL把整理成 HTML 表格的“今日 GitHub 热点”邮件发送给收件人(github_bot.py)。账号、SMTP 邮箱(默认smtp.qq.com:465)、收件人等参数均需在脚本顶部配置。
月刊生成环节:仓库内的 script/make_content/make_content.py 用于生成月刊。它基于模板机制:模板文件中使用{{ hello_github_content }}与{{ hello_github_num }}两个占位符(make_content.py),脚本读取每期的内容文件与模板,替换占位符后输出HelloGitHub{期数}.md(make_content.py);支持传入单期期数或all参数批量重新生成所有期(make_content.py)。这样当通用内容需要调整时,只需重新运行脚本即可统一更新,无需逐期手工修改——第 105 期这类英文版月刊正是这一生成机制的产物。
如何继续阅读各期内容
本仓库以content/en/HelloGitHub###.md的形式存放每一期英文月刊,中文版位于content/HelloGitHub###.md:
- 本期的上一期:content/en/HelloGitHub104.md
- 本期的下一期:content/en/HelloGitHub106.md
- 完整期次索引见 README_en.md(英文)与 README.md(中文),可从中按期数跳转任意一期
此外,script/github_bot/README.md 与 script/make_content/README.md 分别记录了采集 Bot 与月刊生成脚本的运行步骤,适合想复刻这套“采集 + 生成”流程的读者进一步研究。
最后提醒:本仓库内容采用CC BY-NC-ND 4.0(署名-非商业性使用-禁止演绎)许可协议,引用或转载时请遵守相应条款。
- 技术博客
- 文档
- 知识库
【免费下载链接】HelloGitHub
:octocat: 分享 GitHub 上有趣、入门级的开源项目。Share interesting, entry-level open source projects on GitHub.
相关推荐
HelloGitHub 第 105 期开源项目全解析:40 个入门级开源项目精选详解
HelloGitHub 第 105 期开源项目全解析:40 个入门级开源项目精选详解 《HelloGitHub》是每月 28 号更新的开源项目精选月刊,专注于分
技术博客文档知识库HelloGitHub 第 69 期开源项目精选:40 个有趣、入门级项目的全景导读
HelloGitHub 第 69 期开源项目精选:40 个有趣、入门级项目的全景导读 HelloGitHub 是每月 28 号发布的开源项目推荐月刊,专注于分享
技术博客文档知识库HelloGitHub 第 114 期精选指南:39 个入门级开源项目全景解读
HelloGitHub 第 114 期精选指南:39 个入门级开源项目全景解读 《HelloGitHub》是每月 28 号发布的开源项目推荐月刊,精选 GitH
技术博客文档知识库
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考