# AI发现模块 ## 概述 AI发现模块是追光AI的核心功能,采用"提示词+JSON粘贴导入"模式,用户复制页面内嵌的提示词发给AI助手,获取JSON后粘贴到页面导入,不调用任何外部AI API。 ## 架构 ``` 页面内嵌提示词模板(含排除列表) → 用户复制发给AI助手 → AI返回JSON → 粘贴到页面 → API去重导入 → PendingTool/PendingSkill → 管理员审核 → Tool/Skill ``` ## 五大操作指令 ### 探索AI工具 (`/admin/discover-tools`) 1. 选择分类(20个工具分类) 2. 复制提示词(自动注入排除列表) 3. 粘贴AI返回的JSON到输入框 4. 点击导入按钮,API自动去重导入待审核列表 5. 可选:批量抓取Logo ### 检测AI工具 (`/admin/check-tools`) 1. 选择范围(已发布/待审核) 2. 一键检测+抓取Logo 3. 系统自动逐一GET请求检测网站可访问性 4. 同时自动抓取缺失Logo,记录成功方法名 5. 展示Logo抓取方法统计(按成功次数排序) 6. 失效工具可一键删除 ### 探索AI技能 (`/admin/discover-skills`) 1. 选择分类(20个技能分类) 2. 复制提示词(自动注入排除列表) 3. 粘贴AI返回的JSON到输入框 4. 点击导入按钮,API自动去重导入待审核列表 ### 更新Skill技能 (`/admin/update-skills`) 1. 选择范围(已发布/待审核) 2. 一键更新Star 3. 系统自动从GitHub/Gitee/GitCode API获取最新星级 4. 展示Star变化表格(上升/下降/不变) ### AI新闻发现 (`/admin/discover-news`) 1. 复制新闻发现提示词 2. 粘贴AI返回的JSON到输入框 3. 点击导入按钮,自动生成今日AI日报 4. 新闻6大分类:产品发布/融资投资/技术突破/政策法规/开源项目/行业事件 5. 每条新闻含热度评分(1-100) ## Logo抓取引擎 (`src/lib/logo-fetcher.ts`) ### 核心API - `fetchLogo(websiteUrl, html?): Promise` — 返回Logo URL - `fetchLogoWithMethod(websiteUrl, html?): Promise<{url, method}>` — 返回Logo URL + 成功方法名 ### 抓取策略(按优先级,共10种) 1. **HTML Link图标**: 解析 `` 标签 2. **OG/Twitter图片**: 解析 `` 标签 3. **HTML Manifest**: 解析 `manifest.json` 中的icons数组 4. **HTML img标签**: 查找class/alt含"logo"的img标签 5. **Header区域Logo**: 解析header/nav区域内的img标签 6. **SVG Logo**: 查找内联SVG logo 7. **常见路径**: 尝试 /apple-touch-icon.png, /logo.png, /favicon.ico 等 8. **Favicon服务**: - favicon.im - Google Favicons (sz=128/64) - Clearbit - DuckDuckGo - Favicon Grabr (API解析) - Icon Horse (API解析) 9. **Brandfetch品牌库**: 通过Brandfetch API获取品牌Logo 10. **截图兜底**: 通过截图服务获取网站截图 ### 配置项 - `enabledMethods`: 启用的抓取方法 - `commonPaths`: 常见图标路径列表 - `faviconServices`: Favicon服务列表 - `minFileSize`: 最小文件大小(默认50字节) - `requestTimeout`: 请求超时(默认10秒) ### Logo本地存储 (`src/lib/logo-storage.ts`) - `downloadLogo(url, filename): Promise` — 下载Logo到 `/public/logos/` 目录 - 返回本地路径如 `/logos/filename.png` ## 脚本 ### discover-skills.mjs - 独立运行的AI技能发现脚本 - 遍历20个技能分类,每类调用DeepSeek API推荐10个GitHub开源项目 - 通过 `/api/admin/pending-skills/batch` 批量导入 - 每分类间隔3秒避免限流 - 自动排除已收录技能 ### import-tools-batch1.mjs / import-tools-batch2.mjs - 硬编码的AI工具数据导入脚本 - 通过 `/api/admin/pending/batch` 批量导入 ## 自动化评测流程 ### 架构概览 ``` GitHub API (octokit) → 搜索热门仓库 → 获取README ↓ DeepSeek API (openai兼容) → 五维评测生成 → JSON解析+校验 ↓ Prisma → Skill记录 + SkillReview记录 + ReviewGenerationLog日志 ↓ 前端 → /api/skills/[slug]/review → SkillReviewCard雷达图展示 ``` ### 评测脚本 (scripts/auto-review.mjs) - 搜索关键词: ai agent, llm framework, rag, prompt engineering - 每日限制: 8个项目 (DAILY_LIMIT可配置) - 最低Star数: 500 - 去重: 通过sourceUrl检查是否已存在 - 综合分校验: 自动计算五维均分,偏差>0.3时修正 - 评测状态: 初始为DRAFT,需手动或通过脚本改为PUBLISHED ### 五维评测维度 | 维度 | 字段 | 说明 | |------|------|------| | 场景与能力 | capability | 场景覆盖度和核心能力 | | 开发体验 | devExp | 安装、文档、API易用性 | | 成本与许可 | costLicense | 硬件成本、API定价、许可证风险 | | 社区健康 | community | Issue响应、PR频率、生态 | | 性能稳定 | performance | 运行效率、稳定性、输出质量 | ### 评测标签分类 LLM框架, Agent框架, RAG, 提示工程, 多模态, 代码助手, 模型训练, 数据工程, 部署工具, 评测工具, 安全对齐, 其他 ### 发布评测脚本 (scripts/publish-reviews.mjs) - 将DRAFT状态评测改为PUBLISHED - 同时将对应Skill状态从draft改为published ## 踩坑记录