Local (.NET)

Microsoft.Agents.AI.LocalCodeActejecuta Python generados en un proceso secundario en el entorno del agente. Proporciona el patrón de proveedor CodeAct sin necesidad de un entorno de ejecución de invitado de Hyperlight.

Esta integración usa el patrón CodeAct y se basa en el entorno de host para el aislamiento.

Warning

Local CodeAct no es un espacio aislado de seguridad. Ejecútelo solo cuando un contenedor externo, una máquina virtual o un entorno de hospedaje administrado proporcione el proceso, el sistema de archivos, la red y el aislamiento de credenciales.

Instalar el paquete

dotnet add package Microsoft.Agents.AI.LocalCodeAct --prerelease

El paquete requiere una ruta de acceso ejecutable explícita Python.

Configurar el proveedor

Registre las herramientas de host a través de LocalCodeActProviderOptions. El código generado solo puede llamar a esas herramientas a través de await call_tool(...). Aplique límites de ejecución al tiempo de ejecución de subproceso enlazado y a la salida capturada.

// ── LocalCodeAct provider with sandbox-only host tools ───────────────────────

var codeActOptions = new LocalCodeActProviderOptions
{
    Tools =
    [
        AIFunctionFactory.Create(Compute, name: "compute"),
        AIFunctionFactory.Create(FetchData, name: "fetch_data"),
    ],
    ExecutionLimits = new ProcessExecutionLimits { TimeoutSeconds = 5 },
};

var codeAct = new LocalCodeActProvider(pythonExecutable, codeActOptions);

// ── Build the hosted agent ───────────────────────────────────────────────────

AIAgent agent = new AIProjectClient(new Uri(endpoint), credential)
    .AsAIAgent(new ChatClientAgentOptions
    {
        Name = Environment.GetEnvironmentVariable("AGENT_NAME") ?? "hosted-local-codeact",
        Description = "Hosted CodeAct agent with sandbox-only compute and fetch_data tools.",
        ChatOptions = new ChatOptions
        {
            ModelId = deploymentName,
            Instructions =
                """
                You are a helpful assistant. Keep your answers brief. Prefer orchestrating your work
                in a single `execute_code` block using `await call_tool(...)` over issuing many
                direct tool calls. The sandbox exposes `compute` and `fetch_data` via `call_tool`.
                """,
        },
        AIContextProviders = [codeAct],
    });

Controles de defensa en profundidad

CodeAct local proporciona:

  • Validación de AST con importaciones y bloqueos permitidos y bloqueados configurables y integrados.
  • Ejecución directa Python subproceso sin invocar un shell.
  • Límites de tiempo, salida, resultado y tamaño de archivo capturado.
  • Registro explícito de la herramienta host.
  • Montajes de archivos de solo lectura y de lectura y escritura.
  • Directorio de trabajo configurable y entorno de subproceso.

Estos controles reducen el riesgo, pero no proporcionan contención. Mantenga habilitada la validación, pase un diccionario de entorno restringido, exponga herramientas de host estrechas y ejecute el proceso dentro de un espacio aislado externo seguro.

Elección de un entorno de ejecución de CodeAct

Runtime Selecciónela cuando
Hyperlight Necesita un espacio aislado con controles de red y sistema de archivos.
Código localAct El agente de .NET ya se ejecuta dentro de un entorno de espacio aislado externo.
Monty Necesita un intérprete restringido multiplataforma para Python agentes.

Pasos siguientes