跳转至

08 · 编码与计算机操作面试题

对应学习章:08 · Coding 与 Computer Use。本页收录 Q078–Q080,从补丁验证、执行隔离走到界面动作的真实终态。

补丁生成了,测试日志出现 passed,网页也点了保存,为什么用户仍说没修好?这组题沿证据检查完成状态:工具像执行员,不能由它的回执替业务验收签字。

Q078 Coding Agent 怎样形成可复现、可验收的修复闭环?

优先级:P0

30–60 秒回答:

我会先确认工作目录、仓库规则与目标行为,回到当前源码定位,构造可复现失败,再提出最小补丁。应用后检查真实 diff,运行相关测试并解释退出码、数量和失败原因,最后按影响范围验证用户目标。模型给出补丁、命令执行成功、测试通过和需求完成是不同结论。交付应包含版本、复现命令、补丁和验证证据,不能只提供一段自我总结。

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

详细答案:

第一步建立任务与环境基线。记录要改变的行为、允许修改的目录、当前仓库版本和已有工作区变更,读取依赖与测试入口。符号索引和检索可以缩短定位时间,但索引若落后于当前 commit,应回到真实文件确认定义与调用关系。否则 Agent 可能认真修复一个已改名函数,补丁看起来合理,却没有作用于实际执行路径。

第二步复现业务失败,区分环境故障与代码缺陷。日期问题应固定时间、时区与政策版本,先明确业务生效合同,再记录修复前的断言。测试启动失败、缺少依赖和断言不符是不同事件;在尚未跑到目标行为时,不能宣称已经复现业务错误。对于可测试缺陷,保留失败样例能约束后续补丁不只是修改表面字符串。

第三步生成并应用最小补丁。检查路径范围、基线和实际 diff,避免覆盖别人的修改;针对跨日、生效瞬间、无时区输入等边界验证。测试输出需同时看退出码、运行数量和失败内容,不能搜索到 passed 就结束。若新失败与改动相关,应定位原因,而不是删除测试让日志变绿。需要扩大修改时,说明它与目标行为的因果关系。

最后按影响范围验收并交付。仓库版本、依赖锁文件、配置、数据、外部响应、系统时间和随机性都会影响复现;仅保存对话不够。环境、动作解析和历史管理由运行时组织,模型提出动作后仍要由环境执行并提供反馈。验收说明应分别报告跑过什么、通过什么、目标是否满足,以及仍未解决的具体问题。

常见追问:

  1. 所有测试通过能证明需求完成吗? 只能覆盖已有断言,还需检查目标行为和测试范围;跑错目录或零测试也可能留下看似成功的日志。
  2. 索引告诉我函数位置,为什么还读文件? 需要确认当前版本、真实定义和调用路径,索引只是定位线索。
  3. 修复后出现无关失败怎么办? 记录基线与失败证据,判断是否原有或环境造成;不要无依据扩大改动,也不能把相关回归归为无关。

实战案例:

教学案例修复“当地已生效、UTC 仍是前一天”的政策选择错误。先用固定时间复现,再明确政策使用的业务时区,修改日期比较模块,补跨日与生效瞬间样例。验收检查修复前样例失败、修复后相关断言通过、实际 diff 只覆盖必要路径;另行记录关联测试与环境条件,不把生成补丁当作执行完成。

常见误区:

按旧索引直接编辑;用全局加一天修补时区问题;因为测试失败而删测试;把命令退出成功等同于代码正确。

微练习:

为时区缺陷写复现记录和补丁验收清单。验收必须包括业务时区合同、三个边界输入、修复前后断言,以及工作区其他修改未被覆盖的 diff 证据。

学习章与参考: 学习章 08 · SWE-agent 架构 · 对应贯穿项目

Q079 文件系统 Backend、路径白名单和沙箱分别保护什么?

优先级:P0

30–60 秒回答:

Backend 决定文件工具读写到哪里,路径规则限制允许访问的对象,沙箱约束代码能接触的文件、网络、进程和资源。一个虚拟 /workspace 或本地目录映射不自动形成隔离。我的设计会核对实际挂载、身份、出站网络和执行能力,处理规范化、符号链接及检查后变化;依赖安装和测试同样执行代码。凭据尽量留在受控服务,不能因为模型叫“只读助手”就交给它管理员权限。

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

详细答案:

先沿一次文件调用找实际落点。工具显示的路径可能对应线程状态、真实本地目录、跨线程存储或远程环境。Backend 解决映射与存储生命周期问题,不能由路径样式推断隔离能力。相同的工作区名称可以接到不同系统;选型时要查看对应后端的实际行为,尤其确认本地 shell 是否直接使用宿主的文件与进程权限。

再定义需要保护的资源。修复任务一般只需指定仓库、临时目录、有限网络和执行额度,工具服务与数据库还要独立检查调用身份。路径控制不能只做字符串前缀判断:规范化后的路径、符号链接和检查后资源变化都可能影响最终目标。需要让真正执行读写的边界落实控制,不能依赖模型在自然语言中承诺不越界。

