ruler

GitHub
2.6k 137 简单 1 次阅读 今天MITAgent图像语言模型开发框架
AI 解读 由 AI 自动生成,仅供参考

Ruler 是一款专为统一 AI 编程助手指令而设计的开源工具。随着开发团队引入 GitHub Copilot、Claude Code、Cursor 等多种 AI 代理,维护各自独立的配置文件往往导致指令不一致、重复劳动以及项目上下文漂移等问题。Ruler 通过建立单一的“真理来源”,巧妙解决了这一痛点:开发者只需在项目的 .ruler/ 目录中用 Markdown 编写一套规则,Ruler 即可自动将这些指令分发并同步到各个 AI 工具对应的配置文件中。

该工具特别适合需要同时使用多种 AI 编码辅助的开发者和技术团队,尤其是那些拥有复杂目录结构、需要针对不同模块定制特定指令的大型项目。Ruler 的核心亮点在于支持嵌套规则加载,允许在不同子目录中定义局部规则,从而灵活适应多层次的项目架构。此外,它还具备 MCP(模型上下文协议)服务器配置的自动传播能力,并能智能管理 .gitignore 以避免生成的配置文件污染版本控制。通过简单的命令行操作,Ruler 让多 AI 环境的协作变得规范、高效且易于维护,帮助团队将精力重新聚焦于代码本身。

使用场景

某中型电商团队在重构支付模块时,需同时协调后端、前端及测试人员使用 GitHub Copilot、Claude Code 和 Cursor 等多种 AI 编程助手进行开发。

没有 ruler 时

  • 规则维护繁琐:团队需在 .vscode/、根目录及各子模块中手动维护多份重复的 AGENTS.mdCLAUDE.md 文件,一旦安全规范变更,修改工作量巨大。
  • 输出风格割裂:由于缺乏统一约束,Copilot 生成的代码偏向简洁,而 Claude 倾向于详细注释,导致合并后的代码库风格混乱,增加 Review 成本。
  • 上下文配置易错:针对不同微服务组件的特定指令(如“支付模块严禁硬编码密钥”)容易遗漏配置到某个工具的专属文件中,引发合规风险。
  • 新人接入困难:新成员配置本地 AI 环境时,常因漏配某个代理的规则文件或 MCP 服务器地址,导致 AI 产出不符合项目标准。

使用 ruler 后

  • 单一事实来源:团队只需在 .ruler/ 目录下编写一套 Markdown 规则,ruler 即可自动将其分发同步至所有支持的 AI 工具配置文件中。
  • 标准化输出:通过中央化指令,确保所有代理生成的代码均遵循统一的命名规范、注释风格及安全策略,显著提升代码一致性。
  • 精准上下文控制:利用 ruler 的嵌套规则加载功能,可在支付子目录单独定义特定约束,自动覆盖全局规则,确保敏感模块的指令精准生效。
  • 一键环境初始化:新成员仅需运行 ruler 初始化命令,即可自动完成所有 AI 代理的配置与 .gitignore 设置,实现分钟级无缝接入。

ruler 通过将分散的 AI 指令收敛为单一真理源,彻底解决了多代理协作中的配置碎片化难题,让团队能专注于业务逻辑而非工具维护。

运行环境要求

操作系统
  • Linux
  • macOS
  • Windows
GPU

未说明

内存

未说明

依赖
notes该工具是一个基于 Node.js 的命令行界面 (CLI),用于集中管理 AI 编码助手的指令。它不需要 GPU 或大量内存,主要通过 npm 安装。支持全局配置和本地项目配置,并具备嵌套规则加载功能(实验性)。
python未说明
Node.js ^20.19.0 || ^22.12.0 || >=23
ruler hero image

快速开始

Ruler:集中管理您的 AI 编码助手指令

CI npm version License: MIT


动画由Elite AI-Assisted CodingIsaac Flath 制作 ➡︎

Ruler 演示

测试版研究预览

为什么选择 Ruler?

随着团队规模的扩大,跨多个 AI 编码工具管理指令会变得复杂。不同的 AI 助手(如 GitHub Copilot、Claude、Cursor、Aider 等)需要各自的配置文件,这会导致:

  • AI 工具之间的指导不一致
  • 维护多个配置文件的重复工作
  • 项目需求变化时的上下文偏差
  • 新 AI 工具的上手难度增加
  • 复杂的项目结构需要针对不同组件的特定上下文指令

Ruler 通过提供所有 AI 助手指令的单一可信源来解决这些问题,并自动将这些指令分发到相应的配置文件中。借助嵌套规则加载功能,Ruler 能够处理复杂的项目结构,为不同组件提供特定于上下文的指令。

核心功能

  • 集中式规则管理:使用 Markdown 文件将所有 AI 指令存储在一个专用的 .ruler/ 目录中
  • 嵌套规则加载:支持复杂的项目结构,允许为不同上下文设置多个 .ruler/ 目录
  • 自动分发:Ruler 会将这些规则应用到受支持的 AI 助手的配置文件中
  • 目标明确的助手配置:通过 ruler.toml 文件精确控制受影响的助手及其特定的输出路径
  • MCP 服务器传播:管理和分发模型上下文协议(MCP)服务器设置
  • .gitignore 自动化:自动生成的助手配置文件会自动排除在版本控制之外
  • 简洁的命令行界面:提供易于使用的命令来初始化和应用配置

支持的 AI 代理

