mirror of
https://github.com/jxxghp/MoviePilot.git
synced 2026-05-13 07:26:45 +00:00
5.4 KiB
5.4 KiB
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/
- 本地 CLI 入口:
2. 工作原则
- 先阅读相关实现、测试和文档,再修改代码;不要凭目录名猜行为。
- 采用最小正确改动,优先复用现有函数、模式与命名。
- 不做与当前任务无关的大规模重构、批量重命名或样式清扫。
- 工作区可能存在用户未提交修改;不要回滚、覆盖或整理你未理解的内容。
- 默认使用中文输出结论、验证结果和风险说明。
3. 关键目录说明
app/:后端业务代码与启动流程,运行入口为app/main.pymoviepilot:本地 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 使用 Python3.12 - 依赖源文件是
requirements.in requirements.txt是通过pip-compile requirements.in生成的锁定文件,不要手工维护内容- 安装依赖使用:
pip install -r requirements.txt - 新增或升级依赖时:
- 先修改
requirements.in - 再执行
pip-compile requirements.in - 最后补跑相关测试与安全检查
- 先修改
6. 代码与文档修改规则
- 保持现有代码风格,不引入没有明确收益的新抽象层。
- 注释保持克制,只解释不直观的逻辑或边界条件。
- 修复 bug 时,优先补一个能复现问题的测试;新增功能时,优先补最小覆盖测试。
- 变更 CLI 行为时,同时检查并更新:
moviepilotdocs/cli.md- 相关测试
- 变更 MCP/REST API、工具暴露或 AI 交互行为时,同时检查并更新:
docs/mcp-api.mdskills/中相关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.insafety 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. 输出要求
- 结果说明聚焦三件事:改了什么、怎么验证的、还有什么风险
- 不写空泛总结,不把未执行的检查写成“已完成”
- 若发现兼容性影响、配置迁移风险或用户数据风险,必须明确指出