Redrock453/vika_ok

GitHub: Redrock453/vika_ok

Vika_Ok是一款多功能的AI代理,提供多LLM、RAG、OSINT分析等功能。

Stars: 2 | Forks: 0

# Vika_Ok 💙 ### 战略情报AI代理 **RAG · OSINT · 多LLM后备 · 语音 · Telegram** [![TypeScript](https://img.shields.io/badge/TypeScript-3178C6?logo=typescript&logoColor=white)](https://www.typescriptlang.org/) [![Python](https://img.shields.io/badge/Python-3776AB?logo=python&logoColor=white)](https://www.python.org/) [![React](https://img.shields.io/badge/React-20232A?logo=react&logoColor=61DAFB)](https://react.dev/) [![Gemini](https://img.shields.io/badge/Gemini-4285F4?logo=google&logoColor=white)](https://ai.google.dev/) [![Qdrant](https://img.shields.io/badge/Qdrant-DC2D7E?logo=qdrant&logoColor=white)](https://qdrant.tech/) [![Docker](https://img.shields.io/badge/Docker-2496ED?logo=docker&logoColor=white)](https://www.docker.com/) [功能](#-features) · [架构](#-architecture) · [快速开始](#-quick-start) · [API参考](#-api-reference) · [部署](#-deployment) · [配置](#-configuration)
Vika_Ok — 多LLM提供商支持的AI助手,向量搜索(Qdrant + TF-IDF),OSINT分析,语音消息和Telegram集成。它作为Web仪表板(React + TypeScript)和Telegram机器人(Python + aiogram)运行。 ## ✨ 功能 | 类别 | 功能 | |-----------|-----------| | **多LLM** | DO Agent → Groq → Gemini,具有指数退避和后备 | | **RAG** | TF-IDF文档搜索(内置)+ Qdrant向量搜索(Telegram机器人) | | **OSINT** | 通过Gemini grounding搜索Google,DuckDuckGo,SearXNG集成 | | **语音** | 语音消息 → 转写(Whisper)→ 回复 | | **任务** | 创建、执行和跟踪带优先级的任务 | | **文档** | 上传、分块和语义搜索文档 | | **SSH工具** | 检查服务器状态、Docker容器、读取文件 | | **安全** | Bearer token认证、速率限制、Helmet中间件 | ## 🏗 架构 ``` ┌─────────────────────────────────────────────────┐ │ Frontend │ │ React + Vite + Tailwind CSS v4 │ │ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ ┌──────┐ │ │ │ Chat │ │ OSINT│ │ RAG │ │Tasks │ │Config│ │ │ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ └──┬───┘ │ │ └────────┴─────────┴────────┴────────┘ │ │ │ │ │ useApi hook │ │ │ │ └───────────────────────┼──────────────────────────┘ │ REST API ┌───────────────────────┼──────────────────────────┐ │ Backend (server.ts) │ │ ┌──────────┐ ┌──────────┐ ┌─────────────────┐ │ │ │ Auth │ │ Routes │ │ TF-IDF RAG │ │ │ │Middleware│ │ /api/* │ │ Search Engine │ │ │ └──────────┘ └────┬─────┘ └─────────────────┘ │ │ │ │ │ ┌─────────────────┴──────────────────────┐ │ │ │ GoogleGenAI Client │ │ │ │ gemini-3.5-flash + Google Search │ │ │ └────────────────────────────────────────┘ │ │ │ │ JSON Persistence: documents.json, tasks.json │ └──────────────────────────────────────────────────┘ ┌──────────────────────────────────────────────────┐ │ Telegram Bot (run.py) │ │ ┌───────┐ ┌────────┐ ┌──────┐ ┌──────────────┐ │ │ │Config │ │ Agent │ │ LLM │ │ Services │ │ │ │ .env │ │ v13.1 │ │Route │ │RAG│SSH│Search│ │ │ └───────┘ └────────┘ └──────┘ └──────────────┘ │ │ aiogram + Docker │ └──────────────────────────────────────────────────┘ ``` ### 项目结构 ``` vika_ok/ ├── server.ts # Express + Vite backend (web-dashboard) ├── run.py # Telegram bot entrypoint ├── src/ │ ├── App.tsx # Main React component (dashboard) │ ├── main.tsx # React entry point │ ├── types.ts # TypeScript типи │ ├── index.css # Tailwind стилі │ ├── components/ # React компоненти │ │ ├── ChatTab.tsx # Чат з AI │ │ ├── OSINTTab.tsx # OSINT аналітика │ │ ├── RAGTab.tsx # Управління документами │ │ ├── RAGVisualizer.tsx # Візуалізація чанків │ │ ├── TasksTab.tsx # Завдання та нагадування │ │ ├── SettingsTab.tsx # Налаштування та статус │ │ ├── VoiceController.tsx # Голосовий ввід │ │ └── TacticalLogs.tsx # Логи системи │ ├── hooks/ │ │ └── useApi.ts # API client hook │ ├── middleware/ │ │ └── auth.ts # Bearer token auth │ ├── core/ # Python core (Telegram bot) │ │ ├── config.py # Конфігурація (.env) │ │ ├── agent.py # AI агент з function calling │ │ ├── llm.py # LLM провайдери + retry/fallback │ │ └── history.py # Історія чатів (JSON) │ ├── handlers/ │ │ └── telegram.py # Telegram handlers │ └── services/ # Python services │ ├── rag.py # Qdrant векторний пошук │ ├── search.py # DuckDuckGo / SearXNG │ └── tools.py # SSH, OpenCode інструменти ├── docker-compose.yml # Docker orchestration ├── Dockerfile # Python bot container ├── .env.example # Environment template └── requirements.txt # Python deps ``` ### LLM后备链 ``` DeepSeek (primary) ──→ Groq Llama3 ──→ Gemini 3.5 Flash ──→ Claude 3.5 Sonnet │ │ │ │ 3 retries 3 retries 3 retries 3 retries exponential exponential exponential exponential backoff backoff backoff backoff ``` 每个提供商都通过环境变量自动检测。只有设置了API密钥的提供商才会被使用。 ## 🚀 快速开始 ### Docker(推荐) ``` # 1. Клонувати git clone https://github.com/Redrock453/vika_ok.git cd vika_ok # 2. Створити .env cp .env.example .env # Заповнити ключі API # 3. Запустити docker compose up -d ``` ### Web仪表板(TypeScript) ``` # 1. Встановити залежності npm install # 2. Створити .env.local echo "GEMINI_API_KEY=your_key_here" > .env.local # 3. Запустити dev server npm run dev ``` 打开 http://localhost:3000 ### 生产构建 ``` npm run build npm run start ``` ### Telegram机器人(Python) ``` python -m venv .venv source .venv/bin/activate # Linux/Mac # .venv\Scripts\activate # Windows pip install -r requirements.txt cp .env.example .env python run.py ``` ## 📡 API参考 ### 聊天 ``` POST /api/chat Content-Type: application/json Authorization: Bearer (if AUTH_TOKEN set) { "message": "Перевірити статус ретрансляторів", "previousMessages": [{"role": "user", "content": "..."}], "osintMode": false, "bypassFallback": false } ``` **响应:** ``` { "text": "Відповідь AI...", "steps": [ { "provider": "DO Agent AI", "status": "success", "delay": 300, "detail": "..." } ], "isRealGemini": true, "ragApplied": true, "groundingSources": [{"title": "...", "uri": "..."}], "toolInvocations": ["ssh_status:sitl"] } ``` ### 文档 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/api/documents` | 获取所有文档 | | `POST` | `/api/documents` | 添加文档 (`{name, content, category}`) | | `POST` | `/api/documents/upload` | 上传文件(PDF/DOCX/TXT,base64) | | `DELETE` | `/api/documents/:id` | 删除文档 | ### 任务 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/api/tasks` | 获取所有任务 | | `POST` | `/api/tasks` | 创建任务 (`{text, priority}`) | | `PATCH` | `/api/tasks/:id` | 更新任务 (`{completed}`) | | `DELETE` | `/api/tasks/:id` | 删除任务 | ### OSINT | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/api/osint?q=...&type=whois` | RDAP Whois查找域名 | | `GET` | `/api/osint?q=...&type=dns` | DNS查找(A/AAAA/MX/NS/TXT) | | `GET` | `/api/osint?q=...&type=ip` | IP地理位置(国家、ISP、坐标) | | `GET` | `/api/osint?q=...&type=web` | 通过SearXNG进行网络搜索 | ### 语音 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `POST` | `/api/voice/transcribe` | 音频转写(base64 → 文本,Whisper) | | `POST` | `/api/voice/synthesize` | 语音合成(文本 → base64音频,Gemini TTS) | ### Qdrant | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/api/qdrant/status` | Qdrant状态(可用、集合信息) | | `POST` | `/api/qdrant/sync` | 将文档同步到Qdrant | ### 系统 | 方法 | 端点 | 描述 | |--------|----------|-------------| | `GET` | `/api/config-status` | 系统状态、LLM提供商、日志 | | `POST` | `/api/simulate-webhook` | 模拟Telegram webhook | ## ⚙️ 配置 | 变量 | 描述 | 必要 | 默认 | |--------|------|-------------|---------| | `GEMINI_API_KEY` | Google Gemini API密钥 | 对于AI/OSINT/TTS | — | | `DEEPSEEK_API_KEY` | DeepSeek API密钥(主要LLM) | 推荐 | — | | `GROQ_API_KEY` | Groq API密钥(后备 + STT) | 推荐 | — | | `CLAUDE_API_KEY` | Anthropic Claude API密钥 | 否 | — | | `AUTH_TOKEN` | Bearer token用于API | 否(开发模式) | — | | `APP_URL` | 主机URL | 对于AI Studio | — | | `TELEGRAM_BOT_TOKEN` | Telegram Bot Token | 对于机器人 | — | | `ALLOWED_IDS` | Telegram ID通过逗号分隔 | 对于机器人 | — | | `QDRANT_HOST` | Qdrant主机 | 否 | `127.0.0.1` | | `QDRANT_PORT` | Qdrant端口 | 否 | `6333` | | `SEARXNG_URL` | SearXNG URL | 对于OSINT | `http://localhost:8080` | ## 🐳 部署 ### Docker Compose(完整栈) ``` docker compose up -d ``` 包括: - **vika_bot** — Telegram机器人 + AI代理 - **vika_web** — Web仪表板(React + Express) - **qdrant** — 向量数据库(Qdrant) - **searxng** — 本地搜索引擎 ### Google AI Studio 项目与Google AI Studio兼容。Fork,在Secrets中添加`GEMINI_API_KEY`,然后runApp。 ### 自托管(裸金属) ``` # Встановити залежності npm install pip install -r requirements.txt # Запустити Qdrant (окремо) docker run -p 6333:6333 qdrant/qdrant # Запустити веб-дашборд npm run dev # Запустити Telegram бота (в іншому терміналі) python run.py ``` ## 🛡️ 安全 - **速率限制** — `/api/chat`每分钟20个请求 - **Helmet** — HTTP安全头 - **Bearer认证** — 通过`AUTH_TOKEN`可选认证 - **允许的ID** — 限制对Telegram机器人的访问 ## 📊 技术栈 | 组件 | 技术 | |-----------|-----------| | **前端** | React 19 · Vite 6 · Tailwind CSS v4 · Lucide Icons · Motion | | **后端(Web)** | Express · TypeScript · Multi-LLM Router | | **后端(机器人)** | Python 3.12 · aiogram · Qdrant客户端 · Whisper | | **AI** | DeepSeek · Groq Llama3 · Gemini 3.5 Flash · Claude 3.5 Sonnet | | **RAG** | Qdrant · TF-IDF · Gemini Embeddings · 混合搜索 | | **OSINT** | RDAP Whois · Google DNS · ip-api · SearXNG | | **语音** | Groq Whisper(STT)· Gemini TTS | | **文档** | PDF(pdf-parse)· DOCX(mammoth)· 自动分块 | | **DevOps** | Docker · Docker Compose · GitHub Actions CI/CD | ## 📝 版本 - **Web仪表板** — v14.0(React + Express + Multi-LLM + OSINT + 语音) - **Telegram机器人** — v13.0-PRODUCTION(Python + aiogram) ## 📜 许可证 MIT许可证 — 有关详细信息,请参阅[LICENSE](LICENSE)。
由 [Redrock453](https://github.com/Redrock453) 用 ❤️ 制作
标签:AI API, AI技术, Docker, ESC4, OSINT, Python, Qdrant, RAG, React, Signal, Syscalls, Telegram, TypeScript, Web Dashboard, 人工智能, 任务管理, 信息分析, 向量搜索, 多代理编排, 多语言模型, 安全插件, 安全防御评估, 搜索引擎, 数据检索, 无后门, 智能助手, 用户模式Hook绕过, 自动化攻击, 语音交互, 语音合成, 语音识别, 请求拦截, 跨平台应用, 逆向工具, 集成开发