Arreio do agente

Um arreio de agente é o scaffolding de runtime que transforma um modelo de linguagem em um agente que pode executar o trabalho. Ele orienta o modelo e as chamadas de ferramenta, gerencia o estado e o contexto da conversa, aplica políticas de aprovação e pode manter o agente em andamento por meio de uma tarefa de várias etapas.

O Agent Framework fornece um Harness opinativo incluído em baterias para pesquisa, codificação, análise de dados e outros trabalhos de longa execução. Você fornece um cliente de chat e personaliza apenas os recursos de que seu aplicativo precisa.

Architecture

O Harness compõe os blocos de construção existentes do Agent Framework em vez de definir um runtime de agente separado:

  1. Cliente de chat – conecta o agente a um modelo.
  2. Pipeline de chat – adiciona invocação de função, injeção de mensagem, persistência de histórico de chamadas por serviço e compactação opcional.
  3. Provedores de agente e contexto – adicione instruções, ferramentas, memória, estado todo, modos operacionais e recursos opcionais no escopo da sessão.
  4. Middleware e decoradores — adicione tratamento de aprovação, observabilidade e loops limitados opcionais.
  5. UX do aplicativo — transmite respostas, exibe progresso e coleta entradas, como aprovações de ferramentas.

O objeto resultante continua sendo um agente normal do Agent Framework: um HarnessAgent que deriva de AIAgent .NET ou um Agent retornado por create_harness_agent Python. Suas sessões usam as mesmas abstrações de provedor de sessão e contexto que outros agentes.

Matriz de funcionalidade do Harness

Capacidade Comportamento do harness Diretrizes canônicas
Invocação de função Habilitado com um limite de iteração configurável por solicitação. Ferramentas de função
Persistência do histórico de chamadas por serviço Persiste o histórico após cada chamada de modelo em uma execução de chamada de ferramenta. Sessões
Compactação Habilitado quando os limites de token ou uma estratégia personalizada são fornecidos. Compactação
Acompanhamento de todo Habilitado por padrão. Planejamento e todos
Modos de agente Os modos de plano e execução são habilitados por padrão. Planejamento e todos
Memória do arquivo e acesso a arquivos A memória do arquivo de sessão está habilitada por padrão; O acesso a arquivos compartilhados é opt-in. Provedores de contexto
Aprovação da ferramenta As aprovações permanentes e as regras de aprovação automática são habilitadas por padrão. Aprovação da ferramenta
OpenTelemetry A observabilidade do agente é habilitada por padrão. Observabilidade
Pesquisa na Web Adicionado por padrão em que o cliente de chat selecionado dá suporte a ele. Pesquisa na Web
Habilidades do Agente Habilitado por padrão no .NET; opt-in por meio de um provedor ou caminhos em Python. Habilidades do agente
Agentes em segundo plano Delegação paralela opcional para agentes filho nomeados. Agentes em segundo plano
Execução do shell Composto do pacote de shell; a fábrica de Python pode conectá-la automaticamente. Ferramentas do Shell
Loop Invocação limitada opcional controlada por avaliadores ou predicados. Looping do agente

A delegação de agente em segundo plano é separada das respostas em segundo plano gerenciadas pelo provedor. Os agentes em segundo plano executam agentes filho em tarefas delegadas; pesquisa de respostas em segundo plano ou retomar uma solicitação de provedor usando um token de continuação.

Criar um agente de arreio

O Microsoft.Agents.AI.Harness pacote é HarnessAgent exposto no Microsoft.Agents.AI namespace. Crie um de qualquer IChatClient um com AsHarnessAgentou construa HarnessAgent diretamente:

using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

AIAgent agent = chatClient.AsHarnessAgent();

AgentResponse response = await agent.RunAsync("Plan a weekend trip to Seattle.");
Console.WriteLine(response.Text);

Use HarnessAgentOptions para definir diretrizes operacionais no nível do harness, instruções específicas do agente e opções de recurso:

