跳转至

01 · Harness 与 Deep Agents 面试题

助手昨晚说“任务做了一半”,今天却找不到报告和证据。交班只留一句“你看着办”,再聪明的接班人也得重新摸索;Harness 要把这句空话变成能执行、能核对的交接。

配套 学习章:Harness 与 Deep Agents,本章覆盖 Q057–Q059,分别检查系统职责、资源边界与长任务交接。

Q057 Harness 与模型、Agent 框架分别承担什么职责?

优先级:P0

30–60 秒回答:

模型根据输入提出动作,执行器真正访问环境,harness 把上下文、工具合同、状态、权限、调度和验收组织起来。框架可以提供其中一些机制,业务仍要定义什么算完成、哪些动作获准、失败后怎样恢复。更换模型能改善判断,却不能自动保存一份审批或让外部写入具有幂等性。

展开详细答案、追问与案例

详细答案:

我会沿一次任务的生命周期解释职责。入口先把用户目标变成可验收合同:比较哪些地区、适用哪个日期和人员类别、交付草稿还是发布结果。模型拿到合同、必要状态与工具说明,选择下一步;执行器校验参数、身份和业务条件后执行,返回观察。Harness 持续组织这个循环,并决定何时等待、重试、终止或请求外部输入。

状态和产物需要分别管理。状态记录正在做什么、已完成哪些步骤和剩余预算,产物保存原文、证据清单和报告版本。二者通过稳定标识关联。计划里写“甲地完成”只是一条控制记录,必须能找到对应来源与适用条件;模型总结得再流畅,也不能替代外部工单或已发布文档的真实状态。

框架提供检查点、消息组织或子任务接口,不会替业务选择正确的不变量。实现时可先建立普通循环,再按问题添加持久化、交接和复核组件。每加一个组件,都用同一任务集检查质量、恢复后重复工作和资源成本;若独立复核只是复述主模型,应改变它的证据或评分合同,而不是把角色数量当成成熟度。模型、提示、工具与状态格式也应一起记录版本,便于解释某次行为为何发生。

常见追问:

  1. 框架已有重试,还需要做什么? 需要区分参数、权限、限流与结果未知等错误,规定总预算,并核对写工具的幂等合同;统一捕获异常后重试可能重复产生副作用。
  2. 为什么不先搭齐所有组件? 组件会增加状态、依赖和排障成本。先固定基线,再针对实际失败增加能力,才能知道哪部分产生收益以及付出了什么代价。
  3. 怎样证明任务完成? 预先定义终态断言,核对真实产物、证据覆盖和动作结果。模型说“完成”、工具进程正常退出与用户目标满足,属于不同层次的证据。

实战案例:

场景是三地政策比较,要求生成待审报告。初版助手结束时只返回一段总结,下一会话不知道哪些条款已核对。处理时把六项工作分别标识,增加证据目录、报告版本和交接摘要,并让发布工具保持不可用。验证时中途终止一次运行,恢复后检查甲乙材料没有重复取得,缺失的丙地仍列为未完成;报告的每项差异能回到具体条款,且外部系统没有出现未经请求的发布对象。

常见误区:

把模型名称当成系统架构;认为安装框架就自动获得业务授权、持久化和正确的完成判定。

微练习:

为研究助手列出模型、执行器、状态存储和验收器各自的输入输出。验收:能为“回答正确但错误发布”与“没有发布但报告缺一地”分别指出失败层和检查证据。

学习与参考: 配套学习章 · Deep Agents 概览 · 长程 Harness

Q058 怎样区分文件 Backend、执行 Sandbox 与持久化状态?

优先级:P0

30–60 秒回答:

Backend 决定文件工具的路径映射到哪里,Sandbox 决定代码在哪运行及能接触哪些资源,持久化状态决定中断后能恢复什么。线程内虚拟文件、真实目录和跨线程存储有不同生命周期;容器也不会自动保存下一次会话需要的内容。要分别检查数据位置、执行权限与恢复条件。

展开详细答案、追问与案例

详细答案:

同一个 /workspace/report.md 可能映射到图状态、宿主目录或远程执行环境,路径名字本身不能说明安全性。先画出文件工具到 backend 的映射,明确读写是否发生在真实磁盘、是否跨线程共享,以及谁能解析这些路径。然后独立检查检查点保存在哪里、进程结束后是否保留、恢复到另一台机器时能否找到原始内容和对应版本。

执行环境还需要自己的边界:可以启动什么进程、访问哪些目录和网络、使用哪些凭据、耗尽资源时怎样终止。支持读写文件并不意味着具备执行隔离;本地 shell 即使只显示一个项目路径,也可能继承更广的宿主权限。反过来,一个隔离容器在销毁后可能丢失临时文件,所以持久产物应写入有明确保存合同的位置,并记录外部指针。

