GitHub 趋势 · 第 49 期

29,686 star 的 Mojo 仓库里,最该读的是一份 AI 使用政策

#AI协作规范#Mojo1.0#开源治理

先说结论。这个仓库(modular/modular,29,686 star)里最值钱的文件不是 Mojo 编译器,是一份 11,703 字节AI_TOOL_POLICY.md

它干的事很具体:把「AI 写的代码怎么进这个项目」拆成了几条可执行的硬规则 —— 要打标签、PR 不超 100 行、PR 描述必须自己写、不许无人值守的 agent 自动开 issue 和评论 PR。

同一个仓库还同时准备了 CLAUDE.mdAGENTS.md、一整套 llms.txt 端点和独立的 skills 仓库。一边给 AI 开门,一边给 AI 立规矩,它两件事一起做了。

先给个背景,免得你以为是哪个小项目在标新立异。Modular 是 Chris Lattner 创办的公司,Chris Lattner 是 LLVM 和 Swift 的创造者。这个仓库托管 Modular 平台的开源部分,主要两块:MAX(高性能推理服务器,提供 OpenAI 兼容端点)和 Mojo(他们自己造的新语言,介于 Python 和系统编程之间)。

一、先讲讲它想解决的那个问题

你可能已经遇到过这种场面:有人用 AI 一口气生成五百行补丁,丢进 PR,然后等你审。他花了几分钟,你要花一下午。

这不是个别人的素质问题,是 AI 把成本结构掰开了。政策文件里有一句写得很直白:「AI shifts the economics of software development: generating a large patch now costs the author very little, but the reviewer’s cost is unchanged.」

翻译过来就一句话:生成变便宜了,评审一点没变便宜。而大多数开源项目对此的反应是沉默。

这份政策文档开头自己写了一句:This is a living document.(这是个活文档)—— AI 工具和社区惯例变得快,他们预期会持续修订,重大变更会在社区论坛公告,全部改动可以在 commit history 里查。把「规则会变」写进规则本身,这一步已经比很多项目坦诚。

二、它到底规定了哪几条

规则具体要求官方给的理由
打标签在 commit message 里加一条 trailer,或在 PR 描述里注明用了 AI。原文示例:Assisted-by: AI让社区能形成最佳实践、看清这些新工具在扮演什么角色
控制体积尽量把 PR 控制在 100 行以内;超过就拆。「保持小而聚焦,是让你的贡献值得占用评审时间最有效的办法之一」AI 让写出大补丁对作者几乎零成本,但评审者的成本没有变
自己写描述PR 描述由人自己写,用 AI 做翻译或润色可以保证作者真的理解自己在提什么,描述同样要讲清动机、实现、影响与未决问题
人在环内人类作者必须先读完、审完自己的 AI 生成内容再请人评审;禁止会自动开 issue、自动评论 PR 的 bot贡献者永远是作者,对正确性、设计质量和长期可维护性负全责

有几条容易被忽略的细节。标签要求覆盖的范围不只是代码:RFC、设计提案、issue、安全漏洞报告、以及 PR 上的评论,都算。而 PR 体积那条政策里专门留了一句:「don’t exclude the tests or docstrings」 —— 小是指别夹带无关改动,不是指可以砍测试。

官方给的标签长这样:

Assisted-by: AI

还有一条我认为是这份文件里最有分量的话,单独拎出来:

AI expands your capabilities; it does not outsource your judgment.

「AI 扩展你的能力,但它不外包你的判断。」这句话没有出现在任何技术文档里,而是出现在贡献政策的 Philosophy 一节。

三、最狠的一条:它承认规则是主观的

大多数贡献指南会假装自己能给出客观标准 —— 多少行算大、什么算重复劳动。这份没有。它在解释完「什么算攫取式贡献」之后,直接写了这么一段:

These factors cannot be weighed objectively. Our policy leaves this
determination to the maintainers doing the work of sustaining the project.

「这些因素无法被客观衡量。我们的政策把判断权交给那些在做维护工作的人。」接着它才给出可以被验证的那一条黄金法则:

