微信扫码
添加专属顾问
我要投稿
探索AI编程新境界,发现文档集、规则库与循环迭代的协同魅力。 核心内容: 1. AI编程新模式:文档集、规则库、循环迭代的融合 2. stdlib规则库:AI的“外部大脑”与智能提升机制 3. IF-THIS-THEN-THAT:规则设计的简洁原则与实践案例
上周在"懒人编程新境界:让AI写代码,你只需写文档"一文中,我探讨了"文档驱动的氛围编程"这种新型开发模式。发布之后,读者和我自己都有一系列的疑问:如何建立Cursor的规则系统?文档集应该如何与规则库配合?它们在编程的过程中如何演进?
带着这些问题,我继续调研,在读了大量文章之后,发现了Geoffrey Huntley的From Design doc to code,对AI编程做了更加深入的实践,他提出了一个公式:
文档集(specs) + 规则库(rules) + 循环迭代(loopback) = 好的氛围编程?
原文中,作者把规则库称为stdlib,我觉得rules更贴切,更普适。
今天,我将分享这三要素如何协同工作,以及如何通过开源项目"Groundhog"将其付诸实践。
你有没有遇到过这种情况:AI助手今天学会了某个特定的编码风格,明天又完全"忘记"了?这就是AI的"健忘症"问题。
Geoffrey Huntley在他的实践中提出了一个解决方案:stdlib(规则库)。这不是传统编程语言中的标准库,而是一套规则文件集合,它们共同构成了AI的"外部大脑"或"长期记忆"。
在Cursor中,规则库以.mdc
规则文件的形式存在,整齐地存放在项目的.cursor/rules/
目录下:
PROJECT_ROOT/
├── .cursor/
│ └── rules/
│ ├── python-style.mdc // Python编码规范
│ ├── git-commit.mdc // 自动提交规则
│ ├── security-checks.mdc // 安全检查规则
│ └── ...
└── ...
每个规则文件就像一个"记忆胶囊",定义了特定编程场景中AI应该如何思考和行动。
规则库的魔力在于解决了AI的"健忘"问题。Huntley一针见血地指出:"当前的基础LLM模型准确率大约在45%左右,需要频繁引导。"
但通过不断丰富规则库,这个数字能大幅提升!其工作原理是:
这形成了一个正向循环:AI错误→人工干预→规则记录→AI改进→更少错误→更高效率
效果有多惊人?Huntley只用了8小时构建规则库,就将AI输出的准确率大幅提升,从简单的代码提交到复杂的Linux内核补丁,都能稳定输出。在我自己的SQL-Agent项目中,也获得了类似的飞跃:从反复纠错到一次成功的愉悦体验!
有效的规则遵循一个简单但强大的原则:IF-THIS-THEN-THAT条件触发机制。就像写代码一样:"如果遇到这种情况,就执行那个操作"。
看一个真实的例子,这是一个自动提交代码的规则:
# Git Conventional Commits
Rule for automatically committing changes made by CursorAI using conventional commits format.
<rule>
name: conventional_commits
description: Automatically commit changes made by CursorAI using conventional commits format
filters:
- type: event
pattern: "build_success" # 当构建成功时触发
- type: file_change
pattern: "*" # 适用于所有文件变更
actions:
- type: execute
command: |
# 根据变更描述智能提取提交类型
CHANGE_TYPE=""
case "$CHANGE_DESCRIPTION" in
*"add"*|*"create"*|*"implement"*) CHANGE_TYPE="feat";;
*"fix"*|*"correct"*|*"resolve"*) CHANGE_TYPE="fix";;
*"refactor"*|*"restructure"*) CHANGE_TYPE="refactor";;
*"test"*) CHANGE_TYPE="test";;
*"doc"*|*"comment"*) CHANGE_TYPE="docs";;
*"style"*|*"format"*) CHANGE_TYPE="style";;
*"perf"*|*"optimize"*) CHANGE_TYPE="perf";;
*) CHANGE_TYPE="chore";;
esac
# 从文件路径提取作用域
SCOPE=$(dirname "$FILE" | tr '/' '-')
# 提交变更
git add "$FILE"
git commit -m "$CHANGE_TYPE($SCOPE): $CHANGE_DESCRIPTION"
- type: suggest
message: |
Changes should be committed using conventional commits format...
examples:
- input: |
# 在添加新函数后
CHANGE_DESCRIPTION="add user authentication function"
FILE="src/auth/login.ts"
output: "feat(src-auth): add user authentication function"
metadata:
priority: high
version: 1.0
</rule>
太棒了!这个规则实现了一个魔法:当构建成功时,自动提交代码变更,并根据变更描述智能选择合适的提交类型(feat、fix等)。这意味着你再也不用手动敲git commit
命令了!?
规则可以执行多种强大操作:
通过组合这些操作,我们可以像训练宠物一样"训练"AI,确保它始终遵循最佳实践工作。懒人编程的最高境界!
想开始打造自己的AI规则库吗?这比你想象的简单多了!最佳方法是从几个基础规则开始,然后逐步扩展。就像搭积木一样,一块一块地构建你的AI"外部大脑"。
以下是几个必备的规则类别:
最神奇的是,你可以让AI帮你创建这些规则!正如Huntley所说:"当Cursor在你干预后做对了事情,让它编写或更新规则,记录学到的经验。"
这就像教一个学生编程,当他终于理解了某个概念,立刻让他把这个理解写下来,形成自己的"学习笔记"。只不过这个"笔记"会永久地增强AI的能力!
如果说规则库是AI的"外部大脑",那么specs(文档集)就是项目的"灵魂"。没有灵魂的开发,就像没有目的地的旅行——可能很有趣,但很难到达想去的地方。
文档集是一系列结构化文档,清晰定义了项目的需求、架构、API设计和实现计划。在我上周文章中提到的"implementation-plan.mdc就是项目的灵魂",正是这个概念。
在Groundhog项目中,文档集以markdown文件形式整齐地存储在specs/
目录下:
PROJECT_ROOT/
├── specs/
│ ├── SPECS.md # 总览文档(项目的"地图")
│ ├── core/
│ │ ├── architecture.md # 系统架构
│ │ └── data-model.md # 数据模型
│ ├── ui/
│ │ └── components.md # UI组件规格
│ └── ...
└── ...
这些文档的存在,对AI来说就像GPS导航对司机一样重要!
文档集和规则库的结合使用产生了1+1>2的神奇效果:
这种组合极大地提高了AI输出的准确性和一致性。效果有多惊人?Vivek Haldar分享了他的经历:"使用规范驱动的氛围编程,我只用周六下午的时间就完成了一个完整的时间追踪应用,从几点想法到可运行代码,一气呵成!"
在实践中,这意味着你可以:
随着项目规模扩大,单个AI会话很难处理整个复杂系统。这时,Geoffrey Huntley提出的"规格域"(specification domain)概念就显得非常关键了!
规格域是指将项目按功能区域分解为相对独立的部分,例如:
src/core
- 核心应用逻辑(大脑)src/ai/mcp_tools
- MCP工具(工具箱)src/ui
- 用户界面(脸面)每个域有自己独立的文档集,这种分解让我们可以:
这种方法让AI编程可以扩展到更大规模的项目,实现真正的并行开发。从单兵作战到指挥团队的飞跃!
想象一下,如果你能同时指挥多个AI助手,每个负责一个模块,效率会提高多少?这就是"多会话并行开发"的魅力!
实现这种并行开发的关键是使用git-worktree创建独立的工作目录:
git worktree add ../project-core core
git worktree add ../project-ui ui
然后,你可以为每个工作目录启动一个Cursor实例,实现真正的并行开发。Huntley将这种方法形象地称为"multi-boxing"(多开),它让开发者能够同时管理多个AI助手,就像游戏中同时操控多个角色一样。
效率提升有多大?Huntley提到他能在几小时内完成原本需要数周的工作量!这就像是从带领一个程序员,变成指挥一个小型开发团队。?
规则库和文档集很重要,但还缺少一个关键环节:如何让AI持续保持在正轨上?这就是循环迭代(loopback)的魔力所在!
循环迭代是更好氛围编程的秘密武器,就像DJ不断调整音乐节拍一样,它持续将文档集、规则库和环境信息反馈给AI,确保AI始终按照正确的"节拍"工作。
Geoffrey Huntley分享了一个简洁而强大的循环迭代提示词模板(可以直接复制使用):
Study @SPECS.md for functional specifications.
Study @.cursor for technical requirements
Implement what is not implemented
Create tests
Run a "cargo build" and verify the application works
这个看似简单的提示词模板实际上是一个强大的指令集,让AI能够:
想象一下AI就像一个聪明但记忆力有限的新员工。当项目变得复杂时,单次对话无法让它记住所有要点和上下文。循环迭代解决了这个问题 —— 它定期"提醒"AI应该关注什么,就像对新员工进行周期性复训一样。
循环迭代的神奇之处在于:
Huntley给出了一个关键建议:"当AI偏离正轨时,不要沮丧,直接重启一个新的会话,使用同样的循环迭代提示,直到所有功能都实现。"
这种方法特别适合与强类型编程语言(如Rust和Haskell)结合使用。想象一下:AI写代码→编译器报错→错误反馈给AI→AI修复问题→代码改进。这形成了一个自然的、不断进步的循环!
来看一个真实案例!Geoffrey Huntley的开源项目"Groundhog"完美展示了文档集、规则库和循环迭代三要素如何协同工作。Groundhog是一个AI无头代理编码助手,完全由AI辅助编程实现,代码质量令人惊艳。
想尝试这种方法?以下是启动一个类似项目的步骤(我亲测有效):
第一步:创建基础规则 这是你的第一个提示词,直接复制到Cursor中:
Create a Cursor IDE AI MDC rule in ".cursor/rules" which instructs Cursor to always create new MDC rules in that folder. Each rule should be a separate file.
第二步:定义编码规范 接着,让AI帮你创建语言特定的编码规范:
Create a new Cursor MDC rule for all *.rs files (in all subdirectories).
You are an expert software engineer who knows rust. In fact, you are the software engineer who created rust.
Your task is to come up with technical recommendations in this rule which document best practices when authoring rust.
第三步:创建文档集 现在,告诉AI你想要构建什么:
We are going to create an AI coding assistant command line application in rust. The AI coding assistant is called "groundhog".
It uses the "tracing" crate for logging, metrics and telemetry.
All operations have appropriate tracing on them that can be used to troubleshoot the application.
Use the clap cargo crate for command line parsing.
The first operation is
"$ groundhog explain"
When groundhog explain is invoked it prints hello world.
IMPORTANT: Write up the specifications into the "specs/" folder with each domain topic (including technical topic) as a separate markdown file. Create a "SPECS.md" in the root of the directory which is an overview document that contains a table that links to all the specs.
第四步:启动循环迭代 最后,使用这个循环迭代提示词开始编码:
Study @SPECS.md for functional specifications.
Study @.cursor for technical requirements
Implement what is not implemented
Create tests
Run "cargo build" and verify the application works
神奇的是,AI会根据文档集和规则库,一步步实现功能,并且质量越来越高!如果AI在某处卡住,只需重启一个新会话,使用相同的循环迭代提示,直到功能完成。
当基础功能实现后,就可以通过添加新规格域来扩展项目规模了。这就像从一个人创业,逐步扩张成一个小团队。例如,添加新的MCP工具模块:
Look at specifications in @specs.
New requirement.
What should be implemented for MCP (model context protocol) registry? Include security best practices.
What should be implemented for a new MCP (model context protocol) tool that can be invoked to list directory contents ("ls"). Include security best practices.
Provide a LLM system prompt for this MCP protocol tool.
Update with this guidance. Store them under "specs/mcp" with each technical topic as a separate markdown file.
然后,你可以:
git worktree add ../groundhog-mcp mcp
这样,你就能同时在不同的模块上并行开发,大大加快进度!就像有了多个AI助手组成的小型开发团队!????
更好的氛围编程绝不是把自己完全交给AI,放飞自我。恰恰相反,它是一种建立结构化框架的艺术,让AI在这个框架内发挥最大潜力。
文档集、规则库和循环迭代三要素共同构成了这个框架:
随着这三要素的不断完善,AI编程的准确率和效率会持续提升,从最初的45-50%飙升到90%以上。更重要的是,这种方法让每次与AI的交互都成为一次积累,每个项目都比上一个项目更顺利,更高效。
就像我在上篇文章中提到的那样:写文档成为了编程过程中最有价值的环节。当我们利用文档集、规则库和循环迭代三要素,文档不再只是记录,而是成为指导AI的关键工具,成为项目的灵魂和大脑。
借用Huntley的比喻:"规则驱动的氛围编程就像是教会AI骑自行车。首先你教它什么是踏板,然后纠正它的错误,最终它不仅能自己组装自行车,还能制造法拉利。"
53AI,企业落地大模型首选服务商
产品:场景落地咨询+大模型应用平台+行业解决方案
承诺:免费场景POC验证,效果验证后签署服务协议。零风险落地应用大模型,已交付160+中大型企业
2025-04-07
GitHub开源最强MCP客户端指南!手把手教你玩转AI交互!
2025-04-07
斯坦福团队开源!OpenVLA:小白也能搞机器人,100条数据就能微调!
2025-04-07
9000 字详细解读阿里万象 2.1(Wan2.1)最新技术报告
2025-04-07
实测Llama 4,究竟是王者归来,还是廉颇老矣?
2025-04-06
vllm近期更新的一些trick总结
2025-04-06
Meta Llama 4 全面解析:全新的原生多模态 AI
2025-04-06
字节跳动开源神器Agent TARS,AI自动化时代真来了
2025-04-06
一文读懂开源 Llama 4 模型
2025-01-01
2024-07-25
2025-01-21
2024-05-06
2024-09-20
2024-07-20
2024-06-12
2024-07-11
2024-08-13
2024-12-26
2025-04-07
2025-04-03
2025-04-03
2025-04-03
2025-04-01
2025-03-31
2025-03-25
2025-03-25