Sunday面试指南

CodeAct 是什么?让 Agent 执行代码和调用工具有什么区别?

下面是一段教学用的模拟面试。

🧑‍💻 面试官:Agent 要读十份测试报告,再汇总失败用例。你会给它十个查询工具吗?

🙋‍♂️ 我:也可以给它受限的代码执行能力,让它写一段代码读取报告、筛选和汇总。

🧑‍💻 面试官:让模型写代码,就叫 CodeAct?它和一个普通代码生成助手有什么区别?

🙋‍♂️ 我:重点在代码是否成为执行任务的动作。Agent 会拿到执行结果,再根据结果继续处理。

🧑‍💻 面试官:既然可以写循环和调用库,为什么还需要工具权限和执行限制?

CodeAct 让代码承担动作的组合,执行结果继续参与判断;代码写得出来,不代表应用应该允许它做任何事。

面试速答(60 秒版)

CodeAct 是一种让 Agent 使用可执行代码表达动作的方法。模型不只输出建议,而是生成代码,由运行环境执行,再把输出或错误交回模型,进入下一轮判断。

例如汇总多份测试报告,可以用一段代码循环读取、筛选失败项并计算数量。相比每次只能提交一个固定结构的工具请求,代码更容易表达循环、条件和多步组合。

不过,它也增加了执行风险。文件、网络、依赖和运行时资源都需要限制,执行报错后可以继续修正,但不能让 Agent 随意扩大权限。

CodeAct 和 Tool Calling 可以配合。代码内部调用明确的受控能力,外层运行器管理执行、反馈和停止条件。最终还要核对任务结果,不能只看代码有没有退出成功。

CodeAct:代码也是动作:执行有反馈,也有边界

知识点详解:代码怎样变成一次 Agent 动作?

先区分“给你代码”和“用代码做事”

假设用户说:“整理这十份测试报告,告诉我哪些接口反复失败。”

普通代码生成助手可以给出一个脚本,用户再复制运行。助手未必知道脚本是否真的读到了报告、输出了什么。

CodeAct 的动作进入了执行闭环:模型生成代码,环境执行,模型拿到输出,再决定是否继续。

原始论文讨论的是用可执行 Python 代码组织动作,并利用执行反馈完成后续处理。它不是“用了代码”这个标签,也不能据此判断某个产品实现了论文中的全部机制。

为什么代码更容易表达组合?

假设我们已经允许读取指定目录里的报告。

模型可以在一段代码里遍历文件,解析每份报告,筛选失败记录,最后按接口名称分组。循环、条件和数据处理都在同一段动作里。

如果应用只暴露“读取一份报告”的工具,模型可能需要多次调用,再另外组织汇总。代码可以减少某些往返,也能使用现有数据处理库。

但是,少一次模型调用不等于一定更快。代码启动、依赖准备、报告解析和重试都消耗时间;一段过长的动作也会让错误位置更难观察。

所以,比较时要用同一批任务,而不是看到代码能写循环,就直接判断它优于工具调用。

执行器要给模型什么反馈?

模型需要知道代码做到了哪里。

读取成功时,可以返回必要的数据摘要和输出位置。执行失败时,可以返回明确错误,例如文件不存在、字段缺失或者运行超时,帮助它判断该改代码还是补资料。

不过,原始输出不能无限量回填。十份报告可能有很长日志,运行器可以保留完整文件,只把与当前问题有关的片段交给模型。

敏感信息也不能因为进入了终端输出,就自动获得对话展示权限。环境里能访问什么、结果里能返回什么,需要分别设计。

为什么不能直接给它整台机器?

代码能够组合动作,也意味着它能组合危险动作。

如果模型可以访问任意目录、网络和凭据,一段看起来只是“整理报告”的代码,也可能删除文件或把数据发送出去。限制只写在提示词里,执行环境仍然不会自动变安全。

在当前假设场景里,可以只挂载报告目录,使用只读权限,设置运行时限与输出上限。确实需要写入时,再开放专门的输出目录。

需要调用外部系统的动作,可以通过受控函数或工具实现。这些能力自己检查身份和参数,不让代码自行寻找系统凭据。

代码执行箱为什么需要边界:代码可组合,权限不扩张

一次执行成功,怎样确认任务真的完成?

脚本可能正常退出,却跳过了损坏的报告。它也可能把同一条失败重复统计,或者把不同版本的测试混在一起。

因此,验收应检查输入覆盖、字段含义和输出结果。例如明确这次有十份报告,统计是否覆盖十份,无法解析的文件有没有单独列出。

测试还要包含异常报告、空文件和重复记录。看 Agent 能不能解释未完成部分,是否在失败后守住同样的权限边界。

面试官继续追问

有了代码执行器,还需要查询工具吗?

需要时保留。查询工具能封装稳定业务语义和权限,代码负责组合与处理。没有必要让模型重新实现每个业务接口。

代码报错以后,让模型自动重写就够了吗?

先识别失败性质。语法错误可以修正,权限拒绝不应通过改路径绕过。连续失败还要受到时间和次数预算限制。

TypeScript 也能采用这种思路吗?

可以构建代码动作与反馈闭环,但论文提出的方法以 Python 为主。TypeScript 需要自己的隔离环境与工具约定,不能把换了语言称为同一套官方实现。

面试速记卡

  • CodeAct:用可执行代码表达动作,并读取执行反馈。
  • 组合能力:循环、条件和数据处理可以在一段动作中完成。
  • 执行边界:文件、网络、凭据、时间和输出分别限制。
  • 工具配合:稳定能力通过受控接口提供,代码负责组合。
  • 完成标准:核对任务结果,不只检查进程退出码。

公司面试真题

这道题暂未收录可核验的公司真题来源。你可以先阅读本文解析,或浏览已收录的公司面试真题。

浏览公司面试真题 →
简历汪永久免费在线制作简历,模板直接套用、导出无水印,永久免费、下载免费,不需要付费解锁任何功能。去写简历