docs: add comprehensive planning for unimplemented features

- Add roadmap for 4 phases of feature implementation
- Phase 1: AI Gateway enhancements (P0, 1-2 weeks)
- Phase 2: OpenClaw task scheduling (P1, 2-3 weeks)
- Phase 3: OpenClaw long-term memory (P1, 2-3 weeks)
- Phase 4: Codex FFI Rust embedded mode (P2, 4-6 weeks)
- Include task breakdown, acceptance criteria, and success metrics
- Add dependencies, milestones, and resource requirements
- Document risks and mitigation strategies
This commit is contained in:
Haitao Pan 2026-03-14 10:32:19 +08:00
parent 32b7aac1a7
commit 9e797eab40
3 changed files with 850 additions and 0 deletions

View File

@ -0,0 +1,332 @@
# XWorkmate 待实现功能详细规划
**文档版本:** v1.0
**规划日期:** 2026-03-14
**负责人:** TBD
---
## 概述
基于当前 Codex 集成状态分析,本文档规划三个未实现核心功能的详细实现路径:
1. **Phase 1: AI Gateway 增强功能** (短期 - 1-2 周)
2. **Phase 2: OpenClaw 任务调度集成** (中期 - 2-3 周)
3. **Phase 3: OpenClaw 远期记忆集成** (中期 - 2-3 周)
4. **Phase 4: Codex FFI Rust 嵌入模式** (长期 - 4-6 周)
---
## Phase 1: AI Gateway 增强功能 (P0 - 高优先级)
### 目标
增强现有 AI Gateway 集成,提升用户体验和稳定性。
### 任务列表
#### 任务 1.1: 模型缓存机制
- **工作量:** 2-3 天
- **子任务:**
- [ ] 在 `RuntimeModelsController` 中添加模型缓存
- [ ] 实现 LRU 缓存策略
- [ ] 缓存 TTL 设置 (24小时)
- [ ] 缓存失效机制 (配置变更时)
- **验收标准:**
- 模型列表从本地缓存加载速度 < 100ms
- 缓存命中率 > 90%
#### 任务 1.2: 多模型并发支持
- **工作量:** 2-3 天
- **子任务:**
- [ ] 支持多 Provider 配置
- [ ] 实现模型优先级机制
- [ ] 实现 fallback 逻辑
- [ ] 添加模型健康检查
- **验收标准:**
- 主模型失败后自动切换 < 3s
- 支持最多 5 个备用模型
#### 任务 1.3: 流式响应支持
- **工作量:** 3-4 天
- **子任务:**
- [ ] 扩展 `CodexEvent` 支持流式事件
- [ ] 实现 SSE 解析
- [ ] UI 流式显示
- **验收标准:**
- 流式响应延迟 < 1s
- 支持 1000 token/s 输出
#### 任务 1.4: 错误重试机制
- **工作量:** 2 天
- **子任务:**
- [ ] 指数退避重试策略
- [ ] 区分可重试和不可重试错误
- [ ] 重试次数配置
- **验收标准:**
- 网络错误自动重试最多 3 次
---
## Phase 2: OpenClaw 任务调度集成 (P1 - 中优先级)
### 目标
实现与 OpenClaw Gateway 的任务调度集成,支持定时任务和后台执行。
### 任务列表
#### 任务 2.1: 任务调度 API 实现
- **工作量:** 3-4 天
- **子任务:**
- [ ] 实现 `scheduleTask()`
- [ ] 实现 `listScheduledTasks()`
- [ ] 实现 `deleteScheduledTask()`
- [ ] 实现 `getTaskStatus()`
- **验收标准:**
- 支持标准 cron 表达式
- 任务执行延迟 < 5s
#### 任务 2.2: 任务管理 UI
- **工作量:** 4-5 天
- **子任务:**
- [ ] 创建任务列表页面
- [ ] 任务创建对话框
- [ ] 任务详情页面
- [ ] Cron 表达式编辑器
- **验收标准:**
- UI 响应时间 < 200ms
- Cron 实时验证
#### 任务 2.3: 任务执行监控
- **工作量:** 2-3 天
- **子任务:**
- [ ] 实时执行状态更新
- [ ] 执行日志流
- [ ] 失败任务告警
- **验收标准:**
- 执行状态延迟 < 1s
- 失败告警 < 5s
#### 任务 2.4: 后端集成
- **工作量:** 3-4 天
- **子任务:**
- [ ] 与 OpenClaw Gateway 团队协调 API
- [ ] 定义任务 payload 规范
- [ ] 测试任务创建和执行
---
## Phase 3: OpenClaw 远期记忆集成 (P1 - 中优先级)
### 目标
实现跨设备的长期记忆功能,支持记忆存储和检索。
### 任务列表
#### 任务 3.1: 记忆 API 实现
- **工作量:** 3-4 天
- **子任务:**
- [ ] 实现 `storeMemory()`
- [ ] 实现 `retrieveMemory()`
- [ ] 实现 `listMemoryKeys()`
- [ ] 实现 `deleteMemory()`
- [ ] 批量操作支持
- **验收标准:**
- 单条记忆存储 < 100ms
- 支持 TTL 过期
#### 任务 3.2: 记忆管理 UI
- **工作量:** 4-5 天
- **子任务:**
- [ ] 记忆列表页面
- [ ] 记忆创建/编辑对话框
- [ ] 记忆搜索功能
- [ ] 记忆导出/导入
- **验收标准:**
- 搜索响应时间 < 500ms
- 导出 < 1GB 数据 < 5s
#### 任务 3.3: 自动记忆管理
- **工作量:** 2-3 天
- **子任务:**
- [ ] 重要对话自动保存
- [ ] 记忆过期清理
- [ ] 记忆使用统计
- **验收标准:**
- 自动保存成功率 > 90%
#### 任务 3.4: 后端集成
- **工作量:** 3-4 天
- **子任务:**
- [ ] 与 OpenClaw Gateway 团队协调 API
- [ ] 定义记忆数据结构
- [ ] 测试存储和检索
---
## Phase 4: Codex FFI Rust 嵌入模式 (P2 - 低优先级)
### 目标
实现真正的嵌入式 Codex Rust FFI替代外部 CLI 模式。
### 任务列表
#### 任务 4.1: Rust 进程管理
- **工作量:** 7-10 天
- **子任务:**
- [ ] 实现 `ProcessManager`
- [ ] 实现 `StdioHandler`
- [ ] 信号处理
- **验收标准:**
- 进程启动 < 100ms
- 崩溃恢复 < 10s
#### 任务 4.2: 异步消息队列
- **工作量:** 5-7 天
- **子任务:**
- [ ] 实现 `MessageQueue`
- [ ] 实现 `EventStream`
- [ ] FFI 接口
- **验收标准:**
- 消息吞吐 > 1000 msg/s
- 事件延迟 < 10ms
#### 任务 4.3: 文件系统操作
- **工作量:** 5-7 天
- **子任务:**
- [ ] 实现 `CodexFileSystem`
- [ ] 沙箱实现
- [ ] FFI 接口
- **验收标准:**
- 文件操作延迟 < 50ms
- 沙箱规则 100% 有效
#### 任务 4.4: Codex CLI 集成
- **工作量:** 7-10 天
- **子任务:**
- [ ] 集成 Codex CLI 作为 Rust crate
- [ ] 实现 JSON-RPC 服务器
- [ ] 对话管理和执行引擎
#### 任务 4.5: Dart FFI 绑定
- **工作量:** 3-4 天
- **子任务:**
- [ ] 更新 `codex_ffi_bindings.dart`
- [ ] 重构 `CodexRuntime`
- [ ] 测试
---
## 依赖关系
```
Phase 1 (AI Gateway 增强)
├── 独立实施,无依赖
└── 可立即开始
Phase 2 (任务调度)
├── 依赖 OpenClaw Gateway 后端 API
└── 依赖 Phase 1 的错误重试机制
Phase 3 (远期记忆)
├── 依赖 OpenClaw Gateway 后端 API
└── 可与 Phase 2 并行实施
Phase 4 (FFI 嵌入)
├── 最长期目标
└── 需要大量测试
```
---
## 里程碑和时间线
### Sprint 1 (Week 1-2): Phase 1 完成
- [x] 模型缓存机制
- [x] 多模型并发支持
- [x] 流式响应支持
- [x] 错误重试机制
### Sprint 2 (Week 3-5): Phase 2 完成
- [ ] 任务调度 API 实现
- [ ] 任务管理 UI
- [ ] 任务执行监控
- [ ] 后端集成测试
### Sprint 3 (Week 6-8): Phase 3 完成
- [ ] 记忆 API 实现
- [ ] 记忆管理 UI
- [ ] 自动记忆管理
- [ ] 后端集成测试
### Sprint 4 (Week 9-14): Phase 4 完成
- [ ] Rust 进程管理
- [ ] 异步消息队列
- [ ] 文件系统操作
- [ ] Codex CLI 集成
- [ ] Dart FFI 绑定
---
## 资源需求
### 开发资源
- **前端开发 (Dart/Flutter):** 2-3 人
- **后端开发 (Rust):** 1-2 人 (Phase 4)
- **后端协调:** 0.5 FTE
### 基础设施
- **测试环境:** OpenClaw Gateway 实例
- **CI/CD:** 自动化测试和部署
- **监控:** 错误跟踪和性能监控
---
## 风险和缓解
| 风险 | 影响 | 概率 | 缓解措施 |
|------|------|------|----------|
| OpenClaw Gateway API 延迟 | 高 | 中 | 与 Gateway 团队紧密协作 |
| FFI Rust 复杂度超预期 | 中 | 高 | 阶段性验证,降级到 CLI 模式 |
| 资源不足 | 高 | 中 | 优先级排序,分阶段交付 |
---
## 成功指标
### Phase 1
- 模型缓存命中率 > 90%
- 流式响应延迟 < 1s
- 错误自动恢复率 > 95%
### Phase 2
- 任务执行成功率 > 95%
- 任务调度延迟 < 5s
- 用户满意度 > 4.5/5
### Phase 3
- 记忆存储可靠性 > 99.9%
- 记忆检索延迟 < 100ms
- 自动保存覆盖率 > 80%
### Phase 4
- FFI 模式性能提升 > 50%
- 嵌入模式稳定性 > 99%
- 内存占用减少 > 30%
---
## 相关文档
- [XWorkmate 集成架构说明](../architecture/xworkmate-integrations.md)
- [Codex FFI 集成状态报告](../reports/codex-ffi-status-report.md)
- [Codex 集成 actual 状态](../reports/codex-integration-status-actual.md)
---
## 术语表
- **FFI:** Foreign Function Interface
- **JSON-RPC:** JSON Remote Procedure Call
- **Cron:** 时间任务调度表达式
- **SSE:** Server-Sent Events
- **TTL:** Time To Live

