Microsoft Agent Framework —— CodeAct:Agent写代码,沙箱执行

Microsoft Agent Framework —— CodeAct:Agent写代码,沙箱执行

💡 原文中文,约11900字,阅读约需29分钟。
📝

内容提要

本文介绍了MAF的CodeAct能力,强调其通过将多步工具编排合并为一次代码执行,解决了工具往返成本、执行边界模糊和工具治理碎片化等问题。CodeAct由六个组件协作完成,确保执行的安全性和效率。建议逐步引入工具与审批,建立稳定的审批回路,以实现高效的执行与治理。

🎯

关键要点

  • CodeAct 是 MAF 的一种能力,通过将多步工具编排合并为一次代码执行,解决了工具往返成本、执行边界模糊和工具治理碎片化等问题。

  • CodeAct 由六个组件协作完成,包括上下文注入层、直连工具层、配置与能力描述层、运行快照层、沙箱生命周期层和跨沙箱边界桥接层。

  • CodeAct 制造了两套工具可见面,模型可见面只看到一个工具 execute_code,沙箱可见面则可以调用宿主 AIFunction,但不在模型的工具列表中。

  • 一次完整的 CodeAct 执行由 agent 框架、provider、executor、sandbox 和模型五方协作完成,确保执行的安全性和效率。

  • execute_code 永远返回一个结构化 JSON 字符串,包含 stdout、stderr、exit_code 和 success 四个字段,确保可观测性。

  • CodeAct 的性能依赖于沙箱的复用机制,通过配置指纹和预热快照来避免每次都重新启用沙箱。

  • 审批模型的粒度是 execute_code 整次调用,确保代码块本身需要被批准,而不是特定调用。

  • 建议逐步引入工具与审批,建立稳定的审批回路,以实现高效的执行与治理。

🔎

延伸解读

CodeAct的核心优势

CodeAct通过将多步工具编排合并为一次代码执行,显著降低了工具往返成本和执行边界模糊的问题。这种设计不仅提高了执行效率,还增强了代码的可观测性,使得开发者能够更好地监控和管理执行过程中的各类输出和错误信息。

审批模型的重要性

CodeAct的审批模型确保了每次代码执行都经过严格的审批流程,避免了潜在的安全风险。审批粒度是针对整个execute_code调用,而非单个工具调用,这种设计使得代码块本身需要被批准,提升了整体的治理能力。

沙箱机制的性能优势

CodeAct的性能依赖于沙箱的复用机制,通过配置指纹和预热快照来避免每次都重新启用沙箱。这种机制不仅提高了执行效率,还确保了每次运行的环境一致性,减少了因环境变化导致的错误。

使用时的注意事项

在使用CodeAct时,开发者需注意沙箱的能力面是默认“零能力面”,所有能力必须显式声明。此外,代码中不应包含死循环或无界流式拉取,因为没有强制截断机制,这可能导致执行阻塞。

延伸问答

CodeAct 的主要功能是什么?

CodeAct 是 MAF 的一种能力,通过将多步工具编排合并为一次代码执行,解决了工具往返成本、执行边界模糊和工具治理碎片化等问题。

CodeAct 的执行流程是怎样的?

一次完整的 CodeAct 执行由 agent 框架、provider、executor、sandbox 和模型五方协作完成,确保执行的安全性和效率。

CodeAct 的审批模型是如何工作的?

CodeAct 的审批模型粒度是 execute_code 整次调用,确保代码块本身需要被批准,而不是特定调用。

CodeAct 的性能如何优化?

CodeAct 的性能依赖于沙箱的复用机制,通过配置指纹和预热快照来避免每次都重新启用沙箱。

CodeAct 中的沙箱执行有什么限制?

Hyperlight 沙箱默认是零能力面,不能访问宿主进程、不能联网、不能读文件系统,所有能力都必须显式声明。

如何逐步引入 CodeAct 的工具与审批?

建议逐步引入工具与审批,建立稳定的审批回路,以实现高效的执行与治理。

🏷️

标签

➡️

继续阅读