代码执行范围应覆盖整个任务。测试、构建和安装脚本与 Agent 自己生成的命令一样,都可能访问网络或文件;只审查最后一条命令会留下明显空隙。容器也需具体看宿主挂载、网络、特权与资源配置。隔离强度、启动成本和调试便利存在取舍,可以为不同任务选环境,但必须让可用权限与任务风险匹配。

凭据采用最小范围和有限期限,尽量由受控执行器或服务使用,减少进入上下文、索引、普通日志与任意可读文件。结果输出也要检查,避免环境守住写入却让秘密从日志流出。验证时使用测试目录与测试凭据,检查被拒绝动作及资源状态。评价隔离依据实际访问结果,而不是“用了某框架”这一个配置名。

常见追问:

  1. 文件工具被限制,Bash 也会自动受限吗? 未必。两种工具可能走不同执行路径,要检查 shell 的身份、挂载与系统权限。
  2. 容器是不是足够了? 要看配置;过宽宿主挂载、特权或网络仍会扩大范围,容器名称不能替代访问测试。
  3. 把密钥放环境变量就绝对安全了吗? 不是。可执行代码可能读取它,日志也可能输出;应控制可见范围、执行主体、有效期和数据出口。

实战案例:

教学案例允许 Agent 改测试仓库,仓库中的安装脚本却尝试读取另一个目录。处理时仅挂载必要工作区与临时目录,限制出站访问,使用替身凭据,并在执行层检查最终文件目标。验收让正常测试可运行、越界读取被拒绝,敏感测试标记不出现在工具返回和日志;还要验证通过符号链接访问时同样受控。

常见误区:

把 Backend 当作沙箱;只审查模型生成的脚本,忽略仓库自带安装脚本;把路径字符串过滤当作完整资源隔离。

微练习:

画出文件工具、shell 和数据库三条路径的真实执行身份。验收列出每条路径的读写与网络边界,并设计一个正常动作、一个越界动作和一个符号链接动作的检查方法。

学习章与参考: 学习章 08 · Deep Agents Backends · Claude Computer Use 安全考虑

Q080 Browser / Computer Use 怎样保持观察新鲜并确认任务完成?

优先级:P0

30–60 秒回答:

先确认当前系统、对象 ID 和状态,再基于新观察执行单个或短批动作,随后重新读取关键状态。网页可用 DOM、可访问性树和语义定位器,桌面常依赖截图与坐标,但两者都要处理页面或窗口变化。点击成功只说明动作发出,完成要看目标对象的持久内容和状态。保存超时先查结果,再决定重试;人工批准等待后也应重验对象、权限和参数。

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

详细答案:

先区分观察与执行合同。网页工具可能提供语义元素、DOM 或临时引用;桌面工具更常提供窗口截图与坐标。它们不是可互换的参数格式。每次动作前需要知道当前标签页或窗口、目标对象和关键业务状态,确保观察与动作关联。文本中提到某按钮,并不能说明当前视口里该按钮就属于要修改的对象。

定位方式各有失效条件。语义 locator 可以在执行时重新解析元素,改善重渲染后的定位,但相同标签仍可能对应另一行或另一份文档。临时引用仅对有效页面状态成立;导航、弹窗或实质变化后需重读。截图坐标依赖缩放、滚动与窗口位置,滚动后继续使用旧坐标相当于拿昨天的地图找今天挪过的门。

执行采用短闭环:确认对象,动作,读取变化,判断下一步。若遇 stale reference 或焦点不明,停止依赖它的后续输入并重新观察。表格每行都有编辑按钮时,要把行标题或对象 ID 与按钮关联。Canvas 缺少文本结构时可用视觉定位补足,但截图看不到的隐藏字段仍不能宣称已检查。

最终验收回到业务终态。保存动作返回成功后,确认新字段、版本、保存状态或独立接口结果;响应丢失时先查当前对象,避免重复提交。页面与图片属于输入资料,不能赋予新的外发或删除权限。需要具体批准时展示目标和变化,恢复后重验参数、对象与当前权限;不确定结果应携带证据交给人工继续。

常见追问:

  1. locator 会重解析,为什么还读页面? 它解决元素查找,不证明当前业务对象、权限与状态未变化,关键操作仍需新观察。
  2. 保存超时直接再点一次行吗? 先读对象状态或查询后端;第一次可能已成功,重复提交可能产生第二个对象。
  3. 截图能作为全部完成证据吗? 只能覆盖可见内容。应按任务需要关联页面文本、对象 ID、版本或后端读取,不能推断隐藏状态。

实战案例:

教学案例更新某份政策草稿日期,点击前列表因排序而重排,保存后又超时。处理时按草稿 ID 重新定位,读到当前字段后操作,超时后独立查看同一对象。验收确认目标 ID 未变、新日期持久存在、没有第二份草稿;注入 stale reference 时后续输入应暂停,不能打进未知焦点。

常见误区:

使用旧截图坐标连点;把“点击成功”当作“保存完成”;将页面上的指令当作用户授权;审批后不核对对象变化。

微练习:

为“改日期并保存”写观察—动作—验证表,加入重排、弹窗和保存超时。验收每次动作都有对象标识与有效观察,超时分支先查询结果,且重复执行不额外创建对象。

学习章与参考: 学习章 08 · Playwright Locators · Claude Browser Use · Claude Computer Use

题库目录