6.6 KiB
6.6 KiB
AI发现模块
概述
AI发现模块是追光AI的核心功能,采用"提示词+JSON粘贴导入"模式,用户复制页面内嵌的提示词发给AI助手,获取JSON后粘贴到页面导入,不调用任何外部AI API。
架构
页面内嵌提示词模板(含排除列表) → 用户复制发给AI助手 → AI返回JSON → 粘贴到页面 → API去重导入 → PendingTool/PendingSkill → 管理员审核 → Tool/Skill
五大操作指令
探索AI工具 (/admin/discover-tools)
- 选择分类(20个工具分类)
- 复制提示词(自动注入排除列表)
- 粘贴AI返回的JSON到输入框
- 点击导入按钮,API自动去重导入待审核列表
- 可选:批量抓取Logo
检测AI工具 (/admin/check-tools)
- 选择范围(已发布/待审核)
- 一键检测+抓取Logo
- 系统自动逐一GET请求检测网站可访问性
- 同时自动抓取缺失Logo,记录成功方法名
- 展示Logo抓取方法统计(按成功次数排序)
- 失效工具可一键删除
探索AI技能 (/admin/discover-skills)
- 选择分类(20个技能分类)
- 复制提示词(自动注入排除列表)
- 粘贴AI返回的JSON到输入框
- 点击导入按钮,API自动去重导入待审核列表
更新Skill技能 (/admin/update-skills)
- 选择范围(已发布/待审核)
- 一键更新Star
- 系统自动从GitHub/Gitee/GitCode API获取最新星级
- 展示Star变化表格(上升/下降/不变)
AI新闻发现 (/admin/discover-news)
- 复制新闻发现提示词
- 粘贴AI返回的JSON到输入框
- 点击导入按钮,自动生成今日AI日报
- 新闻6大分类:产品发布/融资投资/技术突破/政策法规/开源项目/行业事件
- 每条新闻含热度评分(1-100)
Logo抓取引擎 (src/lib/logo-fetcher.ts)
核心API
fetchLogo(websiteUrl, html?): Promise<string>— 返回Logo URLfetchLogoWithMethod(websiteUrl, html?): Promise<{url, method}>— 返回Logo URL + 成功方法名
抓取策略(按优先级,共10种)
- HTML Link图标: 解析
<link rel="icon/apple-touch-icon">标签 - OG/Twitter图片: 解析
<meta property="og:image">标签 - HTML Manifest: 解析
manifest.json中的icons数组 - HTML img标签: 查找class/alt含"logo"的img标签
- Header区域Logo: 解析header/nav区域内的img标签
- SVG Logo: 查找内联SVG logo
- 常见路径: 尝试 /apple-touch-icon.png, /logo.png, /favicon.ico 等
- Favicon服务:
- favicon.im
- Google Favicons (sz=128/64)
- Clearbit
- DuckDuckGo
- Favicon Grabr (API解析)
- Icon Horse (API解析)
- Brandfetch品牌库: 通过Brandfetch API获取品牌Logo
- 截图兜底: 通过截图服务获取网站截图
配置项
enabledMethods: 启用的抓取方法commonPaths: 常见图标路径列表faviconServices: Favicon服务列表minFileSize: 最小文件大小(默认50字节)requestTimeout: 请求超时(默认10秒)
Logo本地存储 (src/lib/logo-storage.ts)
downloadLogo(url, filename): Promise<string>— 下载Logo到/public/logos/目录- 返回本地路径如
/logos/filename.png
自动化评测流程
架构概览
GitHub API (octokit) → 搜索热门仓库 → 获取README
↓
DeepSeek API (openai兼容) → 五维评测生成 → JSON解析+校验
↓
Prisma → Skill记录 + SkillReview记录 + ReviewGenerationLog日志
↓
前端 → /api/skills/[slug]/review → SkillReviewCard雷达图展示
五维评测维度
| 维度 | 字段 | 说明 |
|---|---|---|
| 场景与能力 | capability | 场景覆盖度和核心能力 |
| 开发体验 | devExp | 安装、文档、API易用性 |
| 成本与许可 | costLicense | 硬件成本、API定价、许可证风险 |
| 社区健康 | community | Issue响应、PR频率、生态 |
| 性能稳定 | performance | 运行效率、稳定性、输出质量 |
评测标签分类
LLM框架, Agent框架, RAG, 提示工程, 多模态, 代码助手, 模型训练, 数据工程, 部署工具, 评测工具, 安全对齐, 其他
定时任务自动化(Task调度系统)
架构概览
Crontab(6个定时) → 脚本执行(Node.js .mjs) → 外部API调用(GitHub/DeepSeek/网站)
↓
Prisma → Tool/Skill/PendingTool/PendingSkill/DailyReport 写入
↓
TaskLog表记录执行结果(status/duration/result/error)
↓
后台管理 /admin/tasks → 查看配置/状态/历史/手动触发
7个任务总览
| # | 任务 | 脚本 | Cron | 依赖外部API | 产量 |
|---|---|---|---|---|---|
| Task1 | 发现AI工具 | task1-discover-tools.mjs | 06:00 | DeepSeek + RSS抓取 | 不定 |
| Task3 | 工具巡检 | task3-check-tools.mjs | 03:00 | 网站GET请求 | 全部Tool+PendingTool |
| Task4 | 发现AI技能 | daily-discover.mjs | 05:00 | GitHub API + DeepSeek | ≤30/天 (stars≥1000) |
| Task5 | 更新星值 | task5-update-stars.mjs | 01:00 | GitHub API | 全部GitHub技能 |
| Task6 | 评测热门 | task6-review-hot.mjs | 04:00 | GitHub API + DeepSeek | 2个/天 |
| - | AI日报 | daily-news.mjs | 07:30 | RSS多源 + DeepSeek | 1篇/天 |
TaskLog 统一记录
所有任务脚本统一在末尾写入TaskLog:
await prisma.taskLog.create({
data: { taskKey: "taskX-xxx", taskName: "任务名", status: "completed",
startedAt, finishedAt, duration, result, error }
});
失败时在 catch 块中写入 status: "failed" 的日志。
后台可视化
/admin/tasks— 6个任务卡片,显示启用状态/Cron/最近执行/手动运行/admin/tasks/logs— 全部执行历史,按任务筛选,可展开查看结果详情/admin/tasks/[taskKey]— 单任务详情,统计成功率/失败率/平均耗时
质量过滤
isValidAIProject()
- 关键词过滤:
book/guide/tutorial/awesome/interview/notes/handbook/cheatsheet/roadmap/curated-list等 - 语言过滤: 纯Markdown/HTML文档Repo(Stars<5000)自动拒绝
- 主题过滤: 有GitHub Topics的Repo必须包含AI相关Topic(ai/llm/rag/agent/gpt等)
AI日报新闻源
- 36kr RSS (https://36kr.com/feed) — 国内科技资讯
- IT之家 RSS (https://www.ithome.com/rss/) — 国内科技资讯
- 开源中国 RSS (https://www.oschina.net/news/rss) — 开源动态
- HackerNews API — 海外AI/技术热点
- Google News RSS — 海外新闻(国内服务器可能无法访问)
- 流程: 搜索真实新闻 → AI关键词过滤 → 近2天筛选 → DeepSeek整理格式 → 入库发布
- 严禁让DeepSeek直接生成新闻内容(会编造假新闻),必须基于真实新闻素材整理