Skip to content

Commit e7c6cf6

Browse files
CodeCasterXclaude
andcommitted
docs: 规范化 AI 版权年份更新规则为动态获取
统一所有 AI Agent 配置文件的版权年份更新规则: - 强制要求通过系统命令 `date +%Y` 动态获取当前年份 - 禁止硬编码年份值 - 明确规定只更新当前修改的文件,不批量更新 - 适用于所有 AI(Claude、ChatGPT、Gemini、Cursor) 主要变更: - AGENTS.md:更新中文规则说明 - AGENTS.en.md:更新英文规则说明 - .claude/project-rules.md:新增详细的版权年份管理规范(规则5) - .ai-agents/README.md:添加通用版权年份管理规范 - .ai-agents/{chatgpt,gemini,cursor}/README.md:各 AI 配置中添加规则 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
1 parent 07f839d commit e7c6cf6

File tree

7 files changed

+203
-1
lines changed

7 files changed

+203
-1
lines changed

.ai-agents/README.md

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -198,6 +198,34 @@ GPT 和 Cursor 的配置在 `.ai-agents/gpt/` 目录。
198198
2. 遵循 `.ai-agents/workflows/` 中的工作流
199199
3. 使用 `.ai-workspace/` 进行任务跟踪和上下文共享
200200

