Skip to content

feat(codex): deepen Codex integration with app-server and MCP #15

Description

@ryan-wong-coder

What

将 Flowix 当前基于 codex exec --json 的 CLI 包装集成,逐步升级为基于 Codex App Server 的原生桌面客户端集成,并通过 Flowix MCP Server 向 Codex 提供笔记、搜索、标签和文档操作能力。

当前实现每次运行都会启动独立的 codex exec 子进程,自行兼容多种 JSON 事件格式,并直接读取 ~/.codex/history.jsonl~/.codex/sessions。这些能力可以支撑基础聊天,但难以稳定支持交互式审批、运行中 steering、结构化 Item、账号配置和双向工具调用。

Why

Codex App Server 是官方为富客户端提供的长期运行 JSON-RPC 接口,覆盖认证、会话历史、Thread/Turn/Item 生命周期、审批和流式事件。迁移后,Flowix 可以从“能够调用 Codex CLI”升级为具有完整任务状态、文件变更、命令执行、审批和笔记上下文能力的 Codex 图形客户端。

Target architecture

Flowix React UI
      ↓ Tauri IPC
CodexAppServerManager (Rust)
      ↕ JSON-RPC / stdio
codex app-server
      ↓ MCP calls
Flowix MCP Server → notes / search / tags / attachments

Target interfaces

  • CodexAppServerManager
  • CodexCapabilities
  • CodexThread, CodexTurn, CodexItem
  • CodexApprovalRequest, CodexApprovalDecision
  • 对应的 Tauri commands/events
  • Flowix MCP tools/resources

Compatibility and security

  • 首版仅支持本地 stdio App Server,不接入实验性远程 WebSocket。
  • App Server 迁移期保留一版 codex exec --json 回退。
  • 不引入需要 Node.js server runtime 的 Codex TypeScript SDK。
  • 不直接读取或显示 ~/.codex/auth.json
  • 未识别的审批请求必须默认拒绝。
  • Flowix MCP 写操作必须经过明确用户审批。
  • 协议适配以本机 Codex 生成的 App Server schema 和 capability negotiation 为准。

Success criteria

  • App Server 成为 Codex 交互式会话的默认运行时。
  • 支持 Thread/Turn 生命周期、运行中 steering 与 interrupt。
  • UI 能结构化展示消息、Reasoning、计划、命令、文件 Diff 和 MCP 调用。
  • 命令、文件修改、权限升级和用户输入请求可在 Flowix 内审批。
  • 可在 Flowix 内查看 Codex 账户、用量、模型、配置、Skills 和 MCP 状态。
  • Codex 能通过 MCP 安全读取和修改 Flowix 笔记。
  • App Server 模式不再依赖 Codex 私有历史文件格式。

Roadmap

计划使用 GitHub 原生 Sub-issues 跟踪以下六个阶段:

Maintainer action required: 当前 Issue 作者在上游仓库没有 triage/write
权限,GitHub API 不允许其建立原生 Sub-issue 关系。维护者可在本 Issue
Create sub-issue / Add existing issue 中依次选择以上六个 Issue,
即可将现有互链清单转换为原生父子关系和进度展示。请同时为
#15#16#18#19#20#21#22 添加 enhancement 标签;当前
Issue 作者没有上游标签管理权限。

每个子 Issue 对应一个独立 feat/codex-* 分支和一个 PR。

Non-goals

  • 首版不提供远程 App Server、WebSocket 或多机连接。
  • 首版不移除现有 codex exec 回退。
  • 不在本 Issue 中实现任何具体阶段;实现由各 Sub-issue 独立交付。

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