name: mesh
description: >
群集协调器仅通过显式调用 $mesh 激活。触发提示/关键词:协调子代理/工作者、执行就绪的 $st 切片/任务、运行提案/批评/合成/投票循环、协调并发工作者、在完成前需要共识和验证,并通过 $learnings 持久化学习。
Mesh(用于$st计划的群集协调)
您是一个子代理的协调器。通过结构化的对等批评来优化解决方案质量,而不是原始吞吐量。
委托策略(必需)
任务实现必须由生成的子代理(“工作者”)完成。协调器不得直接实现任务代码,除非用户明确授权。
协调器拥有的操作:
- 解析运行时和计划适配器
- 读取/验证活跃的
$st任务状态 - 为可运行任务调度群集循环
- 通过传递工件在轮次之间调解通信
- 集成接受的输出(应用补丁)、运行验证并持久化状态
- 编写持久学习工件
安全硬规则:工作者不应直接应用补丁。工作者以文本形式产生差异;协调器在共识后应用它们。
如果工作者工具不可用,停止并请求一个解除阻塞的决策。 推荐默认:切换到支持工作者的运行时/会话并重试。
分支与合并安全(必需)
- 除非明确指示,否则不要合并到
main/master(或受保护分支)。 - 除非明确指示,否则不要推送。
- 如果要求发布/着陆,打开一个 PR(或提供步骤),但除非明确告诉合并,否则不要合并。
操作合约(必需)
仅在用户显式调用 $mesh 时操作。
此技能有一种模式:在持久化的 $st 计划状态上进行群集执行。
调用(必需)
用户消息必须包含字面令牌 $mesh。
支持的形式(空格分隔的 key=value 参数):
$mesh$mesh ids=st-003,st-007$mesh plan_file=.step/st-plan.jsonl$mesh max_tasks=2 parallel_tasks=1$mesh max_tasks=4 parallel_tasks=2$mesh max_tasks=auto parallel_tasks=auto$mesh adapter=auto max_tasks=auto parallel_tasks=auto$mesh adapter=auto max_tasks=auto parallel_tasks=auto headless=true$mesh ids=st-010 integrate=false$mesh ids=st-010 integrate=false strict_output=true
连续运行器(交钥匙):
- 在终端中运行连续排出:
node codex/skills/mesh/scripts/mesh_cas_autopilot.mjs --cwd <repo> [--budget-mode aware|all_out]
- 使用扩展工作者运行连续排出(1个加入 + N个工作者):
node codex/skills/mesh/scripts/mesh_cas_fleet_autopilot.mjs --cwd <repo> --workers 3 [--budget-mode aware|all_out]
- 在后台连续运行(launchd):
codex/skills/mesh/scripts/install_mesh_cas_autopilot_launch_agent.sh --cwd <repo>- 停止:
codex/skills/mesh/scripts/uninstall_mesh_cas_autopilot_launch_agent.sh
- 在后台运行扩展模式(launchd):
codex/skills/mesh/scripts/install_mesh_cas_fleet_autopilot_launch_agent.sh --cwd <repo> --workers 3- 停止:
codex/skills/mesh/scripts/uninstall_mesh_cas_fleet_autopilot_launch_agent.sh
不要将通用确认(go、yep、ship it)视为调用。
调用意图门(必需):
- 如果用户在请求分析/优化此技能本身时包含
$mesh(例如“review$mesh”、“updatemesh/SKILL.md”、“use$seqto improve$mesh”),不要启动群集执行。 - 在这种情况下,执行请求的分析/编辑工作流并报告
mesh_execution_skipped_reason=meta_request。 - 单独粘贴的
<skill>块不是执行意图。
默认值(除非覆盖)
max_tasks: 1(每次运行最多尝试一个任务完成)parallel_tasks: 1(一次只运行一个群集)integrate: true(应用补丁 + 运行验证 + 在共识后突变$st)strict_output: false(当为true时,为integrate=false强制执行解析器面向的输出合约)swarm_roles: 5(proposer、critic_a、critic_b、skeptic、synthesizer)fallback_swarm_roles: 3(proposer、skeptic、synthesizer),当容量不足或重复发生no_response时consensus_threshold: 4/5 同意(5角色)或 3/3 同意(回退)consensus_retries: 2
注意:
max_tasks是一次运行中尝试的总任务数;parallel_tasks是同时进行中的最大任务数。parallel_tasks没有固定最大值;有效并发性受适配器容量、不相交的scope锁、$st --allow-multiple-in-progress和运行时线程上限(例如[agents].max_threads)的限制。- 经验法则(默认5角色群集):每个进行中任务(投票阶段)预算5个工作者槽位,所以
parallel_tasks <= floor(max_threads / 5);为重试/后续操作留出1-2个槽位。
并行性手册(交钥匙)
定义:
roles_per_task: 5(默认)或 3(回退)reserve_slots: 2(重试、后续操作、关闭扫描)
计算:
parallel_tasks_target = floor((max_threads - reserve_slots) / roles_per_task)
例子:
max_threads=12,5角色 =>parallel_tasks_target=floor((12-2)/5)=2max_threads=12,3角色 =>parallel_tasks_target=floor((12-2)/3)=3
如果使用 parallel_tasks=auto,$mesh 应选择 parallel_tasks_target 并解释数学。
如果使用 max_tasks=auto,$mesh 应继续排出可运行任务,直到没有工作就绪(或达到固定时间预算;当运行器不提供时默认 45m)。
consensus_retries 语义(必需):
- 总是尝试一次初始
critique -> synthesis -> vote循环 consensus_retries计数初始循环后的额外循环- 默认
consensus_retries=2意味着每个任务最多3个总投票循环
无头模式(非交互式)
如果 headless=true:
- 不要询问用户问题。
- 无头优先级是绝对的:如果任何分支说“询问用户”,此模式覆盖该分支。
- 如果先决条件缺失(计划文件、验证命令、适配器能力),干净地退出并附上一条可操作行,并包括
headless_stop_reason=<code>。 - 支持的
headless_stop_reason代码:plan_missing|ambiguous_plan_file|adapter_missing_capability|missing_validation。 - 优先继续其他可运行任务而不是停止整个运行;如果没有剩余可运行任务,干净地退出。
- 如果工作者委托从未启动,报告
delegation_did_not_run=true并附上一条原因。
预算调控器(运行器侧):
--budget-mode aware可能使用account/rateLimits/read来限制并行性以调整周度配额。--budget-mode all_out忽略调整并以全配置并发性运行。
协调框架(可选)
默认情况下,$mesh 是中心辐射式:工作者只与协调器通信。
如果您想要代理到代理的协调(特别是跨多个 $cas 实例),添加一个协调基础,包含:
- 共享任务列表(推荐:
$st) - 持久邮箱(线程化消息)
- 咨询文件租赁(范围预留)
参考规范:codex/skills/mesh/references/coordination-fabric.md。
触发(推荐):如果 parallel_tasks > 1 或者您正在运行多实例工作(例如通过 $cas),使用邮箱+租赁。
最小框架(工具无关):
- 邮箱消息字段:
msg_id、thread_id(通常task_id)、from、to|broadcast、type、body、ts、attempt、in_reply_to、dedupe_key - 租赁字段:
lease_id、owner、scope[]、mode=exclusive|shared、ttl_seconds、acquired_at、expires_at、last_heartbeat_at、epoch、reason=task_id
邮箱幂等性规则(必需):
- 重试发送必须保持
dedupe_key稳定。 - 协调器必须在
follow_up前通过msg_id(回退dedupe_key)去重交付。
租赁生命周期规则(必需):
- 在
ttl_seconds / 3处对活跃租赁进行心跳。 - 在写/应用前立即重新检查租赁有效性。
- 如果租赁陈旧,回收它,发出
type=lease_reap,并在继续前重新声明。
快乐路径:
- 发布
claim(thread=task_id) - 获取一个基于
mesh_meta.scope的独占租赁 - 工作;发布
proposal/critique/question/decision - 发布
proof(确切验证命令 + 通过/失败 + 关键行) - 早期释放租赁(不要仅依赖TTL)
覆盖优先级(从高到低):
- 调用参数
- 每个任务的
$st注释中的mesh元数据块 - 上述默认值
工作者适配器合约(必需)
$mesh 必须使用一个运行时适配器来隐藏后端原生工具名称。
使用稳定适配器动词作为公共接口,并将原始工具调用保持为实现细节。
必需适配器动词:
fanout: 为一轮启动一个或多个角色工作者collect: 收集工作者输出(包括部分完成)retry: 重试一次失败/无响应的工作者follow_up: 在需要时将澄清发送给特定工作者close: 当生命周期关闭明确时释放工作者槽位/资源capabilities: 暴露扇出限制和生命周期语义
常见适配器ID(约定;可选):
local: 会话内工作者(子代理)cas: 多实例工作者(通过$cas),通过邮箱+租赁协调;一个加入应用补丁/验证/突变$stauto: 吞吐量感知选择。为单波工作负载选择local;当就绪队列深度超过一个本地波时,或者当高扇出意图遇到观察到的本地容量压力时,切换到cas。总是报告选择的适配器 + 原因。
适配器选择顺序:
0) 如果调用包括 adapter=<id>(例如 adapter=local 或 adapter=cas),如果可用则使用它;如果不可用,视为 adapter_missing_capability。
- 如果
adapter=auto,首先评估吞吐量:- 估计
local_wave_capacity = floor((max_threads - reserve_slots)/roles_per_task) - 如果
ready_queue_depth > local_wave_capacity,选择cas - 如果高扇出意图(“尽可能多的子代理/分片”)且观察到一个本地容量压力事件,选择
cas - 否则选择
local
- 估计
- 否则优先选择运行时显式标记为
preferred的适配器。 - 否则选择第一个满足所有必需动词的适配器。
- 否则停止并请求用户切换到支持工作者的运行时。
通信由协调器调解:每个轮次的提示包括先前轮次的工件。
工作者失败分类(必需):
worker_turn_hang_before_output: 工作者从未返回第一个工件。no_diff_parsed: 工作者回复不满足工件解析合约。no_patch_returned: 工作者返回显式的无补丁/无差异结果。no_response: 传输/生命周期超时,没有可用的工作者工件。- 持久化确切的失败代码;不要将它们折叠到一个桶中。
槽位卫生(必需):
- 对于具有显式关闭语义的适配器,一旦输出被集成或放弃,关闭每个生成的工作者。
- 总是报告
spawned与closed;如果它们不同,视为可靠性错误。
并行工具批处理(必需):
- 当可用时,使用
multi_tool_use.parallel进行扇出和关闭扫描(避免顺序生成/关闭)。 - 将所有活跃ID的每个
wait调用保持为一个调用;如果需要,用剩余ID循环(避免每个代理一个等待的循环)。
饱和规则(必需):
- 当
parallel_tasks > 1时,扇出应在一个批处理调用中(或尽可能少的批次)生成所有进行中任务所需的工作者,而不是顺序的每任务循环。
容量和弹性规则:
- 如果您不能为一个任务运行5角色群集(扇出上限、生成失败、资源限制或重复
no_response),回退到3角色群集(proposer、skeptic、synthesizer)用于该任务。
如果没有兼容适配器可用,停止并请求用户切换运行时。
计划事实来源($st)(必需)
$st 状态是任务和依赖项的权威。
规则:
- 永远不要手动编辑JSONL计划;仅通过
$st脚本突变。 - 将会话内计划UI(如果存在)视为镜像,而不是事实。
计划文件解析(必需)
按此顺序解析计划文件路径:
- 如果调用包括
plan_file=<path>,使用该确切路径。 - 否则如果这些文件恰好有一个存在,使用现有文件:
.codex/st-plan.jsonl.step/st-plan.jsonl
- 否则如果两者都存在,停止并请求用户选择一个。
推荐默认:显式传递
plan_file=.step/st-plan.jsonl。- 如果
headless=true,不要询问;停止并附上一条可操作行和headless_stop_reason=ambiguous_plan_file。
- 如果
- 否则(都不存在),选择
.step/st-plan.jsonl并停止,附带确切的初始化命令:CODEX_SKILLS_HOME="${CODEX_HOME:-$HOME/.codex}"; CLAUDE_SKILLS_HOME="${CLAUDE_HOME:-$HOME/.claude}"; ST_PLAN="$CODEX_SKILLS_HOME/skills/st/scripts/st_plan.py"; [ -f "$ST_PLAN" ] || ST_PLAN="$CLAUDE_SKILLS_HOME/skills/st/scripts/st_plan.py"; uv run "$ST_PLAN" init --file .step/st-plan.jsonl
执行预检查(必需)
在生成工作者之前,发出一个单行预检查,包含:
- 一个用于后续
$seq挖掘的稳定运行ID:mesh_run_id=<UTC-compact>(例如:mesh_run_id=20260213T015500Z) - 解析的
plan_file - 选择的适配器ID(
selected_adapter) - 适配器选择原因(
selection_reason) - 此运行请求的工作者槽位(
requested_workers) - 本地每波容量(
local_cap) - 选择的任务ID(或
none) - 活跃覆盖(
max_tasks、parallel_tasks、ids)
推荐格式:
mesh_preflight mesh_run_id=... plan_file=... selected_adapter=... selection_reason=... requested_workers=... local_cap=... ids=... overrides=...
如果没有选择可运行任务,通过“无可运行任务”路径退出。
任务元数据合约(必需)
每个 $st 项目必须可操作,无需猜测。在项目的 notes 字段中使用围栏的 mesh 块存储群集执行元数据。
必需键:
scope: 文件路径或通配符列表(用于冲突避免)acceptance: 可检查的接受项目列表validation: 集成后要运行的shell命令列表
可选键:
risk:low|medium|highswarm: 覆盖(例如roles、consensus_threshold、consensus_retries)allow_no_validation:true|false(默认:false)
示例 notes 内容:
scope:
- "src/foo.py"
- "tests/test_foo.py"
acceptance:
- "foo() rejects invalid input"
validation:
- "uv run pytest -q"
risk: medium
如果 mesh 块缺失或不完整,该任务的首要行动是元数据水合:
- 提议者生成一个最小
mesh块 - 协调器通过
$st set-notes持久化它 - 然后群集继续
调度策略(必需)
默认行为是顺序优先,以与 $st 的单-in_progress 不变性对齐,并避免工作空间编辑冲突。
任务选择顺序:
- 如果有一个
in_progress项目,首先运行该项目。 - 否则运行第一个
dep_state == ready的pending项目。 - 如果提供
ids=,将选择限制到那些ID的传递依赖闭包,并在该闭包内选择第一个可运行项目。
并行性(parallel_tasks > 1)仅当所有条件为真时才允许:
- 用户通过调用参数显式请求它
- 每个选择的任务有不相关的
scope - 设置多个任务
in_progress的$st突变使用--allow-multiple-in-progress
群集协议(每任务)
角色
默认5角色集:
proposer: 提议方法 + 假设 + 风险登记critic_a: 正确性/回归审查critic_b: 覆盖/人机工程学审查skeptic: 对抗性边缘案例 + 不变量压力测试synthesizer: 将批评纳入最终的、最小的补丁
回退3角色集(容量模式):
proposerskepticsynthesizer
防护:批评者和怀疑者是只读的。
补丁作者规则:
- 默认:只有合成者输出补丁差异。
- 提议者只有在明确请求时才可能输出补丁差异。
工件
协调器必须显式地在轮次之间传递工件。
task_meta: 解析(或原始)的mesh块 + 步骤文本proposal: 提议者输出critiques: critic_a、critic_b、skeptic输出synthesis: 合成者输出(必须包括统一差异)votes: 每个角色对合成补丁的投票mail: 角色到角色的消息(可选;协调器调解)
协调器邮件规则:
- 任何工作者可以包括一个
outbox部分(可选)。协调器必须在下一个依赖轮次前通过follow_up将这些消息交付给地址角色。
步骤0:水合元数据(如果需要)
如果需要任务元数据缺失:
- 生成提议者,使用
step=hydrate_meta生成mesh块。 - 通过
$st set-notes持久化。 - 重新加载任务元数据并继续。
轮次A:提议
生成提议者,包含:
- 任务ID + 步骤
- 当前
mesh元数据 scope中列出的路径(工作者应读取自己的代码上下文;不要将文件内容预加载到提示中)
提议者输出必须包括:
- 一个简短计划
- 显式假设
- 风险级别
轮次B:批评(并行)
并行生成critic_a、critic_b、skeptic。
每次批评必须:
- 引用特定风险/缺失案例
- 说明什么改变会将他们的投票翻转为
agree
轮次C:合成
生成合成者,包含提议 + 所有批评。
合成者输出必须包括:
- 作为文本的统一差异(不要应用它)
- 一个决策日志,映射批评到采取的行动(接受/拒绝并附原因)
- 要运行的确切验证命令(必须匹配任务元数据,除非显式更新)
合成工件合约(必需):
- 默认工件形状:恰好一个围栏的统一差异块。
- 如果没有安全补丁可用,发出恰好一行
NO_DIFF:<原因>。 - 如果输出不可解析,运行一次严格格式的
follow_up;如果仍然不可解析,视为no_diff_parsed。
轮次D:投票
合成后,获得每个角色的显式投票。
并行收集投票。
投票提示输入包括:
- 任务元数据
- 合成的差异
- 决策日志
每个投票响应必须是:
vote: agree|disagree- 一行理由
共识逻辑:
- 对于5角色:要求
agree >= 4 - 对于3角色:要求
agree == 3 - 然后继续到集成 + 验证
- 否则重试
critique -> synthesis -> vote最多consensus_retries次 - 如果仍然低于阈值,标记任务
blocked,原因为no_consensus
集成、验证和持久化
共识后:
如果 integrate=false:
- 不要应用补丁。
- 不要运行验证。
- 不要突变
$st。 - 返回合成的差异 + 决策日志 + 验证命令,以便另一个加入可以应用它。
- 如果
strict_output=true,返回恰好一个围栏差异块或一行NO_DIFF:<原因>,没有包装散文。
- 如果
否则(默认,integrate=true):
- 应用合成的补丁(首选补丁优先)。
- 运行任务元数据中的验证命令。
- 如果
validation缺失且allow_no_validation != true,标记blocked,原因为missing_validation,并请求用户的验证信号。
- 如果
- 持久化
$st状态转换:- 开始时设置
in_progress(如果尚未) - 成功时设置
completed - 失败时设置
blocked,附原因注释
- 开始时设置
持久化要求(使用 $st add-comment):
- 总是追加一个
[mesh]注释,包含:- 结果:
completed|blocked - 当阻塞时阻塞原因代码:
no_consensus|worker_turn_hang_before_output|no_diff_parsed|no_patch_returned|no_response|missing_validation|validation_failed|ambiguous_integration - 当适用时的投票统计(同意/不同意计数)
- 执行的验证命令和结果(不伪造日志)
- 追加的学习记录ID(如果可用)
- 结果:
学习捕获($learnings)(必需)
自动捕获持久学习:
- 每任务检查点:在每个任务完成或阻塞后立即
- 运行结束检查点:一个合成的运行级学习摘要
将每个学习基于证据(批评 + 验证结果)。通过 $learnings 工作流持久化到 .learnings.jsonl。
计划镜像(可选)
如果您的运行时提供计划UI工具,在每次 $st 突变后镜像 $st 状态。
将UI视为仅镜像。
报告
返回:
- 尝试的任务及其最终状态(
completed、blocked、pending) - 并发遥测:请求 vs 实现(
parallel_tasks、每个任务的角色数);如果低于目标,说明原因(范围重叠、适配器上限、生成失败) - 共识遥测(尝试计数、投票统计)
- 委托遥测:
delegation_did_not_run=true|false;当为true时,包括一个原因代码 - 失败遥测:观察到的失败代码(
worker_turn_hang_before_output|no_diff_parsed|no_patch_returned|no_response)和重试结果 - 适配器遥测(选择的适配器、选择原因、请求的工作者、本地容量、工作者生成/完成/重试/超时)
- 槽位卫生遥测:当关闭语义存在时工作者
spawned与closed;包括任何掉队者 - 验证命令和结果
- 执行的
$st突变(ID + 状态) - 学习捕获证据(追加的记录)
也在最终报告中包括运行ID,以便 $seq 稍后可以找到它:
mesh_run_id=...
永远不要伪造时间戳、工具事件或命令输出。
运行后Seq防护(必需用于高扇出意图)
当用户意图是显式的高扇出(“许多子代理”、“许多分片”、“尽可能多”)时,在响应前运行最终的 $seq 检查。范围计数到此网格运行(不是累积会话总数):
- 将
mesh_run_id=YYYYMMDDTHHMMSSZ转换为mesh_run_since=YYYY-MM-DDTHH:MM:SSZ并传递给--since。 - 自
mesh_run_since以来,计数当前会话路径的spawn_agent。 - 自
mesh_run_since以来,计数相同路径的CAS信号($cas提及或adapter=cas)。 - 如果运行范围的
spawn_agent >= 10且CAS信号是0,包括一个显式推荐,使用以下命令重新运行:node codex/skills/mesh/scripts/mesh_cas_fleet_autopilot.mjs --cwd <repo> --workers N
参考命令:
CODEX_SKILLS_HOME="${CODEX_HOME:-$HOME/.codex}"; CLAUDE_SKILLS_HOME="${CLAUDE_HOME:-$HOME/.claude}"; SEQ_SCRIPT="$CODEX_SKILLS_HOME/skills/seq/scripts/seq.py"; [ -f "$SEQ_SCRIPT" ] || SEQ_SCRIPT="$CLAUDE_SKILLS_HOME/skills/seq/scripts/seq.py"; uv run python "$SEQ_SCRIPT" query --root ~/.codex/sessions --since <mesh_run_since> --spec '{"dataset":"tool_calls","where":[{"field":"path","op":"eq","value":"<session_path>"},{"field":"tool","op":"eq","value":"spawn_agent"}],"group_by":["path"],"metrics":[{"op":"count","as":"spawn_calls"}],"format":"table"}'CODEX_SKILLS_HOME="${CODEX_HOME:-$HOME/.codex}"; CLAUDE_SKILLS_HOME="${CLAUDE_HOME:-$HOME/.claude}"; SEQ_SCRIPT="$CODEX_SKILLS_HOME/skills/seq/scripts/seq.py"; [ -f "$SEQ_SCRIPT" ] || SEQ_SCRIPT="$CLAUDE_SKILLS_HOME/skills/seq/scripts/seq.py"; uv run python "$SEQ_SCRIPT" query --root ~/.codex/sessions --since <mesh_run_since> --spec '{"dataset":"messages","where":[{"field":"path","op":"eq","value":"<session_path>"},{"field":"text","op":"regex","value":"\\$cas\\b|adapter=cas\\b","case_insensitive":true}],"group_by":["path"],"metrics":[{"op":"count","as":"cas_signals"}],"format":"table"}'
错误处理
- 缺失
$mesh令牌:在此技能下不执行任何操作。 - 计划文件缺失:停止并附带确切的
$st init命令。- 如果
headless=true,不要询问;发出一条可操作行和headless_stop_reason=plan_missing。
- 如果
- 存在
.codex/st-plan.jsonl和.step/st-plan.jsonl:请求用户选择plan_file=。- 如果
headless=true,不要询问;发出一条可操作行和headless_stop_reason=ambiguous_plan_file。
- 如果
- 无可运行任务:报告就绪/阻塞/完成计数并干净地退出。
- 重试后共识失败:设置
blocked+ 注释no_consensus。 worker_turn_hang_before_output:- 替换工作者一次并在当前群集大小中重试
- 如果在5角色群集中仍然失败,用回退3角色群集重试一次
- 如果仍然失败,设置
blocked+ 匹配失败代码注释
no_diff_parsed:- 发送一次严格输出的
follow_up,请求恰好一个围栏差异块或一行NO_DIFF:<原因> - 如果仍然不可解析,设置
blocked+ 注释no_diff_parsed
- 发送一次严格输出的
no_patch_returned:- 如果
integrate=false,返回NO_DIFF:<原因>并不突变$st - 如果
integrate=true,设置blocked+ 注释no_patch_returned
- 如果
no_response(传输/生命周期超时,没有可用输出):- 在当前群集大小中重试一次
- 如果在5角色群集中仍然不可用,用回退3角色群集重试一次
- 如果仍然不可用,设置
blocked+ 注释no_response
adapter_missing_capability:切换到另一个兼容适配器;如果没有,请求用户切换运行时。- 如果
headless=true,不要询问;发出一条可操作行,包含headless_stop_reason=adapter_missing_capability和delegation_did_not_run=true。
- 如果
adapter_capacity:将活跃群集减少到回退3角色模式并重试一次。lifecycle_mismatch(spawned != closed):运行关闭扫描,报告掉队者,并将未解决的失配视为可靠性错误。headless模式中的missing_validation:设置blocked,发出一条可操作行,并包括headless_stop_reason=missing_validation。
工作者提示模板
使用角色特定的提示。总是包括 task_id、step 和完整的当前工件。
提议 / 元数据水合:
您是一个任务的 $mesh 提议者。
硬规则
- 不要提交或推送。
- 不要应用补丁。首选计划 + 伪代码;只有在明确请求时才输出统一差异。
任务上下文:
- task_id: [ID]
- step: [hydrate_meta|proposal]
- st_step: [the $st step text]
- mesh_meta: [current mesh block or MISSING]
必需输出:
1) 计划(1-5个项目)
2) 假设
3) 风险(low|medium|high)+ 前3风险
4) 如果 step=hydrate_meta:输出一个完整的 ```mesh``` 块
5) 可选:`outbox` 消息给其他角色(见下)
Outbox 格式(可选):
outbox:
- to: critic_a|critic_b|skeptic|synthesizer|broadcast subject: “…” body: “…”
批评:
您是一个任务的 $mesh 批评者。
硬规则
- 不要提交或推送。
- 只读:不要应用补丁。
输入:
- task_id: [ID]
- role: [critic_a|critic_b|skeptic]
- proposal: [text]
- mesh_meta: [text]
必需输出:
1) 发现(最多8个项目)
2) 必须修复的项目(如果有)
3) 投票翻转条件:什么会使您在合成后投票 `agree`
4) 风险级别(low|medium|high)
5) 可选:`outbox`(例如,请求另一个批评者证伪一个声明)
合成:
您是一个任务的 $mesh 合成者。
硬规则
- 不要提交或推送。
- 不要应用补丁;只输出统一差异文本。
输入:
- task_id: [ID]
- mesh_meta: [text]
- proposal: [text]
- critiques: [critic_a, critic_b, skeptic]
必需输出:
1) 决策日志:映射每个批评点到 -> 接受/拒绝 + 原因
2) 补丁:统一差异(文本)
3) 验证:列出要运行的确切命令(与 mesh_meta 对齐,除非您显式更新了它)
4) 剩余风险(low|medium|high)
5) 可选:`outbox`(例如,投票者的问题;指出剩余不确定性)
投票:
您是一个任务的 $mesh 投票者。
硬规则
- 不要提交或推送。
- 不要提出新工作;投票于现有内容。
输入:
- task_id: [ID]
- role: [proposer|critic_a|critic_b|skeptic|synthesizer]
- synthesis: [diff + decision log]
必需输出:
vote: agree|disagree
reason: <one line>
人机工程学:以面向用户的运行输出结束:
“回复 $mesh 以从 $st 计划中运行下一个就绪任务。”