201+
### 版权年份管理规范
202+
203+
**重要规则**:修改任意带版权头的文件时,**必须同步更新版权年份到当前年份**
204+
205+
**执行步骤**
206+
207+
1. **动态获取当前年份**(绝对不要硬编码年份):
208+
```bash
209+
# 使用系统命令获取当前年份
210+
CURRENT_YEAR=$(date +%Y)
211+
echo $CURRENT_YEAR
212+
```
213+
214+
2. **检查并更新版权头**
215+
- 检查文件是否包含版权声明(如 `Copyright (C) 2024-2025`
216+
- 如果包含,将年份更新为当前年份(如 `2024-2025``2024-2026`
217+
- 如果是单一年份(如 `2024`),更新为年份范围(如 `2024-2026`
218+
219+
3. **常见格式示例**(假设当前年份为 2026):
220+
- `Copyright (C) 2024-2025``Copyright (C) 2024-2026`
221+
- `Copyright (C) 2024``Copyright (C) 2024-2026`
222+
- `© 2024-2025``© 2024-2026`
223+
224+
**为什么重要**
225+
- 确保版权声明的准确性和法律有效性
226+
- 遵循项目规范,保持一致性
227+
- 避免年份过时导致的合规问题
228+
201229
## ⚠️ 注意事项
202230

203231
### 人工检查点

.ai-agents/chatgpt/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,7 @@ ChatGPT 和 Gemini 可以互为替代:
153153
- 注释要求:公共API需要Javadoc
154154
- 类头信息:@author@since
155155
- 分支命名:模块前缀 + 意图
156+
- **版权年份更新**:修改任意带版权头的文件时,**必须先通过系统命令 `date +%Y` 获取当前年份**,然后更新版权头(例如 `2024-2025``2024-<当前年份>`)。**绝对不要硬编码年份**
156157

157158
### 测试要求
158159

.ai-agents/cursor/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,3 +66,28 @@ cat .ai-workspace/context/{task-id}/plan.md
6666
- 配置项目代码风格
6767
- 集成项目测试框架
6868

69+
## 项目编码规范
70+
71+
### FIT Framework 编码规范
72+
73+
参考 `AGENTS.md` 中的规范:
74+
75+
- Java 格式化:使用 `CodeFormatterFromIdea.xml`
76+
- 注释要求:公共API需要Javadoc
77+
- 类头信息:@author@since
78+
- 分支命名:模块前缀 + 意图
79+
- **版权年份更新**:修改任意带版权头的文件时,**必须先通过系统命令 `date +%Y` 获取当前年份**,然后更新版权头(例如 `2024-2025``2024-<当前年份>`)。**绝对不要硬编码年份**
80+
81+
### 测试要求
82+
83+
- 单元测试使用 JUnit
84+
- 测试类命名:`*Test.java`
85+
- 每个公共方法都应有测试
86+
- 测试要覆盖正常和异常情况
87+
88+
### 提交规范
89+
90+
- 提交信息:`[模块] 简述`
91+
- 例如:`[fit] 修复某问题`
92+
- 不要自动提交,等待人工确认
93+

.ai-agents/gemini/README.md

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,3 +69,28 @@ Gemini 应该:
6969
2. 更新任务状态
7070
3. 说明完成情况
7171

72+
## 项目编码规范
73+
74+
### FIT Framework 编码规范
75+
76+
参考 `AGENTS.md` 中的规范:
77+
78+
- Java 格式化:使用 `CodeFormatterFromIdea.xml`
79+
- 注释要求:公共API需要Javadoc
80+
- 类头信息:@author@since
81+
- 分支命名:模块前缀 + 意图
82+
- **版权年份更新**:修改任意带版权头的文件时,**必须先通过系统命令 `date +%Y` 获取当前年份**,然后更新版权头(例如 `2024-2025``2024-<当前年份>`)。**绝对不要硬编码年份**
83+
84+
### 测试要求
85+
86+
- 单元测试使用 JUnit
87+
- 测试类命名:`*Test.java`
88+
- 每个公共方法都应有测试
89+
- 测试要覆盖正常和异常情况
90+
91+
### 提交规范
92+
93+
- 提交信息:`[模块] 简述`
94+
- 例如:`[fit] 修复某问题`
95+
- 不要自动提交,等待人工确认
96+

.claude/project-rules.md

Lines changed: 122 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -398,9 +398,130 @@ Slash commands 支持参数传递,参数使用空格分隔:
398398
399399
---
400400
401+
## 版权年份管理规范
402+
403+
### 规则 5: 版权年份更新(CRITICAL)
404+
405+
**⚠️ 重要规则**:修改任意带版权头的文件时,**必须同步更新版权年份到当前年份**。
406+
407+
**强制要求:**
408+
409+
1. **动态获取当前年份**
410+
- **绝对不要**硬编码年份(如 2026)
411+
- **必须**使用系统命令获取当前年份
412+
413+
```bash
414+
# 获取当前年份
415+
CURRENT_YEAR=$(date +%Y)
416+
echo $CURRENT_YEAR
417+
```
418+
419+
2. **版权头格式检测与更新**
420+
421+
常见格式:
422+
423+
**格式 1:年份范围**
424+
```
425+
Copyright (C) 2024-2025 FIT Framework
426+
↓ 更新为
427+
Copyright (C) 2024-2026 FIT Framework # 假设当前年份为 2026
428+
```
429+
430+
**格式 2:单一年份**
431+
```
432+
Copyright (C) 2024 FIT Framework
433+
↓ 更新为
434+
Copyright (C) 2024-2026 FIT Framework # 假设当前年份为 2026
435+
```
436+
437+
**格式 3:Java 文件头**
438+
```java
439+
/*
440+
* Copyright (C) 2024-2025 FIT Framework
441+
* All rights reserved.
442+
*/
443+
↓ 更新为
444+
/*
445+
* Copyright (C) 2024-2026 FIT Framework
446+
* All rights reserved.
447+
*/
448+
```
449+
450+
3. **自动化更新流程**
451+
452+
**标准流程(必须遵循):**
453+
454+
**⚠️ 重要**:只更新**当前修改的文件**,不要批量更新所有文件!
455+
456+
```bash
457+
# 步骤 1: 获取当前年份
458+
CURRENT_YEAR=$(date +%Y)
459+
460+
# 步骤 2: 检查当前修改的文件是否有版权头
461+
grep -l "Copyright" <current_modified_file>
462+
463+
# 步骤 3: 检查版权年份
464+
grep "Copyright.*[0-9]\{4\}" <current_modified_file>
465+
466+
# 步骤 4: 如果年份不是最新的,使用 Edit 工具更新
467+
# 将 2024-2025 更新为 2024-<CURRENT_YEAR>
468+
# 或将 2024 更新为 2024-<CURRENT_YEAR>
469+
```
470+
471+
4. **仅更新当前修改的文件**
472+
473+
**原则**:
474+
- ✅ 只更新你正在修改的文件
475+
- ❌ 不要批量更新项目中所有文件
476+
- ✅ 一次只处理一个文件的版权头
477+
- ❌ 不要使用 find 批量查找和替换
478+
479+
**示例(仅供参考,查看当前修改了哪些文件)**:
480+
481+
```bash
482+
# 查看当前修改的文件
483+
git status --short
484+
485+
# 查看某个修改文件的版权头
486+
grep "Copyright" <specific_file_you_modified>
487+
```
488+
489+
5. **检查清单**
490+
491+
- [ ] 使用 `date +%Y` 命令动态获取当前年份
492+
- [ ] 检查修改的文件是否包含版权头
493+
- [ ] 如果包含版权头,检查年份是否为当前年份
494+
- [ ] 如果不是,使用 Edit 工具更新版权年份
495+
- [ ] **绝对不要**在代码中写死年份(如 2026)
496+
- [ ] 保持版权头的其他内容不变,只更新年份
497+
498+
**完整示例:**
499+
500+
```bash
501+
# ❌ 错误做法:硬编码年份
502+
Edit(file_path, old_string="2024-2025", new_string="2024-2026") # 硬编码 2026!
503+
504+
# ✅ 正确做法:动态获取年份
505+
# 步骤 1: 先获取当前年份
506+
CURRENT_YEAR=$(date +%Y)
507+
508+
# 步骤 2: 使用变量更新版权头
509+
# 在 Edit 工具调用前,确保知道当前年份
510+
# 例如当前年份为 2026:
511+
Edit(file_path, old_string="Copyright (C) 2024-2025", new_string="Copyright (C) 2024-2026")
512+
# 或
513+
Edit(file_path, old_string="Copyright (C) 2024", new_string="Copyright (C) 2024-2026")
514+
```
515+
516+
**为什么必须这样做:**
517+
- 确保版权声明的准确性和法律有效性
518+
- 遵循项目规范,保持一致性
519+
- 避免年份过时导致的合规问题
520+
- 动态获取年份确保在任何时间点执行都是正确的
521+
401522
## AI 协作任务识别和处理规则
402523
403-
### 规则 4: 任务语义识别(CRITICAL)
524+
### 规则 6: 任务语义识别(CRITICAL)
404525
405526
**⚠️ 重要规则**:当用户使用自然语言描述任务时,AI 必须进行语义分析并自动查找相关任务。
406527

AGENTS.en.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ This repo hosts the FIT framework and related engines.
2121
- Java formatting uses the IntelliJ profile `CodeFormatterFromIdea.xml`.
2222
- Public/protected Java APIs require Javadoc with `@param`/`@return` tags.
2323
- Class headers must include `@author` and `@since yyyy-MM-dd`.
24+
- When modifying any file with a copyright header, you **must first obtain the current year using the system command `date +%Y`**, then update the copyright year accordingly (e.g., if current year is 2026: `2024-2025``2024-2026`, `2024``2024-2026`).
2425
- Branch naming follows module prefixes and intent, e.g. `fit-feature-xxx`, `waterflow-bugfix-yyy`.
2526

2627
## Testing Guidelines

AGENTS.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
- Java 格式化使用 IntelliJ 配置 `CodeFormatterFromIdea.xml`
2222
- 公共/受保护的 Java API 需要 Javadoc,并包含 `@param`/`@return`
2323
- 类头需包含 `@author``@since yyyy-MM-dd`
24+
- 修改任意带版权头的文件时,需同步更新版权年份到当前年份。**必须先通过系统命令 `date +%Y` 获取当前年份**,然后根据版权头格式更新(例如若当前年份为 2026:`2024-2025``2024-2026``2024``2024-2026`)。
2425
- 分支命名使用模块前缀与意图,例如 `fit-feature-xxx``waterflow-bugfix-yyy`
2526

2627
## 测试规范

0 commit comments

Comments
 (0)