多用户应用还要按可信主体划分命名空间。不能让模型在工具参数中填一个租户名,就取得那个租户的目录;也不能把“只读研究员”的提示词视为真实只读权限。设计时分别测试跨线程读取、跨用户读取、进程重启和执行机器切换。保存越多越利于恢复,也会增加失效与访问治理成本,应只持久保存后续确实需要且可追溯的内容,而不是无条件复制整个运行环境。

常见追问:

  1. 默认虚拟文件是不是永久文件? 要看 backend 与检查点配置。线程状态可以跨轮保留,但内存检查点在进程结束后可能丢失;是否跨线程共享也需要单独确认。
  2. 容器挂载宿主目录后,文件安全吗? 取决于挂载范围、写权限、符号链接、凭据和进程能力。容器名称不能代替实际配置,也不能阻止已获挂载权限的进程修改文件。
  3. 怎样同时做到恢复和隔离? 将执行临时数据与持久产物分开,按用户或任务授权保存产物,再由恢复流程以可信身份取回。恢复时重新检查权限与内容版本。

实战案例:

一个政策比较任务在远程环境解析 PDF,原文和报告都写在临时目录。环境回收后,检查点仍写着“解析完成”,但新机器无法打开证据。调整为解析缓存留在临时环境,证据片段与报告版本写入受控持久存储,状态只保存稳定指针。验收时销毁执行环境再恢复,确认能取得同一版本证据;换成另一个租户身份读取时被拒绝,任务目录也不能覆盖宿主的其他文件。

常见误区:

把虚拟路径当成磁盘位置;把持久化当成隔离;认为提示词限制了角色,就等于凭据和进程权限也被限制。

微练习:

给原文、解析临时文件、待审报告和操作 ID 选择保存位置。验收:分别解释容器销毁、宿主重启、跨用户访问时哪项仍存在、谁能读取、怎样确认版本。

学习与参考: 配套学习章 · Deep Agents Backends · LangGraph Persistence

Q059 长任务跨会话交接应该保存什么?

优先级:P1

30–60 秒回答:

交接要保存目标和范围、已完成项及其证据、未解决问题、产物版本、预算与下一动作条件。新会话先验证这些记录对应的真实产物、当前权限和适用条件,再继续缺口。摘要帮助重建上下文,不能让一句“已完成”覆盖后来撤回的政策,也不能让旧审阅无条件批准新报告。

展开详细答案、追问与案例

详细答案:

我会将交接拆成控制信息和可回查依据。控制信息说明当前目标、哪些动作获准、工作项状态及调度条件;依据包括来源 ID、内容版本、章节位置、报告版本和未解决冲突。每个完成项都应连接到验收证据,不能只记录自然语言进度。原文和判断分别保存,使新会话能区分来源说了什么与上一个模型推断了什么。

恢复时先核对任务版本,再读取最近交接和产物清单。检查文件是否存在、引用能否解析、用户权限是否改变、政策是否撤回、人员类别和日期是否仍与任务一致。只有条件未变化的工作项才可以复用。失效项重新打开,并通过来源依赖找出受影响的比较结论和报告段落;无关地区已确认的工作无需全部重做,从而控制恢复成本。

交接还要保留预算余量、允许的重试条件和具体下一步,而不是要求新会话“继续努力”。如果旧任务已进入取消或等待输入状态,新会话不能因为能运行就擅自推进。报告修改应产生新版本,并保留其证据集合;原审批绑定原动作摘要,参数或内容变化后按批准合同处理。交接材料也有信任级别,工具原文中的指令不能借摘要升级成用户授权。

常见追问:

  1. 把全部对话转发过去是否更保险? 不一定。它增加过时结论与无关内容,也可能传播敏感信息。先传目标、未决状态和指针,需要时再取具体轨迹。
  2. 来源权限撤回后还能引用旧摘要吗? 新请求应重新执行可见性与证据选择规则,相关摘要不能成为绕开原文权限的入口;历史审计记录按既定保存规则管理。
  3. 怎样测交接有效性? 在固定任务中途切换会话,比较继续结果、重复调用、失效证据使用和遗漏项。只看新会话能否读懂摘要,不能证明它正确恢复了任务。

实战案例:

第一轮已完成甲乙地区,丙地服务不可用,报告停在 v2。第二轮开始时甲地政策被撤回,用户又改变员工类别。助手读取交接后,将甲地及受类别影响的比较项重新打开,保留乙地仍有效的证据,等待丙地满足重试条件,再生成新报告版本。验收时逐项核对哪些来源被复用、哪些结论重算、旧 v2 的审批是否被错误沿用;任务不能因为交接写着“两地已完成”就直接交付。

常见误区:

把交接摘要当成永久事实;只保存下一动作而不保存其前置条件;任务取消后仍按旧计划继续派发。

微练习:

写一份可供另一会话接手的三地研究清单,再撤回一个来源并修改报告。验收:接手者无需猜测即可定位失效项、取回其余证据,并说明哪些内容需要重新审阅。

学习与参考: 配套学习章 · 长程任务交接 · Harness 的迭代

返回进阶题库目录