docs: add comprehensive guide for MoviePilot AI Agent behavior and conventions

This commit is contained in:
jxxghp
2026-05-08 13:17:10 +08:00
parent 28ec4a6ac0
commit 44f975baf4

109
AGENTS.md Normal file
View File

@@ -0,0 +1,109 @@
# MoviePilot AI Agent Guide
本文件用于统一在 MoviePilot 仓库内工作的 AI Agent 行为。除非更深层目录存在新的 `AGENTS.md` 覆盖,以下规则适用于整个仓库。
## 1. 项目定位
- 本仓库是 MoviePilot 的后端、CLI、MCP/API、Docker 与 AI skills 仓库。
- 后端基于 FastAPI主要代码位于 `app/`
- 前端源码不在本仓库,前端源仓库是 `MoviePilot-Frontend`;本仓库中的 `public/` 仅视为前端构建产物目录。
- 本仓库还包含:
- 本地 CLI 入口:`moviepilot`
- 数据库迁移:`database/versions/`
- 测试:`tests/`
- 开发与接口文档:`docs/`
- AI skills`skills/`
## 2. 工作原则
- 先阅读相关实现、测试和文档,再修改代码;不要凭目录名猜行为。
- 采用最小正确改动,优先复用现有函数、模式与命名。
- 不做与当前任务无关的大规模重构、批量重命名或样式清扫。
- 工作区可能存在用户未提交修改;不要回滚、覆盖或整理你未理解的内容。
- 默认使用中文输出结论、验证结果和风险说明。
## 3. 关键目录说明
- `app/`:后端业务代码与启动流程,运行入口为 `app/main.py`
- `moviepilot`:本地 CLI 启动脚本与帮助文本
- `database/versions/`Alembic 迁移脚本
- `docs/`CLI、MCP、开发流程等文档
- `docker/`:镜像构建与容器启动脚本
- `skills/`:可供 AI agent 使用的 skills 定义和脚本
- `tests/`pytest 测试与少量手动测试脚本
- `config/``.moviepilot.env``*.db`:本地配置或运行数据,除非用户明确要求,否则不要修改或提交
## 4. 不要手工修改的内容
- `__pycache__/``.mypy_cache/``.ruff_cache/``venv/``.runtime/``build/``dist/`
- Cython 或平台相关编译产物,例如 `app/helper/sites.cpython-*.so`
- 本地数据库、日志、缓存、cookie、token、环境文件
- `version.py`,除非任务明确是发版、对齐版本或用户明确要求修改版本号
- `public/` 中的构建产物,除非任务明确是更新前端发布资源
说明:`setup.py` 会编译 `app/**/*.py`(排除 `app/main.py`),普通后端改动通常不需要同步重建二进制产物,除非任务明确要求交付编译结果。
## 5. 依赖与环境约定
- 目标 Python 版本为 `3.11+`;当前 CI 使用 Python `3.12`
- 依赖源文件是 `requirements.in`
- `requirements.txt` 是通过 `pip-compile requirements.in` 生成的锁定文件,不要手工维护内容
- 安装依赖使用:`pip install -r requirements.txt`
- 新增或升级依赖时:
1. 先修改 `requirements.in`
2. 再执行 `pip-compile requirements.in`
3. 最后补跑相关测试与安全检查
## 6. 代码与文档修改规则
- 保持现有代码风格,不引入没有明确收益的新抽象层。
- 注释保持克制,只解释不直观的逻辑或边界条件。
- 修复 bug 时,优先补一个能复现问题的测试;新增功能时,优先补最小覆盖测试。
- 变更 CLI 行为时,同时检查并更新:
- `moviepilot`
- `docs/cli.md`
- 相关测试
- 变更 MCP/REST API、工具暴露或 AI 交互行为时,同时检查并更新:
- `docs/mcp-api.md`
- `skills/` 中相关 `SKILL.md` 或脚本
- 相关测试
- 变更开发流程、依赖管理或安全检查方式时,同时更新 `docs/development-setup.md`
- 涉及数据库结构变化时,补充 `database/versions/` 迁移脚本;不要只改模型不改迁移
## 7. Skills 相关约定
- 新增 skill 时,遵循现有 `skills/<name>/SKILL.md` 结构,保留 YAML front matter`name``version``description`)。
- skill 内引用脚本时,优先使用相对 `SKILL.md` 的路径描述。
- 如果 skill 对应的 CLI/API 行为变化,必须同步更新 skill 文档,避免文档与实际能力脱节。
## 8. 验证要求
- 至少运行与当前改动直接相关的测试,例如:`pytest tests/test_xxx.py`
- 影响公共模块、初始化流程、CLI 或 agent 运行时时,扩大测试范围
- Python 代码改动后,至少确认不会为 `pylint app/` 引入新的错误级问题
- 变更 CLI 时,至少验证相关帮助输出,例如:`moviepilot help` 或对应子命令帮助
- 变更依赖时,补跑:
- `pip-compile requirements.in`
- `safety check -r requirements.txt --policy-file=safety.policy.yml`
如果本次只修改文档,说明未运行测试即可;不要伪造验证结果。
## 9. 提交与发布约定
- 只有在用户明确要求提交时才创建 commit。
- commit message 优先使用 Conventional Commits例如`feat: ...``fix: ...``docs: ...`
- 这样做不是形式要求;仓库的发布流水线会按 Conventional Commits 生成 changelog 分类。
- 不要顺手修改版本号、发布配置或 Docker 发布流程,除非任务明确涉及这些内容。
## 10. 常见任务提示
- 新增 API 或工具同时检查路由、鉴权、schema、文档、测试
- 新增 CLI 子命令:同时检查帮助文本、参数解析、文档、测试
- 新增数据库字段:同时检查模型、迁移、默认值与兼容路径
- 新增 agent/LLM 能力:同时检查 `skills/`、MCP/API 暴露、提示词行为与交互测试
## 11. 输出要求
- 结果说明聚焦三件事:改了什么、怎么验证的、还有什么风险
- 不写空泛总结,不把未执行的检查写成“已完成”
- 若发现兼容性影响、配置迁移风险或用户数据风险,必须明确指出