Json.Ai.AgentMesh.Core
0.1.0
dotnet add package Json.Ai.AgentMesh.Core --version 0.1.0
NuGet\Install-Package Json.Ai.AgentMesh.Core -Version 0.1.0
<PackageReference Include="Json.Ai.AgentMesh.Core" Version="0.1.0" />
<PackageVersion Include="Json.Ai.AgentMesh.Core" Version="0.1.0" />
<PackageReference Include="Json.Ai.AgentMesh.Core" />
paket add Json.Ai.AgentMesh.Core --version 0.1.0
#r "nuget: Json.Ai.AgentMesh.Core, 0.1.0"
#:package Json.Ai.AgentMesh.Core@0.1.0
#addin nuget:?package=Json.Ai.AgentMesh.Core&version=0.1.0
#tool nuget:?package=Json.Ai.AgentMesh.Core&version=0.1.0
AgentMesh
Biblioteca .NET para orquestrar agents de IA como um grafo de nós e arestas, com state tipado fluindo entre os nós e arestas condicionais decidindo o caminho em runtime. Todo o acesso a modelos passa pelo OpenRouter.
Documento de arquitetura completo:
docs/architecture.md.
Conceitos
| Conceito | Papel |
|---|---|
IAgent / AgentBase |
Persona de LLM — papel, objetivo, contexto, tools e modelo. Não conhece state nem grafo. |
AgentTask |
A instrução de trabalho (Description + ExpectedOutput), com tools e guardrails da execução. |
ITool |
Capacidade que o modelo pode invocar. Pertence ao agent, declarada via UsarTool. |
INode<TState> |
Unidade de processamento do grafo. Contém a regra e pode conter um agent. |
IPipeline<TState> |
O grafo compilado, resolvido do container como keyed service. |
A dependência é unidirecional: um nó pode receber um agent; um agent nunca recebe um nó.
Exemplo
services.AddAgentMesh(agentMesh =>
{
agentMesh.UseOpenRouter(options =>
{
options.ApiKey = Environment.GetEnvironmentVariable("OPENROUTER_API_KEY")!;
options.SiteTitle = "Meu App";
});
agentMesh.AddPipeline<CodeReviewState>("code-review", graph =>
{
graph.AddTool<IGitDiffTool, GitDiffTool>();
graph.AddAgent<ColetorDeMudancasAgent>();
graph.AddNode<ColetarMudancasNode>();
graph.AddNode<RevisarPraticasNode>();
graph.AddNode<MarcarPendenteNode>();
graph.AddNode<MarcarAprovadoNode>();
graph.AddEdge(GraphNode.Start, GraphNode.Of<ColetarMudancasNode>());
graph.AddEdge(GraphNode.Of<ColetarMudancasNode>(), GraphNode.Of<RevisarPraticasNode>());
graph.AddConditionalEdge(
GraphNode.Of<RevisarPraticasNode>(),
state => state.Apontamentos.Count > 0
? GraphNode.Of<MarcarPendenteNode>()
: GraphNode.Of<MarcarAprovadoNode>());
graph.AddEdge(GraphNode.Of<MarcarPendenteNode>(), GraphNode.End);
graph.AddEdge(GraphNode.Of<MarcarAprovadoNode>(), GraphNode.End);
});
});
var pipeline = provider.GetRequiredKeyedService<IPipeline<CodeReviewState>>("code-review");
// O state é argumento de invocação, não um serviço do container.
var resultado = await pipeline.RunAsync(new CodeReviewState { BaseRef = "main" });
Um agent é configurado por chamadas fluent no próprio construtor:
public sealed class ColetorDeMudancasAgent : AgentBase
{
public ColetorDeMudancasAgent(IModelAdapter model, IGitDiffTool gitDiff) : base(model)
{
ComPapel("Analista de Código");
ComObjetivo("Entender e comunicar o que mudou em um conjunto de alterações.");
ComHistoria("Você revisa pull requests em times de engenharia .NET.");
UsarModelo("anthropic/claude-sonnet-5");
UsarTool(gitDiff);
ComRoteamento(ProviderRouting.Create().PreferLowLatency().AllowFallbacks());
}
}
Estrutura
src/
Json.Ai.AgentMesh.Core/ abstrações
Json.Ai.AgentMesh/ AgentBase, nós, grafo, DI
Json.Ai.AgentMesh.OpenRouter/ adapter e catálogo de modelos
tests/
Json.Ai.AgentMesh.Tests/
samples/
Json.Ai.AgentMesh.Samples.Console/ pipeline de code review
Rodando
dotnet build
dotnet test
export OPENROUTER_API_KEY="sua-chave"
dotnet run --project samples/Json.Ai.AgentMesh.Samples.Console -- main
Custo
AgentResult.Usage acumula tokens e custo de todas as chamadas ao modelo de uma execução —
incluindo os turnos do loop de tool calling, as retentativas de guardrail e o consumo de
subagents delegados.
Console.WriteLine($"US$ {resultado.TotalCostUsd:F4}");
Estado atual
Implementado: agents com tool calling, guardrails com retentativa, delegação para subagents, grafo com arestas fixas e condicionais, catálogo de modelos e roteamento de provedor.
Ainda não: execução em paralelo (fan-out/merge no grafo e tool calls simultâneas), streaming (SSE), saída estruturada e memória de longo prazo.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net10.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated | |
|---|---|---|---|
| 0.1.0 | 159 | 8/22/2026 |