不再让你的 GitHub Star 吃灰。
一个自托管的 GitHub Star 智能管理系统,利用 AI 自动分类、生成摘要,构建你的私人代码知识库。
作为开发者,我们经常会 Star 很多有趣的项目,但随着时间推移,这些 Star 往往变成了一个巨大、难以检索的“黑洞”。我们经常遇到这样的情况:“我记得上个月收藏了一个很好用的 Python 爬虫库,叫什么来着?”
StarSorty 旨在解决这个问题。它不仅仅是一个同步工具,而是一个智能化的知识管理管道。
- 自动同步:后台静默拉取你的 GitHub Star 数据。
- AI 分析:调用 LLM(OpenAI/Claude/DeepSeek)深度阅读项目的 README。
- 结构化输出:自动判断项目分类并打上技术栈标签,生成一句话摘要。
- 可视化管理:通过现代化的 Web UI 进行检索和浏览。
- 🔄 全自动同步:内置 Crontab 调度器,定时增量同步,无需人工干预。
- 🤖 多模型 AI 支持:
- 原生支持 OpenAI(GPT-4o 等)与 Anthropic(Claude 3.5)。
- 完全兼容 OpenAI 格式的第三方模型(DeepSeek、GLM、Moonshot、OneAPI)。
- 🏷️ 标签云系统:
- AI 自动生成中文摘要(
summary_zh)、自由标签(tags)和搜索关键词(keywords)。 - 16 个标签分组,覆盖项目类型、运行形态、AI 相关、开发工具等场景。
- 支持多标签 OR 筛选,快速定位目标项目。
- AI 自动生成中文摘要(
- 🔍 深度检索:按语言、标签、用户筛选,支持全文关键词搜索。
- 📝 人工干预机制:支持手动覆盖 AI 分类并记录修改历史。
- 🐳 隐私至上:Docker 私有化部署,数据完全掌握在自己手中。
CLASSIFY_ENGINE_V2_ENABLED: 启用“规则候选 + AI 仲裁 + 回退”分类链路。SEARCH_RANKER_V2_ENABLED: 启用相关度排序与命中解释。/repos新增参数:tag_mode=and|or(多标签交集/并集)sort=relevance|stars|updated
/metrics/quality:输出classification_total、rule_hit_rate、ai_fallback_rate、empty_tag_rate、search_zero_result_rate等指标。api/scripts/migrate_tag_ids.py:扫描ai_tags/override_tags/rules,输出迁移报告,并可写入*_tag_ids。evaluation/replay.py:基于evaluation/golden_set.json做离线回放评测并输出 diff。- Phase 4(个性化)能力:
GET/PATCH /preferences/{user_id}:用户自定义tag_mapping与rule_priority。POST /feedback/search、POST /feedback/click:记录检索/点击反馈并更新兴趣画像。GET /interest/{user_id}:读取最近关注主题画像。GET /training/samples、GET /training/fewshot:将人工覆盖沉淀为训练样本与 few-shot 数据。
StarSorty 采用经典的前后端分离架构,通过 Docker Compose 一键编排。
graph TD
User((User)) -->|Browser| Web["Web UI (Next.js)"]
Web -->|API Req| API["Backend API (FastAPI)"]
subgraph "Core Services"
API -->|Read/Write| DB[(SQLite)]
API -->|Sync| GitHub[GitHub API]
API -->|Classify| LLM[AI Provider]
Scheduler[Scheduler] -->|Trigger| API
end
subgraph "AI Providers"
LLM -.-> OpenAI
LLM -.-> Anthropic
LLM -.-> Custom[Custom/Local LLM]
end
- Frontend: Next.js(SSG + Client Side Fetching),提供极速的静态页面体验。
- Backend: FastAPI(Python),处理高并发的同步逻辑和 AI 请求。
- Database: SQLite,单文件存储,轻量级,易于备份和迁移。
- Scheduler: 内置定时任务系统,确保数据准实时同步。
推荐使用 Docker 部署,确保已安装 Docker 和 Docker Compose。
git clone https://github.com/aliom-v/StarSorty.git
cd StarSortycp .env.example .env编辑 .env,至少配置以下内容:
# --- 基础配置 ---
# 你的 GitHub 用户名
GITHUB_USERNAME=your_name
# GitHub Token (在 Developer Settings -> Personal Access Tokens 申请)
# 只需要 public_repo 权限即可
GITHUB_TOKEN=ghp_xxxxxxxxxxxxxxxxx
# 管理员 Token (用于保护手动触发同步等写操作接口)
ADMIN_TOKEN=your_secure_password
# (可选) GitHub Enterprise 或代理地址
GITHUB_API_BASE_URL=https://api.github.com说明:AI Provider / Model / Base URL / API Key 仅从后端
.env读取,前端不会保存或下发这些敏感配置。
方案 A: OpenAI
AI_PROVIDER=openai
AI_API_KEY=sk-xxxx
AI_MODEL=gpt-4o-mini方案 B: Anthropic (Claude)
AI_PROVIDER=anthropic
AI_API_KEY=sk-ant-xxxx
AI_MODEL=claude-3-haiku-20240307方案 C: DeepSeek / 其他兼容模型(推荐国内用户)
AI_PROVIDER=custom
# 你的 API Base URL (注意结尾通常包含 /v1)
AI_BASE_URL=https://api.deepseek.com/v1
AI_API_KEY=sk-xxxx
AI_MODEL=deepseek-chatdocker compose up -d启动成功后访问:
- Web 界面: http://localhost:1234
- API 文档: http://localhost:4321/docs
提示:Web 页面中的写操作需要 Admin token。请在 Settings 页面输入该 token(仅保存在浏览器本地)。
服务启动后,后台调度器会根据 CRON_SCHEDULE 自动运行。若需立即同步:
curl -X POST "http://localhost:4321/sync" \
-H "X-Admin-Token: <你设置的ADMIN_TOKEN>"同步完成后,触发 AI 分类任务:
curl -X POST "http://localhost:4321/classify/background" \
-H "Content-Type: application/json" \
-H "X-Admin-Token: <你设置的ADMIN_TOKEN>" \
-d '{"limit": 50, "concurrency": 3}'curl "http://localhost:4321/classify/status"cd api
python -m venv .venv
# Windows: .venv\Scripts\activate | Mac/Linux: source .venv/bin/activate
pip install -r requirements.txt
# 启动开发服务器
uvicorn app.main:app --reload --port 4321cd web
npm install
# 启动开发服务器
npm run dev
# 访问 http://localhost:1234本项目采用 MIT License 开源。