AutoGen .NET dev-team 示例入门指南:从零跑通事件驱动的 GitHub AI 开发团队(gh-flow)
2026/9/5 17:13:25 网站建设 项目流程

AutoGen .NET dev-team 示例入门指南:从零跑通事件驱动的 GitHub AI 开发团队(gh-flow)

【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen

AutoGen 仓库的dev-team示例(又名gh-flow)用事件驱动的多 Agent 系统模拟一支完整的 AI 开发团队:Product Manager 生成 README、Developer Lead 拆解开发计划、Developer 产出代码,全部通过 GitHub Issue 与人类协作完成。本文基于仓库中的入门文档 github-flow-getting-started.md 展开,结合 GithubOptions.cs、AzureOptions.cs、seed-memory/Program.cs 等源码,完整讲清 GitHub App 注册、本地调试、Azure 部署与向量库初始化的每一步操作与底层机制,读完即可把这套 Agent 团队接入自己的仓库。

一、这套方案是如何工作的

先建立整体图景,后面的配置才有意义。整个流程由 GitHub 事件触发(详见 README.md):

  1. 用户在 GitHub 仓库创建一个 Issue,用自然语言描述要做什么;
  2. ProductManagerAgent 响应,产出 README 草案,用户通过 Issue 评论迭代反馈,批准后关闭 Issue,README 被提交进 PR;
  3. DeveloperLeadAgent 生成拆解后的开发计划,同样可迭代,批准后按计划为每个子任务创建新的 Dev Issue;
  4. DeveloperAgent 产出代码,批准后提交 PR;代码同时会存入 Blob 存储并在沙箱中运行验证。

事件流转由HubberAgent 协调(创建 Issue、分支、PR),AzureGenie负责存储与沙箱调度,Sandbox轮询运行结果。这些 Agent 的注册发生在后端入口 Program.cs:

builder.AddGrpcAgentWorker(builder.Configuration["AGENT_HOST"]!) .AddAgentWorker() .AddAgent<AzureGenie>(nameof(AzureGenie)) .AddAgent<Hubber>(nameof(Hubber)) .AddAgent<Dev>(nameof(Dev)) .AddAgent<ProductManager>(nameof(ProductManager)) .AddAgent<DeveloperLead>(nameof(DeveloperLead));

可以看到整个系统构建在 AutoGen 的Microsoft.AutoGen.CoreMicrosoft.AutoGen.Core.Grpc之上(见 DevTeam.Backend.csproj 中的 ProjectReference),文档中提到的“依赖 Orleans 的 Agents 实现”即来源于此——Agent 作为 Grpc Agent Worker 运行,因此还带有 Orleans Dashboard 可观测能力。

二、前置条件

在动手之前,你需要准备四样东西:

  • 一个可用的 gpt3.5-turbo 或 gpt4 模型访问权限(推荐 gpt4);
  • 一个按本文配置注册并安装好的GitHub App
  • 一套通过 azd 供应好的Azure 资源(沙箱、文件存储等);
  • 一组用于路由的Issue 标签(Labels)。

注册并配置 GitHub App

按文档要求注册一个 GitHub App,关键选项如下:

  • 名称与描述任意填写;
  • Homepage URL 可填任意值(例如仓库地址);
  • Webhook URL 先填一个占位值,本地跑起来配好隧道后再回填;
  • 设置一个 Webhook Secret,后面要填入appsettings.jsonWebhookSecret属性;
  • Repository 权限设置为:
    • Contents — 读写
    • Issues — 读写
    • Metadata — 只读
    • Pull requests — 读写
  • 订阅事件:IssuesIssue comment
  • 允许任意用户或组织安装该 App。

App 创建完成后,立即生成一枚 Private Key——它是后端从应用身份调用 GitHub API 的凭证。

后端如何用这些配置:Program.cs 中GithubAuthServiceGithubOptions构造 GitHub 客户端;Program.cs 中endpoints.MapGitHubWebhooks(secret: ghOptions.WebhookSecret)表明WebhookSecret会被用于校验每个入站 Webhook 请求的签名,因此这个值必须与 App 后台配置完全一致。

