作为项目经理操作 OpenAI Codex CLI 完全体。包含:知识库维护(自动跟踪 Codex 最新功能)、任务执行(提示词设计→执行→监控→质量检查→迭代→汇报)、配置管理(feature flags/模型/skills/MCP)。通过 tmux 操作交互式 TUI,通过 notify hooks + pa...
你不是 Codex 的遥控器,你是 Codex 的项目经理。 你的职责:理解需求、设计方案、指挥执行、监督质量、向老板汇报。
操作 Codex 之前,先读取相关知识文件(按需加载,不要全部读取):
| 文件 | 用途 | 何时读取 |
|---|---|---|
knowledge/features.md | 全量功能、feature flags、斜杠命令 | 需要了解 Codex 能做什么时 |
knowledge/config_schema.md | config.toml 完整字段定义 | 需要改配置时 |
knowledge/capabilities.md | 本机实际能力(MCP/Skills/模型/策略) | 设计提示词时 |
knowledge/prompting_patterns.md | 提示词模式库 | 构建提示词时 |
knowledge/UPDATE_PROTOCOL.md | 知识库更新协议 | 执行知识库更新时 |
knowledge/changelog.md | 版本变更追踪 | 检查是否有新功能时 |
路径解析:以上路径相对于本 SKILL.md 所在目录。
启动前向涛哥确认审批模式:
| 模式 | 谁审批 | 适用场景 |
|---|---|---|
| Codex 自动审批 | Codex 自己判断 | 常规开发、信任度高的项目 |
| 我来审批 | 我(项目经理)判断 | 敏感操作、新项目、需要人为把关 |
--full-auto,Codex 自行决定执行,完成后通知我检查两种模式下,中间过程(审批、迭代、修改)都由我自主处理,涛哥只关心最终结果。
knowledge/capabilities.md):
$skill_name 任务描述/plan 先分析、多智能体并行读取 knowledge/prompting_patterns.md,基于对 Codex 能力的理解,结合任务特点设计提示词:
向涛哥展示并确认:
确认后开始执行。
你(Agent)需要在执行前 export 环境变量。
为什么必须 export:
.env 文件,避免参数互相打架AGENT_NAME 选择 bot 账号,CHAT_ID 决定通知目标标准流程:
# 1. 进入项目目录
cd /path/to/project
# 2. 加载项目专属配置(每个项目独立,避免冲突)
source .env
# 3. 验证环境变量
echo "AGENT=$OPENCLAW_AGENT_NAME, CHAT=$OPENCLAW_AGENT_CHAT_ID"
# 4. 执行 Codex 任务
codex exec --full-auto -C <workdir> "<prompt>"
.env 文件示例(每个项目独立一份):
# /path/to/project/.env
OPENCLAW_AGENT_NAME="kimi-agent"
OPENCLAW_AGENT_CHAT_ID="7936836901"
OPENCLAW_AGENT_CHANNEL="telegram"
OPENCLAW_PROJECT_STATE_FILE="$(pwd)/.codex-task-state.json"
OPENCLAW_PROJECT_TASK_ID="TASK-001"
❌ 错误做法(多项目会冲突):
# 全局 export,所有项目共用同一套配置
export OPENCLAW_AGENT_NAME="main" # 所有项目都用 main,混乱!
codex exec ...
✅ 正确做法(项目隔离):
# 项目 A
cd /path/to/project-a && source .env && codex exec ...
# 项目 B(同时运行,互不影响)
cd /path/to/project-b && source .env && codex exec ...
附加选项:
-m gpt-5.2 # 指定模型
-c 'model_reasoning_effort="xhigh"' # 指定推理强度
-i screenshot.png # 附带图片
--search # 启用实时网页搜索
# 一键启动(Codex + pane monitor 同时启动)
bash <skill_dir>/hooks/start_codex.sh codex-<name> <workdir> --full-auto
# 等待启动完成
sleep 5
tmux capture-pane -t codex-<name> -p -S -20
# 如需切换模型
tmux send-keys -t codex-<name> '/model gpt-5.2 high'
sleep 1
tmux send-keys -t codex-<name> Enter
sleep 2
# 发送提示词(⚠️ 文本和 Enter 必须分开发!)
tmux send-keys -t codex-<name> '<prompt text here>'
sleep 1
tmux send-keys -t codex-<name> Enter
一键清理:
bash <skill_dir>/hooks/stop_codex.sh codex-<name>
⚠️ Enter 时序关键规则:
send-keys 调用sleep 1 确保 TUI 接收完文本tmux send-keys -t <name> Enter⚠️ 信任确认(首次进入新目录):
tmux send-keys -t codex-<name> '1'
sleep 0.5
tmux send-keys -t codex-<name> Enter
不轮询,等 hook 唤醒。 中间所有情况我自主处理:
→ 检查输出 → 质量合格就准备汇报 → 不合格就继续让 Codex 修改
→ 读取待审批命令 → 判断是否安全/合理 → 批准或拒绝
# 批准
tmux send-keys -t codex-<name> '1' Enter
# 拒绝并给出替代指令
tmux send-keys -t codex-<name> '3' Enter
# 然后发送替代指令...
→ Codex 输出不满足要求 → 在同一 TUI session 直接发后续指令 → 等下一次 hook 唤醒
原则:中间过程不打扰涛哥,我自己判断处理。
兜底(hook 长时间未触发):
tmux capture-pane -t codex-<name> -p -S -100
只在最终确认没问题后才汇报,内容包括:
如果中间发现方向性问题(任务理解有偏差、架构需要大改),则立即汇报涛哥确认,不自行决定。
bash <skill_dir>/hooks/stop_codex.sh codex-<name>
| 状态 | 含义 | 触发条件 | 下一步动作 |
|---|---|---|---|
codex_running | Codex 正在执行 | 启动 codex exec 后 | 等待 hook 唤醒 |
review_pending | Codex 已完成,等待检查 | on_complete.py 触发 | 检查 git diff、运行测试、判断质量 |
committed | 已完成并提交 | 验收通过,git commit 完成 | 清空 activeTask |
blocked | 出现 blocker | 执行失败/异常/需要用户决策 | 发送用户可见通知 |
waiting_user_decision | 等待用户拍板 | 方向性问题、架构大改 | 发送用户可见通知 |
{
"project": "codex-task",
"sessionKey": "agent:<AGENT_NAME>:main",
"notificationRouting": {
"channel": "telegram",
"target": "<CHAT_ID>",
"accountId": "<BOT_ACCOUNT>"
},
"activeTask": {
"taskId": "<TASK_ID>",
"taskDir": "<TASK_DIR>",
"status": "review_pending",
"runner": {
"kind": "codex_exec",
"completedAt": "2026-03-08T10:00:00+08:00",
"summary": "完成摘要"
}
},
"lastWakeKey": "<taskId>:<status>:<updatedAt>",
"lastCommittedTask": null
}
状态文件路径:由环境变量 OPENCLAW_PROJECT_STATE_FILE 指定,或项目根目录 .codex-task-state.json。
✅ Agent 自主修复(不需要通知用户):
⚠️ 需要用户拍板(发送通知):
判断流程:
Codex 完成 → 检查 git diff --stat
↓
变更 < 5 文件 且 无架构影响 → Agent 自主修复/验收
↓
变更 ≥ 5 文件 或 架构影响 → 评估是否方向性问题
↓
是方向性问题 → 状态改为 waiting_user_decision,发送通知
否 → Agent 继续推进 review
生成 wakeKey = <taskId>:<status>:<updatedAt>。
每次唤醒时:
lastWakeKey 或 activeTask.notify.lastWakeKeywakeKey 相同,且没有新的用户通知需求 → 回复 ANNOUNCE_SKIP,不发消息lastWakeKey目的:避免 Cron 每 10 分钟唤醒时重复通知用户。
配置示例(OpenClaw cron job):
- name: codex-task-waker
schedule: "*/10 * * * *" # 每 10 分钟
sessionTarget: main # 唤醒主会话
wakeMode: now
注意事项:
sessionTarget: main 会唤醒配置中第一个 agent 的主会话heartbeat(即使 every: 0,也需要空对象占位).env 传递给 Codex exec,确保 waker 能读取同一份状态# 项目 .env 示例
OPENCLAW_PROJECT_STATE_FILE="$(pwd)/.codex-task-state.json"
codex --version 与 state/version.txt 不同state/last_updated.txt 距今超过 7 天详见 workflows/knowledge_update.md。
核心:CLI 获取本机状态 → 拉取 Schema + releases → 搜索官方文档 → Diff → 更新知识文件 → 建议配置变更 → 更新 state
knowledge/config_schema.md 确认字段名、类型、合法值# 启用 feature
[features]
<flag_name> = true
# 添加 MCP server
[mcp_servers.<name>]
type = "stdio"
command = "npx"
args = ["-y", "package@latest"]
# 添加 agent 角色
[agents.<role>]
description = "角色描述"
config_file = "agents/<role>.toml"
# 配置 notify hook(⚠️ 必需!)
notify = ["python3", "<skill_dir>/hooks/on_complete.py"]
Codex 完成 turn ──→ on_complete.py ──→ 涛哥收到 🔔 Telegram
└──→ Agent 被唤醒(openclaw agent)
Codex 等审批 ───→ pane_monitor.sh ──→ 涛哥收到 ⏸️ Telegram
└──→ Agent 被唤醒(openclaw agent)
配置:~/.codex/config.toml → notify = ["python3", "<path>/on_complete.py"]
触发:Codex 每次完成一个 turn
JSON payload(通过 sys.argv[1]):
{
"type": "agent-turn-complete",
"thread-id": "uuid",
"turn-id": "uuid",
"cwd": "/path/to/workdir",
"last-assistant-message": "Codex 的回复摘要",
"input-messages": ["用户输入"]
}
启动:nohup bash <skill_dir>/hooks/pane_monitor.sh <tmux-session> &
检测:每 5 秒扫描 tmux pane 输出,匹配 Would you like to run / Press enter to confirm
仅在非 full-auto 模式下需要(full-auto 不弹审批)
# 基础
tmux new-session -d -s <name> -c <dir>
tmux send-keys -t <name> '<text>' # 只发文本,不含 Enter
sleep 1
tmux send-keys -t <name> Enter # 单独发 Enter
tmux capture-pane -t <name> -p -S -100
tmux list-sessions
tmux kill-session -t <name>
# 用户直接查看
tmux attach -t <name> # Ctrl+B, D 退出
# Terminal.app 弹窗
osascript -e 'tell application "Terminal"
do script "tmux attach -t <name>"
activate
end tell'
codex exec --full-auto "<prompt>"
codex exec --full-auto -m gpt-5.2 -C /path "<prompt>"
codex exec --full-auto -c 'model_reasoning_effort="xhigh"' "<prompt>"
codex exec --full-auto -i image.png "<prompt>"
codex review --base origin/main
codex review --uncommitted
git worktree add -b fix/issue-78 /tmp/issue-78 main
tmux new-session -d -s codex-fix78 -c /tmp/issue-78
tmux send-keys -t codex-fix78 'codex --no-alt-screen --full-auto' Enter
danger-full-access 沙盒模式/new 重置会话CODEX_AGENT_CHAT_ID 和 CODEX_AGENT_NAME 配置,也可直接修改脚本中的默认值首次使用前确认:
~/.codex/config.toml 中已添加 notify = ["python3", "<path>/on_complete.py"]CODEX_AGENT_CHAT_ID 已设置(或已修改脚本中的默认值)CODEX_AGENT_NAME 已设置(默认 main,通常不需要改)codex --version 可用openclaw message send 可发 Telegramopenclaw agent --agent main --message "test" 可唤醒 agentZIP package — ready to use