「a contribution should be worth more to the project than the time it takes to review it」

—— 一份贡献对项目的价值,应该高于评审它所花的时间。

为了让这条主观规则有落点,文件里给了维护者三件具体的工具:一段可以直接粘贴的回复模板(用来要求补充说明为什么值得审)、一个 extractive 标签(方便其他评审者排优先级)、以及升级路径(屡教不改就按 Code of Conduct 交给 moderation 团队锁帖)。

那段模板是原文给的,我没改一个字:

This PR doesn’t appear to comply with our policy on AI-generated content,
and requires additional justification for why it is valuable enough to the
project for us to review it. Please see our AI tool use policy:
https://github.com/modular/modular/blob/main/AI_TOOL_POLICY.md

政策里还引了 Nadia Eghbal 在《Working in Public》里对「攫取式贡献」的定义,并且把话说得很清楚:在 LLM 出现之前,维护者往往愿意审任何一份贡献,因为提交一个 PR 本身就代表着这个人有兴趣成为长期贡献者;AI 工具改变了这个信号 —— 它把工作量从实现者身上挪到了评审者身上。所以他们要保护的是维护者的时间。

还有一句,针对的是「把维护者的反馈原样喂给 LLM 再提交回来」这种操作:

Passing maintainer feedback directly to an LLM and resubmitting doesn’t
help anyone grow, and does not sustain our community.

四、一个很少见的小节:Copyright

贡献指南里写版权一节的项目不多,专门写「AI 与版权」的就更少。它的立场只有一句核心:

「Using AI tools to regenerate copyrighted material does not remove the copyright.」

用 AI 工具重新生成受版权保护的内容,并不消除该内容原本的版权。贡献者有责任确保这类材料不出现在自己的贡献里,一旦发现,按一般侵权贡献同样处理 —— 移除。

这一节的措辞是「AI systems raise unsettled questions around copyright」(AI 系统在版权上抛出了尚未落定的问题),也就是说它没有假装自己解决了争议,只是把「你得自己负责」这条兜底责任明确地压回到提交者身上。

五、它不是凭空写的:参考了五个项目的实践

文件末尾的 References 一节,把每一处借鉴都标注了来源和访问日期,这在贡献政策里相当罕见:

值得玩味的是这几档的态度差别:LLVM 借鉴、Fedora 提案、Rust 讨论、QEMU 直接禁、Simon Willison 负责命名。Modular 选的是中间偏严的那档 —— 不禁止,但要你署名、要你小、要你自己写描述、要你人在环内。

另外,这份政策也明确禁止「没有人类批准就替你在项目空间行动」的 agent。这一点和它的另一面形成了很妙的对照 —— 下一节说。

六、同一个仓库的另一面:它给 agent 也开了门

如果你只看 README,会觉得这就是个普通开源仓库。但把根目录列一遍就会发现,它同时准备了两套「说明书」:一套给人,一套给 agent。

文件 / 目录大小给谁看
README.md4,025 字节给人看的门面:平台是什么、组件在哪个目录
CONTRIBUTING.md14,603 字节给人看的贡献流程
AI_TOOL_POLICY.md11,703 字节给 AI 划界:怎么用、怎么标注、什么不接受
CLAUDE.md9,195 字节给 Claude Code 这类助手看的开发指引,开头就写明「This file provides guidelines for AI coding assistants such as Claude Code」
AGENTS.md9 字节全文就是一个词:CLAUDE.md —— 一个指针,本身没有内容
.cursor/目录Cursor 的编辑器配置

那个 9 字节的 AGENTS.md 值得停一下。它是为了让各种 agent 工具都能自动读到同一份指引,所以只放一个文件名做跳转。也就是说这个项目连「给 agent 的入口」都做成了指针文件。

更彻底的是 CLAUDE.md 的最后一节,标题叫 LLM-friendly documentation,直接列了十个端点,把文档按文本形式喂给模型:

