Agent Framework, Copilot CLI ve Squad ile Ajan Ekipleri
Microsoft Agent Framework (MAF), GitHub Copilot SDK’yı arka uç olarak kullanan ajanların oluşturulmasını destekliyor. Bu entegrasyonla birlikte kabuk komutu çalıştırma, dosya işlemleri, URL çekme ve Model Context Protocol (MCP) sunucularıyla etkileşim gibi kodlama odaklı yetenekleri olan ajanlar geliştirilebiliyor. Squad adlı açık kaynak çoklu ajan çerçevesiyle bir araya geldiğinde ise kurumsal projelere zamanla öğrenen ajan ekipleri kazandırılabiliyor. Yazının konusu, bu entegrasyonun nasıl çalıştığı ve neden anlamlı olduğu.
MAF ile GitHub Copilot entegrasyonu
Kaynağa göre GitHub Copilot entegrasyonu C# ve Python tarafında v1.0 sürümüne ulaştı; yani tam destekli ve stabil kabul ediliyor. Aşağıdaki örnek, hava durumu aracı tanımlı bir Copilot destekli MAF ajanının nasıl kurulacağını gösteriyor:
using GitHub.Copilot;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
AIFunction weatherTool = AIFunctionFactory.Create((string location) =>
{
return $"The weather in {location} is sunny with a high of 25C.";
}, "GetWeather", "Get the weather for a given location.");
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
AIAgent agent = copilotClient.AsAIAgent(
tools: [weatherTool],
instructions: "You are a helpful weather agent.");
Console.WriteLine(await agent.RunAsync("What's the weather like in Seattle?"));
Bu yaklaşımda CopilotClient, AsAIAgent uzantısı üzerinden doğrudan bir MAF AIAgent‘ına dönüşüyor ve MAF’ın standart ajan arayüzü üzerinden çağrılabiliyor.
Squad nedir?
Squad, GitHub Copilot CLI/SDK üzerinde çalışan açık kaynak bir çoklu ajan çerçevesi. Kullanıcı küçük bir ekip tanımlıyor: bir koordinatör ve her biri kendi görev tanımına (charter) sahip birkaç uzman. Koordinatör işi dağıtıyor, uzmanların tartışmasına izin veriyor ve sonucu üretiyor.
MAF ile Squad’ı birleştirdiğinizde iki dünyanın avantajları aynı.NET uygulamasında toplanıyor: MAF ajan çalışma zamanını, model soyutlamasını, hosting ve telemetriyi sağlıyor; GitHub Copilot CLI/SDK ise repoları okumayı, dosyaları düzenlemeyi ve kabuk komutları çalıştırmayı bilen kodlama ajanı olarak devreye giriyor.
Squad.Agents.AI ile köprü
Squad zaten Copilot CLI/SDK üzerinde çalıştığı ve MAF bu ajan tipi için birinci taraf adaptöre sahip olduğu için iki taraf arasındaki köprü oldukça sade. Squad.Agents.AI, bir Squad ekibini standart bir MAF AIAgent‘ı olarak sarmalayan küçük bir NuGet paketi. Diğer ajanlar gibi IServiceCollection‘a kaydediliyor; MAF onu bir eş ajan olarak görüyor, Squad ise arka planda orkestrasyonu sürdürüyor.
using Microsoft.Agents.AI;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
using Squad.Agents.AI;
var builder = Host.CreateApplicationBuilder(args);
builder.Services.AddSquadAgent(o =>
{
o.SquadFolderPath = @"C:\path\to\your\team-root";
});
using var host = builder.Build();
var squad = host.Services.GetRequiredService<AIAgent>();
var session = await squad.CreateSessionAsync();
var response = await squad.RunAsync("What can this Squad team do?", session);
Console.WriteLine(response.Text);
AddSquadAgent() çağrısı Squad ekibini iki biçimde kaydediyor: hem AIAgent olarak (MAF’ın standart soyutlaması üzerinden görebilmesi için) hem de SquadAgent olarak (Squad’a özel ayarlara ihtiyaç duyanların doğrudan erişebilmesi için).
Kaputun altında: SquadAgent sınıfı
Kaynağa göre SquadAgent, iki parçanın ince bir kompozisyonundan ibaret. Copilot SDK zaten copilot.exe ile konuşmayı biliyor; Squad.Agents.AI bunu bir Squad ekip klasörüne yönlendiriyor, bir oturum kuruyor ve sonucu standart bir AIAgent olarak MAF’a devrediyor:
public sealed class SquadAgent : DelegatingAIAgent
{
public SquadAgent(SquadAgentOptions options)
: base(BuildInnerAgent(options))
{
}
private static AIAgent BuildInnerAgent(SquadAgentOptions options)
{
var client = new CopilotClient(/* CLI path, env, token, etc. */);
var teamRoot = options.SquadFolderPath;
var squadConfigDir = Path.Combine(teamRoot, ".squad");
var sessionConfig = new SessionConfig
{
WorkingDirectory = teamRoot,
ConfigDirectory = squadConfigDir,
EnableConfigDiscovery = true,
OnPermissionRequest = PermissionHandler.ApproveAll,
};
return client.AsAIAgent(sessionConfig, name: options.AgentName ? "Squad");
}
}
Yapı taşları şöyle işliyor: BuildInnerAgent Copilot destekli bir AIAgent üretiyor, kurucu bunu doğrudan base(…) çağrısına aktarıyor ve DelegatingAIAgent tüm RunAsync, RunStreamingAsync, CreateSessionAsync çağrılarını iç ajana yönlendiriyor. Ek bir protokol veya çalışma zamanı yok; sadece kalıtım ve devretme var.
EnableConfigDiscovery bayrağı, CLI’nin ekibin görev tanımlarını, becerilerini ve MCP sunucularını oturum başlangıcında otomatik yüklemesini sağlıyor. Böylece ajan her tür bu bilgileri çalışma zamanı dosya araçlarıyla yeniden okumak zorunda kalmıyor.
Streaming aynı yüzey üzerinden çalışıyor: await foreach (var update in squad.RunStreamingAsync(prompt, session)) beklendiği gibi davranıyor. Anahtarlı çoklu ekip kaydı, BYOK token delegate’leri ve güvenlik varsayılanları gibi ayrıntılı konular paketin README’sinde ele alınıyor.
MAF boru hattı içinde neden Squad?
Bir MAF iş akışı; deterministik adımları, durumsuz AI çağrılarını ve prompt mühendisliği yapılmış hedefli ajanları birleştirmenize izin veriyor. Ama bunların hepsi her çağrıda sıfırdan başlıyor; yalnızca prompt’un söylediği kadarını biliyorlar.
Squad ise kaynağa göre farklı bir yerde konumlanıyor: kullanıldıkça alan bilgisi biriktiren, öz-öğrenen bir ekip. Kaynakta öne çıkarılan davranışlar şöyle özetleniyor:
- Kararları hatırlar. “Bu servis için Cosmos yerine Postgres seçtik” gibi bir karar bir kez günlüğe düştüğünde, sonraki her çağrıda tüm uzmanlar buna saygı duyar.
- Beceri çıkarır. Bir ajan, sizin dağıtım akışınızı ilk kez çözdüğünde bir beceri (skill) dosyası yazıyor; sonraki tekrarlarda bu beceriyi okuyup yürütüyor.
- Düzeltmelerinize uyar. “Bu kütüphaneyi asla kullanmayız” dediğinizde bu direktif kaydediliyor ve ekip bunu tekrar önermiyor; ama bu, kodlanmış bir kara liste yerine ekibin öğrenmesiyle gerçekleşiyor.
- Yeni uzmanları anında dahil eder. Ekibe sonradan katılan bir uzman, ilk oturumundan itibaren mevcut karar geçmişini ve beceri kütüphanesini devralıyor.
Bu özellikler, MAF boru hattı içindeki “Squad slotu”nun anlamını değiştiriyor. Kaynak; içerik üretim akışları, kod inceleme botları, müşteri destek yönlendirme ve sürüm hazırlık kapıları gibi senaryolarda Squad’ın zaman içinde projeye özel bir kurumsal hafıza kazandığını örneklerle anlatıyor. Hedefli bir ajan tekrarlanabilirlik sunuyorsa, Squad zaman içinde iyileşen bir tekrarlanabilirlik sunuyor.
Alt ajan gözlemlenebilirliği
Kaynağın altını çizdiği bir başka nokta, alt ajan gözlemlenebilirliği. Paket varsayılan olarak, dispatch edilen her uzman için bir OpenTelemetry span yayıyor (squad.subagent {Name} adıyla, canlı span üzerinde yaşam döngüsü olaylarıyla). Bu sayede Aspire, Jaeger veya Application Insights ile halihazırda entegre bir host, çoklu ajan dağılımının tamamını ek bir kablolama gerektirmeden aynı iz üzerinde görebiliyor. Hangi uzmanın çağrıldığı, ne söylediği ve ne kadar sürdüğü isteğin geri kalanıyla aynı trace üzerinde takip edilebiliyor.
Kurulum
Paketi projeye eklemek için kaynakta paylaşılan komut şu:
dotnet add package Squad.Agents.AI --prerelease
Kaynak yazıda paketin ön yayın (prerelease) olarak sunulduğu belirtiliyor; ayrıntılı yapılandırma seçenekleri paketin README’sinde yer alıyor.
Kaynaklar ve İleri Okuma
- Building agent teams with Agent Framework, GitHub Copilot CLI and Squad (orijinal yazı)
- MS Learn: Agent Framework – GitHub Copilot Agents
- GitHub Copilot SDK deposu
- .NET örnekleri: Agent with GitHub Copilot
- Python örnekleri: GitHub Copilot sağlayıcısı
- Squad projesi (aka.ms/copilot-squad)
- SquadAgent.cs kaynak kodu
- Squad.Agents.AI README
- Agent Framework Orchestration 1.0: Çoklu Ajan Koordinasyonu
- Agent Framework ile Claw Mimarisi: İlk Ajanı Üç Adımda Kurmak







Yorum gönder