Files
archived-MoviePilot/AGENTS.md

5.4 KiB
Raw Blame History

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 skillsskills/

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 matternameversiondescription)。
  • 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. 输出要求

  • 结果说明聚焦三件事:改了什么、怎么验证的、还有什么风险
  • 不写空泛总结,不把未执行的检查写成“已完成”
  • 若发现兼容性影响、配置迁移风险或用户数据风险,必须明确指出