From bd722242ad26aaa5ac723e80e0fb661bc13b7d9f Mon Sep 17 00:00:00 2001 From: crypto_predictor Date: Fri, 6 Feb 2026 15:49:43 +0800 Subject: [PATCH] docs: Add AGENTS.md and initial trading database --- AGENTS.md | 111 +++++++++++++++++++++++++++++++++++++++++++++ trading_history.db | Bin 0 -> 20480 bytes 2 files changed, 111 insertions(+) create mode 100644 AGENTS.md create mode 100644 trading_history.db diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..c9c3cba --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,111 @@ +# AGENTS.md - 智能代理开发指南 + +本文件定义了在该项目中进行开发的 AI 代理(Agent)的行为准则、技术规范和操作流程。请严格遵守。 + +## 1. 核心行为准则 (Core Mandates) + +**最高优先级原则:** +* **语言要求**:所有回答必须使用**中文**。 +* **称呼要求**:每次回答必须加上**“主人”**。 +* **最小改动 (Minimal Change)**:只修改完成任务所必须的代码。**禁止**为了“最佳实践”或“代码美观”而进行未被请求的重构。 +* **环境约束**:本项目严格使用 **Conda** 环境。禁止使用 venv/poetry/pipenv。 +* **复用优先**:在编写新功能前,必须检查 `data/`, `models/`, `utils/` 下是否已有类似实现。 + +## 2. 环境与构建 (Environment & Build) + +本项目依赖管理基于 `requirements.txt`, conda环境名称**crypto_pred_312** + +* **安装依赖**: + ```bash + pip install -r requirements.txt + ``` + +## 3. 测试与质量保证 (Testing & QA) + +使用 `pytest` 作为测试框架。在提交修改前,必须确保相关测试通过。 + +* **运行所有测试**: + ```bash + pytest + ``` + +* **运行单个测试文件 (常用)**: + ```bash + pytest tests/test_example.py + ``` + +* **运行单个测试用例 (推荐)**: + 用于专注调试某一个功能: + ```bash + pytest tests/test_example.py::test_specific_function + ``` + +* **显示打印输出 (Debug模式)**: + ```bash + pytest -s tests/test_example.py + ``` + +* **代码格式化与检查**: + ```bash + black . # 格式化代码 + flake8 . # 代码风格检查 + ``` + +## 4. 代码风格规范 (Code Style) + +* **注释 (Comments)**: + * **必须使用中文**编写所有注释和文档字符串 (Docstrings)。 + * Docstring 风格推荐 Google Style 或简单的多行注释。 + * 注释应解释“为什么这样做” (Why),而不是“做了什么” (What)。 + +* **命名约定 (Naming)**: + * 变量/函数: `snake_case` (如 `add_technical_features`) + * 类名: `PascalCase` (如 `BinanceDataFetcher`) + * 常量: `UPPER_CASE` (如 `MAX_RETRIES`) + * 私有成员: `_snake_case` (前缀下划线) + +* **导入 (Imports)**: + * 顺序:标准库 -> 第三方库 -> 本地模块。 + * 尽量使用绝对导入。 + * 注意:项目中部分脚本使用了 `sys.path.insert` hack,修改时需保持兼容,不要随意删除。 + +* **类型提示 (Type Hints)**: + * 推荐在函数签名中添加类型提示,但不强制要求全覆盖。 + * 示例: `def process_data(df: pd.DataFrame) -> np.ndarray:` + +* **错误处理 (Error Handling)**: + * 使用具体的异常类型 (如 `ValueError`, `FileNotFoundError`),避免裸 `except:`。 + * 在 API 调用或网络请求处必须添加重试或错误捕获逻辑。 + +## 5. 项目结构说明 (Project Structure) + +在修改代码前,请参考以下结构定位文件: + +* **`api/`**: FastAPI 接口服务代码。 +* **`data/`**: 数据获取 (BinanceFetcher等) 和预处理逻辑。 +* **`models/`**: 模型定义 (N-BEATS, DLinear, CatBoost 等) 和 训练好的模型文件。 +* **`tests/`**: 单元测试和集成测试。 +* **`scripts/`**: 辅助脚本。 +* **`training/`** & **`logs/`**: 训练日志和过程文件。 +* **根目录脚本**: 包含多个入口脚本 (如 `ensemble_predict.py`, `train_catboost.py`),修改时需格外小心,避免破坏生产流程。 + +## 6. 开发流程 (Workflow) + +1. **理解需求**: 先阅读代码,确认需求范围。如果有歧义,**先询问主人**。 +2. **定位代码**: 使用 `grep` 或 `glob` 查找相关文件。 +3. **制定计划**: 思考修改方案,优先考虑不破坏现有逻辑的“加法”修改。 +4. **实施修改**: 编辑代码,保持风格一致。 +5. **验证**: + * 运行 `flake8` 检查语法错误。 + * 运行 `pytest` 验证逻辑。 + * 如果是脚本,尝试带 `--help` 或测试参数运行以确保无运行时错误。 + +## 7. 禁止事项 (Constraints) + +* ❌ **禁止**猜测业务逻辑。 +* ❌ **禁止**删除看似无用但可能被外部脚本调用的代码。 +* ❌ **禁止**在未确认的情况下升级核心库版本 (如 torch, pandas)。 +* ❌ **禁止**输出英语回复 (代码变量名除外)。 + +--- +*遵循此指南,确保高效、安全地协助主人完成任务。* diff --git a/trading_history.db b/trading_history.db new file mode 100644 index 0000000000000000000000000000000000000000..e0775e2da108d72e5b4e2d2cb05130796a5ce985 GIT binary patch literal 20480 zcmeI3&1)M+7{+(yII5h8G$m;Wg)+E=Cd3jmyE{9(ff6gR5=?E!Q6y3midb8lAfhj? zR)nMk0=5r56ml!{6zHiR^iU`b^ipX5fZlp)aFX77$)P=jl+t&!(%O=uU9E9LXlAe_ z&3a}u`+J@lY33bYx;R&MZFIHnR4o^&((95eOVbERk~9IoCyhouQA z{mIiLl!_&hlyu-hBtbwB5CjAPK|l}?1Ox#=KoAfFUQz;!vAsu5o|KndYq?@KS1Yhs zDmLxamR(!v&yJnVWi$CK%4g2ZWl>+*<29>lPeIKS8~fz=k)ucDk5}7mx{g({o8Dur zrv>jCIzEA(lgcGDyO7VG&*so#ZgxJCTSD(=mr$mVzc9N1&CF*P@>9>P>6WYTepa=C z^4SlDl&Mu3`LMK+R28h~DXgTho+s)lj8CaXnyJ*#$eFUcQZLs~p@HfSnyKHYp%gl2 zFFP&Exry{CM3l@t%I257a;a7$Rd-S)D3`k0DV5SwM6s$V+nt#!*KEs~xo~;m^yB+K zO#}V*>rGFFmqO# zi(!`5b&X*be8ceOge-}n)6$nbeHG+@f$l|jz_5v)VnUdytCT7l(@Z0p z2RsUqE#QF(bHG-YeGl;N`5wTAx;+gy0Y%;?IG8{l>odW-JtlxTzdh|MhDH@N)C6n< z6R-gjJbr^=-vpyi17L#Q?(L!pOltD)HUu-O>xLT51RjORCh)-Qzyv#*2*3lKPtJ8I z*5`p^+dV+cjt8&~lS{~#J@A}9f(P^g4?Mc}^)EZ}KwtNE(F2A;h^kZg^d}mQ@`cZb z5ZMAAmltS(&LqDs%Y7E;nFff_u>i%U!on>;N3Z}Lu)yZA@9*r)0=?baMGIg}#~Oi8 z1egg_9B~@(C`9&v2j&HOpficK|2KbsQc6C92ayB;K|l}?1Ox#=KoAfF1OY+d)giEU zJ+W;;$OAx$tvvw<0JWnA*hs?y*(4#G!w>)(CH^xQ{@MKQ*d0I~CH&LduU%XTDzF)# z=$JwH$5a)#r6}Pa@Af0E1of0hB>GB_Z~Sd-3PNV+RxoR?>y7o;YunWB+X@D?+YtjE z?qfP3ICvM3hx6Ky677Bq^~+*s!1SVscOss+wyJVp(fC|2~^`>#(?PD literal 0 HcmV?d00001