← 返回
Research notes · 2026 年 9 月 6 日

Omarchy 开源运营笔记

研究对象:github.com/omacom/omarchy(2026 年 8 月从 basecamp 组织迁到 omacom 组织)。数据截至 2026 年 9 月 6 日。仓库文件链接钉在提交 adcc96a(2026 年 9 月 6 日的 quattro 分支),点开看到的就是本文引用的那一行。方法和来源见文末。

一、规模与结论

Omarchy 是一个操作系统:Arch Linux 打底,Hyprland 做窗口管理,Quickshell 做桌面。仓库里有 451 个命令脚本、22 个主题、106 个迁移脚本、51 章用户手册、16 个自带桌面插件。它的开源运营和普通软件库的差别在这里:用户的机器上就装着它的全部源码和工具,所以很多“社区流程”被做成了操作系统命令,随系统一起发到每台机器上。

指标 数值
Star / Fork 38,400 / 4,100
提交数 / 作者数 6,358 / 537
创始人提交占比 DHH 72%,Ryan Hughes 12%
PR 总数 4,783
PR 合并 / 关闭未合并 / 打开 1,186(25%)/ 1,745(36%)/ 1,852(39%)
Issue 总数(打开) 3,872(1,418,37%)
2026 年 8 月新开 PR / 合并 1,692 / 241
9 月初每天新开 PR 85 到 126
Discord 35,000 人
插件市场 Quattro 发布三天 330 个,现在 500 多个

一句话结论:Omarchy 把“怎么报 bug、怎么调试、怎么改代码、怎么测试、怎么发 PR”全部做成了装在系统里的命令和 agent 技能,让每个用户机器上的 AI agent 都能按它的规矩办事;仓库本身几乎没有流程,没有 CI,没有机器人分诊,合并靠 DHH 一个人加他的 agent 农场。前一半是它最值得学的地方,后一半是它现在最大的欠账。

二、可借鉴

下面是每条的依据,按效果从大到小排,每条写清要解决的问题、做法、效果、证据。

三、把贡献步骤装进操作系统:omarchy 技能

3.1 要解决的问题

一个新 Linux 发行版的支持负担,大头是“我的机器出了问题,我不知道是不是 bug,也不知道要给你什么信息”。Omarchy 的用户里有大量第一次用 Linux 的人,而且几乎每个人都在机器上装了 Claude Code、Codex 一类的 agent。问题就变成:怎么让用户的 agent 替维护者做第一轮支持和分诊。

3.2 做法:一个随系统发行、自动挂进所有 agent 的技能

仓库里 default/agents/skills/omarchy/ 是一个 agent 技能,七个文件:SKILL.md 294 行,加 contributing、hooks、plugins、theming、capture、hyprland 六份专题指南。它随 omarchy 包安装到 /usr/share/omarchy,然后由用户初始化脚本符号链接到每个 agent 的技能目录。

SKILL.md 的关键段落:

3.3 做法:contributing.md 是给 agent 看的贡献指南

仓库没有 CONTRIBUTING.md。给人看的那份没有,给 agent 看的这份有,65 行,装在每台机器上:

配套的系统命令:

3.4 为什么这么设计

三条分流规则在 GitHub 表单里写了一遍,在 agent 技能里又写了一遍。前者拦的是人,后者拦的是用户的 agent。Omarchy 的用户遇到问题时,第一反应往往是问自己机器上的 agent,而这个 agent 读到的第一份材料就是 Omarchy 自己写的:先去 Discord 确认,确认了再带着 omarchy debug 的日志和截图去开 issue。维护者不用在 issue 里追问“你什么显卡、什么版本、日志呢”,因为技能已经把这些列成了清单。

3.5 效果

四、崩溃分诊技能:让 agent 先判断“是不是 Omarchy 的 bug”

4.1 要解决的问题

操作系统上什么都会崩:浏览器、文件管理器、Qt 库。用户看到“Process crashed”通知,第一反应是去 Omarchy 报 bug。绝大多数不是 Omarchy 的 bug。

4.2 做法

4.3 效果

这套技能是 Quattro 4.0(2026 年 8 月 14 日)才加的,样本还少。能看到的是 issue 里出现了带署名的机器报告,以及 omarchybot 提的 PR,比如 #8549“Let a crash diagnosis mute that program's notifications”,已由 DHH 合并。设计上它把“先判断管辖、先搜重复、用户点头才发、署名”四道闸放在了用户机器上,而 OpenClaw 把同样的闸放在仓库的机器人里。

五、四条更新通道:把用户变成分层的测试员

5.1 要解决的问题

滚动发行版最怕两件事:上游 Arch 的新包把配置搞坏,自己的新版本把用户机器搞坏。测试要靠人,人要分层。

5.2 做法

5.3 效果

