输入任意 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
在 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 请求限额./mvnw spring-boot:run
# 后端运行在 http://localhost:8080cd frontend
npm install
npm run dev
# 前端运行在 http://localhost:5173打开浏览器访问 http://localhost:5173,粘贴任意 GitHub 仓库地址即可。
配置了 ANTHROPIC_API_KEY → 使用 Claude claude-opus-4-6
↓ 否
配置了 OPENAI_API_KEY → 使用 GPT-4o
↓ 否
启动报错,提示配置 Key
两个 Key 都配置时,Claude 优先(@Order(1))。
请求体
{ "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