本地 (.NET)

Microsoft.Agents.AI.LocalCodeAct在代理环境中的子进程中运行生成的Python。 它提供 CodeAct 提供程序模式,而无需 Hyperlight 来宾运行时。

此集成使用 CodeAct 模式,并依赖于主机环境进行隔离。

Warning

本地 CodeAct 不是安全沙盒。 仅在外部容器、虚拟机或托管托管托管环境提供进程、文件系统、网络和凭据隔离的位置运行它。

安装软件包

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

包需要显式Python可执行路径。

配置提供程序

通过 LocalCodeActProviderOptions. 注册主机工具。 生成的代码只能通过这些工具 await call_tool(...)调用。 将执行限制应用于绑定的子进程运行时和捕获的输出。

// ── 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],
    });

深度防御控件

本地 CodeAct 提供:

  • 使用可配置的允许和阻止的导入和内置进行 AST 验证。
  • 直接Python子进程执行,而无需调用 shell。
  • 时间、输出、结果和捕获文件大小限制。
  • 显式主机工具注册。
  • 只读和读写文件装载。
  • 可配置的工作目录和子进程环境。

这些控制可降低风险,但不提供遏制。 保持验证已启用、传递受限环境字典、公开窄主机工具,并在强外部沙盒中运行进程。

选择 CodeAct 运行时

Runtime 选择时间
Hyperlight 需要一个包含文件系统和网络控件的独立沙盒。
本地 CodeAct .NET代理已在外部沙盒环境中运行。
蒙蒂 需要Python代理的跨平台受限解释器。

后续步骤