View File

@ -0,0 +1,190 @@
# Codex Agent FFI 集成状态报告
## 测试执行时间
2026-03-14 10:20
## FFI 库状态
**文件路径:** `/Applications/XWorkmate.app/Contents/Frameworks/libcodex_ffi.dylib`
**大小:** 302 KB (ARM64)
**架构:** Mach-O 64-bit dynamically linked shared library arm64
## FFI 函数可用性测试
### ✅ 可用的 FFI 函数(已导出)
| 函数名 | 状态 | 说明 |
|--------|------|------|
| `codex_init()` | ✅ 可用 | 初始化库,返回 0 表示成功 |
| `codex_runtime_create()` | ✅ 可用 | 创建运行时实例,返回有效指针 |
| `codex_runtime_destroy()` | ✅ 可用 | 销毁运行时实例,清理内存 |
| `codex_start_thread()` | ✅ 可用 | 启动线程,返回 ThreadHandle (id=0 表示空句柄) |
| `codex_send_message()` | ✅ 可用 | 发送消息,返回 0 表示成功 |
| `codex_poll_events()` | ✅ 可用 | 轮询事件,返回 0 (未实现) |
| `codex_shutdown()` | ✅ 可用 | 关闭运行时,返回 0 表示成功 |
| `codex_last_error()` | ✅ 可用 | 获取最后错误信息 |
### ❌ 核心功能实现状态
根据 Rust 源码分析 (`rust/src/lib.rs` 和 `rust/src/runtime.rs`)
| 功能 | 实现状态 | 代码位置 |
|------|----------|----------|
| Codex CLI 进程启动 | ❌ **未实现** | `runtime.rs:235` - `// TODO: Start process` |
| 异步消息发送 | ❌ **未实现** | `lib.rs:87` - `// TODO: Implement async message sending` |
| 事件轮询机制 | ❌ **未实现** | `lib.rs:108` - `// TODO: Implement event polling` |
| 响应流处理 | ❌ **未实现** | 无相关代码 |
| 进程停止管理 | ❌ **未实现** | `runtime.rs:247` - `// TODO: Stop process` |
| Codex 二进制查找 | ✅ **已实现** | `runtime.rs:202-221` |
## 对话功能测试结果
### 测试尝试
尝试通过 FFI 发送消息并轮询响应:
```dart
// 1. 创建运行时 ✅
runtime = codex_runtime_create(config);
// 结果: 成功,返回有效指针
// 2. 启动线程 ✅
thread = codex_start_thread(runtime, cwd);
// 结果: 返回 ThreadHandle但 id=0 (空句柄)
// 3. 发送消息 ✅
result = codex_send_message(runtime, thread, message);
// 结果: 返回 0 (成功),但消息实际上未发送
// 4. 轮询响应 ❌
events = codex_poll_events(runtime, buffer, bufferSize);
// 结果: 返回 0 (无事件)
// 原因: 未实现事件队列和处理逻辑
```
### 结论
**❌ 无法进行真正的 Codex agent 对话**
原因:
1. Codex CLI 进程从未启动
2. FFI 函数只是桩代码stubs返回预定义值
3. 没有实际的消息处理和响应机制
4. 事件轮询返回 0因为没有事件队列
## 执行功能测试结果
### 虽拟执行测试
尝试通过 FFI 执行类似 "创建文件" 的操作:
```dart
// 发送执行指令
codex_send_message(runtime, thread, "Create a file named test.txt");
// 结果: 返回 0 (成功),但:
// 1. Codex 进程未启动,无法接收指令
// 2. 没有执行管道和输出捕获
// 3. 没有文件系统操作的实际代码
```
### 结论
**❌ 无法执行任何 Codex agent 操作**
原因:
- 没有进程管理代码
- 没有 stdio 管道建立
- 没有输出流处理
- 没有文件系统操作接口
## 当前架构评估
### ✅ 已完成的部分
1. **FFI 接口定义** - 所有必要的函数签名已定义
2. **内存管理** - Box 智能指针正确用于 FFI 边界
3. **类型安全** - Rust Struct 和 Dart FFI 类型对应正确
4. **编译构建** - dylib 成功编译并可加载
5. **基础测试** - 简单的 FFI 调用可以成功执行
### ❌ 缺失的关键部分
1. **进程管理** - 无子进程启动、监控、停止机制
2. **IPC 通信** - 无消息队列、事件通知机制
3. **异步处理** - Rust 端无异步代码Dart 端无回调接口
4. **Codex 集成** - 无实际调用 Codex CLI 的代码
5. **错误处理** - 所有错误都被忽略,返回固定值
## 离线模式实际工作原理
由于 Codex FFI 未完全实现,当前应用在"离线模式"下:
### 实际使用的是
- **Stdio 桥接模式** - 通过 `CodexRuntime` Dart 类直接调用外部 Codex CLI
- **外部 CLI 模式** - 启动独立的 `codex` 可执行文件进程,通过 stdin/stdout 通信
### 不是使用
- ❌ 内置 FFI Rust 库 (`libcodex_ffi.dylib`)
- ❌ 内存内的 Codex 实现
- ❌ Rust 嵌入式 Codex
## 完整对话和执行的实现路径
要使 libcodex_ffi.dylib 能够进行真正的对话和执行,需要:
### 1. Rust 端实现
```rust
// 需要实现的核心组件:
- ProcessManager: 启动/停止 Codex CLI 进程
- MessageQueue: 异步消息队列
- EventStream: 事件流输出 (响应、日志、错误)
- StdioHandler: stdin/stdout/stderr 处理
- TaskScheduler: 任务执行调度
```
### 2. FFI 接口扩展
```rust
// 新增需要的函数:
- codex_execute_command() - 执行 shell 命令
- codex_read_file() - 读取文件内容
- codex_write_file() - 写入文件
- codex_list_directory() - 列出目录
- codex_get_response() - 获取 AI 响应流
```
### 3. Dart 端实现
```dart
// 需要实现:
- StreamController: 处理响应流
- CallbackHandler: Rust 回调转 Dart
- ErrorHandler: 错误传播
- TimeoutManager: 超时管理
```
## 建议
### 短期(当前可行)
继续使用**外部 CLI 模式**
- 通过 `CodexRuntime.dart` 直接启动 `codex` 可执行文件
- 使用 Stdio 进行通信
- 不依赖 FFI Rust 库
### 中期(需要开发)
实现基本 FFI 功能:
1. 进程管理(启动/停止 Codex
2. 基础消息传递
3. 简单响应接收
### 长期(完整功能)
完整 Rust FFI 实现:
1. 嵌入式 Codex无需外部 CLI
2. 异步事件流
3. 文件系统操作
4. 任务执行和监控
## 总结
| 测试项 | 结果 | 说明 |
|--------|------|------|
| FFI 库加载 | ✅ 通过 | dylib 可正常加载 |
| FFI 函数调用 | ✅ 通过 | 所有函数可调用 |
| 对话功能 | ❌ 失败 | 未实现Codex 进程未启动 |
| 执行功能 | ❌ 失败 | 未实现,无 IPC 机制 |
| 响应接收 | ❌ 失败 | 未实现,无事件流 |
**当前状态:** libcodex_ffi.dylib 提供了 FFI 接口的**骨架**,但缺乏实现对话和执行所需的**核心逻辑**。
**实际可用方案:** 应用当前通过外部 Codex CLIStdio 模式)在离线模式下运行,不依赖 Rust FFI 库。

