5.2 Rules规则配置

Rules(规则)用于定义AI助手的行为准则和项目特定的指南。通过规则配置,可以让AI更好地理解项目上下文和团队规范。

AGENTS.md文件

OpenCode使用 AGENTS.md 文件作为规则配置的主要载体。这个文件名与Claude Code的规则文件兼容。

基本结构

# 项目规则

## 项目概述
这是一个基于React的电商平台前端项目。

## 技术栈
- React 18
- TypeScript
- Tailwind CSS
- Zustand (状态管理)

## 代码规范
- 使用函数式组件和Hooks
- 组件文件使用PascalCase命名
- 工具函数使用camelCase命名
- 所有组件必须有TypeScript类型定义

## 目录结构
- src/components - UI组件
- src/pages - 页面组件
- src/hooks - 自定义Hooks
- src/utils - 工具函数
- src/types - TypeScript类型定义

## 注意事项
- 不要直接修改node_modules
- 提交前运行 npm run lint
- 新功能需要添加单元测试

/init命令

使用 /init 命令可以自动生成项目的AGENTS.md文件:

# 在项目根目录执行
/init

OpenCode会分析项目结构,自动生成包含以下内容的规则文件:

  • 检测到的技术栈和框架
  • 项目目录结构说明
  • 常见的开发命令
  • 基本的代码规范建议
提示
生成的AGENTS.md只是起点,建议根据项目实际情况进行补充和完善。

配置层级

OpenCode支持多级规则配置,按优先级从高到低:

1. 项目级配置

位于项目根目录,优先级最高:

project/
├── AGENTS.md           # 项目规则
├── .opencode/
│   └── AGENTS.md       # 或放在.opencode目录
└── src/

2. 全局级配置

位于用户配置目录,作为所有项目的默认规则:

# macOS/Linux
~/.config/opencode/AGENTS.md

# Windows
%APPDATA%\opencode\AGENTS.md

配置合并

多级配置会按优先级合并,项目级配置会覆盖全局配置中的同名规则。

外部文件引用

可以在AGENTS.md中引用外部文件,保持规则文件简洁:

# 项目规则

## 代码规范
@import ./docs/code-style.md

## API文档
@import ./docs/api-reference.md

## 部署流程
@import ./docs/deployment.md

引用语法

语法说明
@import ./path/to/file.md引用相对路径文件
@import /absolute/path.md引用绝对路径文件
@import https://url/file.md引用远程文件(需网络权限)

规则最佳实践

清晰的项目描述

## 项目描述
MyApp是一个面向企业的任务管理系统,主要功能包括:
- 任务创建和分配
- 团队协作
- 进度追踪
- 报表生成

目标用户:中小型企业的项目管理团队

明确的技术约束

## 技术约束
- Node.js版本:>=18.0.0
- 必须使用pnpm作为包管理器
- 数据库:PostgreSQL 15
- 不使用ORM,使用原生SQL
- API遵循RESTful规范

具体的编码规范

## 编码规范

### 命名规则
- 变量:camelCase (例:userName)
- 常量:UPPER_SNAKE_CASE (例:MAX_RETRY_COUNT)
- 类型:PascalCase (例:UserProfile)
- 文件:kebab-case (例:user-profile.ts)

### 函数规范
- 单一职责原则
- 函数不超过50行
- 参数不超过4个
- 必须有JSDoc注释

禁止事项

## 禁止事项
- 不要使用any类型
- 不要使用var声明变量
- 不要在组件中直接调用API
- 不要硬编码配置值
- 不要提交console.log调试代码

Claude Code兼容性

OpenCode的规则系统与Claude Code完全兼容:

Claude CodeOpenCode说明
CLAUDE.mdAGENTS.md两者都支持
.claude/.opencode/配置目录
claude.jsonopencode.jsonJSON配置文件
兼容提示
如果项目中已有 CLAUDE.md 文件,OpenCode会自动识别并使用,无需重命名。

动态规则

可以在JSON配置中设置动态规则:

{
  "rules": {
    "system": "你是一个专业的TypeScript开发者",
    "user": "请使用简洁的代码风格",
    "files": [
      "./docs/rules.md",
      "./CODING_STANDARDS.md"
    ]
  }
}

规则类型

  • system - 系统级规则,作为系统提示词的一部分
  • user - 用户级规则,附加到每次对话
  • files - 引用的外部规则文件列表

下一步

接下来学习如何自定义OpenCode的界面主题。