Skip to content

CodeAct

CodeAct 允许 Agent 通过编写代码并使用 execute_code 工具来执行和解决任务。与要求模型每次只发出一个工具调用不同,CodeAct 在单个执行步骤中提供一个沙盒环境,用于结合控制流、数据转换和工具编排。


为什么需要 CodeAct

现代 AI Agent 通常不是受限于模型质量,而是被协调开销所限制。当 Agent 将许多小型工具调用链接在一起时,每个步骤通常需要另一个模型轮次,这会增加延迟和 Token 使用。

CodeAct 简化了 模型 → 工具 → 模型 循环:

传统工具调用CodeAct
每个工具一次模型轮次一次模型轮次,生成完整程序
多次往返,延迟高代码在沙盒中一次执行
每个工具输出分别返回合并结果一次返回
无法做循环/分支逻辑原生 C#/Python 控制流

何时使用 CodeAct

适合 CodeAct:

  • 将多个工具调用与循环、分支、筛选或聚合组合
  • 在返回最终答案前转换工具结果
  • 运行过程中生成较大结构化输出或项目
  • 使某些工具仅在受控执行环境中可用
  • 将多个小型、可链接的查找或轻量计算折叠到一个执行步骤

使用直接工具调用:

  • 任务只需要一两个工具调用
  • 每个调用有副作用,需要分别对模型和用户可见
  • 需要每次调用都审批提示,而不是对整个 execute_code 仅做一次审批决策

CodeAct 如何集成到 Agent 框架

CodeAct 连接器通常执行四项操作:

  1. execute_code 工具添加到面向模型的工具界面
  2. 提供关于配置的沙盒运行时的指示说明
  3. (可选)通过 call_tool(...) 公开提供程序拥有的工具
  4. 应用功能限制(文件系统访问、网络允许列表等)

由于连接器拥有运行时配置,确切的设置细节取决于所选后端。

当前限制

  • 目前有文档记录的连接器是 Hyperlight CodeAct,提供 Python 和 .NET 版本(预览版)
  • 审批适用于 execute_code 整个调用——如需逐个批准单个操作,将这些操作保留为直接代理工具
  • 当编排开销占主导地位时 CodeAct 最有效——对于一两个工具调用的小任务,添加的抽象收益不大
  • 工具名称、参数元数据和返回形状在这里更为重要,因为模型依据合同进行代码编写

下一步:代理安全 — 安全策略和内容过滤。

学而不思则罔,思而不学则殆