123 lines
4.1 KiB
Markdown
123 lines
4.1 KiB
Markdown
# XWorkmate Codex 集成实际状态
|
||
|
||
更新时间:2026-03-14
|
||
|
||
## 当前结论
|
||
|
||
XWorkmate 当前唯一可交付的 Codex 集成路径是 **External Codex CLI**。
|
||
|
||
当前已落地的真实链路:
|
||
|
||
1. 用户在 `设置 > 集成 > AI Gateway > 工具` 显式启用 Bridge。
|
||
2. XWorkmate 通过 `CodexConfigBridge` 写入 `~/.codex/config.toml`,把 AI Gateway 暴露给 Codex。
|
||
3. XWorkmate 通过 `CodexRuntime.startStdio()` 拉起外部 `codex app-server --listen stdio://`。
|
||
4. XWorkmate 通过 `CodeAgentNodeOrchestrator` 生成 app-mediated node dispatch metadata,并在 `chat.send` 时发送给 OpenClaw Gateway。
|
||
5. 如果 OpenClaw Gateway 已连接,XWorkmate 会执行一次 `agent/register`,把自己注册为协同 `code-agent-bridge`。
|
||
|
||
这意味着当前架构是 **app-mediated RPC bridge**,不是 `Codex CLI` 和 `OpenClaw Gateway` 直接互连。
|
||
|
||
## 已完成
|
||
|
||
### 1. External Codex CLI 协同模式
|
||
|
||
- `SettingsSnapshot.codeAgentRuntimeMode` 已加入持久化模型,默认值为 `externalCli`
|
||
- `SettingsSnapshot.codexCliPath` 已加入持久化模型,用于外部 Codex 二进制路径覆盖
|
||
- `AppController.enableCodexBridge()` 已改为显式执行完整链路:
|
||
- 校验 AI Gateway 配置
|
||
- 导出 Codex bridge 配置
|
||
- 启动外部 Codex CLI 进程
|
||
- Gateway 已连接时执行 `agent/register`
|
||
- `AppController.sendChatMessage()` 已不再直接裸调 Gateway chat,而是先构造 app-mediated node dispatch envelope
|
||
- Gateway 不可用时,Bridge 会降级为本地运行,外部 Codex 进程不会因为注册失败而被终止
|
||
- `AgentRegistry.register()` 已支持真实 `transport` metadata,不再把外部桥接伪装成固定 `in-process`
|
||
|
||
### 2. 外部 CLI 预留能力
|
||
|
||
- `RuntimeCoordinator` 继续维护 `ExternalCodeAgentProvider` registry
|
||
- `CodeAgentNodeOrchestrator` 已成为 App -> Gateway 的统一 dispatch metadata builder
|
||
- Codex 已通过同一套 provider surface 暴露:
|
||
- `id = codex`
|
||
- `command`
|
||
- `defaultArgs`
|
||
- capability metadata
|
||
|
||
当前仍然只有一个 active provider:`codex`。
|
||
|
||
### 3. UI 与 truth 收口
|
||
|
||
- Codex 区域已从“仅导出配置”改成 bridge control panel
|
||
- 界面现在展示:
|
||
- 运行时模式
|
||
- binary 检测状态
|
||
- 手动路径覆盖
|
||
- bridge 状态
|
||
- Gateway 协同注册状态
|
||
- `builtIn` 仍保留在 enum 中,但 UI 只显示为 `Experimental`
|
||
- 若用户选择 `builtIn`,设置会被保留,并以实验态提示风险
|
||
- Scheduled Tasks 页面明确为 `cron.list` 只读展示
|
||
- Memory 只表述为 `memory/sync` 同步能力,不宣传 CRUD
|
||
- OpenClaw Gateway 看到的是 `XWorkmate App node`,CLI 仍保持在 App 后端 runtime 边界内
|
||
|
||
## 未完成
|
||
|
||
### 1. Built-in Codex / Rust FFI
|
||
|
||
仍未完成,且当前不应作为已交付能力对外承诺。
|
||
|
||
现状:
|
||
|
||
- `rust/src/lib.rs` 仍保留消息发送和事件轮询 TODO
|
||
- `rust/src/runtime.rs` 仍保留进程启动和停止 TODO
|
||
- Flutter 侧的 `builtIn` 只是保留枚举位,不会实际走可用 FFI 路径
|
||
|
||
### 2. 其他外部 Provider 的通用选择与调度
|
||
|
||
当前只完成 registry 和 capability metadata 预留,没有做:
|
||
|
||
- provider chooser UI
|
||
- capability discovery UI
|
||
- 多 provider 调度策略
|
||
|
||
这些能力要等第二个真实 provider 落地后再补。
|
||
|
||
### 3. OpenClaw Tasks / Memory 深度能力
|
||
|
||
当前只到 truth-first 范围:
|
||
|
||
- Scheduled Tasks:`cron.list` 只读
|
||
- Memory:`memory/sync` only
|
||
|
||
当前没有:
|
||
|
||
- 创建 / 删除 cron job 的 UI
|
||
- 通用任务调度写接口
|
||
- 记忆的 store / retrieve / list / delete 产品化界面
|
||
|
||
## 当前架构
|
||
|
||
```mermaid
|
||
flowchart LR
|
||
X["XWorkmate App"] --> C["External Codex CLI\n(JSON-RPC over stdio)"]
|
||
C --> A["AI Gateway"]
|
||
X --> G["OpenClaw Gateway\n(WebSocket RPC)"]
|
||
X --> R["agent/register\ncode-agent-bridge"]
|
||
R --> G
|
||
X --> P["ExternalCodeAgentProvider Registry"]
|
||
```
|
||
|
||
## 交付判断
|
||
|
||
截至 2026-03-14,可对外宣称的能力只有:
|
||
|
||
- External Codex CLI bridge
|
||
- AI Gateway 模型桥接
|
||
- OpenClaw Gateway 协同注册
|
||
- External provider registry 预留
|
||
|
||
不能宣称的能力:
|
||
|
||
- Built-in Codex 已可用
|
||
- Rust FFI 已完成
|
||
- Scheduled Tasks 已支持增删改
|
||
- Memory 已支持完整 CRUD
|