创建路由标签(Labels)

系统靠 GitHub Issue 上的Label来决定“该和哪个技能/人格说话”。默认的技能与人格对应以下四个标签:

  • PM.Readme
  • Do.It
  • DevLead.Plan
  • Developer.Implement

这些标签不会自动出现在你的仓库中,需要手动添加。之后每扩展一个自定义技能,别忘了同步添加对应标签。

三、本地运行

使用 Codespaces

仓库为本地调试预置了 Codespaces 环境(个人账户有免费额度)。在 GitHub 页面上为你的仓库创建一个 Codespace:

Codespace 中已装好 azd 等工具,并且本地版Qdrant也已就绪(这一点在向量库初始化章节会用到)。

配置 appsettings.json

文档指出示例文件夹下提供两个模板:appsettings.azure.template.json(部署到 Azure 用)与appsettings.local.template.json(本地运行用)。按你的运行环境选用其一,重命名为appsettings.json并填写其中的值。当前仓库中的 appsettings.Development.json 只包含日志级别配置,业务配置正是通过下面两个配置节绑定进类型化 Options 的。

GitHubOptions 配置项

对应源码 GithubOptions.cs,四个属性均带[Required]校验(ValidateOnStart()会在启动时强制检查,见 Program.cs):

配置项类型获取方式
AppKey(PrivateKey)string注册 App 时生成的密钥。若当时没保存,去 App 设置页“Private keys”处点Generate a new private key,会下载一个.pem文件;把-----BEGIN RSA PRIVATE KEY----------END RSA PRIVATE KEY-----之间的全部内容在一行内粘贴进来
AppIdintApp 设置页顶部的 App ID
InstallationIdlong打开该 App 的某个安装页,URL 形如https://github.com/settings/installations/<installation-id>,末尾的数字即是
WebhookSecretstring注册 App 时在 Webhooks 设置的 Secret 值
AzureOptions 配置项

对应源码 AzureOptions.cs,同样全部必填:

配置项说明
SubscriptionId要使用的 Azure 订阅 ID
Location资源所在区域
ContainerInstancesResourceGroup沙箱容器实例(Container Instances)部署所在的资源组
FilesAccountNameAzure Storage 账户名
FilesShareName文件共享(File Share)名称
FilesAccountKey存储账户密钥
SandboxImage沙箱使用的容器镜像

启动应用并暴露 Webhook

在 VS Code 的资源管理器中找到解决方案,对后端项目(文档中称gh-flow项目,对应仓库里的 DevTeam.Backend)右键选择Debug → Start new instance即可调试启动。

启动后,必须把本地应用暴露给 GitHub App 的 Webhook。文档以 DevTunnels 为例(ngrok 等同类工具同样可行)。下面两条命令分别用于一次性创建持久隧道转发端口

TUNNEL_NAME=_name_your_tunnel_here_ devtunnel user login devtunnel create -a $TUNNEL_NAME devtunnel port create -p 5244 $TUNNEL_NAME

隧道建好后,日常只需执行转发命令:

devtunnel host $TUNNEL_NAME

