agent space 运行失败时需立即定位根因并恢复上下文:先检查transcript-{session_id}.jsonl是否存在及完整性,再依错误类型区分环境阻断或工具链断裂,最后通过run_id重放+自动跳过失败步骤重建状态。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

Agent Space Agent运行失败时,无法继续执行任务、状态丢失、工具调用中断、对话历史清空,必须立即定位根本原因并恢复可执行上下文。
确认崩溃是否已触发持久化回放机制
检查当前 Agent Space 实例是否启用 Transcript 事件流持久化。默认路径为 memory/transcripts/transcript-{session_id}.jsonl,若该文件存在且末尾有 "event_type":"terminal" 或 "event_type":"state_transition" 记录,则说明崩溃前已写入关键事件。
若文件为空或根本不存在,说明进程在首次 message 写入前就已退出——此时无任何可回放状态,必须从头启动并补全初始化参数。
用 tail -n 5 memory/transcripts/transcript-*.jsonl 快速查看最后几条事件,确认 run_id 和 step 字段是否连续递增。跳变或重复表示写入异常,需跳过该 session 重建。
区分失败类型:环境阻断 vs 工具链断裂
方法一:检查日志中首个报错位置
若错误出现在 tool_lifecycle 事件之后(如 status: "requested" → 无后续 "completed"),说明工具已发出但未返回,大概率是目标服务不可达、超时或认证失效;此时应优先验证 API Key、网络白名单、目标系统负载。
方法二:检查是否出现 ImportError、command not found 或 ModuleNotFoundError
这类错误直接指向运行时环境缺失,不是配置或网络问题。例如报 metal: command not found,说明该 Tool 依赖 macOS Metal 框架,却在 Linux 容器中被加载——需立即触发 auto_quarantine 机制隔离该 Tool,避免后续轮次反复失败消耗 token。
【注意:不要手动删除 tool 文件,而是通过 quarantine API 标记】
重建运行时状态的三步操作
第一步:从 transcript.jsonl 提取最新完整 run_id
运行 jq -r 'select(.event_type == "state_transition") | .run_id' memory/transcripts/transcript-*.jsonl | tail -n 1 获取最后成功推进的 run_id。
第二步:用该 run_id 初始化 HistoryManager
启动新进程时传入 --resume-run-id=run-xxxx 参数,框架将自动重放该 run_id 下所有 message 和 tool_lifecycle 事件,重建内存中的对话树与工具执行上下文。
第三步:跳过已知失败的 Tool 调用步骤
若重放过程中再次触发同一 Tool 的 status: "failed",且错误码属于环境不兼容类(如 OSError 2、ImportError),框架会自动跳过该 step 并标记为 skipped,继续执行后续 state_transition。这一步无需人工干预,但需确认 skip 策略已在 config.yaml 中启用。











