云计算百科
云计算领域专业知识百科平台

Codex 主对话编排多个独立子对话:不是 Subagent 的多任务工作流

文章目录

  • 1 -> 前言
  • 2 -> 先说结论
  • 3 -> 先把术语分清楚
    • 3.1 -> 主对话
    • 3.2 -> 独立子对话
    • 3.3 -> Fork 对话
    • 3.4 -> Side conversation
    • 3.5 -> Subagent
    • 3.6 -> Worktree
  • 4 -> 独立任务与 Subagent 到底有什么不同
  • 5 -> 为什么要建立主对话控制面
    • 5.1 -> 把“同时运行”变成“有边界地并行”
    • 5.2 -> 保护主上下文
    • 5.3 -> 让工作拥有可恢复性
    • 5.4 -> 将不同风险放进不同权限边界
  • 6 -> 主对话编排的三层结构
    • 6.1 -> 第一层:控制面
    • 6.2 -> 第二层:任务面
    • 6.3 -> 第三层:证据与结果面
    • 6.4 -> 控制面需要维护的“三本账”
  • 7 -> 从零搭建一个主对话控制台
    • 7.1 -> 第一步:先定义总目标,而不是先创建任务
    • 7.2 -> 第二步:绘制依赖关系
    • 7.3 -> 第三步:选择 Create 还是 Fork
    • 7.4 -> 第四步:选择 Local 还是 Worktree
    • 7.5 -> 第五步:派发完整任务包
    • 7.6 -> 第五步补充:建立上下文同步协议
    • 7.7 -> 第六步:观察,而不是反复打断
    • 7.8 -> 第七步:纠偏时发送增量信息
    • 7.9 -> 第八步:收口和归档
    • 7.10 -> 第九步:给结果标注可信度
  • 8 -> 生命周期:从创建到归档
  • 9 -> 可以直接使用的主对话提示词
    • 9.1 -> 初始化主控台
    • 9.2 -> 创建独立任务
    • 9.3 -> 检查进度
    • 9.4 -> 发送纠偏消息
    • 9.5 -> 最终收口
  • 10 -> 案例一:用多个独立任务完成一篇深度文章
  • 11 -> 案例二:同一代码仓库的并行开发
  • 12 -> 最容易失败的九种方式
    • 12.1 -> 假设上下文会自动同步
    • 12.2 -> 给所有任务同一个宽泛目标
    • 12.3 -> 多个任务修改同一文件集合
    • 12.4 -> 主对话变成摘要搬运工
    • 12.5 -> 任务粒度过小
    • 12.6 -> 任务粒度过大
    • 12.7 -> 只看结论,不看证据
    • 12.8 -> 并发超过人的验收能力
    • 12.9 -> 把任务完成等同于项目完成
  • 13 -> 注意力与用量如何控制
  • 14 -> 三种可落地的编排模式
    • 14.1 -> 轻量模式:一主两支
    • 14.2 -> 中等模式:一主四线
    • 14.3 -> 重型模式:阶段化任务组合
  • 15 -> 什么时候不应该使用
  • 16 -> 启动清单与验收清单
    • 16.1 -> 启动前
    • 16.2 -> 运行中
    • 16.3 -> 收口时
  • 17 -> 真正要建立的是任务操作系统

在这里插入图片描述

1 -> 前言

本文讨论一种 Codex 多任务工作方式:把一个独立、可持续对话设为“主控台”,再由它创建、分叉、观察和续写多个彼此独立的 Codex 任务。这里说的“子对话”只是为了便于理解,它们不是 subagent,而是用户可见、可单独打开、可以继续工作和长期保留的一等任务。

在这里插入图片描述

2 -> 先说结论

如果只是让 Codex 在一个任务内部并行查资料、跑测试或分析日志,subagent 通常已经够用。但如果你希望几条工作线各自拥有完整上下文、独立生命周期和清晰成果,并且需要在几小时甚至几天后继续推进,那么更适合使用“一个主对话编排多个独立任务”的方式。

这套方法的重点不是多开几个聊天窗口,而是建立一层明确的控制关系:


└── 主对话:维护目标、拆分任务、分配边界、检查证据、做出取舍
├── 独立任务 A:资料研究
├── 独立任务 B:方案设计
├── 独立任务 C:实现或制作
└── 独立任务 D:验证与反方检查

独立任务输出阶段性结果

