From cbb7950805fa5b5298d81ab472c3872bd826edf7 Mon Sep 17 00:00:00 2001 From: sephiroth <102894885+sephiroth233@users.noreply.github.com> Date: Fri, 26 Dec 2025 02:56:39 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=20axonhub=E5=BA=94=E7=94=A8?= =?UTF-8?q?=EF=BC=8Csub-store=20=E5=A2=9E=E5=8A=A0=20latest=20=E7=89=88?= =?UTF-8?q?=E6=9C=AC=E9=85=8D=E7=BD=AE=20(#3112)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * add axonhub * Added the latest version of the sub-store image configuration * ✨ feat(axonhub): add version 0.6.10 configuration and multi-language support --------- Co-authored-by: pooneyy <85266337+pooneyy@users.noreply.github.com> --- apps/axonhub/0.6.10/data.yml | 254 +++++++++++++++++++++++ apps/axonhub/0.6.10/docker-compose.yml | 25 +++ apps/axonhub/README.md | 10 + apps/axonhub/README_en.md | 10 + apps/axonhub/data.yml | 30 +++ apps/axonhub/logo.png | Bin 0 -> 5044 bytes apps/sub-store/latest/.env.sample | 6 + apps/sub-store/latest/data.yml | 53 +++++ apps/sub-store/latest/docker-compose.yml | 22 ++ 9 files changed, 410 insertions(+) create mode 100644 apps/axonhub/0.6.10/data.yml create mode 100644 apps/axonhub/0.6.10/docker-compose.yml create mode 100644 apps/axonhub/README.md create mode 100644 apps/axonhub/README_en.md create mode 100644 apps/axonhub/data.yml create mode 100644 apps/axonhub/logo.png create mode 100644 apps/sub-store/latest/.env.sample create mode 100644 apps/sub-store/latest/data.yml create mode 100644 apps/sub-store/latest/docker-compose.yml diff --git a/apps/axonhub/0.6.10/data.yml b/apps/axonhub/0.6.10/data.yml new file mode 100644 index 000000000..cc9f669c7 --- /dev/null +++ b/apps/axonhub/0.6.10/data.yml @@ -0,0 +1,254 @@ +additionalProperties: + formFields: + - default: 8090 + envKey: PANEL_APP_PORT_HTTP + labelZh: HTTP 端口 + labelEn: HTTP Port + label: + zh: HTTP 端口 + zh-Hant: HTTP 連接埠 + en: HTTP Port + ja: HTTP ポート + ko: HTTP 포트 + ms: Port HTTP + pt-br: Porta HTTP + ru: HTTP Порт + tr: HTTP Portu + description: + zh: "设置应用的 HTTP 访问端口,有效范围: 1-65535" + zh-Hant: "設定應用程式的 HTTP 存取連接埠,有效範圍: 1-65535" + en: "Set the HTTP access port for the application, valid range: 1-65535" + ja: "アプリケーションのHTTPアクセスポートを設定します。有効範囲: 1-65535" + ko: "애플리케이션의 HTTP 접근 포트를 설정합니다. 유효 범위: 1-65535" + ms: "Tetapkan port akses HTTP untuk aplikasi, julat sah: 1-65535" + pt-br: "Defina a porta de acesso HTTP para o aplicativo, intervalo válido: 1-65535" + ru: "Установите порт доступа HTTP для приложения, допустимый диапазон: 1-65535" + tr: "Uygulama için HTTP erişim portunu ayarlayın, geçerli aralık: 1-65535" + required: true + type: number + edit: true + rule: paramPort + - default: ./data + envKey: DATA_PATH + labelZh: 数据存储位置 + labelEn: Data Storage Location + label: + zh: 数据存储位置 + zh-Hant: 數據儲存位置 + en: Data Storage Location + ja: データ保存場所 + ko: 데이터 저장 위치 + ms: Lokasi Penyimpanan Data + pt-br: Local de Armazenamento de Dados + ru: Местоположение хранилища данных + tr: Veri Saklama Konumu + required: true + type: text + edit: true + - default: "" + envKey: PANEL_DB_HOST + labelZh: 数据库 + labelEn: Database + label: + zh: 数据库 + zh-Hant: 資料庫 + en: Database + ja: データベース + ko: 데이터베이스 + ms: Pangkalan Data + pt-br: Banco de Dados + ru: База данных + tr: Veritabanı + required: true + type: service + key: postgres + - default: axonhub + envKey: PANEL_DB_USER + labelZh: 数据库用户名 + labelEn: Database Username + label: + zh: 数据库用户名 + zh-Hant: 資料庫使用者名稱 + en: Database Username + ja: データベースユーザー名 + ko: 데이터베이스 사용자 이름 + ms: Nama Pengguna Pangkalan Data + pt-br: Nome de Usuário do Banco de Dados + ru: Имя пользователя базы данных + tr: Veritabanı Kullanıcı Adı + required: true + type: text + rule: paramCommon + random: true + - default: axonhub_pwd + envKey: PANEL_DB_USER_PASSWORD + labelZh: 数据库密码 + labelEn: Database Password + label: + zh: 数据库密码 + zh-Hant: 資料庫密碼 + en: Database Password + ja: データベースパスワード + ko: 데이터베이스 비밀번호 + ms: Kata Laluan Pangkalan Data + pt-br: Senha do Banco de Dados + ru: Пароль базы данных + tr: Veritabanı Parolası + required: true + type: password + rule: paramComplexity + random: true + - default: axonhub + envKey: PANEL_DB_NAME + labelZh: 数据库名 + labelEn: Database Name + label: + zh: 数据库名 + zh-Hant: 資料庫名稱 + en: Database Name + ja: データベース名 + ko: 데이터베이스 이름 + ms: Nama Pangkalan Data + pt-br: Nome do Banco de Dados + ru: Имя базы данных + tr: Veritabanı Adı + required: true + type: text + rule: paramCommon + random: true + - default: memory + envKey: AXONHUB_CACHE_MODE + labelZh: 缓存模式 + labelEn: Cache Mode + label: + zh: 缓存模式 + zh-Hant: 快取模式 + en: Cache Mode + ja: キャッシュモード + ko: 캐시 모드 + ms: Mod Cache + pt-br: Modo Cache + ru: Режим кэширования + tr: Önbellek Modu + required: true + type: select + edit: true + values: + - label: 内存 / Memory + value: memory + - label: Redis + value: redis + - label: Memory + Redis + value: two-level + - default: "" + envKey: PANEL_REDIS_HOST + labelZh: Redis 服务 + labelEn: Redis Service + label: + zh: Redis 服务 + zh-Hant: Redis 服务 + en: Redis Service + ja: Redisサービス + ko: Redis 서비스 + ms: Perkhidmatan Redis + pt-br: Serviço Redis + ru: Сервис Redis + tr: Redis Hizmeti + required: false + type: service + edit: true + key: redis + - default: "" + envKey: PANEL_REDIS_ROOT_PASSWORD + labelZh: Redis 服务密码 + labelEn: Redis Service Password + label: + zh: Redis 服务密码 + zh-Hant: Redis 服務密碼 + en: Redis Service Password + ja: Redis サービスパスワード + ko: Redis 서비스 비밀번호 + ms: Kata Laluan Perkhidmatan Redis + pt-br: Senha do Serviço Redis + ru: Пароль службы Redis + tr: Redis Hizmet Parolası + required: false + type: password + edit: true + rule: paramComplexity + - default: "" + envKey: AXONHUB_SERVER_TRACE_EXTRA_TRACE_HEADERS + labelZh: 额外的追踪请求头 + labelEn: Extra Trace Headers + label: + zh: 额外的追踪请求头 + zh-Hant: 額外的追蹤標頭 + en: Extra Trace Headers + ja: 追加のトレースヘッダー + ko: 추적 헤더 추가 + ms: Tajuk Jejakan Tambahan + pt-br: Cabeçalhos de Rastreamento Adicionais + ru: Дополнительные заголовки трассировки + tr: Ek İzleme Başlıkları + description: + en: "Reference: https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md" + zh: "参考: https://github.com/looplj/axonhub/blob/unstable/docs/zh/guides/tracing.md" + ja: 参考:https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md + zh-Hant: "参考: https://github.com/looplj/axonhub/blob/unstable/docs/zh/guides/tracing.md" + ko: "참조: https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md" + ms: "Rujukan: https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md" + pt-br: "Referência: https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md" + ru: "Ссылка: https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md" + tr: "Referans: https://github.com/looplj/axonhub/blob/unstable/docs/en/guides/tracing.md" + required: false + type: text + edit: true + - default: "true" + envKey: AXONHUB_SERVER_TRACE_CLAUDE_CODE_TRACE_ENABLED + labelZh: 启用 Claude Code 追踪 + labelEn: Claude Code Trace Enabled + label: + zh: 启用 Claude Code 追踪 + zh-Hant: 啟用 Claude Code 追蹤 + en: Claude Code Trace Enabled + ja: Claude Code トラッキングを有効化 + ko: Claude Code 추적 활성화 + ms: Dayakan Penjejakan Claude Code + pt-br: Ativar Rastreamento do Claude Code + ru: Включить отслеживание Claude Code + tr: Claude Code İzlemeyi Etkinleştir + description: + en: Enable extracting trace IDs from Claude Code request metadata + zh: 启用从 Claude Code 请求元数据中提取追踪 ID + zh-Hant: 啟用從 Claude Code 請求元資料中提取追蹤 ID + ja: Claude Code リクエストメタデータからのトレース ID 抽出を有効にする + ko: Claude Code 요청 메타데이터에서 추적 ID 추출 활성화 + ms: Dayakan pengekstrakan ID jejak daripada metadata permintaan Claude Code + pt-br: Ativar extração de IDs de rastreamento dos metadados da solicitação do Claude Code + ru: Включить извлечение идентификаторов трассировки из метаданных запроса Claude Code + tr: Claude Code istek meta verilerinden iz kimliklerinin çıkarılmasını etkinleştir + required: false + type: select + edit: true + values: + - label: 启用 / Enabled + value: "true" + - label: 禁用 / Disabled + value: "false" + - default: 0 2 * * * + envKey: AXONHUB_GC_CRON + labelZh: 垃圾回收 Cron 表达式 + labelEn: GC Cron Expression + label: + zh: 垃圾回收 Cron 表达式 + zh-Hant: 垃圾回收 Cron 表達式 + en: GC Cron Expression + ja: GC実行用のCron式 + ko: 가비지 컬렉션 실행용 Cron 표현식 + ms: Ungkapan Cron untuk pelaksanaan Pengumpulan Sampah + pt-br: Expressão Cron para execução da Coleta de Lixo + ru: Cron-выражение для выполнения сборки мусора + tr: Çöp Toplama yürütmesi için Cron ifadesi + required: false + type: text + edit: true diff --git a/apps/axonhub/0.6.10/docker-compose.yml b/apps/axonhub/0.6.10/docker-compose.yml new file mode 100644 index 000000000..1629aad23 --- /dev/null +++ b/apps/axonhub/0.6.10/docker-compose.yml @@ -0,0 +1,25 @@ +services: + axonhub: + image: looplj/axonhub:v0.6.10 + container_name: ${CONTAINER_NAME} + restart: always + ports: + - ${PANEL_APP_PORT_HTTP}:8090 + environment: + AXONHUB_DB_DIALECT: postgres + AXONHUB_DB_DSN: postgres://${PANEL_DB_USER}:${PANEL_DB_USER_PASSWORD}@${PANEL_DB_HOST}:${PANEL_DB_PORT}/${PANEL_DB_NAME}?sslmode=disable + AXONHUB_SERVER_TRACE_EXTRA_TRACE_HEADERS: ${AXONHUB_SERVER_TRACE_EXTRA_TRACE_HEADERS} + AXONHUB_SERVER_TRACE_CLAUDE_CODE_TRACE_ENABLED: ${AXONHUB_SERVER_TRACE_CLAUDE_CODE_TRACE_ENABLED} + AXONHUB_CACHE_MODE: ${AXONHUB_CACHE_MODE} + AXONHUB_CACHE_REDIS_URL: redis://default:${PANEL_REDIS_ROOT_PASSWORD}@${PANEL_REDIS_HOST}:6379 + AXONHUB_GC_CRON: ${AXONHUB_GC_CRON} + volumes: + - ${DATA_PATH}/data:/app/data + - ${DATA_PATH}/logs:/app/logs + labels: + createdBy: Apps + networks: + - 1panel-network +networks: + 1panel-network: + external: true diff --git a/apps/axonhub/README.md b/apps/axonhub/README.md new file mode 100644 index 000000000..c3cb4dcaf --- /dev/null +++ b/apps/axonhub/README.md @@ -0,0 +1,10 @@ +## 产品介绍 + +现代化的多合一 AI 开发平台 + +## 主要功能 + +- **统一 API**: 兼容 OpenAI 与 Anthropic 的接口,配合转换管线实现模型互换与映射,无需改动现有代码。 +- **追踪 / 线程**: 线程级追踪实时记录完整调用链路,提升可观测性与问题定位效率。 +- **细粒度权限**: 基于 RBAC 的权限策略,帮助团队精细管理访问控制、配额与数据隔离。 +- **自适应负载均衡**: 智能多策略负载均衡,自动选择最优 AI 通道,确保高可用性和最佳性能。 \ No newline at end of file diff --git a/apps/axonhub/README_en.md b/apps/axonhub/README_en.md new file mode 100644 index 000000000..3b98790de --- /dev/null +++ b/apps/axonhub/README_en.md @@ -0,0 +1,10 @@ +## Introduction + +Modern All-in-one AI Development Platform + +## Features + +- **Unified API**: OpenAI- and Anthropic-compatible interface with automatic API translation lets you use one API format to access any supported model provider. +- **Tracing / Threads**: Thread-aware tracing captures full request timelines for deep observability and faster debugging. +- **Fine-grained Permission**: RBAC-based policies help teams govern access, usage, 和 data segregation precisely. +- **Adaptive Load Balancing**: Intelligent multi-strategy load balancing automatically selects optimal AI channels based on health, performance, 和 session consistency. \ No newline at end of file diff --git a/apps/axonhub/data.yml b/apps/axonhub/data.yml new file mode 100644 index 000000000..389ac7ee6 --- /dev/null +++ b/apps/axonhub/data.yml @@ -0,0 +1,30 @@ +name: axonhub +tags: + - AI +title: 现代化的多合一 AI 开发平台 +description: 现代化的多合一 AI 开发平台 +additionalProperties: + key: axonhub + name: axonhub + tags: + - AI + shortDescZh: 现代化的多合一 AI 开发平台 + shortDescEn: Modern All-in-one AI Development Platform + description: + en: Modern All-in-one AI Development Platform + zh: 现代化的多合一 AI 开发平台 + zh-Hant: 現代化的一體化 AI 開發平台 + ja: モダンなオールインワンAI開発プラットフォーム + ms: Platform Pembangunan AI All-in-One Moden + pt-br: Plataforma de Desenvolvimento em IA Tudo-em-Um Moderna + ru: Современная всеобъемлющая платформа для разработки ИИ + ko: 현대적인 올인원 AI 개발 플랫폼 + type: website + crossVersionUpdate: true + limit: 0 + website: https://axonhub.onrender.com + github: https://github.com/looplj/axonhub + document: https://github.com/looplj/axonhub/blob/unstable/README.zh-CN.md + architectures: + - amd64 + - arm64 diff --git a/apps/axonhub/logo.png b/apps/axonhub/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..63207017b5bc6ed12d110fdb088bd95f69bdeee1 GIT binary patch literal 5044 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 LG&d;MbB_2w*b8}L literal 0 HcmV?d00001 diff --git a/apps/sub-store/latest/.env.sample b/apps/sub-store/latest/.env.sample new file mode 100644 index 000000000..965972f52 --- /dev/null +++ b/apps/sub-store/latest/.env.sample @@ -0,0 +1,6 @@ +CONTAINER_NAME="sub-store" +PANEL_APP_PORT_HTTP="40232" +DATA_PATH="./data" +SUB_STORE_CRON="55 23 * * *" +SUB_STORE_FRONTEND_BACKEND_PATH="/2cXaAxRGfddmGz2yx1wA" +SUB_STORE_PUSH_SERVICE="https://api.day.app/XXXXXXXXXXXX/[推送标题]/[推送内容]?group=SubStore&autoCopy=1&isArchive=1&sound=shake&level=timeSensitive&icon=https%3A%2F%2Fraw.githubusercontent.com%2F58xinian%2Ficon%2Fmaster%2FSub-Store1.png" diff --git a/apps/sub-store/latest/data.yml b/apps/sub-store/latest/data.yml new file mode 100644 index 000000000..e5f9e2a01 --- /dev/null +++ b/apps/sub-store/latest/data.yml @@ -0,0 +1,53 @@ +additionalProperties: + formFields: + - default: 40232 + edit: true + envKey: PANEL_APP_PORT_HTTP + labelEn: Port + labelZh: 端口 + label: + en: Port + zh: 端口 + required: true + rule: paramPort + type: number + - default: 'https://api.day.app/XXXXXXXXXXXX/[推送标题]/[推送内容]?group=SubStore&autoCopy=1&isArchive=1&sound=shake&level=timeSensitive&icon=https%3A%2F%2Fraw.githubusercontent.com%2F58xinian%2Ficon%2Fmaster%2FSub-Store1.png' + edit: true + envKey: SUB_STORE_PUSH_SERVICE + labelEn: Push Service URL + labelZh: 推送服务 URL + label: + en: Push Service URL + zh: 推送服务 URL + required: true + type: text + - default: "55 23 * * *" + edit: true + envKey: SUB_STORE_CRON + labelEn: Cron Schedule + labelZh: Cron 定时任务 + label: + en: Cron Schedule + zh: Cron 定时任务 + required: true + type: text + - default: "/2cXaAxRGfddmGz2yx1wA" + edit: true + envKey: SUB_STORE_FRONTEND_BACKEND_PATH + labelEn: Frontend Backend Path + labelZh: 前端后端路径 + label: + en: Frontend Backend Path + zh: 前端后端路径 + required: true + type: text + - default: "./data" + edit: true + envKey: DATA_PATH + labelEn: Data Directory + labelZh: 数据目录 + label: + en: Data Directory + zh: 数据目录 + required: true + type: text diff --git a/apps/sub-store/latest/docker-compose.yml b/apps/sub-store/latest/docker-compose.yml new file mode 100644 index 000000000..cfabd4ba0 --- /dev/null +++ b/apps/sub-store/latest/docker-compose.yml @@ -0,0 +1,22 @@ +services: + sub-store: + image: xream/sub-store:latest + pull_policy: always + container_name: ${CONTAINER_NAME} + restart: always + networks: + - 1panel-network + ports: + - "${PANEL_APP_PORT_HTTP}:3001" + environment: + - SUB_STORE_PUSH_SERVICE=${SUB_STORE_PUSH_SERVICE} + - SUB_STORE_BACKEND_SYNC_CRON=${SUB_STORE_CRON} + - SUB_STORE_FRONTEND_BACKEND_PATH=${SUB_STORE_FRONTEND_BACKEND_PATH} + volumes: + - ${DATA_PATH}:/opt/app/data + labels: + createdBy: "Apps" + +networks: + 1panel-network: + external: true