代理 规则文件(s) MCP 配置 / 备注 技能支持 / 位置
AGENTS.md AGENTS.md (伪代理,确保根目录存在 AGENTS.md -
GitHub Copilot AGENTS.md .vscode/mcp.json .claude/skills/
Claude Code CLAUDE.md .mcp.json .claude/skills/
OpenAI Codex CLI AGENTS.md .codex/config.toml .codex/skills/
Pi 编码代理 AGENTS.md - .pi/skills/
Jules AGENTS.md - -
Cursor AGENTS.md .cursor/mcp.json .cursor/skills/
Windsurf AGENTS.md .windsurf/mcp_config.json .windsurf/skills/
Cline .clinerules - -
Crush CRUSH.md .crush.json -
Amp AGENTS.md - .agents/skills/
Antigravity .agent/rules/ruler.md - .agent/skills/
Amazon Q CLI .amazonq/rules/ruler_q_rules.md .amazonq/mcp.json -
Aider AGENTS.md, .aider.conf.yml .mcp.json -
Firebase Studio .idx/airules.md .idx/mcp.json -
Open Hands .openhands/microagents/repo.md config.toml -
Gemini CLI AGENTS.md .gemini/settings.json .gemini/skills/
Junie .junie/guidelines.md .junie/mcp/mcp.json .junie/skills/
AugmentCode .augment/rules/ruler_augment_instructions.md - -
Kilo Code AGENTS.md .kilocode/mcp.json .claude/skills/
OpenCode AGENTS.md opencode.json .opencode/skills/
Goose .goosehints - .agents/skills/
Qwen Code AGENTS.md .qwen/settings.json -
RooCode AGENTS.md .roo/mcp.json .roo/skills/
Zed AGENTS.md .zed/settings.json(项目根目录,不在 $HOME) -
Trae AI .trae/rules/project_rules.md - -
Warp WARP.md - -
Kiro .kiro/steering/ruler_kiro_instructions.md .kiro/settings/mcp.json -
Firebender firebender.json firebender.json(规则和 MCP 在同一文件中) -
Factory Droid AGENTS.md .factory/mcp.json .factory/skills/
Mistral Vibe AGENTS.md .vibe/config.toml .vibe/skills/
JetBrains AI Assistant .aiassistant/rules/AGENTS.md - -

开始使用

安装

需要 Node.js ^20.19.0 || ^22.12.0 || >=23

全局安装(推荐用于 CLI 使用):

npm install -g @intellectronica/ruler

使用 npx(用于一次性命令):

npx @intellectronica/ruler apply

项目初始化

  1. 导航到您的项目根目录
  2. 运行 ruler init
  3. 这将创建:
  • .ruler/ 目录
  • .ruler/AGENTS.md:您规则的主要入门 Markdown 文件
  • .ruler/ruler.toml:Ruler 的主配置文件(现在包含示例 MCP 服务器部分;旧版 .ruler/mcp.json 不再自动生成)
  • (可选的旧版回退)如果您之前使用过 .ruler/instructions.md,在缺少 AGENTS.md 时仍会生效。(之前的运行时警告已被移除。)

此外,您还可以创建一个全局配置,在未找到本地 .ruler/ 目录时使用:

ruler init --global

全局配置将被创建到 $XDG_CONFIG_HOME/ruler(默认:~/.config/ruler)。

核心概念

.ruler/ 目录

这是您所有 AI 代理指令的中央枢纽:

  • 主要文件顺序与优先级
    1. 如果存在,仓库根目录下的 AGENTS.md(位于 .ruler/ 外部)(优先级最高,会前置插入)
    2. .ruler/AGENTS.md(新的默认起始文件)
    3. 旧版的 .ruler/instructions.md(仅当 .ruler/AGENTS.md 不存在时使用;不再发出弃用警告)
    4. .ruler/ 及其子目录中按排序顺序发现的其余 .md 文件
  • 规则文件(*.md:从 .ruler/$XDG_CONFIG_HOME/ruler 中递归发现,并按照上述顺序拼接。
  • 拼接标记:每个文件的内容前都会添加 <!-- Source: <relative_path_to_md_file> -->,以便追踪来源。
  • ruler.toml:Ruler 行为、代理选择、输出路径以及 MCP 服务器设置的主配置文件。
  • mcp.json:(旧版,已弃用)共享的 MCP 服务器设置——不再自动生成,但仍为向后兼容而保留。

这种顺序设计允许您在根目录下保留一份简短但极具影响力的 AGENTS.md 文件(例如项目高层概要),同时将详细指导内容存放在 .ruler/ 中。

嵌套规则加载

Ruler 现在支持通过 --nested 标志进行嵌套规则加载,从而为项目的不同部分提供特定于上下文的指令:

project/
├── .ruler/           # 全局项目规则
│   ├── AGENTS.md
│   └── coding_style.md
├── src/
│   └── .ruler/       # 组件特定规则
│       └── api_guidelines.md
├── tests/
│   └── .ruler/       # 测试特定规则
│       └── testing_conventions.md
└── docs/
    └── .ruler/       # 文档规则
        └── writing_style.md

工作原理

  • 发现项目层级中的所有 .ruler/ 目录。
  • 按照顺序加载并拼接每个目录中的规则。
  • 是否启用嵌套模式由以下优先级决定:
    1. ruler apply --nested(或 --no-nested)具有最高优先级。
    2. ruler.toml 中的 nested = true 设置。
    3. 如果两者均未指定,则默认禁用。
  • 当运行处于嵌套模式时,下游配置会被强制保持 nested = true。如果子配置尝试将其禁用,Ruler 仍会维持嵌套处理,并在日志中发出警告。
  • 嵌套处理会传递每个目录自身的 MCP 包和配置设置,从而使生成的文件始终限定在其源目录范围内,同时被规范化回项目根目录。

[!CAUTION] 嵌套模式目前处于实验阶段,未来版本可能会发生变化。CLI 会在首次检测到嵌套运行时记录此警告,以提醒您该行为可能随时间演进。

适用场景

  • 包含多个服务的单体代码库。
  • 具有明确组件划分的项目(如前端/后端)。
  • 需要针对不同领域制定不同指令的团队。
  • 规范要求各异的复杂代码库。

规则文件的最佳实践

粒度化:将复杂的指令拆分为专注的 .md 文件:

  • coding_style.md
  • api_conventions.md
  • project_architecture.md
  • security_guidelines.md

规则文件示例(.ruler/python_guidelines.md

# Python 项目指南

## 通用风格

- 所有 Python 代码应遵循 PEP 8 规范。
- 所有函数签名及复杂变量应使用类型注解。
- 函数应尽量简短,专注于单一任务。

## 错误处理

- 应使用具体的异常类型,而非通用的 `Exception`。
- 记录错误时需包含上下文信息。

## 安全性

- 始终对用户输入进行验证和清理。
- 注意潜在的注入漏洞。

使用方法:apply 命令

主命令

ruler apply [options]

apply 命令会在当前目录树中查找 .ruler/,并读取第一个匹配项。若未找到此类目录,则会搜索 $XDG_CONFIG_HOME/ruler 中的全局配置。

选项

选项 描述
--project-root <path> 项目根目录路径(默认:当前目录)。
--agents <agent1,agent2,...> 以逗号分隔的目标代理名称列表(参见下方支持列表)。
--config <path> 自定义 ruler.toml 路径。
--mcp / --with-mcp 启用应用 MCP 服务器配置(默认:开启)。
--no-mcp 禁用应用 MCP 服务器配置。
--mcp-overwrite 覆盖原生 MCP 配置,而非合并。
--gitignore 启用自动更新 .gitignore 文件(默认:开启)。
--no-gitignore 禁用自动更新 .gitignore 文件。
--gitignore-local 将管理的忽略条目写入 .git/info/exclude 文件中,而非 .gitignore
--nested 启用嵌套规则加载(默认:继承配置设置或禁用)。
--no-nested 即使配置中设置了 nested = true,也禁用嵌套规则加载。
--backup 启用创建 .bak 备份文件(默认:开启)。
--no-backup 禁用创建 .bak 备份文件。
--skills 启用技能支持(实验性功能,默认:开启)。
--no-skills 禁用技能支持。
--dry-run 预览更改而不实际写入文件。
--local-only 查找配置时跳过 $XDG_CONFIG_HOME
--verbose / -v 在执行过程中显示详细输出。

常见示例

为所有已配置的代理应用规则:

ruler apply

仅为 GitHub Copilot 和 Claude 应用规则:

ruler apply --agents copilot,claude

仅为 Firebase Studio 应用规则:

ruler apply --agents firebase

仅为 Warp 应用规则:

ruler apply --agents warp

仅为 Trae AI 应用规则:

ruler apply --agents trae

仅为 RooCode 应用规则:

ruler apply --agents roo

使用特定配置文件:

ruler apply --config ./team-configs/ruler.frontend.toml

以详细模式应用规则:

ruler apply --verbose

应用规则但跳过 MCP 和 .gitignore 更新:

ruler apply --no-mcp --no-gitignore

使用方法:revert 命令

revert 命令可以安全地撤销由 ruler apply 所做的所有更改,将您的项目恢复到应用规则之前的初始状态。它会智能地从备份文件(.bak 文件)中恢复文件(如果存在),或者移除那些原本不存在的生成文件。

为什么需要使用 revert

在尝试不同的规则配置或切换不同项目时,您可能希望:

  • 清空所有内容:移除所有由 Ruler 生成的文件,以便重新开始。
  • 恢复原始文件:将被修改的文件恢复为它们的原始状态。
  • 选择性清理:仅移除特定代理的配置。
  • 安全实验:在不用担心永久性更改的情况下试用 Ruler。

主要命令

ruler revert [选项]

选项

选项 描述
--project-root <路径> 指定项目的根目录路径(默认为当前目录)
--agents <agent1,agent2,...> 以逗号分隔的代理名称列表,用于指定要还原的代理(agentsmd、aider、amazonqcli、amp、antigravity、augmentcode、claude、cline、codex、copilot、crush、cursor、factory、firebase、firebender、gemini-cli、goose、jetbrains-ai、jules、junie、kilocode、kiro、mistral、opencode、openhands、pi、qwen、roo、trae、warp、windsurf、zed)
--config <路径> 自定义 ruler.toml 配置文件的路径
--keep-backups 在恢复后保留备份文件(.bak 文件)(默认为不保留)
--dry-run 预览将要执行的更改,但不会实际还原文件
--verbose / -v 在执行过程中显示详细输出
--local-only 仅搜索本地 .ruler 目录,忽略全局配置

常见示例

还原所有 Ruler 更改:

ruler revert

预览将要还原的内容(模拟运行):

ruler revert --dry-run

仅还原特定代理:

ruler revert --agents claude,copilot

以详细模式还原:

ruler revert --verbose

在还原后保留备份文件:

ruler revert --keep-backups

配置文件 (ruler.toml) 详解

位置

默认位于项目根目录下的 .ruler/ruler.toml。可以通过 --config CLI 选项进行覆盖。

完整示例

# 当未指定 --agents 时,默认运行的代理
# 使用不区分大小写的子字符串匹配
default_agents = ["copilot", "claude", "aider"]

# --- 全局 MCP 服务器配置 ---
[mcp]
# 全局启用或禁用 MCP 传播(默认:启用)
enabled = true
# 全局合并策略:'merge' 或 'overwrite'(默认:'merge')
merge_strategy = "merge"

# --- MCP 服务器定义 ---
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]

[mcp_servers.git]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-git", "--repository", "."]

[mcp_servers.remote_api]
url = "https://api.example.com"

[mcp_servers.remote_api.headers]
Authorization = "Bearer your-token"

# --- 全局 .gitignore 配置 ---
[gitignore]
# 启用或禁用自动更新 .gitignore(默认:启用)
enabled = true
# 将受管理的条目写入 .git/info/exclude 而不是 .gitignore(默认:不启用)
local = false

# --- 代理特定配置 ---
[agents.copilot]
enabled = true

[agents.claude]
enabled = true
output_path = "CLAUDE.md"

[agents.aider]
enabled = true
output_path_instructions = "AGENTS.md"
output_path_config = ".aider.conf.yml"

# OpenAI Codex CLI 代理及 MCP 配置
[agents.codex]
enabled = true
output_path = "AGENTS.md"
output_path_config = ".codex/config.toml"

# Codex CLI 的代理特定 MCP 配置
[agents.codex.mcp]
enabled = true
merge_strategy = "merge"

[agents.firebase]
enabled = true
output_path = ".idx/airules.md"

[agents.gemini-cli]
enabled = true

[agents.jules]
enabled = true

[agents.junie]
enabled = true
output_path = ".junie/guidelines.md"

[agents.junie.mcp]
enabled = true
merge_strategy = "merge"

# 代理特定的 MCP 配置
[agents.cursor.mcp]
enabled = true
merge_strategy = "merge"

# 禁用特定代理
[agents.windsurf]
enabled = false

[agents.kilocode]
enabled = true
output_path = "AGENTS.md"

[agents.warp]
enabled = true
output_path = "WARP.md"

配置优先级

  1. CLI 标志(例如 --agents--no-mcp--mcp-overwrite--no-gitignore
  2. ruler.toml 中的设置default_agents、特定代理设置、全局部分)
  3. Ruler 的内置默认值(所有代理均启用、标准输出路径、MCP 默认启用且采用 'merge' 策略)

MCP(模型上下文协议)服务器配置

MCP 通过服务器配置为 AI 模型提供更广泛的上下文信息。Ruler 可以管理和分发这些设置到兼容的代理中。

TOML 配置(推荐)

现在您可以在 ruler.toml 中直接使用 [mcp_servers.<name>] 语法定义 MCP 服务器:

# 全局 MCP 行为
[mcp]
enabled = true
merge_strategy = "merge"  # 或者 "overwrite"

# 本地(stdio)服务器
[mcp_servers.filesystem]
command = "npx"
args = ["-y", "@modelcontextprotocol/server-filesystem", "/path/to/project"]

[mcp_servers.filesystem.env]
API_KEY = "your-api-key"

# 远程服务器
[mcp_servers.search]
url = "https://mcp.example.com"

[mcp_servers.search.headers]
Authorization = "Bearer your-token"
"X-API-Version" = "v1"

旧版 .ruler/mcp.json(已弃用)

为了向后兼容,您仍然可以使用 JSON 格式;系统会发出警告,鼓励迁移到 TOML 格式。该文件在执行 ruler init 时将不再创建。

{
  "mcpServers": {
    "filesystem": {
      "command": "npx",
      "args": [
        "-y",
        "@modelcontextprotocol/server-filesystem",
        "/path/to/project"
      ]
    },
    "git": {
      "command": "npx",
      "args": ["-y", "@modelcontextprotocol/server-git", "--repository", "."]
    }
  }
}

配置优先级

当同时存在 TOML 和 JSON 配置时:

  1. TOML 服务器优先于同名的 JSON 服务器。
  2. 服务器配置合并自两个来源(除非使用覆盖策略)。
  3. 弃用警告会提示您迁移至 TOML 格式(每运行一次显示一次警告)。

服务器类型

本地/stdio 服务器需要 command 字段:

[mcp_servers.local_server]
command = "node"
args = ["server.js"]

[mcp_servers.local_server.env]
DEBUG = "1"

远程服务器需要 url 字段(头部信息可选;对于 OpenHands,如果可能的话,会自动提取 Bearer 授权令牌):

[mcp_servers.remote_server]
url = "https://api.example.com"

[mcp_servers.remote_server.headers]
Authorization = "Bearer token"

Ruler 使用此配置,并根据 ruler.toml 或 CLI 标志控制的 merge(默认)或 overwrite 策略来处理。

主目录安全性: Ruler 绝不会在您的项目根目录之外写入 MCP 配置文件。任何涉及用户主目录的历史引用(例如 ~/.codeium/windsurf/mcp_config.json~/.zed/settings.json)已被移除;仅针对项目本地路径进行操作。

OpenAI Codex CLI 注意事项: 若要应用本地 Codex CLI 的 MCP 配置,请将 CODEX_HOME 环境变量设置为您项目的 .codex 目录:

export CODEX_HOME="$(pwd)/.codex"

技能支持(实验性)

⚠️ 实验性功能: 技能支持目前处于实验阶段。技能只会传播到具有原生技能支持的代理;其他代理则会被跳过,并显示警告。

Ruler 可以管理和传播技能到受支持的 AI 代理。技能存储在 .ruler/skills/ 目录中,当您运行 ruler apply 时,它们会自动分发给兼容的代理。

工作原理

技能是专门的知识包,能够通过领域特定的专业知识、工作流程或工具集成来扩展 AI 代理的能力。Ruler 会在您的 .ruler/skills/ 目录中发现技能,并将其传播到兼容的代理:

  • 具有原生技能支持的代理: 技能会直接复制到每个代理的原生技能目录中:
    • Claude Code: .claude/skills/
    • GitHub Copilot: .claude/skills/(与 Claude Code 共享)
    • Kilo Code: .claude/skills/(与 Claude Code 共享)
    • OpenAI Codex CLI: .codex/skills/
    • OpenCode: .opencode/skills/
    • Pi Coding Agent: .pi/skills/
    • Goose: .agents/skills/
    • Amp: .agents/skills/(与 Goose 共享)
    • Antigravity: .agent/skills/
    • Factory Droid: .factory/skills/
    • Mistral Vibe: .vibe/skills/
    • Roo Code: .roo/skills/
    • Gemini CLI: .gemini/skills/
    • Junie: .junie/skills/
    • Cursor: .cursor/skills/
    • Windsurf: .windsurf/skills/

技能目录结构

技能可以采用扁平化或嵌套式组织:

.ruler/skills/
├── my-skill/
│   ├── SKILL.md           # 必需:技能说明/知识
│   ├── helper.py          # 可选:附加资源(脚本)
│   └── reference.md       # 可选:附加资源(文档)
└── another-skill/
    └── SKILL.md

每个技能必须包含:

  • SKILL.md - 主要技能文件,包含说明或知识库。

技能还可以选择性地包含以下附加资源:

  • 带有补充文档的 Markdown 文件
  • Python、JavaScript 或其他脚本
  • 配置文件或数据

配置

技能支持默认启用,但可以通过以下方式控制:

CLI 标志:

# 启用技能(默认)
ruler apply --skills

# 禁用技能
ruler apply --no-skills

ruler.toml 中的配置:

[skills]
enabled = true  # 或 false 以禁用

非原生代理

如果您为不支持原生技能的代理运行 Ruler,Ruler 将记录警告,并跳过对这些代理的技能传播。

.gitignore 集成

当技能支持启用且 .gitignore 集成生效时,Ruler 会自动将以下目录添加到您管理的 Ruler 区块内的 .gitignore 文件中:

  • .claude/skills/(适用于 Claude Code、GitHub Copilot 和 Kilo Code)
  • .codex/skills/(适用于 OpenAI Codex CLI)
  • .opencode/skills/(适用于 OpenCode)
  • .pi/skills/(适用于 Pi Coding Agent)
  • .agents/skills/(适用于 Goose 和 Amp)
  • .agent/skills/(适用于 Antigravity)
  • .factory/skills/(适用于 Factory Droid)
  • .vibe/skills/(适用于 Mistral Vibe)
  • .roo/skills/(适用于 Roo Code)
  • .gemini/skills/(适用于 Gemini CLI)
  • .junie/skills/(适用于 Junie)
  • .cursor/skills/(适用于 Cursor)
  • .windsurf/skills/(适用于 Windsurf)

要求

  • 对于具有原生技能支持的代理(Claude Code、GitHub Copilot、Kilo Code、OpenAI Codex CLI、OpenCode、Pi Coding Agent、Goose、Amp、Antigravity、Factory Droid、Mistral Vibe、Roo Code、Gemini CLI、Junie、Cursor、Windsurf):无需额外要求。

验证

Ruler 会对发现的技能进行验证,并对以下情况发出警告:

  • 缺少必需文件(SKILL.md
  • 目录结构无效(没有 SKILL.md 且没有子技能)

警告不会阻止传播,但有助于识别潜在问题。

模拟运行模式

在不进行实际更改的情况下测试技能传播:

ruler apply --dry-run

这将显示哪些技能会被复制。

示例工作流程

# 1. 向您的项目添加一个技能
mkdir -p .ruler/skills/my-skill
cat > .ruler/skills/my-skill/SKILL.md << 'EOF'
# 我的自定义技能

此技能提供了关于...的专业知识。

## 使用方法

在处理该项目时,请始终遵循以下指南:
- 所有新代码均使用 TypeScript
- 为所有功能编写测试
- 遵循现有代码风格
EOF

# 2. 应用到所有智能体(技能默认启用)
ruler apply

# 3. 技能现在可供兼容的智能体使用:
#    - Claude Code、GitHub Copilot 和 Kilo Code:.claude/skills/my-skill/
#    - OpenAI Codex CLI:.codex/skills/my-skill/
#    - OpenCode:.opencode/skills/my-skill/
#    - Pi 编码智能体:.pi/skills/my-skill/
#    - Goose 和 Amp:.agents/skills/my-skill/
#    - Antigravity:.agent/skills/my-skill/
#    - Factory Droid:.factory/skills/my-skill/
#    - Mistral Vibe:.vibe/skills/my-skill/
#    - Roo Code:.roo/skills/my-skill/
#    - Gemini CLI:.gemini/skills/my-skill/
#    - Junie:.junie/skills/my-skill/
#    - Cursor:.cursor/skills/my-skill/
#    - Windsurf:.windsurf/skills/my-skill/

.gitignore 集成

Ruler 会自动管理您的 .gitignore 文件,以确保生成的智能体配置文件不会被纳入版本控制。

工作原理

  • 在项目根目录创建或更新 .gitignore
  • 将路径添加到由 # START Ruler Generated Files# END Ruler Generated Files 标记的受管区域
  • 保留该区域之外的现有内容
  • 按字母顺序对路径进行排序,并使用相对的 POSIX 风格路径

示例 .gitignore 部分(示例——实际列表取决于已启用的智能体)

# 您现有的规则
node_modules/
*.log

# START Ruler Generated Files
.aider.conf.yml
.clinerules
AGENTS.md
CLAUDE.md
# END Ruler Generated Files

dist/

控制选项

  • CLI 标志--gitignore--no-gitignore--gitignore-local--no-gitignore-local
  • 配置ruler.toml 中的 [gitignore].enabled[gitignore].local
  • 默认值:启用

实际使用场景

场景 1:快速入门

# 在您的项目中初始化 Ruler
cd your-project
ruler init

# 编辑生成的文件
# - 将编码规范添加到 .ruler/AGENTS.md(或继续添加其他 .md 文件)
# - 如有必要,自定义 .ruler/ruler.toml

# 将规则应用到所有 AI 智能体
ruler apply

场景 2:具有嵌套规则的复杂项目

对于包含多个组件或服务的大型项目,可以启用嵌套规则加载,使每个目录都保留自己的规则和 MCP 包:

# 设置嵌套的 .ruler 目录
mkdir -p src/.ruler tests/.ruler docs/.ruler

# 添加组件特定的说明
echo "# API 设计指南" > src/.ruler/api_rules.md
echo "# 测试最佳实践" > tests/.ruler/test_rules.md
echo "# 文档标准" > docs/.ruler/docs_rules.md
# .ruler/ruler.toml
nested = true
# CLI 会从 ruler.toml 继承嵌套模式
ruler apply --verbose

# 可随时通过 CLI 覆盖
ruler apply --no-nested

这样可以在保持根目录 .ruler/ 中全局规则的同时,为项目的不同部分创建特定于上下文的说明。嵌套运行会自动确保每个嵌套配置都处于启用状态,即使子目录尝试将其禁用。

[!NOTE] 第一次执行嵌套处理时,CLI 会打印“嵌套模式为实验性功能,未来版本可能会更改。”预计在后续版本中会有进一步改进。

场景 3:团队标准化

  1. 创建 .ruler/coding_standards.md.ruler/api_usage.md
  2. .ruler 目录提交到您的仓库
  3. 团队成员拉取更改并运行 ruler apply 来更新他们本地的 AI 智能体配置。

场景 4:针对项目的特定上下文使用 AI

  1. .ruler/project_overview.md 中详细说明项目的架构
  2. .ruler/data_models.md 中描述主要的数据结构
  3. 运行 ruler apply 以帮助 AI 工具提供更相关的建议。

与 NPM 脚本集成

{
  "scripts": {
    "ruler:apply": "ruler apply",
    "dev": "npm run ruler:apply && your_dev_command",
    "precommit": "npm run ruler:apply"
  }
}

与 GitHub Actions 集成

# .github/workflows/ruler-check.yml
name: 检查 Ruler 配置
on:
  pull_request:
    paths: ['.ruler/**']

jobs:
  check-ruler:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-node@v4
        with:
          node-version: '20'
          cache: 'npm'

      - name: 安装 Ruler
        run: npm install -g @intellectronica/ruler

      - name: 应用 Ruler 配置
        run: ruler apply --no-gitignore

      - name: 检查是否有未提交的更改
        run: |
          if [[ -n $(git status --porcelain) ]]; then
            echo "::error::Ruler 配置不同步!"
            echo "请在本地运行 'ruler apply' 并提交更改。"
            exit 1
          fi

故障排除

常见问题

“无法找到模块”错误:

  • 确保已全局安装 Ruler:npm install -g @intellectronica/ruler
  • 或者使用 npx @intellectronica/ruler

权限拒绝错误:

  • 在 Unix 系统上,全局安装可能需要 sudo

智能体文件未更新:

  • 检查智能体是否在 ruler.toml 中已启用
  • 确认智能体未被 --agents 标志排除
  • 使用 --verbose 查看详细的执行日志

配置验证错误:

  • Ruler 现在会验证 ruler.toml 的格式,并显示具体的错误信息
  • 检查所有配置值是否符合预期的类型和格式

调试模式

使用 --verbose 标志查看详细的执行日志:

ruler apply --verbose

这将显示:

  • 配置加载详情
  • 智能体选择逻辑
  • 文件处理信息
  • MCP 配置步骤

常见问题解答

问:我可以为不同的代理使用不同的规则吗?
答:目前,所有代理都会收到相同的拼接规则。如果需要针对特定代理的指令,请在规则文件中添加类似“## GitHub Copilot 特定”或“## Aider 配置”的部分。

问:如何为项目的不同部分设置不同的指令?
答:可以通过在 ruler.toml 中设置 nested = true,或者通过传递 ruler apply --nested 来启用嵌套模式。CLI 默认继承配置设置,但如果需要在某次运行中禁用嵌套模式,可以使用 --no-nested 选项。启用嵌套模式后,Ruler 会从目录层次结构中的每个 .ruler/ 目录加载规则(以及 MCP 设置),并强制子配置保持嵌套状态。如果发生任何嵌套处理,Ruler 还会记录一条警告:“嵌套模式处于实验阶段,未来版本可能会发生变化。”

问:如何临时禁用某个代理的 Ruler 功能?
答:可以在 ruler.toml[agents.agentname] 下将 enabled = false,或者使用 --agents 标志来指定您希望启用的代理。

问:我现有的代理配置文件会怎样?
答:Ruler 在覆盖任何现有文件之前,会先创建带有 .bak 扩展名的备份文件。

问:我可以在 CI/CD 管道中运行 Ruler 吗?
答:可以!在 CI 中使用 ruler apply --no-gitignore 可以避免修改 .gitignore 文件。请参阅上面的 GitHub Actions 示例。

问:如何从使用 instructions.md 的旧版本迁移?
答:只需将 .ruler/instructions.md 重命名为 .ruler/AGENTS.md(推荐)。如果您保留了旧版文件而未提供 AGENTS.md,Ruler 仍会使用它(但不会发出旧版弃用警告)。如果同时存在两者,则优先使用 AGENTS.md;旧版文件的内容仍会在之后被拼接进来。

问:OpenHands MCP 传播如何对服务器进行分类?
答:本地标准输入输出服务器会被归类为 stdio_servers。包含 /sse 的远程 URL 被归类为 sse_servers;其他则被归类为 shttp_servers。如果可能的话,还会从 Authorization 头中提取 Bearer 令牌,并将其放入 api_key 字段中。

问:Zed 的配置现在写在哪里?
答:Ruler 会在项目根目录(而非用户主目录)下生成一个 settings.json 文件,并将 MCP 服务器定义转换为 Zed 的 context_servers 格式,其中包含 source: "custom"

问:MCP 初始化有哪些变化?
答:ruler init 现在仅会在 ruler.toml 中添加示例 MCP 服务器部分,而不再创建 .ruler/mcp.json 文件。如果该 JSON 文件存在,仍然会被读取,但在名称冲突时,ruler.toml 中的服务器配置会优先生效。

问:Kiro 是否受支持?
答:是的。Kiro 会在 .kiro/steering/ruler_kiro_instructions.md 文件中接收到拼接后的规则。

开发

设置

git clone https://github.com/intellectronica/ruler.git
cd ruler
npm install
npm run build

测试

# 运行所有测试
npm test

# 运行带覆盖率的测试
npm run test:coverage

# 以监听模式运行测试
npm run test:watch

代码质量

# 运行代码检查
npm run lint

# 运行代码格式化
npm run format

贡献

欢迎贡献!请按照以下步骤操作:

  1. 分支仓库
  2. 创建功能分支
  3. 进行更改
  4. 为新功能添加测试
  5. 确保所有测试通过
  6. 提交拉取请求

如发现错误或有功能需求,请提交问题

许可证

MIT


© 埃莉诺·伯格
ai.intellectronica.net

版本历史

v0.3.382026/03/30
v0.3.372026/03/11
v0.3.362026/03/11
v0.3.352026/02/19
v0.3.342026/02/11
v0.3.332026/02/09
v0.3.322026/02/07
v0.3.312026/02/05
v0.3.302026/02/04
v0.3.292026/01/30
v0.3.282026/01/19
v0.3.272026/01/19
v0.3.262026/01/19
v0.3.252026/01/18
v0.3.242026/01/14
v0.3.232026/01/09
v0.3.222026/01/09
v0.3.212025/12/27
v0.3.202025/12/25
v0.3.192025/12/24

常见问题

相似工具推荐

openclaw

OpenClaw 是一款专为个人打造的本地化 AI 助手,旨在让你在自己的设备上拥有完全可控的智能伙伴。它打破了传统 AI 助手局限于特定网页或应用的束缚,能够直接接入你日常使用的各类通讯渠道,包括微信、WhatsApp、Telegram、Discord、iMessage 等数十种平台。无论你在哪个聊天软件中发送消息,OpenClaw 都能即时响应,甚至支持在 macOS、iOS 和 Android 设备上进行语音交互,并提供实时的画布渲染功能供你操控。 这款工具主要解决了用户对数据隐私、响应速度以及“始终在线”体验的需求。通过将 AI 部署在本地,用户无需依赖云端服务即可享受快速、私密的智能辅助,真正实现了“你的数据,你做主”。其独特的技术亮点在于强大的网关架构,将控制平面与核心助手分离,确保跨平台通信的流畅性与扩展性。 OpenClaw 非常适合希望构建个性化工作流的技术爱好者、开发者,以及注重隐私保护且不愿被单一生态绑定的普通用户。只要具备基础的终端操作能力(支持 macOS、Linux 及 Windows WSL2),即可通过简单的命令行引导完成部署。如果你渴望拥有一个懂你

349.3k|★★★☆☆|1周前
Agent开发框架图像

stable-diffusion-webui

stable-diffusion-webui 是一个基于 Gradio 构建的网页版操作界面,旨在让用户能够轻松地在本地运行和使用强大的 Stable Diffusion 图像生成模型。它解决了原始模型依赖命令行、操作门槛高且功能分散的痛点,将复杂的 AI 绘图流程整合进一个直观易用的图形化平台。 无论是希望快速上手的普通创作者、需要精细控制画面细节的设计师,还是想要深入探索模型潜力的开发者与研究人员,都能从中获益。其核心亮点在于极高的功能丰富度:不仅支持文生图、图生图、局部重绘(Inpainting)和外绘(Outpainting)等基础模式,还独创了注意力机制调整、提示词矩阵、负向提示词以及“高清修复”等高级功能。此外,它内置了 GFPGAN 和 CodeFormer 等人脸修复工具,支持多种神经网络放大算法,并允许用户通过插件系统无限扩展能力。即使是显存有限的设备,stable-diffusion-webui 也提供了相应的优化选项,让高质量的 AI 艺术创作变得触手可及。

162.1k|★★★☆☆|2周前
开发框架图像Agent

everything-claude-code

everything-claude-code 是一套专为 AI 编程助手(如 Claude Code、Codex、Cursor 等)打造的高性能优化系统。它不仅仅是一组配置文件,而是一个经过长期实战打磨的完整框架,旨在解决 AI 代理在实际开发中面临的效率低下、记忆丢失、安全隐患及缺乏持续学习能力等核心痛点。 通过引入技能模块化、直觉增强、记忆持久化机制以及内置的安全扫描功能,everything-claude-code 能显著提升 AI 在复杂任务中的表现,帮助开发者构建更稳定、更智能的生产级 AI 代理。其独特的“研究优先”开发理念和针对 Token 消耗的优化策略,使得模型响应更快、成本更低,同时有效防御潜在的攻击向量。 这套工具特别适合软件开发者、AI 研究人员以及希望深度定制 AI 工作流的技术团队使用。无论您是在构建大型代码库,还是需要 AI 协助进行安全审计与自动化测试,everything-claude-code 都能提供强大的底层支持。作为一个曾荣获 Anthropic 黑客大奖的开源项目,它融合了多语言支持与丰富的实战钩子(hooks),让 AI 真正成长为懂上

160.8k|★★☆☆☆|今天
开发框架Agent语言模型

opencode

OpenCode 是一款开源的 AI 编程助手(Coding Agent),旨在像一位智能搭档一样融入您的开发流程。它不仅仅是一个代码补全插件,而是一个能够理解项目上下文、自主规划任务并执行复杂编码操作的智能体。无论是生成全新功能、重构现有代码,还是排查难以定位的 Bug,OpenCode 都能通过自然语言交互高效完成,显著减少开发者在重复性劳动和上下文切换上的时间消耗。 这款工具专为软件开发者、工程师及技术研究人员设计,特别适合希望利用大模型能力来提升编码效率、加速原型开发或处理遗留代码维护的专业人群。其核心亮点在于完全开源的架构,这意味着用户可以审查代码逻辑、自定义行为策略,甚至私有化部署以保障数据安全,彻底打破了传统闭源 AI 助手的“黑盒”限制。 在技术体验上,OpenCode 提供了灵活的终端界面(Terminal UI)和正在测试中的桌面应用程序,支持 macOS、Windows 及 Linux 全平台。它兼容多种包管理工具,安装便捷,并能无缝集成到现有的开发环境中。无论您是追求极致控制权的资深极客,还是渴望提升产出的独立开发者,OpenCode 都提供了一个透明、可信

144.3k|★☆☆☆☆|3天前
Agent插件

ComfyUI

ComfyUI 是一款功能强大且高度模块化的视觉 AI 引擎,专为设计和执行复杂的 Stable Diffusion 图像生成流程而打造。它摒弃了传统的代码编写模式,采用直观的节点式流程图界面,让用户通过连接不同的功能模块即可构建个性化的生成管线。 这一设计巧妙解决了高级 AI 绘图工作流配置复杂、灵活性不足的痛点。用户无需具备编程背景,也能自由组合模型、调整参数并实时预览效果,轻松实现从基础文生图到多步骤高清修复等各类复杂任务。ComfyUI 拥有极佳的兼容性,不仅支持 Windows、macOS 和 Linux 全平台,还广泛适配 NVIDIA、AMD、Intel 及苹果 Silicon 等多种硬件架构,并率先支持 SDXL、Flux、SD3 等前沿模型。 无论是希望深入探索算法潜力的研究人员和开发者,还是追求极致创作自由度的设计师与资深 AI 绘画爱好者,ComfyUI 都能提供强大的支持。其独特的模块化架构允许社区不断扩展新功能,使其成为当前最灵活、生态最丰富的开源扩散模型工具之一,帮助用户将创意高效转化为现实。

109.2k|★★☆☆☆|昨天
开发框架图像Agent

gemini-cli

gemini-cli 是一款由谷歌推出的开源 AI 命令行工具,它将强大的 Gemini 大模型能力直接集成到用户的终端环境中。对于习惯在命令行工作的开发者而言,它提供了一条从输入提示词到获取模型响应的最短路径,无需切换窗口即可享受智能辅助。 这款工具主要解决了开发过程中频繁上下文切换的痛点,让用户能在熟悉的终端界面内直接完成代码理解、生成、调试以及自动化运维任务。无论是查询大型代码库、根据草图生成应用,还是执行复杂的 Git 操作,gemini-cli 都能通过自然语言指令高效处理。 它特别适合广大软件工程师、DevOps 人员及技术研究人员使用。其核心亮点包括支持高达 100 万 token 的超长上下文窗口,具备出色的逻辑推理能力;内置 Google 搜索、文件操作及 Shell 命令执行等实用工具;更独特的是,它支持 MCP(模型上下文协议),允许用户灵活扩展自定义集成,连接如图像生成等外部能力。此外,个人谷歌账号即可享受免费的额度支持,且项目基于 Apache 2.0 协议完全开源,是提升终端工作效率的理想助手。

100.8k|★★☆☆☆|1周前
插件Agent图像