用途:这是 MoviePilot 的直接 SQL 边界技能,适合在现有工具或 API 无法覆盖时,检查记录、统计数据、修复卡住状态,或执行用户明确要求的数据库更新。所有数据库访问都应通过 scripts/mp-db.py 完成,脚本会读取 MoviePilot 本地设置并内部连接 SQLite 或 PostgreSQL,不应从提示中提取数据库密码、API Token 或完整 PostgreSQL DSN。
主要能力:可列出表、查看表结构、执行只读查询、从 stdin 或文件读取 SQL,以及执行写入语句。命令示例:python scripts/mp-db.py tables;python scripts/mp-db.py schema downloadhistory;python scripts/mp-db.py query "SELECT COUNT(*) AS total FROM downloadhistory";python scripts/mp-db.py query --file /path/to/query.sql;python scripts/mp-db.py write "UPDATE subscribe SET state = 'S' WHERE id = 123"。query --write 作为兼容别名仍可用,但写入、删除和改结构建议使用 write 子命令。
使用方式:应在 MoviePilot 程序目录下用项目运行时执行,例如 cd <MOVIEPILOT_ROOT> 后运行 python skills/database-operation/scripts/mp-db.py tables。若从 <CONFIG_PATH>/agent/skills/ 直接运行复制脚本,需先设置 MOVIEPILOT_ROOT 为程序目录。优先使用 MoviePilot 产品界面或 API,如 moviepilot-api、command-dispatch、organize-files、transfer-failed-retry 等;本技能仅作为数据访问或修改的最终回退。未知表结构时先运行 tables,再运行 schema <table>。
限制与安全:query 默认只读,SELECT 无 LIMIT 时默认加 LIMIT 100;一次调用拒绝多条 SQL 语句。写入、删除、改结构等破坏性或大范围操作需用户明确授权,建议先备份,且 UPDATE 或 DELETE 不应缺少 WHERE 子句。systemconfig 等受管设置应优先通过 API 操作,仅在明确授权的修复场景下直接改 SQL。输出可能含密钥、Cookie、Token 等敏感值,仅用于所请求操作,不应在最终回复中回显,除非用户明确要求查看。结果应保持精简,大结果需汇总。具体表结构以实时 schema 结果为准。