AIAgent agent = chatClient.AsHarnessAgent(new HarnessAgentOptions
{
    Name = "research-agent",
    HarnessInstructions = "Use tools deliberately and report verified results.",
    ChatOptions = new ChatOptions
    {
        Instructions = "You are a research assistant focused on academic sources.",
    },
    MaxContextWindowTokens = 128_000,
    MaxOutputTokens = 16_384,
});

HarnessAgent.DefaultInstructions fornece as diretrizes de arreio padrão. HarnessInstructions aparece antes ChatOptions.Instructions.

Personalizar a composição

Os recursos padrão têm opções de destino, incluindo DisableTodoProvider, , DisableAgentModeProvider, DisableFileMemory, DisableAgentSkillsProvider, DisableWebSearch, , DisableToolAutoApproval, DisableOpenTelemetrye DisableCompaction.

Adicionar provedores de contexto personalizados com AIContextProviders. Opte pelo acesso ao arquivo com FileAccessStore, delegação em segundo plano com BackgroundAgentse loop com LoopEvaluators.

Criar um agente de arreio

A create_harness_agent fábrica retorna uma configuração Agentcompleta:

from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient

agent = create_harness_agent(
    client=OpenAIChatClient(model="gpt-4o"),
)

session = agent.create_session()
response = await agent.run("Plan a weekend trip to Seattle.", session=session)
print(response.text)

Defina instruções específicas do agente e do harness separadamente:

agent = create_harness_agent(
    client=client,
    name="research-agent",
    harness_instructions="Use tools deliberately and report verified results.",
    agent_instructions="You are a research assistant focused on academic sources.",
    max_context_window_tokens=128_000,
    max_output_tokens=16_384,
)

DEFAULT_HARNESS_INSTRUCTIONS fornece as diretrizes de arreio padrão. harness_instructions aparece antes agent_instructions.

Personalizar a composição

Desabilitar padrões com opções como disable_todo, , disable_mode, disable_file_memory, disable_web_search, e disable_tool_auto_approvaldisable_compaction.

Substitua provedores internos por todo_provider ou mode_provider, e adicione provedores com context_providers. As habilidades são aceitas por meio skills_provider ou skills_paths; acesso a arquivos, agentes em segundo plano, ferramentas de shell e looping também são aceitas.

Note

create_harness_agent é liberado. Os agentes em segundo plano, o acesso a arquivos e o loop permanecem experimentais e as ferramentas de shell são provenientes do pacote de pré-lançamento agent-framework-tools .

Note

Um Go Harness empacotado não está disponível no momento. Redigir diretamente os pacotes de middleware, provedor de contexto, compactação e agente go correspondentes. Consulte o repositório Agent Framework Go para obter suporte atual.

UX de terminal de exemplo

O Harness não prescreve uma interface de aplicativo. O repositório inclui aplicativos de terminal de exemplo que transmitem saída, exibem todos e o modo atual, solicitações de aprovação de ferramentas de superfície e fornecem comandos como /todos, /modee /exit.

Importante

Esses projetos de console são exemplos, não componentes de estrutura fornecidos. Use-os como exemplos executáveis ou como ponto de partida para sua própria experiência de terminal.

O .NET ponto de entrada de exemplo éHarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

await HarnessConsole.RunAgentAsync(
    agent,
    userPrompt: "Ask me anything to get started.");

Personalize o exemplo com observadores, formatadores de ferramentas, manipuladores de comando e HarnessConsoleOptions. Veja os exemplos do .NET Harness.

O exemplo de Python usa o pacote baseado em console Textual ao lado dos exemplos de Harness:

from console import run_agent_async

await run_agent_async(agent)

Personalize o exemplo com observadores, formatadores, comandos e componentes da interface do usuário. Veja os exemplos do Python Harness.

No momento, o repositório não inclui um exemplo de terminal do Go Harness empacotado.

Próximas Etapas 

Aprofunde-se