Files
archived-MoviePilot-Plugins/plugins/agentresourceofficer/ARCHITECTURE.md
2026-05-10 10:39:59 +08:00

224 lines
5.7 KiB
Markdown
Raw 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影视助手架构草案
`Agent影视助手` 是重构后的资源工作流主插件,重点不是把旧代码简单拼一起,而是把职责重新压平。
## 设计目标
- 一个插件承接“搜索 -> 选择 -> 解锁 -> 转存 -> 签到/用户态 -> 远程入口”
- 智能体、飞书、CLI、后续 MP Agent Tool 共享同一套执行服务
- 会话交互与底层执行解耦,避免继续把大量业务逻辑堆在消息入口层
## 模块分层
### 1. adapters
负责不同外部入口和外部平台接入:
- `feishu`
- `hdhive`
- `quark`
- `pansou`
- 后续 `agent_tool`
原则:
- 只负责协议和输入输出转换
- 不负责复杂业务编排
### 2. services
负责核心业务能力:
- `search_service`
- `unlock_service`
- `transfer_service`
- `signin_service`
- `user_service`
原则:
- 统一返回结构
- 尽量不感知飞书、页面、CLI 等具体入口
### 3. session
负责交互上下文:
- 搜索候选缓存
- 翻页状态
- 选择上下文
- 详情/审查补充信息(已支持候选页按需补主演)
原则:
- 入口层共享同一套会话数据
- 后续优先支持内存 + 轻量持久化
### 4. models
负责统一数据模型:
- 搜索候选
- 资源条目
- 解锁结果
- 转存结果
- 用户信息
目标:
- 减少旧插件之间字段名不一致的问题
## 首期配置模型
### 基础
- `enabled`
- `notify`
- `debug`
### 影巢
- `hdhive_base_url`
- `hdhive_api_key`
- `hdhive_default_path`
- `hdhive_candidate_page_size`
### 夸克
- `quark_cookie`
- `quark_default_path`
- `quark_timeout`
- `quark_auto_import_cookiecloud`
### 飞书
- `feishu_enabled`
- `feishu_app_id`
- `feishu_app_secret`
- `feishu_verification_token`
- `feishu_allow_all`
- `feishu_allowed_chat_ids`
- `feishu_allowed_user_ids`
### 智能体 / 工具层预留
- `agent_tools_enabled`
- `tool_debug`
## 迁移映射
### 从 `QuarkShareSaver`
优先迁入:
- 分享链接解析
- 目录创建
- 转存执行
- CookieCloud 自动导入
当前已开始拆出:
- `services/quark_transfer.py`
### 从 `P115StrmHelper` 协同层
当前已开始拆出:
- `services/p115_transfer.py`
### 从 `HdhiveOpenApi`
随后迁入:
- 搜索
- 候选解析
- 解锁
- 用户信息
- 配额
- 分享管理
当前已开始拆出:
- `services/hdhive_openapi.py`
### 从 `HDHiveDailySign`
补入:
- 普通签到
- 赌狗签到
- 自动登录与状态记录
### 从 `FeishuCommandBridgeLong`
最后收口:
- 飞书长连接入口
- 自然语言别名解析
- 搜索/选择会话衔接
## 暂不迁入的内容
- `P115StrmHelper` 仍作为 115 落地执行层保留,不直接并入 `Agent影视助手`
> 更新说明PT 搜索、下载、订阅、推荐、入库追踪相关工作流已经收口到 `Agent影视助手` 主线,不再依赖旧桥接插件作为主入口。
## P115StrmHelper 兼容补丁
新版 MoviePilot 移除了旧版 `TransferOverwriteCheck` 事件时,部分 `P115StrmHelper` 版本会因为导入 `TransferOverwriteCheckEventData` 失败而无法加载,进而导致 115 自动转存不可用。
仓库提供了幂等补丁脚本:
```bash
MP_CONTAINER=moviepilot-v2 ./scripts/patch-p115strmhelper-mp-compat.sh
```
补丁只跳过缺失事件的注册,不改动 `P115StrmHelper` 的分享转存主流程。运行环境已验证 `AgentResourceOfficer``p115/health` 可返回 `p115_ready=true`
## 115 轻量直转层
`Agent影视助手``0.1.17` 开始支持 115 分享链接轻量直转 + 扫码会话登录:
- 支持生成和轮询 `p115client` 同款 115 扫码二维码,拿到 `UID / CID / SEID / KID` 这类客户端会话后自动写回插件配置
- 配置扫码得到的 115 会话时,直接用该会话创建 115 客户端并调用 `share_receive`
- 未配置独立扫码会话时,优先复用已加载的 115 客户端,不再必须走 `sharetransferhelper`
- 直转失败时回退 `P115StrmHelper` 的分享转存主流程
这个能力只负责“分享链接落到 115 目标目录”。STRM 生成、302、增量/全量同步、媒体库整理仍保持由 `P115StrmHelper` 承担。
这里特意没有走网页版 CookieCloud也没有直接拿 MP 系统内置的 `u115` OAuth Token 来代替扫码会话,因为分享转存链路仍然更适合复用 `p115client` 的客户端会话模型。
## 首个里程碑
第一个可用版本只追求三件事:
1. 夸克分享链接直接转存
2. 影巢搜索并解锁
3. 飞书调用同一套执行服务
当前进度:
- 已拆出夸克执行服务
- 已拆出影巢基础 OpenAPI 服务
- 已拆出 115 转存执行服务
- 已补上 Agent影视助手 自己的统一智能入口assistant route / pick
- 主插件已具备:
- 夸克健康检查
- 夸克转存
- 影巢健康检查
- 影巢搜索
- 影巢关键词候选搜索
- 影巢解锁
- 115 依赖健康检查
- 115 分享转存
- 影巢解锁后自动路由到夸克执行层
- 影巢解锁后自动路由到 115 执行层
- 影巢会话搜索与按编号继续选择
- 盘搜搜索与按编号继续执行
- 统一智能入口对直链、盘搜、影巢三类输入的会话分流
- 原生 Agent Tool 直接发起和轮询 115 扫码登录
- 智能入口 `assistant/route` 可直接理解 `115登录` / `检查115登录`
- 扫码登录成功后可直接返回 115 运行状态摘要,便于飞书与 MP 智能助手继续执行
- 智能入口与原生 Agent Tool 都可直接返回 `115状态` 摘要,不依赖是否存在待检查会话
- 待继续的 115 任务已具备轻量持久化、时间/重试/错误摘要,并提供查看、继续、取消三个原生 Agent Tool 和标准 API
- `115状态` / `检查115登录` / `115帮助` 统一补充下一步建议,减少人工猜测下一条命令