本篇 10 题|覆盖初级到高级|状态与检查点。先用自己的话回答,再核对参考要点,最后练习工程追问。

本篇目录
- AGT-041 Agent 状态应该保存什么?
- AGT-042 会话历史能代替任务状态吗?
- AGT-043 检查点与数据库事务有什么区别?
- AGT-044 什么时候写检查点?
- AGT-045 恢复任务时为什么要重新检查权限?
- AGT-046 如何防止同一任务被两个 worker 执行?
- AGT-047 状态 Schema 升级怎么办?
- AGT-048 怎样处理过大的工具结果?
- AGT-049 任务状态如何支持审计?
- AGT-050 如何设计任务取消?
AGT-041 Agent 状态应该保存什么?
难度:中级
参考答案:保存目标、约束、任务进度、工具结果引用、版本和预算等必要信息。原始大文件可外置存储,状态中保留受控引用,避免检查点无限膨胀。
工程追问:哪些字段不应长期保存?
AGT-042 会话历史能代替任务状态吗?
难度:中级
参考答案:不能完全代替。自然语言历史难以保证结构、版本和原子更新;关键执行状态应结构化持久化,对话历史作为辅助上下文而非唯一事实源。
工程追问:如何判断某个动作已经完成?
AGT-043 检查点与数据库事务有什么区别?
难度:中级
参考答案:检查点记录编排进度,数据库事务保证特定存储操作的原子性。检查点通常不能覆盖外部系统副作用,需要幂等键或补偿机制协调。
工程追问:检查点成功但外部操作失败怎么办?
AGT-044 什么时候写检查点?
难度:中级
参考答案:在重要状态转移、外部动作前后和等待用户输入时持久化。频率要平衡恢复粒度与开销,并明确崩溃后哪些步骤可能重复执行。
工程追问:每个 token 都持久化有必要吗?
AGT-045 恢复任务时为什么要重新检查权限?
难度:高级
参考答案:任务等待期间用户权限、资源状态或政策可能变化。旧检查点只能说明过去计划,不能替代当前授权,恢复后应重新验证高影响动作条件。
工程追问:审批一周前通过还能执行吗?
AGT-046 如何防止同一任务被两个 worker 执行?
难度:中级
参考答案:使用租约、状态版本比较或数据库锁控制所有权,并处理租约过期。外部动作仍需幂等,避免旧 worker 恢复后继续写入。
工程追问:为什么只加进程内锁不够?
AGT-047 状态 Schema 升级怎么办?
难度:中级
参考答案:记录 Schema 版本,提供显式迁移与兼容读取,并对旧检查点做恢复测试。无法安全迁移时停止并说明原因,不能猜测缺失字段含义。
工程追问:默认值会不会改变旧任务语义?
AGT-048 怎样处理过大的工具结果?
难度:中级
参考答案:将结果存入具备权限和生命周期管理的对象存储,状态保存摘要与引用。后续按需读取,并验证引用未过期及调用者仍有权限。
工程追问:恢复时原文件已删除怎么办?
AGT-049 任务状态如何支持审计?
难度:中级
参考答案:记录谁发起、何时决策、调用哪个工具、审批依据和最终结果,使用关联 ID 串联事件。审计内容最小化并脱敏,避免变成敏感数据副本。
工程追问:怎样证明记录没有被静默篡改?
AGT-050 如何设计任务取消?
难度:中级
参考答案:取消信号应传播到排队和执行阶段,在安全边界停止新动作。已提交的外部操作不一定可撤销,需要查询真实状态并报告已完成部分。
工程追问:取消与工具成功同时发生怎么办?
复盘练习
任选一题,用“场景与约束 → 方案 → 验证方法 → 失败边界”组织一段回答。初级先讲清概念,中级补实现与测试,高级补成本、权限和故障取舍。难度标签是学习建议,同一题可继续深入。
延伸阅读
以下为本模块相关原始论文与官方文档,用于继续学习;本文为原创面试要点整理,具体框架行为以所用版本为准。