Skip to content

Commit bda88e4

Browse files
committed
feat: 优化项目展示格式和内容结构
- 将表格中的"简介"改为"一句话总结" - 简化详细项目信息展示,聚焦核心内容 - 新增项目一句话总结生成功能
1 parent 8f7f774 commit bda88e4

1 file changed

Lines changed: 40 additions & 75 deletions

File tree

llm_analyzer.py

Lines changed: 40 additions & 75 deletions
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,7 @@ def _build_repos_table(self, repos: List[Dict]) -> str:
2929
sorted_repos = sorted(repos, key=lambda x: x.get('stars_today', 0), reverse=True)
3030

3131
table_parts = [
32-
"| 排名 | 项目 | 语言 | 今日 | 总计 | 简介 |",
32+
"| 排名 | 项目 | 语言 | 今日 | 总计 | 一句话总结 |",
3333
"|:---:|------|:----:|------:|-----:|------|"
3434
]
3535

@@ -40,13 +40,10 @@ def _build_repos_table(self, repos: List[Dict]) -> str:
4040
language = repo.get('language', 'Unknown') or 'Unknown'
4141
stars_today = repo.get('stars_today', 0)
4242
stars = repo.get('stars', 0)
43-
desc = repo.get('description', 'No description') or 'No description'
44-
# 截断描述
45-
if len(desc) > 30:
46-
desc = desc[:27] + "..."
43+
summary = "[基于README生成]"
4744

4845
table_parts.append(
49-
f"| {rank} | [{name}]({url}) | {language} | +{stars_today:,} | {stars:,} | {desc} |"
46+
f"| {rank} | [{name}]({url}) | {language} | +{stars_today:,} | {stars:,} | {summary} |"
5047
)
5148

5249
return "\n".join(table_parts)
@@ -56,53 +53,34 @@ def _build_repos_summary_for_llm(self, repos: List[Dict]) -> str:
5653
summary_parts = []
5754
for i, repo in enumerate(repos, 1):
5855
topics = ", ".join(repo.get("topics", [])[:5]) if repo.get("topics") else "无"
56+
original_desc = repo.get('description', 'No description') or 'No description'
57+
5958
summary_parts.append(
6059
f"{i}. **{repo.get('full_name', 'Unknown')}** ({repo.get('language', 'Unknown')})\n"
6160
f" - Stars: {repo.get('stars', 0):,} (+{repo.get('stars_today', 0):,} today)\n"
6261
f" - Forks: {repo.get('forks', 0):,}\n"
63-
f" - Description: {repo.get('description', 'No description')}\n"
62+
f" - Description: {original_desc}\n"
6463
f" - Topics: {topics}\n"
6564
f" - URL: {repo.get('url', '')}"
6665
)
6766
return "\n\n".join(summary_parts)
6867

6968
def _build_detailed_repo_info(self, repo: Dict) -> str:
7069
"""Build detailed repository info including README excerpt"""
70+
original_desc = repo.get('description', 'No description') or 'No description'
71+
readme_excerpt = repo.get('readme_excerpt', '')[:500] if repo.get('readme_excerpt') else ''
72+
7173
info_parts = [
7274
f"## 项目: {repo.get('full_name', 'Unknown')}",
7375
f"- **编程语言**: {repo.get('language', 'Unknown')}",
7476
f"- **Star 数**: {repo.get('stars', 0):,} (+{repo.get('stars_today', 0):,} today)",
7577
f"- **Fork 数**: {repo.get('forks', 0):,}",
76-
f"- **Open Issues**: {repo.get('open_issues', 0):,}",
77-
f"- **License**: {repo.get('license', 'Unknown')}",
78-
f"- **项目描述**: {repo.get('description', 'No description')}",
78+
f"- **原始描述**: {original_desc}",
7979
]
8080

81-
# Topics
82-
if repo.get("topics"):
83-
info_parts.append(f"- **Topics**: {', '.join(repo['topics'][:10])}")
84-
85-
# Languages breakdown
86-
if repo.get("languages"):
87-
total = sum(repo["languages"].values())
88-
if total > 0:
89-
lang_breakdown = ", ".join([
90-
f"{lang}: {bytes/total*100:.1f}%"
91-
for lang, bytes in list(repo["languages"].items())[:5]
92-
])
93-
info_parts.append(f"- **语言分布**: {lang_breakdown}")
94-
95-
# Recent commits
96-
if repo.get("recent_commits"):
97-
info_parts.append("\n**最近提交**:")
98-
for commit in repo["recent_commits"][:3]:
99-
info_parts.append(f" - [{commit['sha']}] {commit['message']}")
100-
101-
# README excerpt
102-
if repo.get("readme_excerpt"):
103-
# 截取 README 的前 800 字符
104-
readme = repo["readme_excerpt"][:800]
105-
info_parts.append(f"\n**README 摘要**:\n```\n{readme}\n```")
81+
# 添加README摘要用于LLM分析
82+
if readme_excerpt:
83+
info_parts.append(f"\n**README摘要**:\n```\n{readme_excerpt}\n```")
10684

