gitlink-cli/gitlink-web/README.md

152 lines
7.9 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.

# GitLink Skills Web Service科研智能分析服务
> 子任务四「应用 GitLink 辅助科研」的在线服务。基于 **Flask + DeepSeek API + gitlink-cli**,通过 AI Agent 自动分析 GitLink 平台数据,覆盖科研项目分析、热点追踪、合规校验、协作匹配、进度预警等全链路科研辅助场景。
>
> 🌐 在线地址:<http://121.41.212.97/skills/> 归属jiangtx/gitlink-cli 小组
---
## 一、它能做什么
输入一个研究主题或仓库地址,服务会自动调用 `gitlink-cli` 拉取 GitLink 平台数据,再由 DeepSeek 大模型按各 Skill 的工作流生成结构化分析报告。共 **14 个 Skill**,分两类:
### 🎯 核心 Skill开发者场景
| Skill | 入口 | 说明 | 典型输出 |
|---|---|---|---|
| 技术调研 `research-tracker` | `/research` | 输入主题→多关键词搜索→深度评估→调研报告 | 热点概览 / 项目排行 / 重点分析 / 趋势建议 |
| 贡献者分析 `contributor-insight` | `/contributor` | 仓库贡献者活跃度与团队健康度 | 团队概览 / 活跃排行 / 重点画像 |
| Issue 分拣 `issue-triage` | `/issue-triage` | 自动分类 Issue、评估紧急度 | 类型分类 / 紧急度 / 行动建议 |
| CI 健康巡检 `ci-health` | `/ci-health` | CI/CD 状态、构建成功率 | 健康度总览 / 构建趋势 / 故障分析 |
| 仓库健康巡检 `repo-health` | `/repo-health` | 综合活跃度、社区、代码产出 | 基本信息 / 活跃度 / 综合评分 |
| PR 效率分析 `pr-analytics` | `/pr-analytics` | PR 吞吐量、合并率 | 吞吐量 / 合并效率 / 贡献排行 |
| 跨维搜索 `cross-search` | `/cross-search` | 仓库+代码+Issue 三维搜索 | 各维命中 / 代码片段 / 讨论热点 |
| 用户分析 `user-analysis` | `/user-analysis` | 用户画像与项目参与 | 基本信息 / 活跃度 / 贡献列表 |
| 仓库对比 `repo-compare` | `/repo-compare` | 两仓库指标对比 | 基本/社区/活动对比 / 结论 |
### 🔬 科研实验室(科研场景,对应子任务四)
| Skill | 入口 | 科研场景 | 典型输出 |
|---|---|---|---|
| 热点追踪 `lab-hotspot` | `/lab-hotspot` | 多关键词搜索 + 领域知识图谱 | 热点概览 / 排行 / 知识图谱 / 趋势 |
| 项目洞悉 `lab-insight` | `/lab-insight` | 仓库+贡献者+PR/Issue 全息分析 | 项目概况 / 社区活跃 / 团队画像 |
| 合规检查 `lab-compliance` | `/lab-compliance` | License/CI/文档/复现性 | 合规评分 / 文档完整性 / 可复现性 |
| 协作匹配 `lab-match` | `/lab-match` | 新手友好度 + 社区健康度 | 项目概览 / 入门友好度 / 贡献方向 |
| 进度跟踪 `lab-track` | `/lab-track` | 多仓库批量巡检 + 三级告警 | 状态概览 / 指标表 / 预警详情 |
> 科研实验室 5 个 Skill 与《课程实践任务》子任务四场景一一对应:仓库级科研项目洞悉、科研热点追踪与知识图谱、科研项目合规与复现性检查、科研协作智能匹配、科研进度智能跟踪与预警。
---
## 二、架构
```
┌──────────────┐ HTTP ┌──────────────────────────────┐
│ 浏览器/评委 │ ───────► │ Flask (app.py, gunicorn) │
└──────────────┘ │ 路由 / /<slug> /api/run │
└──────────────┬───────────────┘
│ 按 Skill 选 agent_*()
┌──────────────▼───────────────┐
│ DeepSeek API (Chat) │
│ 注入 SKILL.md prompt + 日期 │
└──────────────┬───────────────┘
│ 工具调用 gitlink-cli
┌──────────────▼───────────────┐
│ gitlink-cli (npm 全局) │
│ repo/issue/pr/release/... │
└──────────────┬───────────────┘
┌──────────────▼───────────────┐
│ GitLink 平台 OpenAPI │
└──────────────────────────────┘
```
- `app.py`Flask 服务14 个 `agent_*` / `lab_*` 函数分别对应 14 个 Skill每个严格遵循 `skills/*.txt` 里的工作流。
- `skills/*.txt`:各 Skill 的 prompt 工作流(与仓库 `skills/gitlink-*/SKILL.md` 同源)。
- `templates/``base.html` / `index.html` / `skill.html` 三套页面。
- `reports/`:运行时生成的历史报告(运行时创建)。
---
## 三、本地运行
```bash
# 1. 依赖
pip install -r requirements.txt # flask requests gunicorn
# 2. 安装 gitlink-cli数据源
npm install -g gitlink-cli
gitlink-cli auth login # 登录 GitLink
# 3. 配置大模型 KeyDeepSeek 或兼容 OpenAI 的接口)
export API_KEY="sk-xxxxxxxx"
export API_BASE="https://api.deepseek.com/v1"
export API_MODEL="deepseek-chat"
# 4. 启动
python app.py # 默认 5000 端口;--port=80 指定
# 访问 http://localhost:5000/
```
> `API_KEY` 也可不设环境变量,`app.py` 会回退到内置占位(仅本地测试)。生产环境务必用环境变量,不要把 Key 写进代码。
---
## 四、部署到服务器
### 方式 ADevOps 流水线(推荐,可复现)
仓库根目录 `.devops/gitlink-web.yml` 是建木流水线master 合并后自动 `git clone` → 同步 `gitlink-web/``/opt/gitlink-web` → 装 Python 依赖 → 写 systemd 单元 → 重启 → 健康检查。需在建木密钥组 `gitlink_cli` 中配置:
- `wyx_ssh_pass`:服务器 SSH 密码
- `deepseek_api_key`DeepSeek API Key
### 方式 B手动脚本
```bash
cd gitlink-web
# 编辑 deploy.py 顶部的 PASSWORD 与 API_KEY或改成从环境变量读
python deploy.py
```
`deploy.py` 用 paramiko 走 SSH装系统依赖 → 装 gitlink-cli → 上传文件 → 装 Python 依赖 → 写 systemd 服务 → 启动。服务以 `gitlink-web.service` 常驻,监听 80 端口。
---
## 五、API 端点
| 端点 | 方法 | 说明 |
|---|---|---|
| `/` | GET | 首页Skill 列表) |
| `/<slug>` | GET | 单个 Skill 表单页(如 `/research`、`/lab-hotspot` |
| `/api/run` | POST | 执行 Skillbody`{"skill":"research-tracker","input":"大模型"}`,返回生成报告 |
---
## 六、目录结构
```
gitlink-web/
├── app.py # Flask 服务 + 14 个 Skill 处理函数865 行)
├── deploy.py # paramiko 一键部署脚本
├── requirements.txt # flask / requests / gunicorn
├── skills/ # 各 Skill 的 prompt 工作流
│ ├── research-tracker.txt
│ ├── contributor-insight.txt
│ ├── issue-triage.txt
│ └── ci-health.txt
└── templates/
├── base.html
├── index.html
└── skill.html
```
---
## 七、与 CLI Skills 的关系
本服务的 `skills/*.txt` 与仓库 `skills/gitlink-*/SKILL.md` 同源、可互换:
- **CLI Skill**`skills/gitlink-research-tracker/SKILL.md`):供 Claude Code / Cursor 等 Agent 平台直接调用,离线、可复现。
- **Web Skill**(本服务):封装成 Web 界面 + 后端 DeepSeek评委无需装 Agent 即可在浏览器体验。
两者覆盖相同的科研场景,互为印证。