# 任务链架构

> 更新：2026-05-28 | codex

## 链路图

```
你（飞书私信）
  │
  ├─→ 我（总指挥 / DeepSeek / OpenClaw）
  │     │
  │     ├─→ 直接处理（简单操作）
  │     │
  │     └─→ POST /enqueue → exec-bridge (:3461)
  │               │
  │               ├─→ routeEngine / 显式 engine
  │               │     ├─→ codex → app-server (:3460) → Codex WS
  │               │     ├─→ claude → Claude CLI（DeepSeek 后端）
  │               │     ├─→ codex-cli → Codex CLI
  │               │     └─→ cursor → Cursor Agent
  │               │
  │               ├─→ pushLiveChunk → task-monitor (:3455)
  │               │     ├─→ 实时日志面板
  │               │     └─→ 开始/完成卡片（应用身份，唯一源）
  │               │
  │               └─→ callback → callback-agent (:3463)
  │                     ├─→ 用户身份唤醒消息
  │                     ├─→ 写入/恢复任务结果
  │                     └─→ AgentFlow 自动推进下一阶段
```

## 各服务详情

### exec-bridge (:3461)
- 路径：~/Desktop/codex-projects/exec-bridge.mjs
- 职责：任务接收、引擎路由、队列管理、状态持久化、live push、完成回调
- 状态文件：.exec-bridge-state/tasks.json
- 路由来源：显式 `engine` 优先；未指定时使用 `routeEngine(message)`

### app-server (:3460)
- 路径：~/Desktop/codex-projects/app-server.mjs
- 职责：Codex WS 接入层，连接 Codex Desktop App
- 使用场景：Codex Pro 引擎任务、长上下文代码生成、多文件实现

### task-monitor (:3455)
- 路径：~/Desktop/codex-projects/task-monitor/task-monitor.mjs
- 职责：卡片发送（唯一源）、实时监控、24h历史持久化
- 前端：~/Desktop/codex-projects/task-monitor/public/live.html
- 通知身份：应用身份发送开始/完成卡片

### callback-agent (:3463)
- 路径：~/Desktop/codex-projects/callback-agent.mjs
- 职责：用户身份唤醒 + AgentFlow 自动推进
- 工作方式：收到 exec-bridge 完成回调后，持久化结果，向用户发送唤醒消息；若任务属于 AgentFlow，则检查 project.json 并投递下一阶段
- 卡片职责已移除（由 task-monitor 统一负责）

### task-notifier (:3462) [已停用]
- 代码保留，不再自动启动
- 卡片通知职责已迁移到 task-monitor
- 可通过 TASK_NOTIFIER_FORCE_START=1 用于调试

### 卡片通知链路（当前）
- task-monitor 统一发开始/完成卡片（应用身份）
- callback-agent 只发唤醒消息（用户身份）
- task-notifier 已停用，不作为生产链路

## 实际 4 引擎路由规则

来源：~/Desktop/codex-projects/exec-bridge.mjs 的 `routeEngine(message)` 与 `isReviewTask(text)`。

| 优先级 | 规则 | 结果 |
|:----:|------|:----:|
| 1 | 文本包含：简单编辑、文本处理、小改 | cursor |
| 2 | 文本是审查任务：审查、评审、复核、代码审查、质量门禁、只审查不改、结论必须是 pass、retry/fail、code review、review report 等 | claude |
| 3 | 文本包含：重构、新功能、代码生成、实现 | codex-cli |
| 4 | 文本包含：重构、新功能、跨文件、架构、实现、修复复杂、前端、UI、React、Three、Canvas、数据库、migration、并发、安全、测试覆盖、方案、design、refactor、feature、architecture、multi-file、complex | codex |
| 5 | 文本包含：读、查看、列出、搜索、定位、解释、总结、跑测试、执行测试、检查实现、检查修改、风险点、找问题、git status、git diff、改配置、单文件、检查日志、grep、cat、ls、read、list、search、summarize、explain、config、test、status、diff | claude |
| 6 | 消息长度 < 500 字符 | claude |
| 7 | 默认兜底 | codex |

## 显式路由建议
| 引擎 | 推荐场景 | 特点 |
|:----:|----------|------|
| codex | 重构/新功能/多文件/UI/React/复杂修复 | 最长上下文，默认兜底 |
| claude | 读/查看/搜索/解释/小改/代码审查/测试执行 | 轻量，DeepSeek 后端 |
| codex-cli | 脚本化代码生成/自动化任务 | 无 GUI |
| cursor | 简单编辑/文本处理 | 启动最快，单槽全局 |

## 相关端口一览
| 端口 | 服务 | 机器 | 用途 |
|:----:|------|:----:|------|
| 3455 | task-monitor | 本地 Mac | 卡片发送 + 实时监控 |
| 3460 | app-server | 本地 Mac | Codex WS 引擎入口 |
| 3461 | exec-bridge | 本地 Mac | 任务队列 + 4 引擎调度 |
| 3463 | callback-agent | 本地 Mac | 用户唤醒 + AgentFlow 推进 |
| 19999 | Decodo 代理 | 阿里云 HK | 境外 AI API 出口 |
| 3097 | rescue-api | 阿里云 HK | 一键救援 |
| 19922 | SSH 反向隧道 | 阿里云 HK | HK→Mac 救援通道 |
| 80/443 | Nginx | 腾讯云 | ssjsuperai.xyz 主站 |
| 3022 | buy-sell-signals | 腾讯云 | 买卖点信号 |
| 13456 | Claude 桥 | 腾讯云 | 飞书→Claude 消息中继 |

## 相关端口一览
| 端口 | 服务 | 机器 | 用途 |
|:----:|------|:----:|------|
| 3455 | task-monitor | 本地 Mac | 卡片发送 + 实时监控 |
| 3460 | app-server | 本地 Mac | Codex WS 引擎入口 |
| 3461 | exec-bridge | 本地 Mac | 任务队列 + 4 引擎调度 |
| 3463 | callback-agent | 本地 Mac | 用户唤醒 + AgentFlow 推进 |
| 19999 | Decodo 代理 | 阿里云 HK | 境外 AI API 出口 |
| 3097 | rescue-api | 阿里云 HK | 一键救援 |
| 19922 | SSH 反向隧道 | 阿里云 HK | HK→Mac 救援通道 |
| 80/443 | Nginx | 腾讯云 | ssjsuperai.xyz 主站 |
| 3022 | buy-sell-signals | 腾讯云 | 买卖点信号 |
| 13456 | Claude 桥 | 腾讯云 | 飞书→Claude 消息中继 |
