From b4ad6fd6feb2abd9e4c677d1e276e143a3889e64 Mon Sep 17 00:00:00 2001 From: MarSeventh <1193267292@qq.com> Date: Wed, 30 Sep 2026 23:48:30 +0800 Subject: [PATCH] feat: add unified AI services and image tag recognition --- README.md | 8 +- README_zh.md | 10 +- deploy/worker/generate-toml.js | 7 +- deploy/worker/index.js | 8 + deploy/worker/wrangler.toml | 1 + docker-compose.yml | 2 + frontend-dist/css/126.8d4195f5.css | 1 + frontend-dist/css/126.8d4195f5.css.gz | Bin 0 -> 12766 bytes frontend-dist/css/130.8ca5a76a.css | 1 - frontend-dist/css/130.8ca5a76a.css.gz | Bin 15527 -> 0 bytes .../{787.448a9124.css => 168.448a9124.css} | 0 ...87.448a9124.css.gz => 168.448a9124.css.gz} | Bin frontend-dist/css/473.f3f669e8.css | 1 - frontend-dist/css/473.f3f669e8.css.gz | Bin 6054 -> 0 bytes frontend-dist/css/502.7f4cb9f9.css | 1 + frontend-dist/css/502.7f4cb9f9.css.gz | Bin 0 -> 12060 bytes frontend-dist/css/502.ae48a06e.css | 1 - frontend-dist/css/502.ae48a06e.css.gz | Bin 12448 -> 0 bytes frontend-dist/css/757.60c15823.css | 1 - frontend-dist/css/757.60c15823.css.gz | Bin 12812 -> 0 bytes frontend-dist/css/787.176e498b.css | 1 + frontend-dist/css/787.176e498b.css.gz | Bin 0 -> 15953 bytes frontend-dist/css/860.3febd367.css | 1 + frontend-dist/css/860.3febd367.css.gz | Bin 0 -> 5930 bytes frontend-dist/css/app.30026cb8.css | 1 + frontend-dist/css/app.30026cb8.css.gz | Bin 0 -> 3992 bytes frontend-dist/css/app.966aac8a.css | 1 - frontend-dist/css/app.966aac8a.css.gz | Bin 3906 -> 0 bytes frontend-dist/css/chunk-vendors.c8a4c1c7.css | 10 + .../css/chunk-vendors.c8a4c1c7.css.gz | Bin 0 -> 10688 bytes frontend-dist/css/chunk-vendors.f9cd4701.css | 10 - .../css/chunk-vendors.f9cd4701.css.gz | Bin 9747 -> 0 bytes frontend-dist/index.html | 2 +- frontend-dist/index.html.gz | Bin 601 -> 600 bytes frontend-dist/js/126.844eba4a.js | 23 ++ frontend-dist/js/126.844eba4a.js.gz | Bin 0 -> 115133 bytes ...57.47b4e4b0.js.map => 126.844eba4a.js.map} | 2 +- frontend-dist/js/126.844eba4a.js.map.gz | Bin 0 -> 387438 bytes frontend-dist/js/130.b657e68d.js | 2 - frontend-dist/js/130.b657e68d.js.gz | Bin 59623 -> 0 bytes frontend-dist/js/130.b657e68d.js.map | 1 - frontend-dist/js/130.b657e68d.js.map.gz | Bin 151426 -> 0 bytes .../js/{787.d0dbc2dd.js => 168.16edcf49.js} | 4 +- frontend-dist/js/168.16edcf49.js.gz | Bin 0 -> 1566 bytes ...87.d0dbc2dd.js.map => 168.16edcf49.js.map} | 2 +- frontend-dist/js/168.16edcf49.js.map.gz | Bin 0 -> 3271 bytes frontend-dist/js/502.58060353.js | 2 - frontend-dist/js/502.58060353.js.gz | Bin 33835 -> 0 bytes frontend-dist/js/502.58060353.js.map.gz | Bin 85300 -> 0 bytes frontend-dist/js/502.ff024e4c.js | 2 + frontend-dist/js/502.ff024e4c.js.gz | Bin 0 -> 33831 bytes ...02.58060353.js.map => 502.ff024e4c.js.map} | 2 +- frontend-dist/js/502.ff024e4c.js.map.gz | Bin 0 -> 85300 bytes frontend-dist/js/757.47b4e4b0.js | 23 -- frontend-dist/js/757.47b4e4b0.js.gz | Bin 108378 -> 0 bytes frontend-dist/js/757.47b4e4b0.js.map.gz | Bin 369621 -> 0 bytes frontend-dist/js/787.b5df6f2f.js | 2 + frontend-dist/js/787.b5df6f2f.js.gz | Bin 0 -> 64489 bytes frontend-dist/js/787.b5df6f2f.js.map | 1 + frontend-dist/js/787.b5df6f2f.js.map.gz | Bin 0 -> 161615 bytes frontend-dist/js/787.d0dbc2dd.js.gz | Bin 1566 -> 0 bytes frontend-dist/js/787.d0dbc2dd.js.map.gz | Bin 3272 -> 0 bytes frontend-dist/js/app.34dadb84.js | 2 - frontend-dist/js/app.34dadb84.js.gz | Bin 26966 -> 0 bytes frontend-dist/js/app.34dadb84.js.map | 1 - frontend-dist/js/app.34dadb84.js.map.gz | Bin 18923 -> 0 bytes frontend-dist/js/app.3c3cf9d6.js | 2 + frontend-dist/js/app.3c3cf9d6.js.gz | Bin 0 -> 33031 bytes frontend-dist/js/app.3c3cf9d6.js.map | 1 + frontend-dist/js/app.3c3cf9d6.js.map.gz | Bin 0 -> 20215 bytes ....c0852d4e.js => chunk-vendors.229dcca1.js} | 8 +- frontend-dist/js/chunk-vendors.229dcca1.js.gz | Bin 0 -> 518194 bytes ...e.js.map => chunk-vendors.229dcca1.js.map} | 2 +- .../js/chunk-vendors.229dcca1.js.map.gz | Bin 0 -> 1774833 bytes frontend-dist/js/chunk-vendors.c0852d4e.js.gz | Bin 518882 -> 0 bytes .../js/chunk-vendors.c0852d4e.js.map.gz | Bin 1775312 -> 0 bytes functions/api/manage/_middleware.js | 8 +- functions/api/manage/ai/tags.js | 62 ++++++ functions/api/manage/ai/test.js | 13 ++ functions/api/manage/sysConfig/ai.js | 17 ++ functions/api/manage/tags/[[path]].js | 208 ++---------------- functions/api/manage/tags/apply.js | 13 ++ functions/api/manage/tags/batch.js | 182 +-------------- functions/services/tags.js | 83 +++++++ functions/utils/ai/capabilities.js | 32 +++ functions/utils/ai/config.js | 156 +++++++++++++ functions/utils/ai/index.js | 52 +++++ .../utils/ai/providers/openaiCompatible.js | 69 ++++++ functions/utils/apiResponse.js | 64 ++++++ 89 files changed, 674 insertions(+), 435 deletions(-) create mode 100644 frontend-dist/css/126.8d4195f5.css create mode 100644 frontend-dist/css/126.8d4195f5.css.gz delete mode 100644 frontend-dist/css/130.8ca5a76a.css delete mode 100644 frontend-dist/css/130.8ca5a76a.css.gz rename frontend-dist/css/{787.448a9124.css => 168.448a9124.css} (100%) rename frontend-dist/css/{787.448a9124.css.gz => 168.448a9124.css.gz} (100%) delete mode 100644 frontend-dist/css/473.f3f669e8.css delete mode 100644 frontend-dist/css/473.f3f669e8.css.gz create mode 100644 frontend-dist/css/502.7f4cb9f9.css create mode 100644 frontend-dist/css/502.7f4cb9f9.css.gz delete mode 100644 frontend-dist/css/502.ae48a06e.css delete mode 100644 frontend-dist/css/502.ae48a06e.css.gz delete mode 100644 frontend-dist/css/757.60c15823.css delete mode 100644 frontend-dist/css/757.60c15823.css.gz create mode 100644 frontend-dist/css/787.176e498b.css create mode 100644 frontend-dist/css/787.176e498b.css.gz create mode 100644 frontend-dist/css/860.3febd367.css create mode 100644 frontend-dist/css/860.3febd367.css.gz create mode 100644 frontend-dist/css/app.30026cb8.css create mode 100644 frontend-dist/css/app.30026cb8.css.gz delete mode 100644 frontend-dist/css/app.966aac8a.css delete mode 100644 frontend-dist/css/app.966aac8a.css.gz create mode 100644 frontend-dist/css/chunk-vendors.c8a4c1c7.css create mode 100644 frontend-dist/css/chunk-vendors.c8a4c1c7.css.gz delete mode 100644 frontend-dist/css/chunk-vendors.f9cd4701.css delete mode 100644 frontend-dist/css/chunk-vendors.f9cd4701.css.gz create mode 100644 frontend-dist/js/126.844eba4a.js create mode 100644 frontend-dist/js/126.844eba4a.js.gz rename frontend-dist/js/{757.47b4e4b0.js.map => 126.844eba4a.js.map} (56%) create mode 100644 frontend-dist/js/126.844eba4a.js.map.gz delete mode 100644 frontend-dist/js/130.b657e68d.js delete mode 100644 frontend-dist/js/130.b657e68d.js.gz delete mode 100644 frontend-dist/js/130.b657e68d.js.map delete mode 100644 frontend-dist/js/130.b657e68d.js.map.gz rename frontend-dist/js/{787.d0dbc2dd.js => 168.16edcf49.js} (97%) create mode 100644 frontend-dist/js/168.16edcf49.js.gz rename frontend-dist/js/{787.d0dbc2dd.js.map => 168.16edcf49.js.map} (98%) create mode 100644 frontend-dist/js/168.16edcf49.js.map.gz delete mode 100644 frontend-dist/js/502.58060353.js delete mode 100644 frontend-dist/js/502.58060353.js.gz delete mode 100644 frontend-dist/js/502.58060353.js.map.gz create mode 100644 frontend-dist/js/502.ff024e4c.js create mode 100644 frontend-dist/js/502.ff024e4c.js.gz rename frontend-dist/js/{502.58060353.js.map => 502.ff024e4c.js.map} (99%) create mode 100644 frontend-dist/js/502.ff024e4c.js.map.gz delete mode 100644 frontend-dist/js/757.47b4e4b0.js delete mode 100644 frontend-dist/js/757.47b4e4b0.js.gz delete mode 100644 frontend-dist/js/757.47b4e4b0.js.map.gz create mode 100644 frontend-dist/js/787.b5df6f2f.js create mode 100644 frontend-dist/js/787.b5df6f2f.js.gz create mode 100644 frontend-dist/js/787.b5df6f2f.js.map create mode 100644 frontend-dist/js/787.b5df6f2f.js.map.gz delete mode 100644 frontend-dist/js/787.d0dbc2dd.js.gz delete mode 100644 frontend-dist/js/787.d0dbc2dd.js.map.gz delete mode 100644 frontend-dist/js/app.34dadb84.js delete mode 100644 frontend-dist/js/app.34dadb84.js.gz delete mode 100644 frontend-dist/js/app.34dadb84.js.map delete mode 100644 frontend-dist/js/app.34dadb84.js.map.gz create mode 100644 frontend-dist/js/app.3c3cf9d6.js create mode 100644 frontend-dist/js/app.3c3cf9d6.js.gz create mode 100644 frontend-dist/js/app.3c3cf9d6.js.map create mode 100644 frontend-dist/js/app.3c3cf9d6.js.map.gz rename frontend-dist/js/{chunk-vendors.c0852d4e.js => chunk-vendors.229dcca1.js} (71%) create mode 100644 frontend-dist/js/chunk-vendors.229dcca1.js.gz rename frontend-dist/js/{chunk-vendors.c0852d4e.js.map => chunk-vendors.229dcca1.js.map} (62%) create mode 100644 frontend-dist/js/chunk-vendors.229dcca1.js.map.gz delete mode 100644 frontend-dist/js/chunk-vendors.c0852d4e.js.gz delete mode 100644 frontend-dist/js/chunk-vendors.c0852d4e.js.map.gz create mode 100644 functions/api/manage/ai/tags.js create mode 100644 functions/api/manage/ai/test.js create mode 100644 functions/api/manage/sysConfig/ai.js create mode 100644 functions/api/manage/tags/apply.js create mode 100644 functions/services/tags.js create mode 100644 functions/utils/ai/capabilities.js create mode 100644 functions/utils/ai/config.js create mode 100644 functions/utils/ai/index.js create mode 100644 functions/utils/ai/providers/openaiCompatible.js create mode 100644 functions/utils/apiResponse.js diff --git a/README.md b/README.md index badd1dc..10b6e49 100644 --- a/README.md +++ b/README.md @@ -28,7 +28,7 @@ # 1. 💡 Introduction -CloudFlare ImgBed is a self-hosted image and file hosting solution for Docker and serverless environments, bringing **Telegram**, **Discord**, **Cloudflare R2**, **S3-compatible storage**, **Hugging Face**, **WebDAV**, and more into one management interface. It provides file management, authentication, directory organization, content moderation, a RESTful API, and WebDAV for personal image hosting, website asset management, and lightweight file distribution. **[View all features →](https://cfbed.sanyue.de/en/guide/features.html)** +CloudFlare ImgBed is a self-hosted image and file hosting solution for Docker and serverless environments, bringing **Telegram**, **Discord**, **Cloudflare R2**, **S3-compatible storage**, **Hugging Face**, **WebDAV**, and more into one management interface. It provides file management, authentication, directory organization, content moderation, a RESTful API, and WebDAV, with a growing range of personalized AI capabilities such as image tag recognition. It is suited to personal image hosting, website asset management, and lightweight file distribution. **[View all features →](https://cfbed.sanyue.de/en/guide/features.html)**  @@ -66,9 +66,9 @@ CloudFlare ImgBed is a self-hosted image and file hosting solution for Docker an