接收 GitHub PR → LLM 自动提取根因、修复方案和预防措施 → 人工审核 → 沉淀为团队可检索的知识条目。
GitHub PR/Webhook LLM 结构化抽取 人工审核 知识库沉淀
│ │ │ │
┌────▼────┐ 触发 ┌───────▼──────┐ draft ┌──▼──┐ approved ┌──▼──────┐
│ PR #42 │──────────▶│ Bug Review │─────────▶│ 审核 │──────────▶│ 知识条目 │
│ fix(rag)│ commit SHA│ Document │ pending │ │ published │· 可检索 │
└─────────┘ │· 根因 │ └──────┘ │· 关联PR │
│· 修复方案 │◄──────── rejected ────────│· 关键词 │
│· 预防措施 │ └─────────┘
└──────────────┘
四条审核状态覆盖完整生命周期:
| 状态 | 对应 PR | 示例 |
|---|---|---|
draft |
刚接收 | PR #1 fix(style): CSS 样式回归 |
approved |
已通过尚未发布 | PR #1 fix(editor): 运行按钮空参数 |
rejected |
已驳回 | PR #1 fix(applist): 重复创建示例应用 |
published |
已发布到知识库 | PR #3 fix(rag): 上传文件报500 |
┌──────────────┐ ┌─────────────────────────────────────────────┐
│ GitHub PR │────▶│ 六层管道架构 │
│ Webhook │ │ │
│ Manual │ │ ① 事件采集 ──▶ ② 任务编排 ──▶ ③ LLM 抽取 │
└──────────────┘ │ │ │ │ │
│ ④ RAG 增强 ◀── ⑤ 审核发布 ──▶ ⑥ 知识检索 │
│ │ │ │ │
│ BM25+向量 审核状态机 语义搜索+关键词 │
│ 混合召回 (draft→approved→published) │
└─────────────────────────────────────────────┘
技术栈:
| 层 | 技术 |
|---|---|
| 后端框架 | FastAPI + Uvicorn |
| 前端框架 | Vue 3 + Vite + Pinia |
| UI 组件库 | Element Plus |
| 可视化 | ECharts |
| 数据存储 | JSON 文件 + SQLite(幂等键) |
| LLM 集成 | OpenAI 兼容 API |
| 检索 | BM25 关键词索引 + 向量语义搜索 |
| 发布(阶段一) | 本地 Markdown 输出 |
无需配置 LLM Key,直接启动即可体验完整流程:
cd backend
python3 -m venv .venv
source .venv/bin/activate
pip install -e .[dev]
python start_demo.py后端地址:http://localhost:8000
Demo 模式预设了基于真实仓库 gulugulu33/aiflow-studio 的 4 条 Bug 报告、5 条知识条目和审核历史。
如需真实 LLM 抽取,配置
backend/.env中的LLM_API_KEY即可。
cd frontend
npm install
npm run dev前端地址:http://localhost:5173
- 打开工作台 → 看到新手引导卡和 4 条 Demo 数据
- 点击 Bug 复盘 → 左侧列表选择一条 Bug 报告
- 右侧查看 LLM 抽取结果(根因/修复方案/预防措施/来源引用)
- 编辑字段 → 点击 通过审核 或 驳回
- 审核通过后点击 发布到知识库
- 在知识库中搜索关键词(如 "upload"、"500")验证召回效果
- 点击 重置示例 可一键恢复初始数据
| 页面 | 路径 | 功能 |
|---|---|---|
| 工作台 | /dashboard |
管道总览:沉淀时效、审核进度、知识库增长、Token 消耗 |
| Bug 复盘 | /ci-autofix |
核心页面:LLM 抽取结果查看/编辑 + 审核操作(通过/驳回/发布) |
| 知识库 | /skill-library |
语义搜索 + BM25 关键词混合召回 |
| 抽取管道 | /task-scheduling |
六层管道任务流转可视化 |
| 数据源管理 | /repo-management |
GitHub 仓库接入 + Webhook 配置 |
| 上下文 | /context-management |
代码上下文索引与依赖图 |
| 管道监控 | /observability |
各层延迟、成功率、降级触发率 |
基于真实仓库 gulugulu33/aiflow-studio,所有 PR 编号和 commit SHA 来自真实 git clone:
| Bug 报告 | 真实 PR | Commit SHA | 审核状态 |
|---|---|---|---|
bug-aiflow-001 |
PR #3 fix(rag): 上传文件报500 | 6ae78ab |
published |
bug-aiflow-002 |
PR #1 fix(editor): 运行按钮空参数 | b30d696 |
approved |
bug-aiflow-003 |
PR #1 fix(style): CSS 样式回归 | 70fafa3 |
draft |
bug-aiflow-004 |
PR #1 fix(applist): 重复创建示例应用 | 08c2141 |
rejected |
.
├── backend/
│ ├── src/repo_maintainer/
│ │ ├── api.py # FastAPI 路由
│ │ ├── models.py # BugReport / KnowledgeEntry
│ │ ├── bug_schema.py # LLM 抽取结果 Schema + 防幻觉 SourceRef
│ │ ├── pr_listener.py # GitHub/GitLab Webhook 解析
│ │ ├── idempotency.py # 幂等键 SQLite 存储
│ │ ├── map_reduce_summary.py # 长上下文 Map-Reduce 压缩
│ │ ├── log_compressor.py # 日志智能裁剪
│ │ ├── bm25_index.py # BM25 关键词倒排索引
│ │ ├── retrieval.py # BM25 + 向量混合召回
│ │ ├── llm_executor.py # LLM 抽取 + 指数退避重试
│ │ ├── review_workflow.py # 审核状态机
│ │ ├── wiki_publisher.py # Markdown 知识发布
│ │ └── frontend_service.py # 前端数据服务
│ ├── tests/
│ ├── start_demo.py # Demo 数据注入 + 启动
│ └── .env.example
├── frontend/
│ ├── src/
│ │ ├── views/ # 7 个页面组件
│ │ ├── components/ # 通用组件 + 布局
│ │ ├── api/platform.ts # API 调用层
│ │ ├── types/platform.ts # 类型定义
│ │ └── styles/global.css # 设计系统
│ └── index.html
├── docs/
│ └── refactor-plan.md
└── README.md
| 变量 | 说明 | Demo 模式 |
|---|---|---|
LLM_API_KEY |
LLM API Key | 不需要 |
LLM_MODEL |
模型名称 | 不需要 |
LLM_BASE_URL |
API 地址 | 不需要 |
EMBEDDING_API_KEY |
Embedding API Key | 不需要 |
API_HOST |
后端监听地址 | 0.0.0.0 |
API_PORT |
后端监听端口 | 8000 |
Demo 模式无需任何配置,所有数据预注入,可直接体验完整流程。
# 后端
cd backend && .venv/bin/python start_demo.py # 启动 Demo 服务
cd backend && pytest # 运行测试
# 前端
cd frontend && npm run dev # 开发模式
cd frontend && npm run build # 生产构建MIT License