Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Um harness de agentes é o andaime em tempo de execução que transforma um modelo de linguagem num agente capaz de realizar trabalho. Gere chamadas de modelos e ferramentas, gere o estado e o contexto da conversa, aplica políticas de aprovação e pode manter o agente a progredir numa tarefa em várias etapas.
O Agent Framework fornece um Harness opinativo, com baterias, para investigação, programação, análise de dados e outros trabalhos de longa duração. Fornece um cliente de chat e personaliza apenas as capacidades que a sua aplicação precisa.
Architecture
O Harness compõe blocos de construção existentes do Agent Framework em vez de definir um tempo de execução de agente separado:
- Cliente de chat — liga o agente a um modelo.
- Pipeline de chat — adiciona invocação de funções, injeção de mensagens, persistência do histórico de chamadas por serviço e compactação opcional.
- Fornecedores de agentes e contexto — adicionam instruções com âmbito de sessão, ferramentas, memória, estado de trabalho, modos de operação e capacidades opcionais.
- Middleware e decoradores — adicionam o tratamento de aprovação, observabilidade e looping limitado opcional.
- Application UX — transmite respostas, apresenta progresso e recolhe inputs como aprovações de ferramentas.
O objeto resultante mantém-se um agente normal do Agent Framework: a HarnessAgent que deriva de AIAgent em .NET, ou um Agent retornado por create_harness_agent em Python. As suas sessões utilizam as mesmas abstrações de sessões e de fornecedores de contexto que outros agentes.
Matriz de capacidade de arnês
| Capability | Comportamento do arnês | Orientação canónica |
|---|---|---|
| Invocação de função | Ativado com um limite configurável de iteração por pedido. | Ferramentas de funções |
| Persistência do histórico de chamadas por serviço | Persiste o histórico após cada chamada de modelo numa execução de chamada de ferramenta. | Sessões |
| Compactação | Ativado quando são fornecidos limites de tokens ou uma estratégia personalizada. | Compactação |
| Rastreamento de tarefas | Ativado por padrão. | Planeamento e tarefas |
| Modos agente | Os modos de planeamento e execução estão ativados por defeito. | Planeamento e tarefas |
| Memória de ficheiros e acesso a ficheiros | A memória dos ficheiros de sessão está ativada por defeito; O acesso a ficheiros partilhados é opt-in. | Fornecedores de contexto |
| Aprovação de ferramentas | As aprovações permanentes e as regras de auto-aprovação estão ativadas por defeito. | Aprovação de ferramentas |
| OpenTelemetry | A observabilidade do agente está ativada por defeito. | Observabilidade |
| Pesquisa na Web | Adicionado por defeito onde o cliente de chat selecionado o suporta. | Pesquisa na Web |
| Competências do Agente | Ativado por defeito em .NET; opt-in através de um fornecedor ou caminhos em Python. | Competências de Agente |
| Agentes de fundo | Delegação paralela opcional para agentes filhos nomeados. | Agentes de fundo |
| Execução do shell | Composto pelo pacote shell; a fábrica Python pode ligá-lo automaticamente. | Ferramentas de concha |
| Looping | Reinvocação limitada opcional conduzida por avaliadores ou predicados. | Looping do agente |
A delegação de agentes de fundo é separada das respostas em segundo plano geridas pelo fornecedor. Os agentes de segundo plano executam agentes filhos em tarefas delegadas; As respostas de fundo sondam ou retomam um pedido de fornecedor usando um token de continuação.
Crie um agente de arnês
O Microsoft.Agents.AI.Harness pacote é HarnessAgent exposto no Microsoft.Agents.AI namespace. Crie um a partir de qualquer IChatClient com AsHarnessAgent, ou constrói 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 orientações operacionais ao nível do chicote, instruções específicas do agente e opções de funcionalidades:
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 a orientação padrão do arnês.
HarnessInstructions aparece antes ChatOptions.Instructionsde .
Personalize a composição
As capacidades padrão têm opções direcionadas, incluindo DisableTodoProvider, DisableAgentModeProvider, DisableFileMemoryDisableAgentSkillsProvider, DisableWebSearch, DisableToolAutoApproval, , DisableOpenTelemetry, , e DisableCompaction.
Adicionar fornecedores de contexto personalizados com AIContextProviders. Optar por aceder a ficheiros com FileAccessStore, delegação em segundo plano com BackgroundAgents, e looping com LoopEvaluators.
Crie um agente de arnês
A create_harness_agent fábrica devolve uma configuração totalmente Agentconfigurada:
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 ao nível do harness e instruções específicas do agente 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 a orientação padrão do arnês.
harness_instructions aparece antes agent_instructionsde .
Personalize a composição
Desative os valores definidos com opções como disable_todo, disable_mode, disable_file_memory, disable_web_search, disable_tool_auto_approval, e disable_compaction.
Substitua os fornecedores incorporados por todo_provider ou mode_provider, e adicione os fornecedores por context_providers. As competências são opt-in através skills_provider de ou skills_paths; acesso a ficheiros, agentes em segundo plano, ferramentas shell e looping também são opt-in.
Observação
create_harness_agent é libertado. Agentes de fundo, acesso a ficheiros e looping continuam experimentais, e as ferramentas shell provêm do pacote pré-lançamento agent-framework-tools .
Observação
Um Go Harness embalado não está atualmente disponível. Compor diretamente os pacotes correspondentes de agente, fornecedor de contexto, compactação e middleware. Consulte o repositório Agent Framework Go para suporte atual.
Exemplo de UX do terminal
O Harness não prescreve uma interface de aplicação. O repositório inclui aplicações terminais de exemplo que transmitem a saída, mostram todos e o modo atual, apresentam prompts de aprovação de ferramentas e fornecem comandos como /todos, /mode, e /exit.
Importante
Estes projetos de consola são exemplos, não componentes de framework enviados. Usa-os como exemplos executáveis ou como ponto de partida para a tua própria experiência terminal.
O ponto de entrada do exemplo .NET éHarnessConsole.RunAgentAsync:
using Harness.Shared.Console;
await HarnessConsole.RunAgentAsync(
agent,
userPrompt: "Ask me anything to get started.");
Personalize a amostra com observadores, formatadores de ferramentas, manipuladores de comandos e HarnessConsoleOptions. Veja os exemplos do .NET Harness.
A amostra de Python utiliza o pacote baseado console em texto ao lado das amostras Harness:
from console import run_agent_async
await run_agent_async(agent)
Personalize o exemplo com observadores, formatadores, comandos e componentes de interface. Veja os exemplos do Python Harness.
O repositório não inclui atualmente uma amostra de terminal Go Harness embalada.