六、更新命令的安全网:把支持问题消灭在发生之前

6.1 要解决的问题

滚动发行版的支持工单大头是“更新以后起不来了”。

6.2 做法

bin/omarchy-update 96 行,做了这些事:

6.3 效果

这一节没法用仓库数据量化,但它决定了 Discord 的 #omarchy-help 里是什么问题。“更新挂了”的标准答案是“看红字,去 Discord,贴 omarchy-debug”,三样东西都是更新脚本自己给的。

七、对贡献者的具体要求

7.1 一份 AGENTS.md,CLAUDE.md 只有一行

CLAUDE.md 的全部内容是 @AGENTS.mdAGENTS.md 133 行,八节:

7.2 七份专题指南

agents/skills/ 下七个文件,每份第一句都是“Read this before …”:

文件 行数 管什么 关键规则
migrations.md 172 migrations/ 时间戳命名、echo 开头、幂等、失败停队列
icon-font.md 79 品牌字体图标 加字形的完整流程
shell-dev.md 49 Quickshell 桌面 插件目录位置、manifest 必填字段、面板必须暴露 open(payloadJson)
acceptance-tests.md 46 图形验收 在 omarchy-iso 的虚拟机里跑,--reuse-base --sync-omarchy
visual-verification.md 44 视觉改动 omarchy capture screenshot fullscreen save,动画录短视频
command-metadata.md 31 bin/ 命令 文件头 80 行内的 # omarchy:summary= 等元数据,路由器靠它生成帮助
install-scripts.md 19 install/ 叶子脚本被 source、不要 exit、用 $OMARCHY_INSTALL

这些文件不进任何包,只在仓库里(docs/file-layout.md#L29-L31)。它们和第三节的用户技能是两套:用户技能教 agent 怎么用系统,贡献者指南教 agent 怎么改系统。SKILL.md 明确写了“Do NOT use this skill for Omarchy development tasks”。

7.3 为什么这么写

OpenClaw 的 26 份 AGENTS.md 是按目录分层,每个目录一份。Omarchy 的做法是一份总纲加七份按任务类型分的指南,靠总纲第一节做路由。原因是仓库结构:451 个脚本平铺在 bin/,按目录分层没有意义,按“改命令、改安装、改桌面、写迁移”分才对得上贡献者的实际动作。

7.4 门口的规矩

7.5 效果

抽样最近 300 个合并的 PR:作者 DHH 自己 122 个(41%),omarchybot 30 个,其余 148 个来自社区。评审记录里 GitHub Copilot 的评审机器人 106 次、omarchybot 20 次、Spencer Bull 11 次、DHH 3 次;150 个是“评论”,11 个是“批准”。规矩是给 agent 写的,评审也主要是 agent 在做。

八、插件系统:把功能需求从 PR 里分流出去

8.1 要解决的问题

桌面环境的功能请求无穷无尽:天气、日历、音乐、剪贴板。每一个都做成 PR,仓库会被淹没。

8.2 做法

8.3 效果

Quattro 发布三天,市场 330 个插件,现在 500 多个。这些功能没有一个变成主仓库的 PR。对比:同期主仓库每天新开 85 到 126 个 PR,8 月只合并了 241 个。插件把最容易膨胀的那一类需求接走了。

九、测试:本地两套,图形验收进虚拟机

9.1 做法

9.2 效果

对一个操作系统来说,能用 CI 跑的只有脚本级测试,真正的验收必须装一遍系统。Omarchy 选择把验收工具做完整、把 CI 省掉。代价是 PR 页面上没有任何绿勾,贡献者也没有“通过了”的信号。

十、设计先行:plans/ 与 docs/

效果:难以量化。可见的是 DHH 在播客里的说法,Quattro“没有一行代码是我手写的”,他审的是安全相关代码和架构决定。plans/ 就是那些架构决定的落地形态。

十一、发布节奏与镜像滞后

十二、谁在合并:一个人加一个 agent 农场

12.1 数据

抽样最近 300 个已合并的 PR(2026 年 7 月 21 日到 9 月 6 日):

12.2 DHH 自己的描述

Lex Fridman 播客第 501 期:四五台迷你电脑放在壁橱里,Tailscale 连起来,用 Herdr 调度 Claude Code、Codex、OpenCode,最多 16 个 agent 并行。agent 写代码开 PR,评审 agent 过一遍,他做最后的合并或拒绝。三个月合并了 1,000 多个 PR。面对上千个待审 PR,做法是“让 agent 分诊,我从几百个没合并的 PR 里挑最好的功能”。他说宁可收 agent 写的 PR 也不想收人写的,因为拒绝起来没有负罪感。

12.3 没有被合并的那些

十三、治理与钱

十四、社区

十五、没做好的地方

十六、方法与来源