Skip to content

feat(codex): migrate thread and turn lifecycle #18

Description

@ryan-wong-coder

Parent roadmap: #15

What

将 Flowix 的 Codex 会话管理迁移到 App Server 的 Thread/Turn 生命周期,支持创建、列出、读取、恢复、分叉会话,以及开始、steer 和中断正在运行的 Turn。

Why

当前 Flowix 通过本地占位 thread ID、外部 session 映射和直接扫描 ~/.codex/sessions 维持会话。该方式依赖 Codex 私有文件格式,也无法在同一 Turn 运行中补充用户要求。

Implementation

  • 接入 thread/start, thread/list, thread/read, thread/resume, thread/fork
  • 接入 turn/start, turn/steer, turn/interrupt 和完成/失败通知。
  • 将 Flowix AgentConversationInstance 与 Codex thread ID 建立稳定的一对一映射。
  • turn/start 中传递 cwd、模型、推理强度、sandbox/approval policy 和附加工作目录。
  • 支持应用重启后恢复 Thread 和当前状态;无法恢复的本地占位 thread 要给出可操作错误。
  • App Server 模式使用官方 Thread API 加载历史,不读取 ~/.codex/history.jsonl~/.codex/sessions
  • 兼容期内保留现有历史解析和 codex exec runtime,仅用于 fallback。
  • 为 Thread/Turn 增加明确的 Tauri commands/events 和前端状态类型。

Acceptance criteria

  • 用户可以在 Flowix 中创建、恢复、分叉和继续 Codex 会话。
  • 活跃 Turn 可以通过 turn/steer 接收补充要求,并通过 turn/interrupt 停止。
  • 重启 Flowix 后仍能从 App Server 获取会话和历史。
  • App Server 模式不访问 Codex 私有 session/history 文件。
  • 一个 Flowix conversation 不会错误绑定多个 Codex threads。
  • fallback 模式行为与当前版本一致。
  • 覆盖新建、恢复、分叉、steer、中断、重启恢复和映射冲突测试。

Dependencies

Non-goals

  • 不实现完整结构化 Item UI。
  • 不实现审批卡片、账户配置或 Flowix MCP Server。
  • 本阶段不删除 fallback runtime 和私有历史解析代码。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions