AI 时代编程 面试题库
收录真实面试常见问题,答案长度适合口头表达;拿不准时可返回相关主题复习。
与智能体协作
9个问题 · 0 已看01 怎样为编程智能体选择初始上下文? 查看答案 ▾ 收起 ▴
我先明确任务契约,包括预期行为、复现方法、允许路径、必需检查和非目标。随后解析适用的仓库指令,并记录仓库根目录、版本、worktree 状态、包目录和运行时。第一批代码应来自失败测试、堆栈帧、具名符号或诊断信息等具体信号。我会纳入相关实现、契约、配置和最近的测试,并为每条路径记录选择原因。生成输出、依赖、凭据和无关日志继续排除,直到具体证据表明其中某项确有必要。
02 哪些内容适合写进 AGENTS.md 或 CLAUDE.md? 查看答案 ▾ 收起 ▴
我会写入稳定的仓库事实,包括软件包边界、权威命令及其工作目录、生成路径、命名规则,以及交付前需要的验证证据。每条指令都应范围清楚,并且具体到可以审查。临时工单目标、长篇教程和代码中已经显而易见的信息不应放入,因为持久文本会占用上下文并逐渐过期。我还会记录仓库支持哪些智能体宿主。共享指引可以集中保存在 AGENTS.md,再由简短的 CLAUDE.md 导入,只补充当前文档支持的 Claude 专用行为。
03 怎样把模糊的编码目标转换为可执行的智能体计划? 查看答案 ▾ 收起 ▴
我先把目标改写成可观察的交付行为,再记录代码库基线、允许写入范围、非目标和必需验收检查。如果行为所有者未知,第一步就是有边界的探索。后续步骤沿证据边界展开:复现当前行为、做最小实现改动、运行聚焦检查、执行与风险匹配的更广检查,最后检查完整差异。每个步骤都说明依赖关系、预期观察结果和失败策略。执行开始前,我还会区分完成、暂停、失败、取消和预算耗尽状态。
04 什么情况下,编程任务应保持人工主导,而不是委托给智能体? 查看答案 ▾ 收起 ▴
当预期结果仍有争议、所需操作会暴露敏感数据或产生不可逆的外部效果、运行没有可信的成本上限,或者无人能够独立验证结果时,我会保持人工主导。这些都是任务属性,与模型说话听起来多么能干无关。我会先尝试拆分工作:智能体可以执行只读调查或准备候选差异,负责任的人负责确定策略并执行后果重大的操作。只有意图、权限范围、停止条件和完成证据都明确后,委托才是合理选择。
05 编程智能体与代码补全或对话助手有什么区别? 查看答案 ▾ 收起 ▴
区别在于反馈循环,而不在于界面。代码补全预测光标附近的文本,对话助手通常返回由开发者应用的答案;编程智能体则能请求工具检查或修改环境,接收文件内容、退出码和错误,再选择下一步。真正的能力来自执行调用的宿主。因此,我会用可用工具、权限策略、工作区、停止条件和验证器描述智能体,而不是只看模型名称,或它出现在 CLI 还是 IDE 中。
06 为一项具体改动阅读陌生代码库时,你会怎样开始? 查看答案 ▾ 收起 ▴
我会先把改动转成一个可观察问题,再确定代码库、软件包、运行时、工作目录和当前差异。接着搜索路由字符串、事件名称、命令名称或失败测试文字,以找到可执行入口。从入口沿一条调用路径追踪,只记录驱动分支的数据、具体依赖绑定、副作用和真正得到保障的不变量。每项重要判断都要有源码位置或聚焦观察作为证据,不确定的边继续明确标注。当模型能够预测与改动相关的行为和失败情形时,就停止扩展。
37 怎样压缩较长的智能体会话,又不把摘要误当成证据? 查看答案 ▾ 收起 ▴
在 Node 24 的智能体会话中,我会区别处理四层内容:任务与权限约束按原文保留,当前源码重新获取最新版本,证据账本保留来源和状态,已被取代的探索则删除。交接应记录基线、脏状态、改动文件、已失效检查、未决假设和下一项决定。摘要只用于导航,不能充当证明。具体陷阱是静默截断,或一份流畅总结遗漏审批边界、失败输出末尾。编辑或宣布完成前,我会重读可变输入,并重新运行所有因当前差异而失效的检查。
39 已经通过的智能体检查点在什么情况下必须失效? 查看答案 ▾ 收起 ▴
在以 Node 24 为基线的规划模型中,检查点是绑定输入、计划版本和验收规则的证据,而不是永久绿色标签。如果后续编辑改变了该检查所依赖的代码、配置、依赖、环境或指令,步骤就应进入 superseded 或 pending 状态,并在完成前重新运行。记录要包含命令参数、工作目录、退出码、输出流、超时和截断情况。常见陷阱是后续补丁已修改测试输入,却仍缓存“测试已通过”。依赖跟踪会带来一些记录成本,但能防止过期证据错误解锁无关的下游工作。
42 编程智能体运行结束并判定成功前,需要哪些证据? 查看答案 ▾ 收起 ▴
在 Python 3.14 的宿主循环中,成功意味着每项必需验收条件都能映射到当前工作区状态下的新鲜证据。记录应标明基线、变更资源、确切命令、工作目录、退出码、相关输出、跳过项和截断情况。是否所有交付门通过,应由确定性控制器判断,而不是采用模型总结。blocked、cancelled 和 budget-exhausted 必须是不同终止状态。具体陷阱是只停止模型请求,却留下测试或服务器子进程;取消操作必须终止并回收这些进程。这会增加编排成本,但让恢复和审查可信。
审查 AI 代码
10个问题 · 0 已看07 怎样防止过期上下文破坏智能体的编辑? 查看答案 ▾ 收起 ▴
我会把可变观察关联到版本、摘要值或精确文本前置条件,并记录其失效条件。编辑前,智能体重新读取目标,以及补丁所依赖的精确契约。如果当前文本不同于计算补丁时的快照,就应停止应用,更新相关证据并重新计算,不能强行套用旧改动。编辑后还要检查实际差异,重新运行输入已变化的检查。摘要值只能证明字节相同或不同,不能证明当前内容正确或安全。
08 怎样使用 AI 助手调试,同时避免它靠猜测推进? 查看答案 ▾ 收起 ▴
我会先准备准确复现、期望与实际行为、运行时版本,以及未经编辑的失败输出。接着要求助手给出少量竞争假设,每项都包含作用机制、预期观察和能否定它的结果。然后选择成本最低且安全、能区分这些预测的检查,并在真实程序上运行。我会在证据账本中分开记录观察与推断。只有一个解释同时覆盖失败与通过用例后,才请求修复;回归检查还必须在编辑前失败、编辑后通过。
09 怎样审查 AI IDE 生成的多文件修改? 查看答案 ▾ 收起 ▴
我先检查基线和修改文件列表,因为流畅的摘要可能漏掉配置、锁文件、生成产物或被改写的断言。接着把格式化噪声与语义修改分开,逐块查看差异,包括删除内容。公共符号被重命名或改变时,我会结合引用搜索与文本搜索,寻找静态、动态和字符串形式的使用方。然后在正确包目录运行仓库自己的格式化、静态分析、测试和构建命令,记录退出状态与跳过项。只要存在无法解释的路径或缺失检查,即使编辑器诊断全绿,修改也仍处于审查状态。
10 你会怎样对 AI 生成的多文件改动进行第一轮审查? 查看答案 ▾ 收起 ▴
我会先确定确切基线,把完整改动文件列表与任务范围比较,而不是先看作者摘要。新增、删除、重命名、测试、配置、锁文件和生成产物都要检查。然后把请求改写成可观察的验收条件,并给每项语义修改分类,例如契约、控制流、修改、持久化、权限或工具链。这样能尽早发现无关清理与缺失的配套改动。只有当范围和意图一致后,我才在完整文件上下文中检查函数,并开始追踪调用方与作用。
11 怎样判断生成式契约变化在代码库中的影响? 查看答案 ▾ 收起 ▴
我会写出新旧输入、输出、错误、修改、顺序和副作用契约,再把每个改变的定义当作影响锥起点。语义引用搜索用于寻找强类型调用方、实现和再导出;文本搜索用于寻找路由名、序列化器、反射、依赖注入键、夹具和脚本。我向上游追踪输入,向下游追踪可观察作用,直到到达契约仍成立的未修改边界。无法搜索的外部使用方与动态连接必须保留为显式风险,通常用契约测试、兼容适配器、发布协调或分阶段上线来处理。
12 怎样防止智能体通过削弱测试来让补丁通过? 查看答案 ▾ 收起 ▴
我把测试改动视为对敏感证据的修改,而不是实现工作自动附带的一部分。任务应写明哪些测试文件可以改,以及原因。审查时,我会把删除断言、修改预期值、更新快照、放宽模拟对象、新增跳过、改变发现配置和测试数量,与源码改动分开检查。关键验收测试可以受所有权规则保护,或放进任务无法修改的交付门。最终编辑完成后,独立运行器执行固定命令,并记录修订版本、工作目录、退出码、跳过测试和截断输出。任何无法解释的削弱都会阻止补丁获得验收。
13 面对尚未理解的代码,怎样追踪副作用? 查看答案 ▾ 收起 ▴
我从行为入口出发,按执行顺序列出存储、网络、事件、缓存、文件系统、日志、指标、时钟、随机数和可变模块状态访问。依赖名称本身不够,因此还要把每个接口解析到当前配置选择的具体适配器。对于每项副作用,我会记录载荷、此前已经完成的副作用,以及它失败时会发生什么。随后使用可记录的伪实现运行窄范围测试,并注入一次失败。这样可以暴露局部状态、重复工作风险和隐藏的重试假设,而成功返回值或流畅的生成式摘要常会掩盖这些问题。
41 怎样避免调试探针改变正在测量的缺陷? 查看答案 ▾ 收起 ▴
在 Node 24 中,调试器暂停、控制台输出、性能分析器和跟踪钩子都可能改变调度、背压、对象生命周期或超时行为。我会为每次运行记录启用的探针,并把带探针的对照运行与故障条件比较。如果重型探针让症状消失,就在同一边界改用现有 span 字段、有界环形缓冲区、原子计数器或采样标识符等轻量信号。生成的探针也必须审查:读取 getter、消耗迭代器或记录 token 都可能改变行为或泄露数据。这里的取舍是减少细节,以换取更真实的时序观察。
50 怎样区分生成式补丁中的契约变化与实现变化? 查看答案 ▾ 收起 ▴
在 Node 24 环境下,我会先分类每项输入域、输出形状、失败通道、修改、副作用、顺序和时序观察的变化,再判断重构是否真的只涉及内部实现。契约变化需要搜索使用方、制定兼容策略并执行边界测试;实现变化则需要特征测试证明受保护观察保持等价。可见性不是判断标准,私有代码仍可能改变 SQL、缓存键、发送事件或共享对象。常见陷阱是因为导出名称不变,就相信生成摘要中的“没有 API 变化”。这种分类需要一次前置影响分析,却能防止便宜的局部测试批准代码库范围的行为变化。
54 阅读陌生代码到什么程度,才足以进行有边界的改动? 查看答案 ▾ 收起 ▴
在 Node 24 工作流中,当我能够预测与任务相关的成功和失败行为,把活动入口连接到重要副作用,追踪驱动分支的数据,指出真正受到保障的不变量,并通过聚焦反例挑战时,就可以停止扩展。剩余边都标为 confirmed、inferred、contradicted 或 unknown,并写明什么证据会改变标签。无需遍历无关子系统。具体陷阱是深入解释一段已失效或未注册代码,却没有证明运行时可达。这个停止规则用全局完备性换取可审查的局部模型;若补丁改变接线、数据表示、副作用顺序或执行点,就重新打开调查。
规格与测试
10个问题 · 0 已看14 怎样与 AI 结对调查间歇性故障? 查看答案 ▾ 收起 ▴
我会记录随机种子、并发级别、调度控制、资源限制、探针配置,以及明确试验次数中的出现次数。某次没有出现症状不能算修复。我会让 AI 提出有争议的事件顺序或生命周期节点,再用屏障、伪时钟、受控依赖响应或资源所有权标记替代任意休眠。跟踪记录需要请求或任务标识,因为到达收集器的顺序未必是因果顺序。机制隔离后,回归测试应确定性地强制该顺序,并验证失败行为与清理路径。
15 怎样审查同一个编码智能体生成的示例与测试? 查看答案 ▾ 收起 ▴
我会把每个预期结果追溯到独立的产品规则、协议、已审查夹具或不变量,生产代码不能担任自己的预言机。我按输入分区整理案例,并检查精确边界、规则交互、缺失值、重复操作与禁止副作用。然后为每个案例指明它声称捕获的缺陷,并针对改动前实现或故意改变的实现运行。若把 <= 改成 < 后边界测试仍然通过,它就没有判别力。我还会检查智能体是否修改了旧预期,因为配套修改可能抹去回归证据,同时让所有生成检查保持绿色。
16 什么让一项测试成为可执行规格,而不只是回归检查? 查看答案 ▾ 收起 ▴
我要求读者无需反推私有代码,就能把检查关联到预期的可观察行为。案例应有面向规则的名称、明确的准备与动作、经过批准的预期结果,以及清楚的边界或分区。它的预言机应足够独立,能够拒绝貌似合理的错误实现;失败信息还要指出被破坏的约定。只固定辅助函数调用或当前结构的底层测试仍可能有价值,但不是产品规格。文字说明也要与检查并存,因为断言无法解释尚未决定的问题和自身覆盖边界。
17 为什么测试预言机必须独立于被测实现? 查看答案 ▾ 收起 ▴
预言机是把观察行为判为正确或错误的权威依据。如果预期值与实现来自同一份生产公式、生成的查找表、数据库查询或模型响应,同一种误解就可能同时出现在两侧并通过检查。因此,独立性是数据流问题,不是文件名是否不同。我优先使用策略负责人批准的字面结果、固定版本标准中的协议示例,或用不同原语构建的小型参考模型。我还会修改边界或优先级分支,并确认相关检查会失败;存活的修改说明性质太弱或案例缺失。
18 怎样为 LLM 应用构建有代表性的评测集? 查看答案 ▾ 收起 ▴
我会从产品任务和故障后果出发,而不是从已经表现良好的提示词出发。先抽样常见请求类别,再加入高代价事故、边界情况、长上下文、多语言流量和对抗输入。每个用例都记录来源、预期行为、所属切片和纳入原因,并删除近似重复项,避免一种模板支配分数。合成用例要明确标记,并与经过同意的生产模式比较。开发集供日常迭代,锁定的发布集负责交付门,两者都要建立版本。
19 怎样为非确定性的 LLM 行为定义回归交付门? 查看答案 ▾ 收起 ▴
我会在运行候选版本前写好政策,明确绝对质量下限、相对基线的允许变化、受保护切片限制、最小样本量,以及不可补偿的硬门槛。基线与候选版本处理相同输入,使用对称重试政策,并按决策风险运行足够多的独立试验。我会保留配对的试验级结果,同时报告区间而不只给点估计。区间跨越允许与禁止区域时,结论应为不明确。安全、隐私和授权故障始终位于平均值之外。
20 怎样为智能体任务选择护栏测试? 查看答案 ▾ 收起 ▴
我会从改动的可信失败模式出发,而不是先定一个覆盖率目标。每项风险都要对应稳定的观察,并选择能够如实验证它的最窄测试层级。边界改动应检查阈值下方、恰好等于和上方;授权规则应加入第二个身份;写入路径应模拟协作者失败,并断言没有副作用。除非内部属性本身属于契约,否则要给实现选择留出空间。最后,我会记录必须通过的聚焦命令和更广测试套件,同时列出测试无法证明的产品或运维声明。
49 可执行规格应在什么时候使用精确、结构或性质预言机? 查看答案 ▾ 收起 ▴
在 Node 24 检查中,我会用精确预言机固定明确的政策值或协议码;当部分字段必须稳定、无关表示可以变化时使用结构预言机;需要覆盖许多输入之间的关系时使用性质预言机。允许变化的范围必须写清:过宽的匹配器可能掩盖字段缺失,“结果非负”这类弱性质也可能接受现实中的错误算法。我常把具名精确边界、schema 和独立推导的性质组合使用。具体陷阱是自动更新快照,它会让生成结果成为自己的预言机。更广覆盖会增加理解与运行成本,因此每一层都应有不同目的。
52 把 LLM 评审器用于发布门禁前,应怎样验证它? 查看答案 ▾ 收起 ▴
在 Node 24 评测流水线中,我会依据书面评分规则,使用人工标注的明确通过、明确失败和边界案例进行校准。二元门禁要查看误放和误拒率,而不只看准确率;成对评审还要交换答案顺序并隐藏模型身份,以发现位置或身份偏差。评分规则、评审提示词、评审模型和用例分布共同构成一个带版本的测量仪器,任一变化都要重新校准。结构化结果还应包含 unable-to-grade 状态。常见陷阱是把评审器故障或格式错误混入质量平均值。校准需要标注数据,但未经测量的评审器无法支撑严格发布阈值。
53 怎样证明智能体护栏测试具有判别力? 查看答案 ▾ 收起 ▴
使用 Node 24 测试运行器时,我会先把测试关联到一个可信故障,再让它针对修复前代码或一次性变异运行,例如反转边界比较、移除授权谓词,或在失败时仍发送事件。它必须先因预期原因失败,再在最终版本上通过。存活变异可能表示覆盖缺失、断言过弱、代码不可达或变换等价,因此变异分数应作为诊断,而不是追逐目标。常见陷阱是接受一项从未变红的新生成测试。敏感性检查会增加运行时间,所以我会把它集中在本次改动的高风险逻辑上。
面向代码的提示词
8个问题 · 0 已看21 怎样把含糊的代码请求变成可观察的改动契约? 查看答案 ▾ 收起 ▴
我会先明确具体符号或使用方边界,不说「这段代码」之类的模糊指代。随后写出一项当前观察和期望替代结果,包括接受的输入、返回结构、错误通道、副作用,以及必要的顺序;再补充必须保持的不变量、兼容维度与明确非目标。成功路径会隐藏歧义,所以还要加入反例。最后给每项重要主张对应证据,例如聚焦测试、更广命令、调用位置搜索或人工审查项。智能体可以在这个框架内选择实现细节,但必须报告未解决的产品假设。
22 代码提示词应在什么时候强制要求结构模式? 查看答案 ▾ 收起 ▴
只有结构承载了有证据支持的设计约束时,我才会强制指定模式,例如所有权、依赖方向、安全边界、测试替换、实测性能或既有仓库约定。我会同时说明理由与边界,例如让网络发送留在注入的可调用对象之后,把确定性策略放进纯函数辅助单元。我不会因为类、工厂、适配器或仓库听起来像架构术语就要求使用它们。如果只有可观察行为重要,就给内部实现留出选择空间。审查时再通过导入关系、副作用轨迹与使用方,证明所需边界存在且没有多余层次。
23 怎样把功能请求改写成约束明确的编程提示词? 查看答案 ▾ 收起 ▴
我会先写出一个可观察结果,并指出需要它的调用方或用户。接着给出当前行为和相关仓库位置,设置狭窄的修改范围,并列出明确不属于当前范围的相邻改动。兼容性要按签名、错误类型、数据形状、运行时或副作用顺序等维度说明,不能只说「不要破坏任何内容」。最后给出确切的测试、代码检查、构建和差异命令以及成功条件。如果调查证明还需要其他文件或产品决策,提示词应要求智能体停止并报告证据。
24 怎样表达兼容性限制,又不作出无法兑现的承诺? 查看答案 ▾ 收起 ▴
我会定义受保护的使用者集合,以及每个使用者依赖的观察结果。对于函数,这可能包括调用形状、省略值与零值输入、返回字段、异常类、副作用和异步时序。我会搜索调用点,并利用现有测试、模式、夹具和自动化建立一张小型矩阵,记录旧行为、预期行为和证据;有意变化要单列。未知插件或外部调用方继续标为不确定性,因此不能声称普遍向后兼容。如果两个必需行彼此冲突,我会在编辑前升级最小矛盾,而不是默默选择其中一个。
25 什么样的反例对编码请求有用? 查看答案 ▾ 收起 ▴
有效反例针对一条可能出现的错误规则,而不只是选择看起来特殊的数据。我会先写明实现者可能作出的归纳,再选择一个最小有效案例,使错误规则与预期规则产生不同的可观察结果。无关字段保持不变,案例名称说明差异,并给出字面预期值、稳定失败或禁止副作用。阈值规则通常用相等值或相邻值判别;权限规则则组合多个条件以暴露优先级。案例失败时如果能直接说明发生了哪种误解,它就发挥了作用。
45 编码提示词应怎样描述失败行为? 查看答案 ▾ 收起 ▴
在 Node 24 服务中,失败是一条完整契约分支。我会写明触发条件、表示通道、稳定错误标识、重试规则、已经提交的效果、禁止发生的效果,以及允许对外暴露的信息。还要说明依赖错误是原样传播,还是转换成边界拥有的结果,并规定怎样保留 cause。“处理错误”是典型陷阱,因为它可能被实现成吞掉、记录、抛出、重试或返回彼此不兼容的结果。这样的描述会让提示词更长,却能为测试提供“不得写入库存、不得发送确认事件”一类具体观察,而不只是确认发生了某种失败。
47 为什么在提示词中列出验收命令并不等于完成证据? 查看答案 ▾ 收起 ▴
在 Node 24 工作流中,验收命令只建立一项证据义务;只有针对最终差异真实运行后,才能履行它。我会验证命令仍然存在、从指定包目录执行、确实选中目标文件,并记录退出状态、输出、超时、跳过和截断情况。即使进程返回 0,“未发现测试”也不能算成功。后续编辑一旦改变命令输入,原结果就会过期。这会增加重复运行成本,但能防止把提示词清单或模型声明误当成行为、范围、构建健康度或依赖稳定性的证明。
48 怎样构建一组最小且有判别力的示例? 查看答案 ▾ 收起 ▴
在 Node 24 示例中,我会先列出几条可信的竞争规则,再为每项必需行为选择一个代表案例,并加入受控对照,优先排除风险最高的剩余解释。每个案例尽量只改变一个事实,使用字面预期或独立推导的预言机,并明确它能区分哪类缺陷。我还会让它针对修复前实现或一次性变异运行,证明它确实会变红。常见陷阱是添加许多相关的成功路径,它们其实都落在同一等价类。更小的集合容易维护,但无法证明无限输入域,剩余主张仍需性质测试和集成检查。
工具链
8个问题 · 0 已看26 为什么指令文件无法保护 MCP 工具的安全? 查看答案 ▾ 收起 ▴
指令文件只是模型上下文中的文本。它能提高模型提出安全请求的概率,却无法撤销凭据、阻断网络路径,也无法阻止另一个客户端调用同一服务器。MCP 定义工具怎样发现和调用,但不会把描述或模式自动变成授权。我会在确定性代码中强制边界:只提供必要工具,验证参数,每次调用都授权当前调用方和资源,限制输出与运行时间,并让敏感操作暂停等待范围明确的批准。即使模型非常自信地请求禁止操作,该调用也必须失败。
27 怎样为编程智能体设计安全的工具边界? 查看答案 ▾ 收起 ▴
我会把模型放在执行边界之外。模型只提出带类型的调用,由宿主验证工具名称、规范化参数、工作目录、网络需求和预期写入范围;策略随后允许、拒绝或暂停等待批准。未知工具默认拒绝,敏感批准只覆盖一次确切调用或一条严格规则。执行器返回结构化状态、退出码、stderr、截断标记和改动资源。文件路径要解析链接并证明仍在范围内;命令优先使用参数数组和专用测试、格式化工具,而不是无限制 shell。
28 启动 AI 编程 CLI 前,怎样准备代码仓库? 查看答案 ▾ 收起 ▴
我会先确认工作目录、仓库根目录、分支、基线提交和已有脏文件,并优先使用隔离分支或工作树,让会话只产生一份可归因差异。然后写一份小型任务合同,明确预期行为、最小复现、允许路径、必需命令和非目标。初始上下文只提供必要的实现、测试与稳定项目规则,凭据、生成物和无关数据留在外部。最后检查当前权限模式,让批准只覆盖第一步所需能力,而不是整个任务。
29 AI 编程 CLI 满足哪些条件,才适合非交互自动化? 查看答案 ▾ 收起 ▴
我需要文档明确的机器接口,而不只是一个提示参数。进程必须具备有限运行时间、严格的文件系统与网络权限、最小环境,并且在认证、审批、工具或模型失败时有可预测行为。包装器使用固定参数调用程序,不做 shell 字符串拼接,并记录工作目录、退出状态、stderr、超时和截断状态。独立交付门再把修改路径与任务范围比较,并运行指定验收检查。输出无法解析或证据缺失时,任务应失败关闭,只生成待审查产物,不能合并或部署。
30 为什么 AI IDE 的上下文不等于整个代码库? 查看答案 ▾ 收起 ▴
IDE 拥有代码库视图,但每次模型请求只包含其中有限的一部分。当前文件、选区、诊断、显式附件、检索片段、项目指令与会话历史会共同占用一个上下文窗口。检索可能遗漏间接调用方,也可能返回过期索引;打开标签页并不能证明模型收到了它。我会要求工具列出依据路径与假设,显式附加权威契约,并在重要修改前重新读取当前文件。随后再用语言服务搜索和仓库命令,验证模型上下文只提出、却没有证明的关系。
38 怎样验证某个目标文件实际适用哪些仓库指令? 查看答案 ▾ 收起 ▴
在 Node 24 基线上,指令发现是由宿主版本决定的契约,而不是通用文件名规则。我会记录仓库根目录、启动目录、识别的文件名、子树范围、导入方式、大小限制和优先级。随后建立夹具目录树,用无害的根规则与冲突的嵌套规则,从多个目录启动,并断言宿主实际加载了哪些来源。常见陷阱是假设 AGENTS.md 与 CLAUDE.md 在不同产品中具有相同解析语义。固定宿主版本和维护夹具会增加工作量,但能发现升级后约束被静默丢失或重排的问题。
43 可复现的 AI 编程 CLI 执行记录应包含什么? 查看答案 ▾ 收起 ▴
在 Python 3.14 基线下,我会记录基线提交、CLI 及其版本、工作目录、任务契约、获批副作用和变更路径。每条命令都保留参数边界、耗时、退出状态、相关 stdout 与 stderr、超时或信号,以及明确的截断标记;跳过的检查还要写明原因。宿主捕获的事实必须与模型解释分层保存。记录不能倾倒完整环境或凭据,因此结构化脱敏和保留策略也是设计的一部分。具体陷阱是一份流畅的“所有测试通过”总结,因为它无法证明究竟对哪个版本执行了哪条命令。
44 在 AI IDE 中,怎样选择建议、编辑和智能体模式? 查看答案 ▾ 收起 ▴
在以 Node 24 为基线的工作流中,我会选择足以产出所需结果的最低能力模式。只需解释且不改工作区时用建议模式;改动范围明确、可直接审查文本差异时用编辑模式;只有确实需要工具反馈和多步适应时才使用智能体模式。每次升级都要重新明确上下文集合、可写范围、命令政策和验收证据。常见陷阱是把编辑器撤销当作恢复手段:它只能还原文本缓冲区,不能撤销依赖安装、生成文件、进程、数据库写入或网络效果。较低能力会减少便利,但也缩小审批面和清理歧义。
判断力
9个问题 · 0 已看31 代码库证据与原计划冲突时,智能体应怎样重新规划? 查看答案 ▾ 收起 ▴
我会保留任务合同,只修改执行路线。新计划版本要记录触发变化的观察结果、改动的步骤,以及因此过时的检查点。如果新发现只是纠正授权范围内的文件所有权,智能体可以细化后续步骤并继续。若推进需要其他路径、依赖、迁移、凭据、网络目标或产品决定,就应带着证据和最小范围扩展提议暂停。重新规划本身不会授予权限。批准或拒绝后,控制器应从仍有效的检查点恢复,或进入明确的终止状态。
32 智能体在运行中越过边界时,应当怎样处理? 查看答案 ▾ 收起 ▴
控制器应在预定义触发点停止,不能让模型临时扩大自己的权限。触发条件包括发现敏感数据、请求范围外资源、需要不可逆效果、发现相互矛盾的测试,或达到时间、步骤和费用上限。交接内容应保留确切观察、被拒绝调用、已检查路径、候选差异、已经发生的效果,以及最小的未决问题。随后由人缩小任务、只授予一次范围明确的审批,或让该步骤保持人工主导。决策完成后,我会重新分类剩余工作,而不是沿用原假设悄悄恢复运行。
33 来源、完整性、真实性与正确性有什么区别? 查看答案 ▾ 收起 ▴
我会把它们视为独立的发布声明。来源描述材料从哪里来、怎样发生变化;完整性表示字节与记录摘要一致;真实性把签名声明关联到政策针对特定主体所信任的身份;正确性表示可观察行为满足需求或不变量。任一项都不能推出其他项:可信构建者可能签署有漏洞的代码,正确代码也可能来源不明。我会为每项声明分别设置证据与决定,并要求所有发布关键决定都通过,而不是用一个绿色签名或测试批准整个产物。
34 除来源证明签名有效外,验证器还必须检查什么? 查看答案 ▾ 收起 ▴
有效签名只证明某个密钥或证书签署了封装。我还会要求预期的谓词类型、对当前仓库获得授权的签发者与工作负载身份、批准的工作流和源码分支,以及与实际发布产物相等的主体摘要。根据政策,还要检查证书新鲜度、透明日志收录、参数与输入材料。证据应来自受保护构建者,而不是同一工作区可以重写的 JSON 文件。我会改动摘要和身份来测试拒绝路径,并让行为、漏洞与许可证审查保持独立,因为证明并不能证明这些性质。
35 怎样对生成式改动进行威胁建模,又不把整个系统都纳入范围? 查看答案 ▾ 收起 ▴
我会把提议系统与改动前系统比较,检查哪些内容变得新近可达、新近受信任或权限更高。接着列出这项增量引入的资产、具备相应能力的参与者、入口、身份来源、信任边界跨越、特权效果和可能的滥用用例。随后只追踪证明受影响不变量所需的控制与使用方。每项不变量都转成带证据的拒绝或约束主张。删除检查、放宽默认值、增加重试、日志或依赖也会改变攻击面。未知生产配置必须作为剩余风险明确保留,不能被推测为已有控制。
36 为什么输入验证不是授权控制? 查看答案 ▾ 收起 ▴
输入验证决定值是否符合接受的类型、大小、语法、编码或规范形式;授权决定经过验证的主体能否在当前上下文中对某个资源执行一项操作。格式完全正确的发票 ID 仍可能指向其他租户的发票。我会尽量从认证主体推导租户与用户范围,在该范围内查询,并在稳定的服务端位置强制操作策略。测试要使用有效的跨租户 ID、缺少操作权限的主体、非活跃资源与未知资源,同时检查被拒绝请求不会产生受保护效果。
40 什么时候确定性自动化比编程智能体更合适? 查看答案 ▾ 收起 ▴
在 Node 24 工具链上,如果输入、转换、失败行为和验证器都已明确,我会选择脚本。例如格式化固定文件集合,或执行由 schema 驱动的生成步骤,都不需要模型判断。只有任务需要有边界的探索或适应时,智能体才有价值。机制上的差异是,脚本沿可检查分支执行,成本可预测;智能体会增加概率性选择、上下文暴露和监督需求。具体陷阱是把固定转换交给智能体后,还得审查它创造的相邻改动。脚本灵活性较低,但当变化没有产品价值时,这正是优势。
46 怎样验证生成式依赖变更的来源? 查看答案 ▾ 收起 ▴
在 Node 24 基线下,我会把 manifest 中的直接意图,与 lockfile 里的精确版本、来源、完整性材料、传递依赖图、可选分支和安装脚本进行比较,再同构建产物或 SBOM 对账。验证应使用冻结解析,并记录包管理器版本。lockfile 或漏洞扫描都不是最终结论:它们不能证明发布者身份符合预期、许可证兼容、没有安装后下载,也不能证明构建权限可接受。我会按阶段检查执行行为,并让不可信安装过程只获得最少凭据、网络和写权限。这样会减慢依赖准入,但只审查直接包会漏掉真正发布或执行的代码。
51 怎样对生成代码新增的依赖进行安全审查? 查看答案 ▾ 收起 ▴
在 Node 24 基线下,我会按阶段绘制依赖执行路径:解析、安装脚本、构建插件、测试发现、运行时导入和打包。每个阶段都记录可用身份、网络路径、秘密值和可写目录,再使用仓库固定的包管理器检查 manifest 与 lockfile 变化。漏洞扫描只是一个输入,不能证明发布者符合预期、来源可接受、所需权限合理,也不能证明没有生命周期下载。具体陷阱是让未经审查的安装脚本带着开发者凭据运行。最小权限的临时构建会增加摩擦,但能同时约束恶意和意外的包行为。
没有符合筛选条件的问题。