https://max.modular.com/llms.txt
https://max.modular.com/llms-max-guides.txt
https://max.modular.com/llms-python.txt
https://max.modular.com/llms-accelerator-api.txt
https://max.modular.com/llms-c-api.txt
https://max.modular.com/releases-llms.txt
https://mojolang.org/llms.txt
https://mojolang.org/llms-full.txt
https://mojolang.org/llms-stdlib.txt
https://mojolang.org/llms-manual.txt

官方另有一个独立仓库 modular/skills,在最新版 release 说明里点名了为本轮模型上线工作流新增的四个技能:serve-modelbenchmark-modeleval-modelprofile-model,另有保持语法对齐的 mojo-syntax。这个是本系列第几次遇到「仓库自带 agent 技能」我已经数不清了,但趋势很清楚:项目不再只给人读,也开始给 agent 读。

把第六节和第二节放在一起看,这个项目的姿态就完整了。它一边把 llms.txtCLAUDE.mdskills 铺好,让 AI 尽可能读懂并能直接干活;另一边用 AI_TOOL_POLICY.md 规定 AI 生成的产出怎么才能进门。

开门和立规矩不矛盾 —— 一个管读,一个管写。愿意同时做这两件事的项目,现在还是少数。

七、仓库本体:两个版本号,指同一个 commit

技术部分也说清楚。这个仓库最新正式版本是 max/v26.5.0,发布日期 2026-08-11,release 标题写着 「MAX 26.5 / Mojo 1.0.0」,在 GitHub 上 prerelease 为 false,是正式版。

有个细节挺有意思:tag 是分命名空间的。这个 release 同时打了 max/v26.5.0mojo/v1.0.0,而两者指向同一个 commit(b4497b7…)。

往前看规律一样:max/v26.4.0mojo/v1.0.0b2 同一个 commit,max/v26.3.0mojo/v1.0.0b1 同一个 commit。一个产品用年月号(26.5),一个语言用语义化版本(1.0.0),共用同一次发布。

关于 1.0 这件事,官方口径克制得值得抄下来:他们才刚刚开始把标准库 API 标记为稳定,而且只是一小部分。release 说明原文是 we started with a small set that we’ll grow in subsequent 1.x releases。这次发布的破坏性改动比平时多,但官方承诺 nearly every breaking change ships with a deprecated alias and a compiler fix-it, so migration is mechanical —— 几乎每个破坏性改动都配了废弃别名和编译器自动修复,所以迁移是机械性的。

顺带提一句许可,这块容易看错。README 的 License 一节明确切成了两层:

另外,max/CONTRIBUTING.md 里有一张按代码路径划分的贡献状态表,其中 max/include/max/c 一行的描述写着 Closed source bindings,状态 N/A。也就是说这个开源仓库里存在明确的闭源绑定目录,开源边界是划好的、写出来的,而不是靠猜。

八、上手:装 Mojo,和跑 MAX

仓库 README 本身不给安装命令,只有一句「看官方文档」。下面命令取自项目自己的文档站与仓库内的 CLAUDE.md,原文照抄。

用 Mojo(官方 quickstart,推荐 pixi 或 uv,这里走 uv 路线):

curl -LsSf https://astral.sh/uv/install.sh | sh
uv pip install mojo

# 或者建一个项目再装
uv init temperature-analyzer
cd temperature-analyzer
uv add mojo

# 跑起来
mojo analyzer.mojo

要让 AI 助手跟上最新语法,官方给了一条:

npx skills add modular/skills

用 MAX 起一个 OpenAI 兼容的推理服务,命令来自仓库里的 CLAUDE.md

pip install "max[serve]" --extra-index-url https://whl.modular.com/nightly/simple/

max serve --model modularai/Llama-3.1-8B-Instruct-GGUF

# 或者用 Docker
docker run --gpus=1 -p 8000:8000 docker.modular.com/modular/max-nvidia-full:latest \
    --model modularai/Llama-3.1-8B-Instruct-GGUF

注意上面两条 MAX 命令走的是 nightly 索引(whl.modular.com/nightlyconda.modular.com/max-nightly)。

