CodeAct 是什么?让 Agent 执行代码和调用工具有什么区别?
下面是一段教学用的模拟面试。
🧑💻 面试官:Agent 要读十份测试报告,再汇总失败用例。你会给它十个查询工具吗?
🙋♂️ 我:也可以给它受限的代码执行能力,让它写一段代码读取报告、筛选和汇总。
🧑💻 面试官:让模型写代码,就叫 CodeAct?它和一个普通代码生成助手有什么区别?
🙋♂️ 我:重点在代码是否成为执行任务的动作。Agent 会拿到执行结果,再根据结果继续处理。
🧑💻 面试官:既然可以写循环和调用库,为什么还需要工具权限和执行限制?
CodeAct 让代码承担动作的组合,执行结果继续参与判断;代码写得出来,不代表应用应该允许它做任何事。
面试速答(60 秒版)
CodeAct 是一种让 Agent 使用可执行代码表达动作的方法。模型不只输出建议,而是生成代码,由运行环境执行,再把输出或错误交回模型,进入下一轮判断。
例如汇总多份测试报告,可以用一段代码循环读取、筛选失败项并计算数量。相比每次只能提交一个固定结构的工具请求,代码更容易表达循环、条件和多步组合。
不过,它也增加了执行风险。文件、网络、依赖和运行时资源都需要限制,执行报错后可以继续修正,但不能让 Agent 随意扩大权限。
CodeAct 和 Tool Calling 可以配合。代码内部调用明确的受控能力,外层运行器管理执行、反馈和停止条件。最终还要核对任务结果,不能只看代码有没有退出成功。

知识点详解:代码怎样变成一次 Agent 动作?
先区分“给你代码”和“用代码做事”
假设用户说:“整理这十份测试报告,告诉我哪些接口反复失败。”
普通代码生成助手可以给出一个脚本,用户再复制运行。助手未必知道脚本是否真的读到了报告、输出了什么。
CodeAct 的动作进入了执行闭环:模型生成代码,环境执行,模型拿到输出,再决定是否继续。
原始论文讨论的是用可执行 Python 代码组织动作,并利用执行反馈完成后续处理。它不是“用了代码”这个标签,也不能据此判断某个产品实现了论文中的全部机制。
为什么代码更容易表达组合?
假设我们已经允许读取指定目录里的报告。
模型可以在一段代码里遍历文件,解析每份报告,筛选失败记录,最后按接口名称分组。循环、条件和数据处理都在同一段动作里。
如果应用只暴露“读取一份报告”的工具,模型可能需要多次调用,再另外组织汇总。代码可以减少某些往返,也能使用现有数据处理库。
但是,少一次模型调用不等于一定更快。代码启动、依赖准备、报告解析和重试都消耗时间;一段过长的动作也会让错误位置更难观察。
所以,比较时要用同一批任务,而不是看到代码能写循环,就直接判断它优于工具调用。
执行器要给模型什么反馈?
模型需要知道代码做到了哪里。
读取成功时,可以返回必要的数据摘要和输出位置。执行失败时,可以返回明确错误,例如文件不存在、字段缺失或者运行超时,帮助它判断该改代码还是补资料。
不过,原始输出不能无限量回填。十份报告可能有很长日志,运行器可以保留完整文件,只把与当前问题有关的片段交给模型。
敏感信息也不能因为进入了终端输出,就自动获得对话展示权限。环境里能访问什么、结果里能返回什么,需要分别设计。
为什么不能直接给它整台机器?
代码能够组合动作,也意味着它能组合危险动作。
如果模型可以访问任意目录、网络和凭据,一段看起来只是“整理报告”的代码,也可能删除文件或把数据发送出去。限制只写在提示词里,执行环境仍然不会自动变安全。
在当前假设场景里,可以只挂载报告目录,使用只读权限,设置运行时限与输出上限。确实需要写入时,再开放专门的输出目录。
需要调用外部系统的动作,可以通过受控函数或工具实现。这些能力自己检查身份和参数,不让代码自行寻找系统凭据。

一次执行成功,怎样确认任务真的完成?
脚本可能正常退出,却跳过了损坏的报告。它也可能把同一条失败重复统计,或者把不同版本的测试混在一起。
因此,验收应检查输入覆盖、字段含义和输出结果。例如明确这次有十份报告,统计是否覆盖十份,无法解析的文件有没有单独列出。
测试还要包含异常报告、空文件和重复记录。看 Agent 能不能解释未完成部分,是否在失败后守住同样的权限边界。
面试官继续追问
有了代码执行器,还需要查询工具吗?
需要时保留。查询工具能封装稳定业务语义和权限,代码负责组合与处理。没有必要让模型重新实现每个业务接口。
代码报错以后,让模型自动重写就够了吗?
先识别失败性质。语法错误可以修正,权限拒绝不应通过改路径绕过。连续失败还要受到时间和次数预算限制。
TypeScript 也能采用这种思路吗?
可以构建代码动作与反馈闭环,但论文提出的方法以 Python 为主。TypeScript 需要自己的隔离环境与工具约定,不能把换了语言称为同一套官方实现。
面试速记卡
- CodeAct:用可执行代码表达动作,并读取执行反馈。
- 组合能力:循环、条件和数据处理可以在一段动作中完成。
- 执行边界:文件、网络、凭据、时间和输出分别限制。
- 工具配合:稳定能力通过受控接口提供,代码负责组合。
- 完成标准:核对任务结果,不只检查进程退出码。
公司面试真题
这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。
浏览公司面试真题 →