Skip to content

会话回滚后 checkpoint 回滚报 500,且在途子代理写入失败并残留 active #378

Description

@HZzzHe

问题描述

在 OpenFic 0.11.0 桌面版中,对正在进行写作任务的会话执行「回滚」操作,会触发一条相关联的故障链,最终导致子代理(如 Composer)写入笔记失败:

回滚本身报 500:revision 数据回滚成功后,随后的 LangGraph checkpoint 回滚失败,接口返回 500,且同一次回滚在日志中连续报错多次:

app.api.routers.agent_runtime:rollback_agent_session - Agent graph checkpoint rollback failed after revision rollback
POST /api/v1/agent/sessions/{session_id}/rollback 500 Internal Server Error

这造成 revision(数据层)与 graph checkpoint(会话状态层)不一致——数据已回滚,但会话的检查点未同步。

在途子代理写入失败:回滚前已派发、回滚后才实际执行写入的子代理继续运行。write_note / write_chapter 等工具要求当前 revision 存在才能写入(current_revision_id_from_state 缺失时报「缺少当前 revision,无法执行笔记写入」),而父会话 revision 已被回滚作废,子代理带着失效 revision 执行 → 写入被拒,子代理记录报错:

error: parent revision rolled back

界面显示「工具未执行」/「subagent request failed」。

失败子代理残留:此类失败的子代理未被正确清理,残留 is_active=1, status=error 的记录,可能污染后续会话状态(如 notify_subagent 误投递到已失效的会话)。

复现步骤

复现步骤
1.在主会话中派发一个子代理执行笔记写入任务(例如让 Composer 为章节设计详细大纲)
2.在子代理尚未完成时,对主会话执行一次回滚(界面上的回滚按钮 / POST /sessions/{session_id}/rollback)
3.观察结果:
回滚接口返回 500,日志出现 Agent graph checkpoint rollback failed after revision rollback
子代理继续执行后写入失败,界面出现「工具未执行」或「subagent request failed」
数据库 agent_child_runs 表出现 status='error' 且 is_active=1 的残留记录

日志、截图或录屏

18:04:24 | ERROR | rollback_agent_session - Agent graph checkpoint rollback failed after revision rollback
18:04:24 | ERROR | POST /api/v1/agent/sessions/{session_id}/rollback 500 Internal Server Error
18:19:16 | WARNING | Agent 工具执行失败: 工具未执行
18:19:17 | WARNING | Agent 工具执行失败: subagent request failed
         | dispatch_id={...}, agent=composer, error: parent revision rolled back

OpenFic 版本

0.11.0

运行系统

Windows

运行平台

桌面端

提交前检查

  • 我已搜索现有 Issue,未发现重复问题
  • 我确认未在内容中包含密钥、令牌或其他敏感信息

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions