Files
openclaw-config/workspace-storage/MEMORY.md
T

107 lines
5.4 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.
# 长期记忆:仓库管理员(文件管理 + 下载管理)
## 🌐 语言要求
- **所有交互一律使用中文**
- 技术术语可保留原文(目录名、路径等),但解释、对话、回复用中文
## 身份
你是我的本地文件仓库管理员,负责管理外接硬盘的视频、文档、照片、音乐,同时负责 BT 下载、文件传输、种子文件处理等任务。
## 硬盘结构(永久记忆)
- 主存储硬盘:/mnt/e
- 媒体库根目录:/mnt/e/media
- creator/ — 作者作品合集,已按剧集模式组织 NFO(45个作者,1272视频)
- video/ — 分类视频,子目录(探花/偷拍/自拍/小视频等)已按剧集模式组织 NFO
- ai/ — AI生成视频
- anime/ — 动画
- audio/ — 音频
- cav/ — CAV番号
- fc2/ — FC2番号
- gallery/ — 图集
- jav/ — JAV番号
- novel/ — 小说
- scripts/ — 管理脚本
- 照片目录:/mnt/e/library
- 王芳的相册:/mnt/e/library/library/291b165d-d4b5-4ce3-8572-e6d189673119
- 按年份:/mnt/e/library/library/291b165d-d4b5-4ce3-8572-e6d189673119/2024, 2025, 2026
- 杨轩的相册:/mnt/e/library/library/admin
- 按年份:/mnt/e/library/library/admin/2024, 2025, 2026
- 听书:/mnt/e/classified/听书
- 文档:/mnt/e/classified/小说
## Calibre-Web / Calibre 桌面版
- 服务:http://localhost:8083
- 用户名:yangxuan
- 密码:5gynj20J#
- 书库路径:/home/yangxuan/calibre/books/metadata.dbext4 原生)
- 配置目录:/home/yangxuan/calibre/config/ext4 原生)
- Docker 部署:/home/yangxuan/calibre/compose.yml
- 桌面版 Calibre 也已指向同一书库(~/.config/calibre/global.py.json
- 管理命令:
- 启动: docker compose -f /home/yangxuan/calibre/compose.yml up -d
- 停止: docker compose -f /home/yangxuan/calibre/compose.yml down
- 桌面版: calibre
- 命令行批量添加: find <目录> -name "*.txt" -print0 | xargs -0 -n 50 calibredb add --library-path /home/yangxuan/calibre/books
- ⚠ 桌面版和 Calibre-Web 不要同时写库,轮换使用
- 文档导入源:/mnt/e/classified/看书 已全部导入并删除
- 源文件 5921 个 / 入库 6895 本(含之前已有)
## Jellyfin NFO 元数据生成
- /mnt/f/anime244部动画OVA413个视频文件)已批量生成 nfo 元数据
- 每个目录生成 tvshow.nfo + season.nfo + 每集 .nfo
- 剧名自动去掉日期前缀(如 `2008-03-28 花粉少女注意報!``花粉少女注意報!THE ANIMATION`
- 集数按文件名自然排序从1开始编号
- 已创建技能提案 `jellyfin-nfo-builder` 供后续复用
## Jellyfin API
- 服务器地址(WSL 内): http://127.0.0.1:8096
- 服务器地址(Windows: http://192.168.3.5:8096
- API Key: `8cbcfe4d7d294c8aa00412ccc853459f`
- 用户 ID: `0f2540701e884852a2d2a1b7e63299e8`
- 认证头: `X-Emby-Authorization: MediaBrowser Client="OpenClaw", Device="PC", DeviceId="openclaw", Version="1.0", Token=...`
- OpenAPI 规范: `jellyfin/jellyfin-openapi-stable.json` (工作区 jellyfin/ 目录)
- 脚本和文档均在 `storage/jellyfin/` 目录下
- 常用端点: `GET /Items`(搜索/列表)、`GET /Users/Me/Items`
## 历史操作记录
-`bt`(下载助手)agent 已于 2026-07-02 合并至本 agent
- bt 功能(下载管理、种子文件处理、传输管理)已整合到本仓库管理员的职责中
- bt 的配置文件(Jellyfin 相关)已统一到 `jellyfin/` 目录
- bt 的旧 session 数据已删除
## 📐 视频整理规则
- **50MB 以下的视频文件一律视作广告,直接删除处理**
## ⚠️ 重大教训
### WSL 操作 /mnt 文件极慢
- **不要在 WSL 里通过 /mnt/{c,d,e,f,...} 处理大量小文件!** 跨文件系统(DrvFs)IO 性能极差,遍历+读写数万个小文件会卡死
- 大量 GBK→UTF-8 转码、批量文件扫描等操作,瓶颈在 /mnt 而不是 WSL CPU
- 正确方案:**在 Windows 原生 Python 里执行**,或者把文件复制到 WSL 原生 ext4(如 ~/ 下)处理完再拷回去
- 杨轩的 Windows 有 Python 3.13.9,重文件操作走 Windows 端脚本
### JAV 封面图刮削的局限
- JavDB 有 Cloudflare 反爬,Python requests/cloudscraper 均被拦截
- FlareSolverr 走 HTTP 代理时无法完成 Cloudflare JS ChallengeWebSocket 不兼容)
- FANZA/DMM 图片 CDN 只返小占位图,真实大图需 JS 渲染
- **最可靠封面获取方式:在 Windows 端浏览器打开 JavDB 手动下载**
## scripts 项目(E:\media\scripts\
- Python 辅助脚本,管理 E:\media 目录的日常运维
- `clean_empty.py` — 递归清理 E:\media 下的空文件夹(跳过隐藏/系统文件,多次扫描直到无可删)
- 执行:`python E:\media\scripts\clean_empty.py`
- 后续可在 scripts/ 下继续添加管理脚本
## Clash 代理
- Docker 容器(dreamacro/clash),端口 7443mixed-portHTTP + SOCKS5
- Docker compose 配置:`/home/yangxuan/docker/qbittorrent/clash_config/config.yaml`
- 认证:`proxy` / `5gynj20J`
- WSL 内访问:代理地址 `127.0.0.1:7443`
- SOCKS5 代理认证通过 `socks.set_default_proxy` + Python socket monkey patch 正常
- HTTP 代理认证在 CONNECT 隧道时可能 407,建议用 SOCKS5
## FlareSolverr
- Docker 容器(flaresolverr/flaresolverr),端口 8191
- 管理:`docker stop/start/rm flaresolverr`
- 注意不要设置 HTTP_PROXY 环境变量(导致 Chrome 启动失败)
- 如需通过代理访问,使用 API 请求中的 `proxy` 参数