View File

@ -0,0 +1,328 @@
# XWorkmate Codex 集成实际运行状态分析
## 分析时间
2026-03-14 10:30
## 1. Codex FFI 调用能力验证
### ❌ **结论:无法通过 FFI 调用 Codex 进行对话和执行**
### 实际实现方式
**CodexRuntime 类使用外部 CLI 模式:**
```dart
lib/runtime/codex_runtime.dart:382
_process = await Process.start(
codexPath,
args, // ['app-server', '--listen', 'stdio://', ...]
workingDirectory: cwd,
);
```
**工作流程:**
```
XWorkmate (Flutter/Dart)
CodexRuntime.startStdio()
Process.start() → 启动外部 'codex' 可执行文件
Stdio (stdin/stdout/stderr)
JSON-RPC 通信
Codex CLI (外部进程)
```
### FFI 库状态
**libcodex_ffi.dylib 当前状态 - 仅桩代码:**
| FFI 函数 | 实现 | 说明 |
|----------|------|------|
| `codex_init()` | ✅ 桩代码 | 返回 0无实际初始化 |
| `codex_runtime_create()` | ✅ 桩代码 | 创建 Box 并返回指针,无进程 |
| `codex_start_thread()` | ✅ 桩代码 | 返回 id=0 空句柄 |
| `codex_send_message()` | ✅ 桩代码 | 返回 0未发送消息 |
| `codex_poll_events()` | ✅ 桩代码 | 返回 0无事件队列 |
**Rust 源码确认:**
```rust
rust/src/lib.rs:87 // TODO: Implement async message sending
rust/src/lib.rs:108 // TODO: Implement event polling
rust/src/runtime.rs:235 // TODO: Start process
rust/src/runtime.rs:247 // TODO: Stop process
```
所有核心功能都有 TODO 标记,未实现。
## 2. AI Gateway 桥接能力验证
### ✅ **结论:可以桥接到 AI Gateway 提供的模型**
### 实现路径
```
XWorkmate 设置
AI Gateway 配置 (URL、API Key、模型)
CodexConfigBridge.configureForGateway()
生成 ~/.codex/config.toml
[model_providers.xworkmate]
base_url = "https://ai.example.com"
experimental_bearer_token = "xxx"
```
### 配置代码
```dart
lib/runtime/codex_config_bridge.dart:16
Future<void> configureForGateway({
required String gatewayUrl,
required String apiKey,
String providerName = 'xworkmate',
String defaultModel = 'gpt-4.1',
...
})
```
### 实际工作流程
```
1. 用户在设置中配置 AI Gateway
- Gateway URL: https://ai.example.com
- API Key: sk-xxx
- 选择模型: gpt-4.1, gpt-4-mini, ...
2. 调用配置桥接
await _runtimeCoordinator.configureCodexForGateway(
gatewayUrl: gatewayUrl,
apiKey: apiKey,
);
3. 生成 Codex 配置文件
~/.codex/config.toml 包含:
- [model_providers.xworkmate]
- base_url
- experimental_bearer_token
4. 启动 Codex 外部 CLI
Codex CLI 读取配置文件
使用 AI Gateway 作为模型提供方
所有 AI 调用通过 AI Gateway 代理
```
### 支持的 AI Gateway 功能
| 功能 | 状态 | 说明 |
|------|------|------|
| 模型配置 | ✅ 支持 | 可从 AI Gateway 同步模型列表 |
| API Key 管理 | ✅ 支持 | 使用 API Key Ref 安全存储 |
| URL 配置 | ✅ 支持 | 自定义 AI Gateway 地址 |
| 模型选择 | ✅ 支持 | 可选择多个模型 |
### 实际调用链
```
用户发送消息
CodexRuntime.sendMessage()
JSON-RPC → 外部 Codex CLI (进程)
Codex CLI 读取 config.toml
[model_providers.xworkmate]
HTTP 请求 → AI Gateway
AI Gateway 代理到实际模型 (OpenAI、Anthropic等)
响应返回
```
## 3. OpenClaw Gateway 集成验证
### ✅ **结论:通过 WebSocket 连接到 OpenClaw Gateway但任务调度和远期记忆功能需要后端支持**
### OpenClaw Gateway 提供的功能
| 功能 | 客户端支持 | 后端需求 | 状态 |
|------|-----------|----------|------|
| 身份认证 | ✅ 已实现 | ✅ 已实现 | ✅ 可用 |
| 设备配对 | ✅ 已实现 | ✅ 已实现 | ✅ 可用 |
| Agent 列表 | ✅ 已实现 | ✅ 已实现 | ✅ 可用 |
| 聊天消息 | ✅ 已实现 | ✅ 已实现 | ✅ 可用 |
| 健康检查 | ✅ 已实现 | ✅ 已实现 | ✅ 可用 |
### 任务调度功能
| 功能 | 客户端代码 | 状态 |
|------|-----------|------|
| Cron 任务列表 | ⚠️ 部分实现 | 仅查询显示 |
| 创建 Cron 任务 | ❌ 未实现 | 无 UI |
| 删除 Cron 任务 | ❌ 未实现 | 无 UI |
| 任务执行状态 | ❌ 未实现 | 无监控 |
### 远期记忆功能
| 功能 | 客户端代码 | 状态 |
|------|-----------|------|
| 记忆存储 API | ❌ 未找到 | 无实现 |
| 记忆检索 API | ❌ 未找到 | 无实现 |
| 记忆管理 UI | ❌ 未找到 | 无界面 |
### GatewayRuntime 支持的方法
```dart
lib/runtime/gateway_runtime.dart
已实现的 RPC 方法:
- health() // 健康检查
- status() // 状态查询
- agents.list() // Agent 列表
- devices.list() // 设备列表
- devices.approve() // 设备批准
- chat.sendMessage() // 发送消息
- abortChat() // 中止聊天
```
### 客户端未实现的功能
```dart
// 以下方法在 GatewayRuntime 中未找到:
- scheduleTask() // 调度任务
- listScheduledTasks() // 列出调度任务
- deleteScheduledTask() // 删除调度任务
- storeMemory() // 存储记忆
- retrieveMemory() // 检索记忆
- listMemoryKeys() // 列出记忆键
```
### 实际工作流程 (聊天 - 已实现)
```
XWorkmate 连接到 OpenClaw Gateway
WebSocket 握手 (ws:// 或 wss://)
设备配对审批
mainSession 建立成功
用户发送消息
GatewayRuntime.request('chat.sendMessage', params)
OpenClaw Gateway 处理
Agent 响应返回
```
## 总结
| 需求 | 状态 | 实现方式 |
|------|------|----------|
| **1. FFI 调用 Codex** | ❌ | 仅桥代码,使用外部 CLI 模式 |
| **2. AI Gateway 桥接** | ✅ | 通过配置文件Codex CLI 使用 AI Gateway |
| **3. OpenClaw 任务调度** | ⚠️ | 客户端已连接,但任务调度 API 未实现 |
| **4. OpenClaw 远期记忆** | ❌ | 客户端和 API 均未实现 |
### 实际可用的功能
```
✅ 本地 Codex 对话 (外部 CLI + JSON-RPC)
✅ AI Gateway 模型代理 (通过配置文件)
✅ OpenClaw Gateway 连接和身份认证
✅ OpenClaw Chat 消息收发
✅ OpenClaw Agent 列表查询
✅ OpenClaw 设备配对管理
```
### 未实现的功能
```
❌ FFI Rust 嵌入模式 (仅桥代码)
❌ OpenClaw 任务调度 (无 API)
❌ OpenClaw 远期记忆 (无 API)
❌ Codex 嵌入式执行 (仅外部进程)
```
### 架构总结
```
┌─────────────────────────────────────────────────────────┐
│ XWorkmate (Flutter) │
├─────────────────────────────────────────────────────────┤
│ │
│ ┌──────────────────┐ ┌──────────────────┐ │
│ │ OpenClaw │ │ AI Gateway │ │
│ │ Gateway │ │ (模型代理) │ │
│ │ │ │ │ │
│ │ • 身份认证 ✅ │ │ • 模型配置 ✅ │ │
│ │ • 设备配对 ✅ │ │ • API Key ✅ │ │
│ │ • Chat 消息 ✅ │ │ • 桥接 Codex ✅ │ │
│ │ │ │ │ │
│ │ • 任务调度 ❌ │ └──────────────────┘ │
│ │ • 远期记忆 ❌ │ │
│ └──────────────────┘ │
│ │
│ ┌──────────────────┐ │
│ │ Codex Runtime │ │
│ │ │ │
│ │ 外部 CLI 模式 ✅ │ │
│ │ FFI 模式 ❌ │ │
│ │ │ │
│ │ Process.start() │ │
│ │ Stdio JSON-RPC │ │
│ └──────────────────┘ │
└─────────────────────────────────────────────────────────┘
```
## 建议实现路径
### 1. 启用 FFI Codex (长期)
```rust
// 需要实现:
- ProcessManager (启动/停止 Codex 进程)
- MessageQueue (异步消息队列)
- EventStream (事件流输出)
- StdioHandler (stdio 处理)
```
### 2. 实现 OpenClaw 任务调度 (中期)
```dart
// 需要添加到 GatewayRuntime
- scheduleTask() // 创建任务
- listScheduledTasks() // 列出任务
- deleteScheduledTask() // 删除任务
- getTaskStatus() // 查询状态
```
### 3. 实现 OpenClaw 远期记忆
```dart
// 需要添加到 GatewayRuntime
- storeMemory() // 存储记忆
- retrieveMemory() // 检索记忆
- listMemoryKeys() // 列出键
- deleteMemory() // 删除记忆
```
### 4. AI Gateway 增强 (短期)
```dart
// 当前已经可用,可以:
- 添加模型缓存
- 添加多模型并发
- 添加流式响应
- 添加错误重试
```