Files
zhuiguang-ai/.trae/specs/modules/05-ai-discovery.md
T

161 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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<string>` — 返回Logo URL
- `fetchLogoWithMethod(websiteUrl, html?): Promise<{url, method}>` — 返回Logo URL + 成功方法名
### 抓取策略(按优先级,共10种)
1. **HTML Link图标**: 解析 `<link rel="icon/apple-touch-icon">` 标签
2. **OG/Twitter图片**: 解析 `<meta property="og:image">` 标签
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<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:
```javascript
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直接生成新闻内容**(会编造假新闻),必须基于真实新闻素材整理