当你需要频繁在 Kilocode、OpenCode、Claude、Codex、GitHub Copilot 等多个 AI 编程助手之间切换时,Ruler[1] 是你的最佳选择:
在我写《AGENTS.md:统一编码助手指令文件的新标准[2] 这个项目。当时实际上我并没有频繁使用这个工具,因为我主要使用的是单一的编程助手。
但现在情况不同了。
随着 AI 编程助手的爆发式增长,我需要频繁在多个工具之间切换:
每个工具都有自己的:
AGENTS.md[3] 标准的出现(Google、OpenAI、Factory、Sourcegraph 和 Cursor 联合推出),统一了 instructions 文件的名称和位置。这是一个重大进步,项目根目录不再混乱。
AGENTS.md 解决的问题:
AGENTS.md 没有解决的问题:
.cursor/mcp.json.mcp.json.windsurf/mcp_config.json.codex/config.toml.claude/skills/.codex/skills/.opencode/skill/.agents/skills/.aider.conf.yml.clinerulesCRUSH.md这就是 Ruler 依然不可或缺的原因。
Ruler 是一个命令行工具,提供 单一数据源(Single Source of Truth) 来管理所有 AI 编程助手的配置。
统一由 Ruler 管理内容:
.ruler/ # 单一数据源├── AGENTS.md # 主指令文件├── coding_style.md # 代码风格指南├── api_guidelines.md # API 设计规范├── ruler.toml # Ruler 配置└── skills/ # 集中管理的 Skills ├── my-skill/ │ └── SKILL.md └── another-skill/ └── SKILL.md执行 ruler apply 命令生成并分发到各工具的专属文件:
AGENTS.md # 分发给所有支持的工具.cursor/mcp.json # Cursor 的 MCP 配置.mcp.json # Claude 的 MCP 配置.codex/config.toml # Codex 的 MCP 配置.claude/skills/ # Claude/Copilot/Kilocode 的 Skills.codex/skills/ # Codex 的 Skills.opencode/skill/ # OpenCode 的 Skills.gitignore # 自动更新,忽略生成的文件集中式规则管理
.ruler/ 目录嵌套规则加载(Nested Rule Loading)
自动分发配置
MCP 服务器管理
ruler.toml 中统一定义 MCP 服务器Agent Skills 分发
.ruler/skills/自动 .gitignore 管理
.ruler/ 目录结构.ruler/├── AGENTS.md # 主指令文件(新标准)├── instructions.md # 旧版支持(向后兼容)├── ruler.toml # Ruler 配置文件├── coding_style.md # 额外的规则文件├── api_conventions.md # API 设计规范└── skills/ # Skills 目录 ├── skill-1/ │ └── SKILL.md # 必需 └── skill-2/ └── SKILL.md文件加载顺序和优先级:
AGENTS.md(如果存在,最高优先级).ruler/AGENTS.md(新标准,推荐).ruler/instructions.md(旧版,向后兼容).ruler/ 下的其他 .md 文件(按字母顺序)所有文件内容会被合并,每个文件前会自动添加来源标记。
这是 Ruler 的杀手级特性,特别适合复杂项目。
使用场景:
my-monorepo/├── .ruler/ # 全局规则│ ├── AGENTS.md│ └── global_standards.md├── frontend/│ └── .ruler/ # 前端特定规则│ └── react_guidelines.md├── backend/│ └── .ruler/ # 后端特定规则│ └── api_standards.md└── docs/ └── .ruler/ # 文档写作规则 └── writing_style.md启用方式:
# .ruler/ruler.tomlnested = true或使用 CLI 参数:
ruler apply --nested适用场景:
为什么重要?
Model Context Protocol (MCP) 为 AI 模型提供额外的上下文和能力:文件系统访问、Git 操作、远程 API 调用、数据库查询等。但每个工具的 MCP 配置格式都不同,Ruler 统一管理。
配置示例:
# .ruler/ruler.toml[mcp]enabled = truemerge_strategy = "merge" # 或 "overwrite"# 本地 stdio 服务器[mcp_servers.filesystem]command = "npx"args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]# Git 服务器[mcp_servers.git]command = "npx"args = ["-y", "@modelcontextprotocol/server-git", "--repository", "."]# 远程服务器[mcp_servers.api]url = "https://mcp.example.com"[mcp_servers.api.headers]Authorization = "Bearer your-token"Ruler 会自动将 MCP 配置转换为各工具的格式并分发。
什么是 Agent Skills?
Agent Skills 是 AI 代理的可复用能力包,类似于软件的插件系统。详见我的另一篇文章《Agent Skills 深度解析:为 AI 代理构建可复用的技能生态系统》。
Ruler 的 Skills 管理:
.ruler/skills/├── obsidian-workflow/│ ├── SKILL.md # 必需:技能说明│ ├── templates/ # 可选:模板文件│ └── scripts/ # 可选:辅助脚本└── api-design/ ├── SKILL.md └── examples/Ruler 会将 Skills 自动复制到各工具的 skills 目录(.claude/skills/、.codex/skills/、.opencode/skill/ 等)。
Ruler 支持 30+ 种 AI 编程助手,包括:
常用工具:
完整列表详见:Ruler GitHub[4]
# 全局安装(推荐)npm install -g @intellectronica/ruler# 或使用 npx(一次性)npx @intellectronica/ruler apply要求:Node.js ^20.19.0 || ^22.12.0 || >=23
# 进入项目目录cd your-project# 初始化 Rulerruler init这会创建 .ruler/ 目录、AGENTS.md 和 ruler.toml 配置文件。
ruler init# .ruler/AGENTS.md## 项目概述这是一个 TypeScript + React 项目,使用 Vite 构建。## 代码规范- 使用 TypeScript strict 模式- 组件使用函数式写法,优先使用 hooks- 使用 ESLint 和 Prettier- 所有导出函数必须有 JSDoc 注释## 测试要求- 每个功能必须有单元测试- 使用 Vitest 作为测试框架- 测试覆盖率不低于 80%ruler apply# 只配置 Cursor 和 Clauderuler apply --agents cursor,claude# 查看详细输出ruler apply --agents cursor,claude --verbose编辑 .ruler/ruler.toml:
[mcp]enabled = true[mcp_servers.filesystem]command = "npx"args = ["-y", "@modelcontextprotocol/server-filesystem", "${PROJECT_ROOT}"][mcp_servers.git]command = "npx"args = ["-y", "@modelcontextprotocol/server-git", "--repository", "."]然后应用配置:
ruler apply --mcp创建 Skills:
mkdir -p .ruler/skills/api-designcat > .ruler/skills/api-design/SKILL.md << 'EOF'# API Design Guidelines## REST API 设计原则1. **资源命名** - 使用名词复数形式:`/users`, `/products` - 避免动词2. **HTTP 方法** - GET:获取资源 - POST:创建资源 - PUT:完整更新资源 - PATCH:部分更新资源 - DELETE:删除资源EOF应用 Skills:
ruler apply --skills在 .ruler/ruler.toml 中启用:
nested = true然后从项目根目录运行:
ruler apply --nestedRuler 会自动发现所有嵌套的 .ruler/ 目录并合并规则。
| Instructions 统一 | ||
| MCP 配置 | ||
| Skills 管理 | ||
| 嵌套规则 | ||
| 自动化 | ||
| 学习成本 |
推荐使用场景:
使用 AGENTS.md 即可:
Ruler 更适合:
最佳实践:结合使用
.ruler/ 目录提交到版本控制ruler apply# .gitignore# 生成的文件由 Ruler 自动管理,不提交AGENTS.md.cursor/mcp.json.mcp.json.claude/skills/# .ruler/ 目录提交到版本控制!.ruler/{"scripts": {"ruler:apply": "ruler apply","ruler:check": "ruler apply --dry-run","postinstall": "npm run ruler:apply" }}创建团队配置模板:
team-configs/├── ruler-templates/│ ├── frontend.toml│ ├── backend.toml│ └── fullstack.toml└── skills/ ├── company-api-design/ └── security-guidelines/项目初始化时复制团队配置:
cp team-configs/ruler-templates/frontend.toml .ruler/ruler.tomlcp -r team-configs/skills/* .ruler/skills/ruler applyAGENTS.md 标准统一了 instructions 文件的名称和位置,但 MCP 配置、Agent Skills 管理和嵌套规则等问题依然需要手动处理。Ruler 以 " 单一数据源 " 的理念填补了这个空白,支持 30+ 种 AI 编程助手的自动化配置管理,特别适合频繁切换多个工具、使用复杂项目结构或需要团队标准化的场景。通过一键 ruler apply 命令,你可以将集中管理的配置自动分发到各个工具,大幅降低维护成本,让配置管理回归简单。
Ruler: https://github.com/intellectronica/ruler
[2]AGENTS.md:统一编码助手指令文件的新标准: https://mp.weixin.qq.com/s/6ZEGcGzt-Nsb1h354ySscg
[3]AGENTS.md: https://agents.md/
[4]Ruler GitHub: https://github.com/intellectronica/ruler