复制得到的本地地址(形如https://your_tunnel_name.euw.devtunnels.ms),在末尾追加/api/github/webhooks,用它更新 GitHub App 的 Webhook URL。这就是后端MapGitHubWebhooks监听的入站端点,至此本地链路已经打通。

顺带一提:Orleans Dashboard

由于 Agent 运行时基于 Orleans,隧道地址下还提供一块 Dashboard:https://your_tunnel_name.euw.devtunnels.ms/dashboard,上面有运行中 Agent 的有用指标与统计信息,调试事件流转时非常实用。

四、用 azd 部署 Azure 侧资源

示例使用 azd(Azure Developer CLI,Codespace 中已预装)管理 Azure 资源。整体流程:

  1. 登录 Azure:
azd auth login
  1. 创建新环境并供应资源:
ENVIRONMENT=_name_of_your_env azd env new $ENVIRONMENT azd provision -e $ENVIRONMENT
  1. 供应完成后,查看环境输出值:
azd env get-values -e dev

azd 的具体行为由 azure.yaml 定义:应用名为ai-dev-team,唯一的服务gh-flow指向 DevTeam.AppHost(.NET Aspire 主机工程),宿主类型为containerapp(Azure Container Apps)。这也解释了前面文档中“在 Azure 上运行时 Qdrant 被部署到 ACA”的说法。

五、把 WAF 文档载入向量库(seed-memory)

这是开工前最后一步,也是文档反复强调的收尾动作。

  • 本地运行时,Qdrant 已经在 Codespace 中就绪;
  • 部署到 Azure 时,Qdrant 随 ACA 一起部署。

加载器是samples目录下的 seed-memory 项目。操作步骤:把config文件夹中的 appsettings.template.json 复制/重命名为appsettings.json,填入OpenAI 详情Qdrant 端点,然后执行:

dotnet run

模板文件的字段(与 KernelSettings.cs 的JsonPropertyName一一对应)如下:

{ "serviceType": "AzureOpenAI", "serviceId": "", "deploymentOrModelId": "", "embeddingDeploymentOrModelId": "", "endpoint": "", "apiKey": "", "qdrantEndpoint": "" }

从源码看(seed-memory/Program.cs),它用 Semantic Kernel 的MemoryBuilder构建了一个1536 维的 Qdrant 内存存储,并绑定 Azure OpenAI 嵌入模型;随后逐页解析azure-well-architected.pdf,把每页文本以新 GUID 为 ID 写入名为waf的集合(collection),作为 Agent 团队可检索的“架构知识库”。所以这一步的本质是:把 Azure Well-Architected 框架文档向量化入库,供后续 Agent 做 RAG 检索。

配置加载逻辑同样值得注意:KernelSettings.LoadSettings() 优先读取config/appsettings.json,找不到时回退到 user secrets,两者都缺才会抛出带提示的异常。

六、WIP:使用 user-secrets 的本地配置方式

文档末尾还保留了一段标注为 WIP(进行中)的本地配置方式,通过dotnet user-secrets写入密钥,注意这里的键前缀是OpenAI:Github:(顶层键,而非AzureOptions/GitHubOptions节):

dotnet user-secrets set "OpenAI:Key" "your_key" dotnet user-secrets set "OpenAI:Endpoint" "https://your_endpoint.openai.azure.com/" dotnet user-secrets set "Github:AppId" "gh_app_id" dotnet user-secrets set "Github:InstallationId" "gh_inst_id" dotnet user-secrets set "Github:WebhookSecret" "webhook_secret" dotnet user-secrets set "Github:AppKey" "gh_app_key"

官方推荐的完整路径仍是第三节的appsettings.json模板方式,user-secrets 方式仅作为过渡手段。

七、快速自检清单

按顺序核对以下要点,即可确认整条链路就绪:

  1. GitHub App 已注册,权限、事件(Issues / Issue comment)与 Webhook Secret 配置完毕,Private Key 已生成;
  2. 仓库中已添加PM.ReadmeDo.ItDevLead.PlanDeveloper.Implement四个标签;
  3. appsettings.jsonGithubOptionsAzureOptions两组必填值全部填好(缺一会在启动校验时失败);
  4. 隧道已指向https://<tunnel>/api/github/webhooks,并回填到 GitHub App 的 Webhook URL;
  5. azd provision供应的 Azure 资源输出值已核对(azd env get-values -e <env>);
  6. seed-memory已成功把 WAF 文档写入 Qdrant 的waf集合;
  7. 打开隧道地址下的/dashboard,能看到 Orleans 中注册的 Agent 指标。

满足以上条件后,就可以在仓库中创建带标签的 Issue,观察 ProductManager → DeveloperLead → Developer 的整条事件链了。

【免费下载链接】autogenA programming framework for agentic AI项目地址: https://gitcode.com/GitHub_Trending/au/autogen

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询