一个基于 Microsoft Agents AI 框架构建的全自动 GitHub DevOps 系统。通过多 Agent 协同工作,自动完成从 Issue 创建、Bug 分析、代码修复到 Pull Request 合并的完整闭环,并配备本地 RAG 长期记忆,让 AI 越用越聪明。
- 🤖 多 Agent 自动化流水线:Triage → Resolver → Fixer → Reviewer,4 个专业 Agent 接力完成全流程
- 🧠 本地 RAG 长期记忆:每次修复的经验自动写入本地 SQLite,下次遇到相似 Bug 时直接召回历史方案
- 🔌 零云依赖:向量数据库使用本地文件 (
github_ops_knowledge.db),无需任何云存储服务 - 🚀 实时 DevUI:通过 Microsoft Agents DevUI 可视化观察每个 Agent 的决策过程
用户描述 Bug (DevUI)
↓
┌────────────────────────────────────────────────────────┐
│ 工作流 (Workflow) │
│ │
│ [Triage] ──→ [Resolver] ──→ [Fixer] ──→ [Reviewer] │
│ ↓ ↓ ↓ │
│ 创建 Issue 查询 RAG 写入 RAG │
└────────────────────────────────────────────────────────┘
↕
GitHub API (Octokit) 本地 SQLite RAG
- 搜索/创建 Issue - 向量存储 + 余弦相似度检索
- 读取代码文件 - Volcengine Embedding 向量化
- 创建 PR / Merge / Close
sequenceDiagram
actor User as 用户
participant DevUI as DevUI
participant Triage as Triage Agent
participant Resolver as Resolver Agent
participant Fixer as Fixer Agent
participant Reviewer as Reviewer Agent
participant GitHub as GitHub API
participant RAG as 本地 SQLite RAG
participant Embed as Volcengine Embedding
User->>DevUI: 描述 Bug 问题
rect rgb(230, 240, 255)
Note over Triage: 第一幕:分流
DevUI->>Triage: 转发用户描述
Triage->>GitHub: SearchSimilarIssues(query)
GitHub-->>Triage: 返回相似 Issue 列表
alt 不是重复 Issue
Triage->>GitHub: CreateIssue(title, body, label)
GitHub-->>Triage: Issue #N 创建成功
Triage->>GitHub: AssignLabel(issue#N, "bug")
else 是重复 Issue
Triage->>GitHub: AssignLabel(issue#N, "duplicate")
end
Triage-->>Resolver: "新 Bug Issue #N 已创建"
end
rect rgb(230, 255, 230)
Note over Resolver: 第二幕:分析
Resolver->>Embed: GenerateEmbedding(bug描述)
Embed-->>Resolver: 向量 [v1, v2, ...]
Resolver->>RAG: 余弦相似度检索 Top 3
RAG-->>Resolver: 历史相似方案(或"空库")
Resolver->>GitHub: ReadCodeFile(filePath)
GitHub-->>Resolver: 源代码内容
Resolver-->>Fixer: "找到 Bug 原因,修复代码如下..."
end
rect rgb(255, 245, 220)
Note over Fixer: 第三幕:提交
Fixer->>GitHub: CreatePullRequest(branch, file, code, title)
GitHub-->>Fixer: PR #M 创建成功
Fixer-->>Reviewer: "PR #M 已发起,等待审核"
end
rect rgb(255, 230, 230)
Note over Reviewer: 第四幕:审核 & 学习
Reviewer->>GitHub: MergePullRequest(PR #M)
GitHub-->>Reviewer: Merge 成功
Reviewer->>GitHub: CloseIssue(Issue #N)
GitHub-->>Reviewer: Issue 已关闭
Reviewer->>Embed: GenerateEmbedding(title + resolution)
Embed-->>Reviewer: 向量 [v1, v2, ...]
Reviewer->>RAG: StoreSolution(title, resolution, vector)
RAG-->>Reviewer: 写入成功
Reviewer-->>DevUI: "已 Merge、已关闭、经验已入库 ✅"
end
DevUI-->>User: 完整操作摘要
| Agent | 职责 | 工具 |
|---|---|---|
| Triage Agent | 检查重复、创建 Issue、打标签 | SearchSimilarIssues, CreateIssue, AssignLabel |
| Resolver Agent | 查询历史经验、读代码、给出修复方案 | QueryPastSolutions, ReadCodeFile |
| Fixer Agent | 创建分支、提交修复代码、发起 PR | CreatePullRequest |
| Reviewer Agent | 审核代码、Merge PR、关闭 Issue、保存经验 | MergePullRequest, CloseIssue, StoreSolution |
- .NET 10 SDK (Preview)
- 火山引擎账号(用于 Chat 模型 + Embedding 模型)
- GitHub Personal Access Token(需要
repo权限)
git clone <your-repo-url>
cd GitHubAIOpsApi编辑 appsettings.json,填写端点和模型 ID(API Key 请用 user-secrets,不要提交到 git):
{
"AI": {
"OpenAI": {
"Endpoint": "https://ark.cn-beijing.volces.com/api/coding/v3/",
"Model": "ark-code-latest"
},
"Embedding": {
"Endpoint": "https://ark.cn-beijing.volces.com/api/v3/embeddings/multimodal",
"Model": "doubao-embedding-vision-251215"
}
},
"GitHub": {
"Owner": "your-github-username",
"Repo": "your-repo-name",
"ProductHeader": "GitHubAIOps"
}
}dotnet user-secrets set "AI:OpenAI:ApiKey" "你的火山引擎APIKey"
dotnet user-secrets set "AI:Embedding:ApiKey" "你的火山引擎APIKey"
dotnet user-secrets set "GitHub:Token" "你的GitHub_PAT"dotnet run启动成功后你会看到:
[RAG] Initializing local SQLite knowledge base...
[RAG] Knowledge base initialized.
Now listening on: https://localhost:7xxx
打开 DevUI 地址(见启动日志),发送 Bug 描述即可触发完整流程。
GitHubAIOpsApi/
│
├── Program.cs # 应用入口,声明式组装所有服务
├── appsettings.json # 配置(端点、模型名、GitHub 仓库)
│
├── Agents/
│ └── OpsAgents.cs # 4 个 Agent 的提示词定义
│
├── Tools/
│ └── GitHubOpsTools.cs # 所有 AI 工具实现
│
├── Services/
│ ├── IGitHubService.cs # GitHub 操作接口
│ ├── GitHubService.cs # GitHub API 实现 (Octokit)
│ ├── ILocalKnowledgeBaseService.cs # 知识库接口
│ ├── SqliteKnowledgeBaseService.cs # 本地 SQLite 知识库(RAG 核心)
│ └── VolcengineMultimodalEmbeddingAdapter.cs # 火山引擎 Embedding 适配器
│
├── Extensions/
│ ├── ServiceCollectionExtensions.cs # Agent & Tool DI 注册
│ └── AiClientExtensions.cs # AI 客户端 DI 注册
│
└── Workflows/
└── GitHubOpsWorkflowBuilder.cs # 定义 Agent 串联顺序
第 N 次修复(写入记忆) 第 N+1 次修复(召回记忆)
↓ ↓
Reviewer 调用 StoreSolution Resolver 调用 QueryPastSolutions
↓ ↓
文字 → Embedding 向量 描述 → Embedding 向量
↓ ↓
存入 SQLite (.db 文件) 余弦相似度检索 (Top 3, 阈值 0.2)
数据库文件位于项目运行目录下:github_ops_knowledge.db
| 组件 | 技术 |
|---|---|
| Web 框架 | ASP.NET Core (.NET 10) |
| Agent 框架 | Microsoft Agents AI |
| GitHub 操作 | Octokit.NET |
| LLM 推理 | 火山引擎 ark-code-latest |
| Embedding | 火山引擎 doubao-embedding-vision-251215 |
| 向量数据库 | SQLite + 手写余弦相似度 (零外部依赖) |
| DI 容器 | Microsoft.Extensions.DependencyInjection |