Files
FunctionalScaffold/AGENTS.md
Roog (顾新培) 8ca2f64f7e main:移除 src 目录结构,更新模块引用路径
变更内容:
- 删除 `src` 子目录,将模块引用路径从 `src.functional_scaffold` 更新为 `functional_scaffold`。
- 修改相关代码、文档、测试用例及配置文件中的路径引用,包括 `README.md`、`Dockerfile`、`uvicorn` 启动命令等。
- 优化项目目录结构,提升代码维护性和可读性。
2026-02-03 11:29:37 +08:00

103 lines
3.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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 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()` 的核心逻辑,其余基础设施能力由脚手架提供。