10785
return "\n".join(info_parts)
10886

@@ -191,16 +169,19 @@ def analyze_trends(self, repos: List[Dict]) -> str:
191169
请用中文提供以下内容:
192170
193171
### 热点总结
194-
用一段话(50-80字)概括今日GitHub热榜的主要热点和趋势,要抓住最核心的1-2个趋势。这段话将作为报告的开篇摘要。
172+
用一段话(50-80字)概括今日GitHub热榜的主要热点和趋势,要抓住最核心的1-2个趋势。
195173
196174
### 关键观察
197175
用3-4个要点(每个20-40字)列出今日最值得关注的技术趋势或现象,使用 markdown 加粗标注关键词。
198176
177+
### 项目一句话总结
178+
基于每个项目的README、描述和技术特点,为每个项目生成一个精准的一句话中文总结(15-25字),突出核心价值。
179+
199180
格式要求:
200181
1. 热点总结直接输出一段话,不需要标题
201182
2. 关键观察用 "- **关键词**:说明" 的格式
202-
3. 语言要精炼有力,避免废话
203-
4. 内容要有洞察力,不要泛泛而谈"""
183+
3. 项目总结要基于技术实质,不是简单翻译
184+
4. 语言要精炼有力,避免废话"""
204185

205186
response = self.client.chat.completions.create(
206187
model=self.model,
@@ -242,55 +223,39 @@ def analyze_single_repo_detailed(self, repo: Dict, rank: int) -> str:
242223
243224
### {rank}. {repo.get('full_name', 'Unknown')} — [项目简短定位,5-10个字]
244225
245-
> **一句话总结**:[用一句话概括项目的核心价值和特点,30-50字]
246-
247-
#### 价值主张
226+
> **一句话总结**:[基于项目的README、代码功能和技术特点,用一句话精准总结项目的核心价值,20-30字]
248227
228+
#### 项目亮点
249229
| 维度 | 说明 |
250230
|------|------|
251-
| **解决痛点** | [项目解决的核心问题,20-40字] |
252-
| **目标用户** | [主要使用人群,15-30字] |
253-
| **核心亮点** | [3-5个关键特性,用 + 连接] |
254-
255-
#### 技术架构
231+
| **核心功能** | [基于README提炼的1-2个核心功能,15-25字] |
232+
| **技术特色** | [技术实现的关键亮点,15-25字] |
233+
| **应用场景** | [主要使用场景,10-20字] |
256234
257-
[如果项目有明确的技术流程,用mermaid图展示,格式如下:]
258-
```mermaid
259-
graph LR
260-
A[输入] --> B[处理]
261-
B --> C[输出]
262-
```
263-
264-
**技术特色**:
265-
- [技术亮点1,15-30字]
266-
- [技术亮点2,15-30字]
267-
- [技术亮点3,15-30字]
268-
269-
#### 热度分析
235+
#### 技术洞察
236+
- **技术价值**:[基于代码和README的技术分析,20-35字]
237+
- **创新点**:[与传统方案相比的创新之处,15-30字]
238+
- **生态位**:[在开源生态中的定位,15-25字]
270239
271-
- [基于Star/Fork数据的增长分析,20-40字]
272-
- [社区活跃度或生态位置分析,20-40字]
273-
274-
#### 快速上手
240+
#### 使用建议
241+
- **适用场景**:[具体使用场景描述,15-25字]
242+
- **上手难度**:[简单/中等/困难 + 原因,10-20字]
275243
244+
#### 快速体验
276245
```bash
277-
# 简洁的上手命令示例(2-4行)
246+
# 基于README的最简使用示例
247+
git clone {repo.get('url', '')}
248+
cd {repo.get('name', 'project')}
249+
# 添加具体的使用命令
278250
```
279251
280-
#### 注意事项
281-
282-
- [注意事项1]
283-
- [注意事项2]
284-
285252
---
286253
287254
要求:
288-
1. 内容要精炼,避免冗长
289-
2. 技术分析要有深度和洞察
290-
3. mermaid图要简洁清晰,节点不超过6个
291-
4. 代码示例要实用可运行
292-
5. 如果项目信息不足以生成mermaid图,可以省略该部分
293-
6. 不要使用emoji"""
255+
1. **必须基于README内容**进行分析,不是简单翻译描述
256+
2. 一句话总结要精准体现项目技术价值
257+
3. 技术分析要有深度,避免表面描述
258+
4. 所有内容基于项目实际功能和代码特点"""
294259

295260
response = self.client.chat.completions.create(
296261
model=self.model,

0 commit comments

Comments
 (0)