规则
OpenCode 允许你通过 AGENTS.md 文件提供自定义指令,类似于 Cursor 的规则。这些指令包含在 LLM 的上下文中,以根据你的特定项目自定义行为。
初始化
要创建新的 AGENTS.md 文件,在 OpenCode 中运行 /init 命令:
/init
/init 扫描 repo 中的重要文件,当代码库无法回答时可能会询问有针对性的问题,然后创建或更新 AGENTS.md,其中包含简洁的项目特定指导。
它专注于未来智能体会话最可能需要的内容:
- 构建、lint 和测试命令
- 命令顺序和重点验证步骤
- 从文件名中不明显的架构和 repo 结构
- 项目特定的约定、设置怪癖和操作注意事项
- 对现有指令源的引用,如 Cursor 或 Copilot 规则
如果你已经有 AGENTS.md,/init 将就地改进它。
示例
你也可以手动创建此文件。这是一个示例:
# SST v3 Monorepo Project
This is an SST v3 monorepo with TypeScript. The project uses bun workspaces.
## Project Structure
- `packages/` - All workspace packages
- `infra/` - Infrastructure definitions
## Code Standards
- Use TypeScript with strict mode
- Shared code goes in `packages/core/`
类型
OpenCode 支持从多个位置读取 AGENTS.md 用于不同目的。
项目
在项目根目录放置 AGENTS.md 以获取项目特定规则。这些仅适用于该目录或其子目录。
全局
你也可以在 ~/.config/opencode/AGENTS.md 中有全局规则。这适用于所有 OpenCode 会话。将其用于个人规则,因为它不会被提交到 Git。
Claude Code 兼容性
对于从 Claude Code 迁移的用户,OpenCode 支持 Claude Code 文件约定作为后备:
- 项目规则:项目目录中的
CLAUDE.md(如果不存在AGENTS.md则使用) - 全局规则:
~/.claude/CLAUDE.md(如果不存在~/.config/opencode/AGENTS.md则使用)
要禁用 Claude Code 兼容性:
export OPENCODE_DISABLE_CLAUDE_CODE=1 # 禁用所有 .claude 支持
export OPENCODE_DISABLE_CLAUDE_CODE_PROMPT=1 # 仅禁用 ~/.claude/CLAUDE.md
export OPENCODE_DISABLE_CLAUDE_CODE_SKILLS=1 # 仅禁用 .claude/skills
优先级
当 OpenCode 启动时,它按此顺序查找规则文件:
- 从当前目录向上遍历本地文件(
AGENTS.md,然后CLAUDE.md) - 全局文件在
~/.config/opencode/AGENTS.md - Claude Code 文件在
~/.claude/CLAUDE.md(除非禁用)
每个类别中的第一个匹配文件获胜。
自定义指令
你可以在 opencode.json 中指定自定义指令文件:
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["CONTRIBUTING.md", "docs/guidelines.md", ".cursor/rules/*.md"]
}
你也可以使用远程 URL:
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["https://raw.githubusercontent.com/my-org/shared-rules/main/style.md"]
}
所有指令文件与你的 AGENTS.md 文件合并。
引用外部文件
虽然 OpenCode 不会自动解析 AGENTS.md 中的文件引用,但你可以通过两种方式实现这一点:
使用 opencode.json
推荐的方法是使用 opencode.json 中的 instructions 字段:
{
"$schema": "https://opencode.ai/config.json",
"instructions": ["docs/development-standards.md", "test/testing-guidelines.md"]
}
AGENTS.md 中的手动指令
你可以通过提供显式指令来教 OpenCode 读取外部文件:
# TypeScript Project Rules
## Development Guidelines
For TypeScript code style: @docs/typescript-guidelines.md
For React patterns: @docs/react-patterns.md
OpenCode 按需加载文件,而不是预先加载。