这不是笔误 —— CLAUDE.md 是给「改这个仓库源码」的人看的,那里 nightly 是正确选择。但如果你的目的只是「用 MAX 部署模型」,就别从这份文件抄命令,走官方 quickstart 的稳定版路线更稳。

平台支持这块,两处口径不一样,但指的是不同的事,别混:用 Mojo 本身,官方 quickstart 写的是 You can use Mac, Linux, or Windows with WSL;而往这个仓库贡献代码,CLAUDE.md 明确列为 Linux x86_64 / aarch64、macOS ARM64,Windows: Not currently supported

九、我的判断

适合谁:

① 正在被 AI 生成的 PR 冲,又不好意思直接关掉的维护者。这份政策把「怎么礼貌地拒绝」和「怎么量化门槛」都写好了,连回复模板都能直接粘贴。

② 想在团队内定 AI 协作规矩的 tech lead。四条规则(打标签 / 控体积 / 描述人写 / 人在环内)是可以照着落地的最小集。

③ 写 Mojo 或者用 MAX 部署模型的人。仓库结构和平台差异讲得清楚,而且 mojolang.org 的 llms.txt 端点对喂给本地模型很有用。

不适合谁:

① 想找一份「鼓励用 AI 提 PR」的模板的 —— 这份文件的重点是限制,不是鼓励。② 只关心「怎么把 MAX 装起来」的 —— 直接看官方 quickstart,这份政策跟安装没关系。

坑,按踩到的概率排:

① 别把「仓库是 Apache-2.0 with LLVM Exceptions」当成「MAX 能随便商用」。README 写得很清楚,MAX 的使用与分发另走 Modular Community License,这是两层,看一层会出错。

② 别从 CLAUDE.md 抄 MAX 安装命令 —— 那是 nightly 通道。

③ 1.0 只冻结了一小部分标准库 API,1.x 里还会继续有破坏性改动。官方说配了废弃别名和编译器自动修复,但「迁移是机械性的」不等于「不用迁移」。

④ 别把 AGENTS.md 当成一份指南去读。它 9 字节,内容只有一个文件名。

⑤ 体量上要有预期:仓库 881,525 KB(约 861 MB),未关 issue 1,146 个,watcher 285 个。star 和「有多少人真的在跟」不是一回事。

十、数据脚注

仓库:modular/modular

地址:https://github.com/modular/modular

许可:仓库与贡献 Apache-2.0 with LLVM Exceptions;MAX 的使用与分发走 Modular Community License(来源:仓库 README 与 LICENSE 原文)

star:29,686(REST API 实测);本月新增 +3,080(取自 Trending 月榜)

fork 3,167 · 未关 issue 1,146 · watcher 285 · 语言 Mojo · 仓库体积 881,525 KB

最新正式版:max/v26.5.0「MAX 26.5 / Mojo 1.0.0」,2026-08-11 发布,prerelease=false,release 无二进制附件(assets 为空)

数据来源:GitHub REST API · raw.githubusercontent.com 原文 · GitHub Trending 官方页面 · mojolang.org 官方 quickstart

抓取时间:2026-09-12 01:17 (GMT+8)

最后一件事值得说:这份 AI 政策本身也是用 AI 政策允许的方式在演进 —— 它是 living document,改动全在 commit history 里。如果你团队里正在为「AI 写的代码怎么算数」吵架,把一个链接甩过去比吵一小时有用。

你在项目里见过更严或者更聪明的 AI 协作规定吗?或者你觉得「必须自己写 PR 描述」这条在你们团队能落地吗?留言聊聊。

下期预告:NVIDIA-NeMo/Switchyard(本月 +2,628)—— 一个保持 OpenAI 与 Anthropic 原生 API 兼容的路由层,在多模型与多供应商之间做流量分配和成本优化。备选 Tencent/WeKnora(22,297 star,周榜 +815,Go),开源 LLM 知识平台。

#AI协作规范#Mojo1.0#开源治理