diff --git a/AGENTS.md b/AGENTS.md new file mode 100644 index 0000000..85582f7 --- /dev/null +++ b/AGENTS.md @@ -0,0 +1,102 @@ +# Agent.md + +本文件为本仓库内各类智能体/助手提供工作指导,内容参考 `CLAUDE.md`,并针对日常开发与协作做了简化归纳。 + +## 项目概述 + +**FunctionalScaffold(函数式脚手架)** 是一个算法工程化 Serverless 解决方案的脚手架生成器。 + +- 为了方便团队交流,项目自然语言使用中文,包括代码注释和文档 +- 核心目标:解决算力弹性、算法工程化门槛与后端集成复杂度问题 + +## 技术与架构 + +采用 **Docker 封装的 Serverless API 服务**方案: + +- 算法代码 + 运行环境打包为 Docker 镜像 +- 部署到云厂商 Serverless 平台实现自动扩缩容 +- FastAPI 作为 HTTP 接口层 +- 算法逻辑保持独立和专注 + +架构流程概览: + +``` +用户请求 → API网关 → 容器实例(冷/热启动)→ FastAPI → 算法程序 → 返回结果 + ↓ + 外部服务(OSS/数据库) +``` + +## 代码结构(src layout) + +``` +src/functional_scaffold/ +├── algorithms/ # 算法层 - 所有算法必须继承 BaseAlgorithm +│ ├── base.py # execute() 包装器(埋点、错误处理) +│ └── prime_checker.py # 示例:质数判断算法 +├── api/ # API 层 - FastAPI 路由和模型 +│ ├── models.py # Pydantic 数据模型(ConfigDict) +│ ├── routes.py # 路由定义(/invoke, /healthz, /readyz, /jobs) +│ └── dependencies.py # 依赖注入(request_id 生成) +├── core/ # 核心功能 - 横切关注点 +│ ├── errors.py # 异常类层次结构 +│ ├── logging.py # 结构化日志(JSON) +│ ├── metrics.py # Prometheus 指标和装饰器 +│ └── tracing.py # 分布式追踪(ContextVar) +├── utils/ # 工具函数 +│ └── validators.py # 输入验证 +├── config.py # 配置管理(pydantic-settings) +└── main.py # FastAPI 应用入口 +``` + +## 关键设计约定 + +1. **算法抽象层**:所有算法继承 `BaseAlgorithm`,只实现 `process()`;`execute()` 负责埋点、日志和错误包装。 +2. **依赖注入**:FastAPI `Depends()` 注入 `request_id`,通过 `ContextVar` 透传。 +3. **配置管理**:`pydantic-settings` 读取环境变量或 `.env`,支持类型校验。 +4. **可观测性**:JSON 结构化日志、Prometheus 指标、Request ID 追踪。 +5. **Pydantic V2**:使用 `ConfigDict` 和 `model_config`,不使用 `class Config`。 + +## 常用命令 + +环境设置: + +```bash +python -m venv venv +source venv/bin/activate +pip install -e ".[dev]" +``` + +运行服务: + +```bash +./scripts/run_dev.sh +uvicorn src.functional_scaffold.main:app --reload --port 8000 +``` + +测试与质量: + +```bash +pytest tests/ -v +black src/ tests/ +ruff check src/ tests/ +``` + +## 添加新算法(简版步骤) + +1. 在 `src/functional_scaffold/algorithms/` 新建算法类,继承 `BaseAlgorithm` 并实现 `process()`。 +2. 在 `algorithms/__init__.py` 导出新算法类。 +3. 在 `api/routes.py` 添加端点,在 `api/models.py` 添加请求/响应模型。 +4. 在 `tests/` 编写对应测试。 + +## 交付标准 + +必须包含以下组件与规范: + +- `/invoke`, `/jobs`, `/healthz`, `/readyz`, `/metrics` 端点 +- 统一的请求/响应 Schema 与错误格式 +- 可观测性支持(日志、指标、追踪) + +## 开发理念 + +算法同学只需关注 `process()` 的核心逻辑,其余基础设施能力由脚手架提供。 +