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代理的跨平台受限解释器。 |