Codex Assistant
1 天以前 afeeed281e60466b576fbe74d339634cc5d07b82
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
# RooCode Spec v1
version: 1
project:
  name: your-repo
  shell:
    type: powershell
    flags: "-NoLogo -NoProfile -ExecutionPolicy Bypass"
  os: windows
  line_endings: crlf
  encoding: utf-8
 
objectives:
  - "仅修改与当前任务直接相关的代码;非相关文件保持不变。"
  - "公共模块或共享代码修改前必须完成影响评估并获得批准。"
  - "需求不清晰或存在冲突时应立即暂停修改,提出问题并等待确认。"
  - "代码命名必须与数据库字段一致,不得随意重命名或私自创造字段名。"
  - "遵守统一代码规范与格式要求。"
 
# —— 文件范围控制 ————————————————————————————————————————————————
scope:
  blocked_paths:            # 禁止修改的文件或目录(根据项目实际补充)
 
  # 仅定义“禁止修改”范围,其他文件默认可修改
  # 一旦检测到修改这些路径,将强制中止执行并要求说明理由
 
# —— 询问/暂停策略 ————————————————————————————————————————————————
ask_policy:
  must_ask_when:
    - "需求描述不完整、目标不明确或与当前任务冲突"
    - "涉及公共模块、接口、数据库结构、跨服务依赖"
    - "修改内容可能引发大范围影响或兼容性问题"
    - "测试覆盖不全或存在潜在回归风险"
  stop_and_wait_for_confirmation: true
  question_template: |
    **不清楚点/风险:**
    1. …
    2. …
    **建议方案:**
    - A: …
    - B: …
    **请求确认:**
    请确认后继续修改。
 
# —— 公共代码改动与影响评估 ————————————————————————————————
public_code:
  globs:
    - "common/**"
    - "packages/shared/**"
    - "libs/**"
  require_impact_assessment: true
  impact_assessment_file: ".roocode/impact_assessment.md"
  impact_assessment_must_include:
    - "变更目的与动机"
    - "受影响模块与兼容性评估"
    - "数据迁移或回滚方案"
    - "测试验证计划"
    - "风险与缓解措施"
 
# —— 命名与数据库一致性 ————————————————————————————————————————————
naming_conventions:
  db_schema_source_of_truth:
    - "docs/db/schema.sql"
    - "migrations/**"
  rules:
    - "字段命名以数据库定义为基准。"
    - "如需 camelCase 映射,必须一一对应且注明。"
    - "新增字段前必须在数据库中定义并确认默认值。"
    - "禁止删除或重命名字段而无迁移方案。"-+
 
# —— 文本与文件格式规范(新增部分) ————————————————————————————————
text_format:
  encoding:
    required: "UTF-8 (无 BOM)"
    description: |
      所有代码文件必须使用 **UTF-8 无 BOM** 编码。
      不允许 UTF-16、GBK、ANSI、或 UTF-8 with BOM。
      若 IDE 或 AI 工具自动生成文件,应强制转换为 UTF-8 无 BOM。
      AI 编辑器请严格遵守此格式,不得自动更改文件编码。
  line_endings:
    required: "CRLF (Windows)"
    description: |
      所有文本文件换行符必须为 CRLF (`\r\n`)。
      禁止混用 LF 与 CRLF;避免提交时触发大面积 diff。
      若检测到混用换行符,应自动修复为 CRLF。
  indentation:
    style: "spaces"
    size: 2
    description: |
      统一使用空格缩进,禁止使用 Tab。
      YAML / JSON / JS / TS / Java / XML / HTML 等文件均保持 2 个空格缩进。
  trailing_spaces:
    remove: true
    description: "提交前自动移除行尾多余空格。"
  final_newline:
    ensure: true
    description: "每个文件末尾必须保留一个空行(单个换行符)。"
  ai_editing_guidelines:
    - "AI 生成或修改文件时必须保留原有编码、缩进和换行风格。"
    - "AI 不得自动转换为 LF 或添加 BOM。"
    - "AI 不得在无内容变化时重写整个文件或格式化不相关区域。"
    - "若文件格式未知,应先读取并检测现有编码与缩进再修改。"
    - "禁止出现乱码、双字节符号或混用全角/半角标点。"
  comment_style:
    preferred:
      - "//"       # Java, JS, TS, Go
      - "#"        # YAML, Python, Shell
      - "<!-- -->" # XML, HTML
 
# —— 代码风格与校验 ————————————————————————————————————————————————
code_style:
  formatters:
    - "Java: Spotless / GoogleJavaFormat"
    - "TS/JS: Prettier / ESLint"
  rules_of_thumb:
    - "严格类型检查"
    - "公共接口必须带注释"
    - "新增逻辑必须有测试覆盖"
    - "提交前应通过 lint 与测试"
 
# —— 预检查命令(Windows PowerShell 兼容) ————————————————————————
checks:
  pre_commit:
    - name: "Java Build & Test"
      run: |
        if (Test-Path ".\mvnw.cmd") { .\mvnw.cmd -q test } `
        elseif (Test-Path ".\gradlew.bat") { .\gradlew.bat test } `
        elseif (Get-Command mvn -ErrorAction SilentlyContinue) { mvn -q test } `
        else { Write-Host "No Java build tool found." }
 
    - name: "Node Lint & Test"
      run: |
        if (Test-Path ".\package.json") {
          npm ci
          npm run -s lint
          npm test --silent
        }
 
# —— 危险操作拦截 ————————————————————————————————————————————————
dangerous_operations:
  block_without_explicit_approval:
    - "跨模块重命名或重构"
    - "依赖大版本升级"
    - "数据库结构变更(新增/删除/重命名表或字段)"
    - "公共 API 或 DTO 的破坏性修改"
  require_ask_policy: true
 
# —— 提交与说明规范 ————————————————————————————————————————————————
commit_policy:
  single_purpose_commits: true
  message_template: |
    <type>(<scope>): <subject>
 
    WHY:
    - 变更目的 …
    WHAT:
    - 修改内容 …
    TEST:
    - 测试说明 …
    RISK:
    - 潜在风险 …
  require:
    - "影响评估链接(如涉及公共模块)"
    - "任务编号或需求 ID"
    - "测试报告摘要"
 
# —— 最终保护措施 ————————————————————————————————————————————————
guardrails:
  fail_on_blocked_path_change: true
  fail_on_public_code_change_without_assessment: true
  deny_unapproved_mass_changes: true