OpenCode 规则

OpenCode 规则指南:作用域、优先级与自定义指令

了解 OpenCode 规则文件放在哪里、全局与项目规则如何合并、URL 指令何时可信,以及如何安全验证自定义规则。

展示 OpenCode 全局、项目和 URL 作用域规则的技术流程图
先明确作用域:全局习惯、项目约束,再考虑可信的 URL 指令。

快速结论

opencode rules: 快速结论

OpenCode rules 是影响 Agent 工作方式的持久指令,可以作用于项目、全局用户环境或可信 URL 上下文。项目规则适合一个代码库的约束,全局规则只放跨项目稳定的习惯,URL 指令则必须先验证来源和变更边界。规则文件的关键不是写得多,而是作用域和优先级清楚。

Similarweb 的 `opencode rules` 词簇呈现出明确的配置意图:用户在找规则文件、全局规则、项目规则,以及规则冲突时谁优先。OpenCode 官方文档把 rules 与 skills、agents、permissions 和通用 config 分开,但很多教程只提到这些名词,没有把选择路径讲清楚。

本文把边界拆开:rules 负责会话中长期有效的指令,skills 负责可复用流程,agents 负责角色和工具边界,permissions 负责 allow/ask/deny,config 负责产品设置。示例都先从低风险只读检查开始,避免在规则尚未验证时直接允许编辑。

相关指南: OpenCode 技能指南, OpenCode Agent 指南, OpenCode 权限指南, OpenCode 配置指南.

1. 为 OpenCode rules 选择最小作用域

项目规则适合测试命令、生成目录、文件归属、安全边界和发布检查等仓库事实。它随仓库进入评审,能与被保护的代码一起更新。全局规则适合跨项目稳定的个人习惯,例如希望如何总结 diff 或先运行哪条无害检查。URL 规则适合可信文档上下文,但不能成为关键安全规则的唯一来源。

外部 URL 还带来网络和来源边界。应确认主机、传输、维护者和变更记录,并为密钥、生产路径、生成文件等高风险约束保留本地兜底。

作用域适合内容主要风险
项目团队都要遵守的仓库规则过期或范围过大的约束
全局个人跨项目习惯把某个技术栈的习惯带到别的仓库
URL特定场景的可信外部说明网络漂移、来源变化、未审查内容

2. 确认 OpenCode 发现规则的位置

官方 Rules 文档覆盖 Initialize、Types、Precedence、Custom Instructions 和外部文件引用。应先使用当前版本的初始化流程或检查生成的项目文件,再确认本机版本真正读取的路径。不要从别的 Agent 框架照抄目录名。

规则文件应靠近它描述的项目约定,写清保护什么、用哪条命令证明完成、如何更新。长流程应移到 skill,规则只保留约束和入口。

OpenCode 规则优先级图,展示项目规则覆盖全局规则以及 URL 指令的条件分支
发生冲突时,先识别实际生效的最具体规则,再记录决定并修改文件。

3. 把规则优先级当作可评审决定

全局规则和项目规则可能重叠,例如全局要求先跑快速测试,而项目要求另一条命令或禁止改生成目录。实际行为取决于官方记录的规则类型和优先级。先读当前 Rules 页面,再写一个小冲突案例观察谁生效。

实务上应让最具体的项目安全边界负责仓库行为。遇到冲突时删除重复表达、保留项目约束,并把原因写进规则或评审记录。不要通过复制两份指令来制造更长的 prompt。

4. 把自定义指令写成短契约

好的规则要回答五个问题:何时生效、Agent 必须做什么、必须避免什么、什么证据证明完成、如何禁用或更新。优先写具体路径和命令,不要只写“注意生产环境”这样的空话。

把事实和偏好分开。仓库文档明确的测试命令属于项目规则;偏好的解释长度更适合全局规则或 skill。这样不会把个人习惯误变成团队政策。

5. 通过信任检查后再引用外部文件

外部文件可以集中维护共享说明,但 URL 会成为执行边界。应检查域名、传输、归属、更新历史和是否无需审查就能变化。能成功返回页面,不代表适合交给可写会话。

外部引用先用于低风险上下文,例如 API 命名或公开风格指南。密钥、部署、破坏性命令和客户数据规则必须留在本地;网络不可用时要明确失败或使用已审查副本。

6. 将 rules 与 skills、agents、permissions、config 分开

Rules 表达持久指令;skills 表达可复用步骤;agents 定义角色、模型、工具和输出契约;permissions 决定工具动作是允许、询问还是拒绝;config 管理 provider 和目录等产品设置。它们可以协作,但职责必须可见。

不要把完整发布流程塞进规则文件,再用权限例外让它自动运行。规则保留护栏,重复流程放进 command 或 skill,高影响动作要求显式批准。

需求使用不要藏在
持久的仓库约束Rules宽泛的 Agent prompt
重复的多步流程Skill 或 command带副作用的规则文件
命名角色和工具边界Agent影响所有任务的全局规则
允许、询问或拒绝工具Permissions只期待模型服从的文字

7. 在真实编辑前验证最终生效规则

用一次性分支或小仓库验收新规则。先让 OpenCode 解释它采用的规则、列出可能触碰的文件,再执行只读任务。随后做一次无害编辑,检查 Git diff,并与契约对照,尽早发现路径错误、语法过期、作用域泄漏和全局冲突。

保留回滚路径:删除项目规则、禁用外部引用或从 Git 恢复旧文件。回滚后复跑同一任务,确认行为确实改变。更新规则时记录日期、原因和验证命令,避免升级后出现无法解释的政策漂移。

OpenCode rules 常见问题

OpenCode rules 是什么?

它是在项目、全局用户环境或可信外部引用等作用域内指导 OpenCode 会话的持久指令。

项目规则应该放在哪里?

使用当前版本 OpenCode Rules 文档或初始化流程确认路径,并把仓库规则放在项目内,方便随代码评审。

rules 和 skills 有什么区别?

Rules 表达长期约束和约定,skills 表达带步骤和示例的可复用流程。规则可以指向 skill,但不应隐藏长流程。

全局规则会覆盖项目规则吗?

要看官方记录的规则类型和优先级。写一个小冲突例子验证,并保持更具体的项目安全边界明确。

URL 规则安全吗?

只有在来源可信、经过审查且适合当前任务时才安全。关键安全和部署指令应保留本地,并让网络失败可见。

官方来源

已于 2026-10-31 检查 OpenCode Rules、Config、Permissions、Skills 和 Agents 文档。路径和优先级会随版本变化,实际使用前请核对官方页面。