主对话读取摘要、继续追问、纠偏和收口

人完成关键判断、批准外部动作或决定最终采纳

主对话不是拥有神奇权限的“总智能体”。它只是一段被赋予编排职责的独立对话。它能控制到什么程度,取决于当前 Codex 客户端是否开放了创建任务、分叉任务、读取任务和发送后续消息等能力。即使这些能力都可用,不同任务之间也不会自动共享上下文、文件变化和最新决策。

因此,这套工作流真正依赖的不是“多对话”三个字,而是四个基础条件:

  • 任务能够拆成边界清晰的工作单元;
  • 每个独立任务收到完整、显式的任务包;
  • 主对话持续维护任务状态和共同决策;
  • 所有结果经过证据检查和人工验收后才能进入下一阶段。
  • 3 -> 先把术语分清楚

    Codex 中存在几个看起来相近、实际控制关系不同的概念。混用这些概念,是多任务工作流最常见的起点错误。

    3.1 -> 主对话

    主对话是用户选定的协调中心。它负责保存项目级目标、不可违反的限制、已确认决策、任务登记表和最终验收标准。

    主对话一般不承担所有细节工作。它应该把注意力放在以下问题上:

    • 当前真正要解决的是什么;
    • 哪些工作可以独立推进;
    • 每条工作线可以读什么、可以改什么;
    • 哪些结论已经确认,哪些仍是假设;
    • 哪些结果有证据,哪些只是看起来合理;
    • 什么情况下继续、暂停、返工或结束。

    “主”描述的是职责,而不是模型等级。一个主对话如果没有清晰任务表、没有状态检查、也不核验结果,它只是一个信息中转站,不是真正的控制面。

    3.2 -> 独立子对话

    本文所谓“独立子对话”,在产品语义上更接近独立 task 或 thread。它们可以由主对话新建,也可以从一个已有任务分叉而来。

    它们通常具有这些特征:

    • 在任务列表中单独存在;
    • 有自己的上下文和消息历史;
    • 可以独立继续发送后续指令;
    • 可以单独重命名、固定或归档;
    • 可以绑定同一个项目,也可以运行在独立 Worktree;
    • 不会因为主对话结束就自动消失;
    • 不会自动把全部中间过程汇报给主对话。

    这里的“子”只表达它在本次工作流中接受主对话协调,不代表产品层面存在永久父子从属关系。

    3.3 -> Fork 对话

    Fork 是从一个既有任务分出一条新的探索路线。它适合这样的场景:两条路线需要共享已经形成的背景,但接下来要分别验证不同假设。

    需要注意两个边界:

    • Fork 复制的是已经完成的对话历史;
    • 如果来源任务仍在运行,当前未完成的一轮和未完成回复不会被复制。

    因此,不要在主对话刚发出复杂任务、尚未形成完整结论时立刻分叉,然后假设新任务已经知道所有最新信息。更稳妥的方式是先让主对话形成一份“当前决策快照”,再从这个稳定节点分叉。

    3.4 -> Side conversation

    Side conversation 是不打断主任务上下文的临时旁路,适合快速追问一个局部概念。它通常不适合承担长期项目、持续状态管理和多阶段交付。

    如果问题十分钟后就可以关闭,用 side conversation 很轻便;如果它明天还要继续、需要自己的文件和验收记录,就应该建立独立任务。

    3.5 -> Subagent

    Subagent 是由当前任务内部委派出去的代理工作线程。官方文档描述的典型机制是:主代理生成若干专门代理,让它们并行探索、测试或分析,然后收集结果并在当前任务中形成综合回复。

    它适合短周期、边界明确、结果主要服务于当前任务的工作。例如:

    • 一个代理扫描安全风险;
    • 一个代理检查测试缺口;
    • 一个代理分析日志;
    • 主代理等待结果并给出统一结论。

    这和本文的独立任务模式不同。独立任务是用户任务空间中的长期工作单元;subagent 则是当前任务为完成自身目标而启动的内部委派单元。

    3.6 -> Worktree

    Worktree 不是对话类型,而是文件隔离环境。官方文档将其定位为:让同一 Git 项目中的多个独立任务在不同检出目录中并行工作,避免直接干扰本地工作区或彼此覆盖文件。

    一个独立任务可以是只读研究任务,不需要 Worktree;也可以是写代码任务,此时通常应该分配独立 Worktree。对话隔离解决的是上下文问题,Worktree 隔离解决的是文件和 Git 状态问题,两者不能互相替代。

    4 -> 独立任务与 Subagent 到底有什么不同

    比较维度独立任务对话SubagentSide conversation
    生命周期 可长期保存,之后继续 通常服务于当前主任务 临时、短暂
    用户可见性 任务列表中的独立项目 作为主任务中的代理线程展示 当前任务的旁路
    上下文 自己维护,必须显式传递 接收主代理委派的上下文 依附当前任务背景
    控制方式 可读取状态、发送后续消息、重命名和归档 主代理负责委派、等待和汇总 用户快速提问后返回
    结果回流 不自动,需要主对话主动读取或要求回报 通常自动回到主任务 回到当前会话体验
    文件环境 可选择 Local、Worktree 或其他可用环境 继承或受主任务环境约束 通常不承担独立写入工作
    适合时长 几十分钟到数天以上 几分钟到一轮复杂任务 几十秒到几分钟
    适合目标 可独立验收的完整工作线 主任务内部的并行子问题 不值得污染主上下文的小问题
    人的角色 管理任务组合与关键决策 主要验收主任务综合结果 获取一个即时答案

    判断标准可以非常简单:

    如果一项工作值得在侧边栏拥有自己的名字、上下文、状态和后续行动,它更像独立任务;如果它只需要为当前主任务返回一份材料,它更像 subagent。

    5 -> 为什么要建立主对话控制面

    同时打开多个任务并不自动产生并行效率。没有主控关系时,多对话很容易变成四份重复研究、四种互相矛盾的口径,以及四个都在等待用户补背景的问题。

    主对话的价值主要体现在四个方面。

    5.1 -> 把“同时运行”变成“有边界地并行”

    并行成立的前提是工作线相对独立。主对话需要先识别依赖关系:

    • 哪些任务现在就能开始;
    • 哪些任务必须等待上游结论;
    • 哪些任务只读,哪些任务会改文件;
    • 哪些任务可以失败而不影响全局;
    • 哪些结果必须统一口径后才能继续。

    如果任务 B 的输入完全依赖任务 A 的结论,就不应该为了“看起来并发”而同时启动。真正有效的编排,是让独立部分并行,让依赖部分按阶段串行。

    5.2 -> 保护主上下文

    一个复杂项目会产生大量搜索记录、测试日志、失败尝试和临时假设。全部堆进一个对话,会让真正重要的决策被中间噪声淹没。

    独立任务可以承载细节,主对话只保留:

    • 已确认事实;
    • 仍待验证的假设;
    • 关键证据路径;
    • 已作出的决定及其理由;
    • 下一步需要人的判断。

    这样做不是为了缩短所有输出,而是为了让主上下文始终保持可决策状态。

    5.3 -> 让工作拥有可恢复性

    独立任务有自己的历史。即使主对话正在处理别的事情,也可以稍后回到某条工作线继续推进。只要任务包和状态回执完整,项目不需要依赖某个人记住所有细节。

    5.4 -> 将不同风险放进不同权限边界

    资料研究可以只读;方案比较可以禁止改文件;实现任务可以进入独立 Worktree;外部发送、生产发布和不可逆操作则继续保留人工确认。

    这比让一个拥有广泛权限的任务包办所有工作更容易审计,也更容易在出现偏差时止损。

    6 -> 主对话编排的三层结构

    在这里插入图片描述

    6.1 -> 第一层:控制面

    控制面就是主对话。它保存项目宪章和任务登记表,并决定任务的创建、暂停、续写和结束。

    一份最小任务登记表可以长这样:

    任务目标环境写入范围当前状态下一决策点
    A 查清官方能力边界 只读 进行中 来源是否充分
    B 形成三种方案 独立任务 已完成 选择方案
    C 实现确认方案 Worktree src/feature/** 等待 等方案确认
    D 验证结果 独立环境 测试文件 未启动 等实现完成

    这里最重要的不是表格形式,而是主对话必须知道每条线的目标、状态、权限和依赖。

    6.2 -> 第二层:任务面

    任务面由多个独立对话组成。每个任务只解决一个边界清楚的问题,并拥有自己的任务包。

    好的独立任务应该满足:

    • 单独完成也能产生可用价值;
    • 成功标准不依赖模糊的主观感觉;
    • 输入和输出接口清楚;
    • 写入范围能够排他地分配;
    • 即使失败,也能说明失败在哪里以及下一步需要什么。

    6.3 -> 第三层:证据与结果面

    独立任务的最终回复不应只是“完成了”。它需要返回可被主对话检查的结构化回执,包括:

    • 状态:完成、部分完成、阻塞或需要决策;
    • 结论:最重要的三到五点;
    • 证据:文件、链接、测试结果或可复现步骤;
    • 变更:改了哪些文件或生成了哪些产物;
    • 风险:还有什么没有验证;
    • 建议:主对话下一步应该做什么。

    主对话根据这些材料做整合,而不是根据一句“我已经完成”直接宣布项目结束。

    6.4 -> 控制面需要维护的“三本账”

    主对话想要长期稳定地协调多个独立任务,不能只依赖聊天记忆。最少要维护三类结构化信息。

    第一本是决策账。它记录已经由人确认或由证据确定的结论,包括决定时间、决定内容、采用理由、被放弃的方案,以及什么条件变化时需要重新讨论。决策账解决的是“为什么今天不能重新走回已经否定的老路”。如果只留下最终选择而没有理由,几天后新的任务很容易把旧方案重新包装一遍,团队又要重复争论。

    第二本是任务账。它就是前面的任务登记表,但还要记录任务输入版本、最近一次状态时间、当前阻塞、写入范围和负责人。任务账解决的是“谁正在做什么、依据哪一版背景、离完成还差什么”。当任务输出与主对话预期不一致时,先检查它收到的任务包版本,而不是立即认定任务执行错误。

    第三本是产物账。它记录每个有效产物的位置、用途、生成任务、验证状态和替代关系。产物可以是代码分支、报告、测试记录、图片、数据表或决策摘要。产物账解决的是“哪个文件才是最新可信版本”。没有产物账时,多个任务经常分别生成名称相似的文件,主对话最后只能靠修改时间猜测应该采用哪一个。

    这三本账不一定真的要做成三张表。小项目可以直接放在主对话的一个持续更新区块里;长期项目则可以沉淀为项目文档。关键是让状态来自可检查的记录,而不是依赖主对话在长上下文中“应该还记得”。

    7 -> 从零搭建一个主对话控制台

    7.1 -> 第一步:先定义总目标,而不是先创建任务

    主对话最开始应当写清:

    总目标:最终要交付什么。
    成功标准:怎样判断结果真的可用。
    共同背景:所有任务都必须知道的事实。
    固定约束:不能改变的范围、规范和权限。
    人工门禁:哪些动作必须由人确认。
    最终负责人:谁决定采纳、合并、发布或对外发送。

    如果总目标还没有说清,创建更多任务只会更快地产生分歧。

    7.2 -> 第二步:绘制依赖关系

    把工作分成三类:

  • 可以立即并行的任务;
  • 必须等待上游结果的任务;
  • 需要人判断后才能开始的任务。
  • 一个常见顺序是:

    阶段一:并行研究事实、风险和备选方案
    阶段二:主对话综合,提交人确认方向
    阶段三:在隔离环境中实现或制作
    阶段四:独立验证、修正和最终验收

    7.3 -> 第三步:选择 Create 还是 Fork

    使用新建独立任务的情况:

    • 需要干净上下文;
    • 工作与主对话历史关系较弱;
    • 希望严格控制输入,避免继承无关讨论;
    • 需要从一个标准任务包开始。

    使用 Fork 的情况:

    • 两条路线必须共享已经形成的长背景;
    • 希望从同一个稳定决策点分别探索方案 A 和 B;
    • 保留来源历史比重新整理任务包更经济。

    即使使用 Fork,也建议在第一条消息中写明新任务的独立目标和停止条件。共享历史不等于共享未来方向。

    7.4 -> 第四步:选择 Local 还是 Worktree

    只读分析通常不需要独立 Worktree。涉及写代码、改配置或生成可能重名的文件时,应优先考虑隔离。

    场景推荐环境
    只读搜索、资料研究 当前项目或 projectless 独立任务
    只读代码审查 当前项目,只读权限
    单一写任务、没有其他并行修改 Local 可用,但仍需检查工作区
    多个并行代码任务 每个任务使用独立 Worktree
    需要最后在常用 IDE 验证 Worktree 完成后 Handoff 到 Local

    7.5 -> 第五步:派发完整任务包

    不要只发一句“研究一下方案”。独立任务看不到主对话脑中的隐含背景。任务包应至少包含以下字段:

    任务名称:

    目标:
    这项任务需要回答或完成什么。

    背景:
    与任务直接相关的已确认事实和决策。

    输入:
    允许使用的文件、链接、数据或已有结论。

    范围:
    需要覆盖哪些内容。

    不做:
    明确排除哪些方向和动作。

    权限与写入边界:
    只读还是可写;若可写,只允许修改哪些路径。

    成功标准:
    满足哪些条件才算完成。

    验证方式:
    需要运行什么检查,或提供什么证据。

    输出格式:
    结论、证据、变更、风险、建议下一步。

    遇到阻塞时:
    不要扩大范围,返回阻塞原因和最小决策问题。

    7.6 -> 第五步补充:建立上下文同步协议

    独立任务之间不存在天然的共享记忆,因此需要提前约定什么信息必须同步、由谁同步、同步以后如何确认。

    最实用的做法是把信息分成三类:

    • 全局事实:所有任务都必须使用的稳定背景,由主对话统一维护;
    • 局部事实:只影响某一条工作线,保留在对应任务中;
    • 全局决策:一旦改变就会影响多个任务,必须由主对话向受影响任务逐一发送更新。

    同步消息不要只写“方案变了,请按新的做”。它应该包含决策编号、旧口径、新口径、生效范围,以及是否需要重做已经完成的部分。例如:

    决策更新 D-04:目标用户从所有中小企业收窄为已有海外销售团队的制造企业。

    保持不变:交付形式、时间范围、数据来源要求。
    受影响范围:任务 A 的样本筛选,任务 B 的价值主张,任务 C 的案例选择。
    需要重做:仅重新检查不符合新目标用户定义的部分;其余证据继续有效。
    收到后请先复述影响,再继续执行。

    要求任务先复述影响,是一个很小但很有效的动作。它能在任务继续消耗时间以前发现理解偏差,也能帮助主对话确认哪些任务已经切换到最新口径。

    7.7 -> 第六步:观察,而不是反复打断

    主对话应按决策需求检查状态,不必每几分钟追问一次。适合检查的时点包括:

    • 某个上游结果将解锁其他任务;
    • 任务运行时间明显超过预期;
    • 需要在人做判断前收集完整证据;
    • 子任务主动报告阻塞;
    • 项目范围或共同口径发生变化。

    状态检查应询问“离完成标准还差什么”,而不是只问“做到哪了”。

    主对话还应区分三种等待状态。第一种是正常运行,任务拥有充分输入,尚未到检查点;此时频繁催问只会制造上下文切换。第二种是静默阻塞,任务缺少文件、权限或上游结论,却没有及时提出最小问题;这时主对话需要主动读取状态。第三种是方向漂移,任务持续产生内容,但输出逐渐离开完成标准;这种情况比显式失败更危险,因为它看起来一直在工作。

    可以为每个任务设置一个“下一检查条件”,而不是统一设置机械时间间隔。例如:完成来源清单后检查、准备写文件前检查、首次测试失败后检查、需要扩大范围时检查。这样既保留任务自主推进的空间,也能在成本和风险即将上升前让主对话重新介入。

    7.8 -> 第七步:纠偏时发送增量信息

    给独立任务发送后续消息时,应指出:

    • 哪一项判断需要修正;
    • 新增了什么事实;
    • 原任务包哪些部分仍然有效;
    • 输出格式或成功标准是否变化;
    • 是否需要重新验证已经完成的部分。

    不要每次把整个任务包原样重发,否则任务很难判断哪些内容是新的。

    7.9 -> 第八步:收口和归档

    任务完成后,主对话应完成四件事:

  • 核对完成标准和证据;
  • 把有效结论写入项目决策摘要;
  • 明确哪些结果被采纳、拒绝或暂缓;
  • 重命名、固定有长期价值的任务,归档已经结束的任务。
  • 7.10 -> 第九步:给结果标注可信度

    不同任务返回的“结论”并不处在同一证据等级。主对话如果把它们全部当成确定事实,最终汇总会显得非常完整,却可能把假设、推断和验证结果混在一起。

    建议至少使用四级标记:

    等级含义可以怎样使用
    已验证 有官方来源、可复现实验或通过的检查支持 可以进入最终结论
    高可信推断 证据充分,但仍包含明确推理步骤 可以用于方案选择,同时保留假设
    待验证假设 合理但缺少关键证据 只能进入下一轮验证任务
    未解决冲突 多个来源或任务结论矛盾 必须保留双方证据,不能强行合并

    当多个任务对同一个问题给出不同答案时,主对话不应该用多数票决定真伪。更好的做法是比较它们使用的输入、时间范围、定义和证据等级。有些冲突并不是谁错了,而是两个任务回答了略有不同的问题。只有把问题定义对齐以后,结论才具有可比性。

    最终文章、方案或代码说明中,也应保留尚未验证的边界。透明地写出“这里仍是假设”,比用流畅语言掩盖不确定性更有价值。

    8 -> 生命周期:从创建到归档

    在这里插入图片描述

    一个成熟的任务生命周期可以用七个状态理解:

    状态主对话应做什么独立任务应返回什么
    已定义 确认目标与成功标准 复述理解和边界
    已派发 提供完整任务包 确认输入充分性
    进行中 等待关键节点 阶段成果和剩余工作
    需要决策 处理一个最小决策问题 选项、证据和影响
    待验证 安排检查或反方任务 可复现结果
    已完成 采纳或拒绝成果 最终回执
    已归档 保存必要摘要 不再继续消耗注意力

    不要把“输出了一段文字”当作完成状态。完成必须对应事先定义的成功标准。

    9 -> 可以直接使用的主对话提示词

    9.1 -> 初始化主控台

    你是这个项目的主控对话,负责维护总目标、任务边界、状态和最终验收。

    请使用多个用户可见、可独立继续的 Codex 任务推进工作,不要使用 subagent 代替这些独立任务。

    先不要创建任务。请先:
    1. 复述总目标和成功标准;
    2. 列出可以并行的工作线和它们之间的依赖;
    3. 为每条工作线定义输入、范围、不做事项、权限和输出格式;
    4. 指出哪些任务应该新建,哪些适合从当前对话 Fork;
    5. 指出哪些写任务需要独立 Worktree;
    6. 等我确认任务结构后再创建独立任务。

    任何合并、发布、外部发送或不可逆操作都必须等我确认。

    9.2 -> 创建独立任务

    按照已经确认的任务结构,创建以下三个独立 Codex 任务。它们必须出现在任务列表中并可单独继续,不要用 subagent:

    任务 A:只读核对官方事实和来源。
    任务 B:形成三种可比较的方案,不修改文件。
    任务 C:列出验证方法、失败条件和风险。

    请为每个任务发送完整任务包,使用清楚的任务名称。创建完成后,返回任务登记表,包括任务名称、目标、环境、写入范围和当前状态。

    如果当前客户端不支持创建独立任务,请明确说明,不要悄悄改用 subagent;改为输出三个可手动复制的新任务提示词。

    9.3 -> 检查进度

    读取任务 A、B、C 的最近状态和阶段性结论,不要重新执行它们的工作。

    请更新任务登记表,并指出:
    1. 哪些任务已经满足完成标准;
    2. 哪些任务缺少证据;
    3. 哪些任务被阻塞;
    4. 当前是否存在相互矛盾的结论;
    5. 下一步只需要我决定什么。

    9.4 -> 发送纠偏消息

    向任务 B 发送后续指令:原目标和范围保持不变,但必须补充方案在最坏情况下的失败方式,并用统一指标重新比较三个方案。不要扩大到实现阶段。完成后按原回执格式返回。

    发送后更新主任务登记表,不要假设任务已经完成。

    9.5 -> 最终收口

    汇总所有独立任务的最终回执。只使用有证据支持的结论。

    输出:
    1. 已确认事实;
    2. 已采纳方案及理由;
    3. 被拒绝方案及理由;
    4. 尚未解决的风险;
    5. 验证结果;
    6. 需要人工批准的下一步。

    不要把多个任务的文字简单拼接;发现冲突时先列出冲突和证据,再提出裁决建议。

    10 -> 案例一:用多个独立任务完成一篇深度文章

    假设目标是写一篇关于某项新技术的长文。可以这样拆分:

    任务职责输出
    主对话 确定读者、观点、结构和验收标准 文章总纲与决策表
    事实任务 查官方资料和原始来源 事实清单、链接、时效说明
    反方任务 找局限、失败案例和反例 风险与反驳清单
    案例任务 构造可理解的实际案例 案例材料与适用边界
    编辑任务 检查逻辑、重复和表达 修改建议,不直接改原文

    这几个任务可以相对独立地工作,但正文最好仍由一个明确的写作者统一完成。否则不同任务分别写章节,容易出现语气不一致、概念重复和前后定义漂移。

    主对话在这里承担编辑部主任的角色:先收事实和反方意见,再确定论点,最后把材料组织成一条完整论证,而不是把五份输出首尾相接。

    11 -> 案例二:同一代码仓库的并行开发

    代码任务的难点不在对话数量,而在共享可变状态。多个任务如果同时修改同一个本地目录,可能覆盖文件、读到半成品或让测试结果失去归属。

    一种更稳妥的阶段安排是:

    阶段一:只读并行
    任务 A:理解现有机制
    任务 B:分析安全和回归风险
    任务 C:设计测试与失败用例

    阶段二:主对话收敛
    合并事实,形成人工确认的实施计划

    阶段三:隔离写入
    任务 D:在独立 Worktree 实现后端范围
    任务 E:在另一个 Worktree 实现前端范围
    前提:两者写入文件集合不重叠,接口已经冻结

    阶段四:集成验证
    按顺序整合变更,在统一环境运行测试和构建
    任务 F:只读审查完整变更集和验证结果

    在这里插入图片描述

    必须强调:Worktree 解决的是并行修改互不直接覆盖,不会自动解决设计冲突、接口冲突和最终合并。合并顺序、冲突裁决和生产发布仍然需要明确负责人。

    12 -> 最容易失败的九种方式

    12.1 -> 假设上下文会自动同步

    主对话新确认了一个决策,其他任务并不会自动知道。共同口径变化时,必须向所有受影响任务发送增量更新。

    12.2 -> 给所有任务同一个宽泛目标

    如果四个任务都收到“研究最佳方案”,它们大概率重复工作。并行任务必须拥有不同问题或不同证据责任。

    12.3 -> 多个任务修改同一文件集合

    即使使用不同 Worktree,最终也会产生高成本冲突。应提前分配互斥写入范围;无法分离时改为一个实现任务,其他任务只读评审。

    12.4 -> 主对话变成摘要搬运工

    主对话如果只是把各任务输出复制到一起,就没有发挥控制面价值。它必须检查证据、识别冲突、做出取舍并维护决策记录。

    12.5 -> 任务粒度过小

    为五分钟能完成的问题创建一个长期独立任务,会让管理成本大于收益。短问题优先直接询问或使用临时旁路。

    12.6 -> 任务粒度过大

    “完成整个项目”不是有效任务包。任务过大时,独立对话同样会失去边界、长期运行并不断向人索要决策。

    12.7 -> 只看结论,不看证据

    多个任务一致不代表结论正确,它们可能共享了同一个错误假设。主对话应要求来源、测试结果和反例,而不是用投票代替验证。

    12.8 -> 并发超过人的验收能力

    任务同时完成后,人的注意力会集中承压。并发数量应由“能否及时判断结果”决定,而不是由系统最多能开多少任务决定。

    12.9 -> 把任务完成等同于项目完成

    各工作线完成以后,还需要跨任务一致性检查、集成验证和人工采纳。局部完成只是进入收口阶段,不是自动交付。

    13 -> 注意力与用量如何控制

    多任务模式会增加模型工作量,也会增加人的审阅压力。最有效的节制方式不是一味减少任务,而是提高每个任务的信息密度。

    可以采用以下规则:

    • 主对话只接收结构化回执,不接收无筛选的全部日志;
    • 同一事实只指定一个权威调查任务;
    • 任务在等待人决策时主动停止,不继续扩展范围;
    • 完成的临时任务及时归档;
    • 每轮状态检查只处理能改变下一步的内容;
    • 失败任务返回失败证据,不为了“交作业”生成虚假的完整答案;
    • 主对话维护最新决策摘要,避免每次重复发送整段历史。

    一个实用的并发上限判断是:

    如果四个任务同时返回结果后,你无法在合理时间内分别判断它们是否正确,那么真正的瓶颈已经不是 Codex,而是验收带宽。

    14 -> 三种可落地的编排模式

    14.1 -> 轻量模式:一主两支

    适合半天内完成的研究或方案任务。

    • 主对话负责问题定义和最终写作;
    • 一个独立任务找事实;
    • 一个独立任务找反例;
    • 全部任务只读,不引入 Worktree。

    14.2 -> 中等模式:一主四线

    适合跨一天的产品、内容或技术方案。

    • 事实、方案、风险、验证四条线独立运行;
    • 主对话设置一次中期决策点;
    • 确认方向以后只保留一条实现线;
    • 其他任务转为审查和证据补充。

    14.3 -> 重型模式:阶段化任务组合

    适合多文件开发、长期项目或高风险变更。

    • 先并行只读调查;
    • 人确认计划后再进入写入阶段;
    • 写任务使用互相隔离的 Worktree 和排他文件范围;
    • 每个阶段都有验证和审查任务;
    • 合并、发布、生产凭据和外部发送始终由人批准。

    重型模式的关键不是把所有任务都长期保持运行,而是在不同阶段启用不同任务组合。

    无论采用哪一种模式,主对话都要识别“需要重新规划”的信号:总目标发生变化、两个以上任务同时报告相同阻塞、原先独立的写入范围开始重叠、关键假设被证伪,或者现有验收标准已经无法判断结果好坏。出现这些信号时,不应继续给每个任务零散补丁,而应暂停受影响工作线,更新总目标、依赖图和任务包版本,再决定哪些任务继续、重开或结束。重新规划不是失败,而是防止多个独立任务在已经失效的方向上同时加速。

    15 -> 什么时候不应该使用

    以下情况通常不值得采用主对话加多个独立任务:

    • 一个任务十几分钟就能完成;
    • 所有步骤高度耦合,每一步都依赖上一步的细节;
    • 成功标准尚未定义,无法给不同任务分配边界;
    • 多条工作线必须持续修改同一个共享状态;
    • 没有人有时间检查结果;
    • 只是为了追求并发数量,而没有真实的独立问题;
    • 客户沟通、生产发布或不可逆操作需要实时人工判断。

    在这些场景下,一个聚焦的主任务通常比多个独立任务更可靠。

    16 -> 启动清单与验收清单

    16.1 -> 启动前

    • 总目标可以用一句话说明;
    • 成功标准可以验证;
    • 已区分并行任务与依赖任务;
    • 每项任务都有不同的责任边界;
    • 已决定新建还是 Fork;
    • 写任务拥有排他的文件范围;
    • 需要隔离的任务已经选择 Worktree;
    • 人工门禁已经写清楚。

    16.2 -> 运行中

    • 主对话维护最新任务登记表;
    • 共同决策已同步到受影响任务;
    • 状态检查围绕完成标准进行;
    • 阻塞任务没有擅自扩大范围;
    • 并发数量没有超过人的验收能力。

    16.3 -> 收口时

    • 每个结果都有证据;
    • 相互矛盾的结论已经裁决;
    • 文件变更和产物清单完整;
    • 集成后的整体结果重新验证;
    • 未解决风险已经记录;
    • 需要长期保留的任务已固定或重命名;
    • 已结束任务已经归档;
    • 合并、发布和外部动作仍由人决定。

    17 -> 真正要建立的是任务操作系统

    “一个主对话控制几个子对话”听起来像一个界面技巧,但它背后改变的是工作组织方式。

    过去,我们往往把一个项目塞进一个长对话,期待它从理解背景一路做到最终交付。新的方式是把项目拆成多个拥有清晰输入输出的独立任务,再用一个主对话维护共同目标、状态和决策。

    这带来三个变化:

  • 人从逐步盯执行,转向设计任务边界和验收结果;
  • Codex 从单线程助手,变成多个可恢复任务组成的工作组合;
  • 上下文从聊天历史,变成可以显式传递、更新和审计的任务资产。
  • 但不要误解这种能力。多个任务不会自动形成一个可靠系统。真正决定质量的,仍然是任务是否拆得合理、上下文是否完整、写入是否隔离、证据是否充分,以及人有没有在关键节点做出判断。

    最值得记住的一句话是:

    独立任务负责把工作向前推进,主对话负责让所有推进仍然指向同一个目标,人负责最终的判断和责任。


    感谢各位大佬支持!!!

    互三啦!!!

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » Codex 主对话编排多个独立子对话:不是 Subagent 的多任务工作流
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!