5.6 KiB
5.6 KiB
项目规则索引
本项目使用 KiloCode 的自定义规则系统来维护代码质量和一致性。所有规则文件存储在 .kilocode/rules/ 目录下。
规则概览
| 规则文件 | 描述 | 优先级 |
|---|---|---|
| formatting.md | 代码格式化规范 | 高 |
| naming_conventions.md | 命名约定规范 | 高 |
| restricted_files.md | 限制文件修改规则 | 高 |
| restricted_reads.md | 限制文件读取规则 | 高 |
| interaction_rules.md | 交互限制规则 | 高 |
| requirement_review.md | 代码修改需求审查规则 | 高 |
| rule_formatting_guide.md | 规则编写指南 | 中 |
规则说明
1. 代码格式化规则 formatting.md
定义项目代码的格式化标准,包括:
- 缩进:使用 4 个空格
- 行长度:每行最大 100 字符
- 空行:类间 2 空行,函数间 1 空行
- 空格:运算符两侧各一个空格
- 导入顺序:标准库 → 第三方库 → 本地模块
- 注释:行内注释距代码 2 空格
- Docstring:为所有公共函数、类编写
2. 命名约定规则 naming_conventions.md
定义项目命名规范:
- 文件命名:小写下划线 (
snake_case) - 变量命名:小写下划线
- 常量命名:全大写下划线 (
UPPER_SNAKE_CASE) - 函数命名:小写下划线,动词开头
- 类命名:大驼峰 (
PascalCase) - DataFrame 列命名:因子列、分类变量、中间计算列的规范
- 股票术语缩写:统一使用的缩写标准
3. 限制文件规则 restricted_files.md
定义需要保护的文件和目录:
- 禁止修改:模型文件 (
.cbm,.pth)、预测结果 (.tsv)、配置文件 (.env) - 只读数据:数据文件目录
- Jupyter Notebook 规则:编辑流程规范
- 保护机制:临时文件清理规则
4. 读取限制规则 restricted_reads.md
定义禁止读取的文件类型:
- 配置文件:包含
config字符串的文件(不区分大小写) - JSON 文件:所有以
.json结尾的文件 - 强制执行:无例外原则,禁止任何方式的读取
5. 规则编写指南 rule_formatting_guide.md
指导如何编写新的规则文件:
- Markdown 格式:推荐使用 Markdown 结构
- 标题层级:使用
#,##等定义分类 - 列表枚举:使用
-,*枚举具体规则 - 代码示例:使用 ``` 包含代码示例
6. 交互限制规则 interaction_rules.md
定义与用户交互时的行为限制:
- 代码编写:必须先询问用户,获得许可后才能编写代码
- 命令执行:必须先询问用户,获得许可后才能执行命令
- 询问内容:明确说明将要执行的操作、目的和影响
7. 代码修改需求审查规则 requirement_review.md
规范代码修改前的需求审查流程:
- 修改前检查:检查模块目录下是否存在需求md文件
- 修改范围控制:只修改任务要求的功能相关代码
- 变更影响评估:发现可能影响其他功能的改动时先与用户确认
- 例外情况:语法错误、代码格式化、性能优化可小幅调整
项目结构
NewStock/
├── .kilocode/
│ └── rules/
│ ├── formatting.md # 代码格式化规则
│ ├── naming_conventions.md # 命名约定规范
│ ├── restricted_files.md # 限制文件修改规则
│ ├── restricted_reads.md # 限制文件读取规则
│ ├── interaction_rules.md # 交互限制规则
│ ├── requirement_review.md # 代码修改需求审查规则
│ └── rule_formatting_guide.md # 规则编写指南
├── main/
│ ├── factor/ # 因子计算模块
│ ├── train/ # 训练模块
│ ├── utils/ # 工具模块
│ └── data/ # 数据文件
├── qmt/ # QMT 交易模块
├── my_catboost_model.cbm # 训练好的模型
└── .env # 环境配置
快速参考
Python 代码示例
import numpy as np
import pandas as pd
WINDOW_SIZE = 20
EPSILON = 1e-8
class FactorCalculator:
"""因子计算器"""
def get_rolling_factor(self, df):
"""计算滚动因子"""
# 代码始终遵循格式化规则
result = (
df.sort_values(by=["ts_code", "trade_date"])
.groupby("ts_code", group_keys=False)
)
return result
变量命名检查
| 类型 | 正确示例 | 错误示例 |
|---|---|---|
| 变量 | close_prices |
closePrices |
| 常量 | MAX_WINDOW |
MaxWindow |
| 函数 | get_factor() |
GetFactor() |
| 类 | StockAnalyzer |
stock_analyzer |
| 列 | flow_lg_elg_intensity |
flowLgElgIntensity |
规则更新
当项目需要调整规则时:
- 修改
.kilocode/rules/下的对应.md文件 - 更新本索引文件的规则说明
- 通知团队成员规则变更
- 运行代码检查工具验证规则一致性
相关工具
- 代码格式化:使用
black格式化工具 - 代码检查:使用
flake8进行静态分析 - 类型检查:使用
mypy进行类型检查