Skip to content

ccccccmd/GitHubAIOpsApi

Repository files navigation

GitHub AI Ops

一个基于 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: 完整操作摘要
Loading

Agent 职责

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 权限)

1. 克隆并配置

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"
  }
}

2. 配置密钥(user-secrets)

dotnet user-secrets set "AI:OpenAI:ApiKey" "你的火山引擎APIKey"
dotnet user-secrets set "AI:Embedding:ApiKey" "你的火山引擎APIKey"
dotnet user-secrets set "GitHub:Token" "你的GitHub_PAT"

3. 启动

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 串联顺序

🧠 RAG 工作原理

第 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

About

一个基于 **Microsoft Agents AI** 框架构建的全自动 GitHub DevOps 系统。通过多 Agent 协同工作,自动完成从 Issue 创建、Bug 分析、代码修复到 Pull Request 合并的完整闭环,并配备本地 RAG 长期记忆,让 AI 越用越聪明。

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages