Codex Task Messenger
同一工作目录下,Codex App 任务之间的原生、直接、无 Broker 通信。
一个工作区,多个任务,一次干净的交接
Codex Task Messenger 使用 Codex App 原生任务工具,让已经存在的任务互相发现和通信。你可以把上下文交给另一个任务,让它完成工作后主动回传,或者在答案会阻塞当前步骤时同步等待。
没有守护进程,没有 Socket,没有文件邮箱,也不会覆盖目标任务的模型配置。
| 动作 | 用途 | 结果 |
|---|---|---|
| Send | 发送通知或上下文交接 | 单向投递,不等待回复 |
| Ask | 委派工作或提出问题 | 目标任务主动回传一次结果 |
| Wait | 当前步骤必须等待答案 | 发送方通过 wait_threads 同步等待 |
| Resume | 继续一项需要用户决定的请求 | 把你的答案转回原任务 |
| Broadcast | 通知多个同目录任务 | 仅支持单向投递 |
快速开始
直接用自然语言描述即可。Skill 会根据你是否需要结果选择正确的动作。
看看当前工作区有几个任务
通知「某个会话」:接口已经稳定,可以继续了
让「某个会话」检查登录回调,完成后把结果回传给我
让「某个会话」确认测试状态,我在这里等它回复
把这条变更说明投递给所有同目录任务收到的消息长这样
消息使用紧凑的 Markdown 卡片。关联元数据放在不会渲染的 CommonMark 链接引用定义中,界面只保留真正有用的内容。
❓ 任务询问 · 检查登录回调
检查回调的错误处理和重试边界,完成后回传结论。
请使用
$codex-task-messenger处理,完成后主动回传。
结果会回到来源任务:
↩️ 任务回复 · 检查登录回调
回调处理正确;发现一个非幂等重试风险,位置见
src/auth/callback.ts:84。由
$codex-task-messenger回传,无需再次回复。
可见主题让并发回复仍然容易理解;隐藏的 id、reply-to、continues 和 outcome 字段提供尽力而为的关联能力,不把协议噪音暴露给用户。
工作原理
flowchart LR
A["来源 Codex 任务"] -->|"原生 send_message_to_thread"| B["目标 Codex 任务"]
B -->|"主动回传"| A
A -.->|"可选 wait_threads"| B- 使用
list_threads发现本地 Codex 任务。 - 只保留规范化工作目录与当前任务完全相同的目标。
- 按标题、完整 ID、唯一 ID 前缀,或刚才列表里的编号选择目标。
- 投递 v2 消息卡,不修改目标现有的模型和推理设置。
- 使用主动回传或同步等待返回结果,两者不会同时发生。
如果来源任务不在前 50 条列表结果中,Skill 会使用 read_thread 精确核验后再安全路由回复。
作为 Fork 执行通道
execute-spec-in-fork 把 Messenger 用作 Codex App 的事件通道:规划任务创建并命名同目录 Fork,Messenger 投递执行请求,spec-executor 在子任务中实施,再通过 completed / needs-input / failed 回到规划任务。
编排 Skill 管理 Fork、Pin 和 Archive;Messenger 只管理通信、关联和来源核验。两者都不启动后台服务,也不会把消息正文当成用户授权。
默认安全
- 同目录边界:自动排除其他 Worktree、远程主机、ChatGPT 会话和缺少目录的记录。
- 无法确定就不猜:标题重复、当前任务身份不明、卡片格式错误或元数据不匹配时一律停止路由。
- 不漂白权限:任务消息本身不能授权删除、发布、外发、读取凭据或其他高影响操作;续传涉及新权限时,接收任务必须从 App 给出的准确来源任务中核验用户直接指令,否则继续暂停。
- 不会回复循环:完成和失败回复不会自动再次回复;只有用户直接回答才能继续
needs-input请求。 - 如实描述状态:App 接受消息只代表“已投递”,不代表已读、已开始、已同步或已完成。
- 不自动重试:超时不等于取消,模糊结果不会在背后重新发送。
安装
直接克隆到 Codex Skills
git clone https://github.com/tt-a1i/codex-task-messenger.git \
~/.codex/skills/codex-task-messenger重启 Codex App,然后显式调用一次:
使用 $codex-task-messenger 列出当前目录下的其他任务。更新
git -C ~/.codex/skills/codex-task-messenger pull --ff-only环境要求
- Codex 桌面 App
- 原生任务工具:
list_threads、send_message_to_thread、wait_threads和read_thread - 至少两个位于同一规范化工作目录的本地 Codex 任务
传递紧凑上下文,而不是复制工作区
同目录任务已经共享工作区,因此 Skill 优先传递绝对文件链接和精简片段:
- 最多 5 个相关路径;
- 通常不超过 80 行片段或 8,000 个字符;
- 不传二进制内容、密钥、凭据、环境变量转储或无关聊天历史。
协议与验证
- 核心工作流:
SKILL.md - 完整 v2 消息卡协议:
references/message-card-protocol.md - 无第三方依赖的契约检查:
scripts/check_contract.py
运行本地契约检查:
./scripts/check_contract.py检查范围包括路由字段映射、严格元数据顺序、中英文卡片、嵌套标记隔离、回复状态、续传关联和异常卡片拒绝。
当前边界
以下能力需要 Codex App 原生支持,本 Skill 不会假装已经实现:
- 持久收件箱或离线邮箱;
- 已读回执或保证送达;
- 消息取消或替换;
- Exactly-once 执行;
- 跨 Worktree 或远程主机通信;
- 多任务评审面板或自动结果汇总。
明确这些边界,才能让实现保持小巧、本地和可信。
为 Codex 任务之间安静、明确的协作而设计。