yaml
# rules/my-custom-rules.yaml
name: 我的自定义规则
description: 描述这条规则的作用
version: 1.0.0
# 规则触发条件
when:
# always: 始终生效
# on_command: 特定命令时生效
# on_pattern: 匹配特定模式时生效
always: true
# 规则内容
rules:
- name: 规则名称
description: 规则描述
constraint: |
具体的约束内容
yaml
# rules/java-code-style.yaml
name: Java 代码风格规范
description: 强制 AI 遵循团队 Java 代码规范
version: 1.0.0
when:
on_pattern:
- "写.*代码"
- "生成.*java"
- ".*重构.*"
rules:
- name: 类命名规范
description: 类名必须使用大驼峰命名
constraint: |
所有 Java 类名必须使用 PascalCase(大驼峰)命名法
例如:UserService, OrderController, ProductRepository
禁止使用:userService, order_controller
- name: 方法命名规范
description: 方法名必须使用小驼峰命名
constraint: |
所有方法名必须使用 camelCase(小驼峰)命名法
例如:getUserById, createOrder, deleteProduct
禁止使用:GetUserById, get_user_by_id
- name: 注释规范
description: 公共方法必须有 JavaDoc 注释
constraint: |
所有 public 方法必须包含 JavaDoc 注释
注释必须包含:@param, @return, @throws(如有)
示例:
/**
* 根据 ID 获取用户
* @param id 用户 ID
* @return 用户对象
* @throws UserNotFoundException 用户不存在时抛出
*/
public User getUserById(Long id) { ... }
- name: 异常处理规范
description: 禁止吞掉异常
constraint: |
禁止空的 catch 块
禁止只打印不处理
必须记录日志或重新抛出
错误示例:try { ... } catch (Exception e) {}
正确示例:try { ... } catch (Exception e) {
log.error("操作失败", e);
throw new BusinessException("操作失败", e);
}
yaml
# rules/concise-reply.yaml
name: 简洁回复模式
description: 强制 AI 回复简洁直接,不啰嗦
version: 1.0.0
when:
always: true
rules:
- name: 禁止开场白
description: 不要说"好的"、"没问题"等废话
constraint: |
禁止使用以下开场白:
- "好的,我来帮你..."
- "没问题!"
- "当然可以..."
- "让我想想..."
直接开始回答问题或执行任务
- name: 限制回复长度
description: 简单问题回复不超过 200 字
constraint: |
对于简单问题(事实查询、定义解释等),回复不超过 200 字
对于复杂问题(代码生成、方案设计等),先给结论再展开
- name: 代码优先
description: 能直接用代码解决的,不要长篇大论
constraint: |
如果用户问题可以直接用代码解决,优先给出代码
代码后的解释控制在 100 字以内
除非用户明确要求详细解释
- name: 禁止说教
description: 不要教育用户应该怎么做
constraint: |
禁止使用说教语气:
- "你应该..."
- "建议你..."
- "最好..."
直接给出解决方案,让用户自己选择
yaml
# rules/workflow-rules.yaml
name: 标准工作流程
description: 强制 AI 遵循标准工作流程
version: 1.0.0
when:
on_command:
- "refactor"
- "fix"
- "implement"
rules:
- name: 先理解后执行
description: 修改代码前必须先理解现有逻辑
constraint: |
在执行任何代码修改前,必须:
1. 先读取并理解现有代码
2. 说明修改计划和影响范围
3. 等待用户确认后再执行
- name: 测试先行
description: 新功能必须先写测试
constraint: |
实现新功能时,必须:
1. 先编写单元测试
2. 测试失败(证明功能不存在)
3. 实现功能使测试通过
4. 运行所有相关测试确保无回归
- name: 变更说明
description: 修改后必须说明变更内容
constraint: |
完成代码修改后,必须提供:
1. 变更文件列表
2. 每处变更的说明
3. 可能的影响和注意事项
yaml
# 仅在特定目录生效
when:
in_directory:
- "src/main/java"
- "src/test/java"
# 仅在特定文件类型生效
when:
file_pattern:
- "*.java"
- "*.xml"
# 仅在特定时间生效
when:
time_range:
start: "09:00"
end: "18:00"
yaml
# 高优先级规则
priority: 100 # 数字越大优先级越高
rules:
- name: 安全规则
priority: 100 # 最高优先级
constraint: |
禁止执行 rm -rf / 等危险命令
- name: 代码风格
priority: 50 # 中等优先级
constraint: |
遵循团队代码规范
yaml
# rules/base-rules.yaml
name: 基础规则
extends: null # 基础规则
rules:
- name: 通用规范
constraint: |
所有项目都必须遵守的基础规范
# rules/project-specific.yaml
name: 项目特定规则
extends: base-rules # 继承基础规则
rules:
- name: 项目特定规范
constraint: |
本项目特有的额外规范
java-code-style 而不是 rule1my-custom-rulecode-style/, security/, workflow/openclaw rules list 查看已加载规则bash
openclaw rules disable <rule-name>
openclaw rules enable <rule-name>
夜雨聆风