Skip to content

thezmmm/GitExplain

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

18 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GitExplain

输入任意 GitHub 仓库地址,AI 自动读取 README 并生成结构化中文解析报告。

功能特性

  • 一键解析:粘贴 GitHub 仓库 URL,自动获取 README 内容
  • AI 分析:从项目概述、技术栈、主要功能、使用方式、项目亮点五个维度生成报告
  • 多 AI 供应商:同时支持 Claude(Anthropic)和 ChatGPT(OpenAI),自动选择可用服务
  • 自定义 Base URL:OpenAI 接口支持配置自定义地址,可对接 Azure OpenAI 或兼容协议的第三方服务
  • 深色模式:跟随系统自动切换

技术栈

层级 技术
后端 Spring Boot 4.0.4 · Java 17 · Maven
前端 React 19 · TypeScript · Vite
AI Claude claude-opus-4-6 (Anthropic) · GPT-4o (OpenAI)
HTTP Spring RestClient · GitHub REST API v3

项目结构

GitExplain/
├── src/main/java/com/example/gitexplain/
│   ├── controller/
│   │   ├── RepoController.java        # POST /api/analyze
│   │   └── WebConfig.java             # CORS 配置
│   ├── dto/
│   │   ├── RepoAnalysisRequest.java   # 入参
│   │   └── RepoAnalysisResponse.java  # 出参
│   ├── model/
│   │   ├── RepoInfo.java              # 仓库信息(owner/repo)
│   │   └── GitHubReadme.java          # GitHub API 响应映射
│   ├── service/
│   │   ├── AiAnalysisService.java     # AI 分析顶层接口
│   │   ├── AiProviderService.java     # 提供者接口(含 isAvailable)
│   │   ├── GitHubService.java         # GitHub 内容获取接口
│   │   ├── RepoParserService.java     # URL 解析接口
│   │   └── impl/
│   │       ├── AiAnalysisRouter.java      # 自动选择可用 AI 提供者
│   │       ├── ClaudeAnalysisService.java # Claude 实现(优先级 1)
│   │       ├── OpenAiAnalysisService.java # OpenAI 实现(优先级 2)
│   │       ├── GitHubServiceImpl.java     # 调用 GitHub API
│   │       └── RepoParserServiceImpl.java # 正则解析 URL
│   └── exception/
│       └── GlobalExceptionHandler.java
├── frontend/
│   └── src/
│       ├── api/analyzeRepo.ts         # 后端接口调用
│       ├── components/
│       │   ├── UrlInput.tsx           # URL 输入框
│       │   └── ResultPanel.tsx        # 结果展示(含 Markdown 渲染)
│       └── types/api.ts               # TypeScript 类型定义
├── src/main/resources/
│   ├── application.yaml               # 公共配置(提交到 Git)
│   └── application-local.yaml        # 本地密钥(已 gitignore)
└── pom.xml

快速开始

前置要求

  • Java 17+
  • Node.js 18+
  • 至少一个 AI 服务的 API Key:AnthropicOpenAI

1. 配置 API Key

src/main/resources/ 下创建 application-local.yaml(已被 .gitignore 保护):

# 至少填写一个,两个都填时优先使用 Claude
ANTHROPIC_API_KEY: "sk-ant-xxxxxxxxxxxx"

OPENAI_API_KEY: "sk-xxxxxxxxxxxx"
OPENAI_BASE_URL: ""   # 留空使用官方地址,或填入自定义地址

github:
  token: "ghp_xxxxxxxxxxxx"   # 可选,提升 GitHub API 请求限额

2. 启动后端

./mvnw spring-boot:run
# 后端运行在 http://localhost:8080

3. 启动前端

cd frontend
npm install
npm run dev
# 前端运行在 http://localhost:5173

打开浏览器访问 http://localhost:5173,粘贴任意 GitHub 仓库地址即可。

AI 供应商选择逻辑

配置了 ANTHROPIC_API_KEY  →  使用 Claude claude-opus-4-6
       ↓ 否
配置了 OPENAI_API_KEY     →  使用 GPT-4o
       ↓ 否
启动报错,提示配置 Key

两个 Key 都配置时,Claude 优先(@Order(1))。

API 说明

POST /api/analyze

请求体

{ "githubUrl": "https://github.com/owner/repo" }

响应体

{
  "owner": "owner",
  "repo": "repo",
  "readmeContent": "# 原始 README 内容...",
  "analysis": "## 1. 项目概述\n..."
}

错误响应

{ "error": "错误描述" }
HTTP 状态码 场景
400 URL 格式不合法
500 GitHub 无 README / AI 服务异常

开发

# 构建后端
./mvnw clean package

# 构建前端
cd frontend && npm run build

About

AI 自动读取 Github仓库 README 并生成结构化中文解析报告

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors