# Etunel 任务消息流程 准备派发、补充、跨角色中继、返回、完成、阻塞或结算 Hub 入站消息时读取。当前 Hook 和 MCP schema 是工具名、参数与授权的最终依据;本文只约束职责和消息意图。 ## 标识与身份 | 标识 | 含义 | |---|---| | WORK_ID | 贯穿项目生命周期的工作容器 | | 流程基线/阶段 | 当前 WORK_ID 已登记的流程版本与位置 | | 任务波次 | 同一有效基线下依赖已满足、可连续派发的一组任务 | | SUBTASK_ID | 一个主责角色和主责成员可独立判定的一项任务 | | role/member/session | 语义角色、实际角色实例、主责成员和绑定会话 | | message_id | 一条 Etunel 消息的单跳关联或结算标识 | 正文已有有效标识时复用。已终态 SUBTASK_ID 不重新作为活动任务;运行时字段命名不同则按实际 schema 映射。 ## 工具职责 | 意图 | 调用者 | Etunel 工具 | |---|---|---| | 向一个角色派发一条任务消息 | Hub | etunel_send_to_role,kind=task | | 向同一来源角色返回信息或终态状态 | Hub | etunel_send_to_role,kind=reply 或 kind=status,并按 schema 关联来源 message_id | | Hub 已处理入站且无需回复 | Hub | etunel_complete_coordination | | 成员向 Hub 补充、聚合询问或报告非终态状态 | 成员 | etunel_send_to_hub | | 成员成功结束自己的任务 | 主责成员 | etunel_complete_task | | 成员以具体阻塞结束自己的任务 | 主责成员 | etunel_report_blocked | | 读取当前消息列出的必要附件 | 当前绑定会话 | etunel_receive_message | 工具未暴露、名称或参数不同,以当前 Hook 和 schema 为准并报告能力缺口;不得猜参数或请求内部授权字段。 ## 任务波次如何发送 etunel_send_to_role 一次调用只发送一个接收角色和一条消息: - 同一角色多个独立 SUBTASK_ID 可连续发送,由 Etunel 队列处理; - 同一角色紧密相关且共同交付的内容可合并为内聚任务包; - 不同角色的依赖就绪任务分别发送、独立返回; - 排队不代表角色业务并行完成,也不代表下游依赖已经满足。 Hub 不实现队列、ACK、锁、重试、去重或文件传输;这些由 Etunel 软件承担。 ## Hub 发送任务 每条正式任务消息应包含: - WORK_ID、SUBTASK_ID、模式、流程基线、阶段和波次; - semantic role、实际 role ID、主责成员、session、human owner 和协作角色; - 目标、背景、上游成果、输入版本和成果引用; - IN_SCOPE、OUT_OF_SCOPE、依赖、接口、限制和风险; - 指定成果及最低内容、证据、版本、下游用途; - 要求完成时间、完成条件和职责内结论; - 专业自审和 human owner 确认要求; - 信息不足、额外产出和阻塞的处理边界。 纯信息、澄清或授权消息写清问题、已确认事实、影响、选项和所需答复,不要求空文件。不要转发无关聊天、全量计划或无法消化的资料堆。 ## 成员请求补充 成员先询问自己的负责人并完成必要线下沟通。仍需 Hub 时,用一条 etunel_send_to_hub 写清: - SUBTASK_ID、已完成工作和现有成果; - 聚合后的缺失信息/决定及用途; - 已向负责人询问和线下协调的结果; - 对结论、范围、期限、风险和下游的影响; - 建议的信息所有者角色; - 当前仍可继续的范围与希望 Hub 返回的具体内容。 Hub 已有登记答案时一次补足;没有时才产生必要的跨角色查询或任务。 ## 经 Hub 的跨角色中继 当前 Etunel 没有成员间直连工具。跨角色交流必须是:来源成员 → Hub → 目标成员 → Hub → 来源成员。 - Hub 忠实保留问题、适用范围和来源,不替任一角色作专业改写; - 目标角色返回前完成专业自审和负责人确认; - Hub 校验并登记确认结论后,才向来源角色返回最小必要内容; - 给另一个角色的新 task 是独立消息,不能拿来源角色的 message_id 充当跨角色结算; - 只有按当前 schema 返回同一来源角色的关联 reply/status 才结算该来源协调项; - 一个跨角色 task 的发送不能替代对原入站消息的正确处理。 默认一次聚合请求和一次答复;复杂异常使用 Meeting Decision Record,不把多轮聊天当成项目事实。 ## Project Status Snapshot 状态快照只由 Hub 向受影响角色发送,是裁剪后的状态同步,不是新专业任务、成果或门禁。写明变化、有效版本、对接收方影响、下一步、责任方和期限;同一处理轮聚合一次。若需要角色执行动作,应另有明确 task 或按当前 schema 明确消息意图。 ## 成员完成或阻塞 调用 etunel_complete_task 前,确认指定成果、证据、版本、期限状态、专业自审、负责人确认和明确结论均已包含。 调用 etunel_report_blocked 时至少说明: - 阻塞条件; - 已完成成果和已尝试排查/负责人/线下协调; - 缺失输入或决定及建议责任人; - 对本任务和下游的影响; - 恢复条件和建议下一步。 成员只能结束自己的任务。Hub 不能代成员完成或阻塞;成员不能结算 Hub 的协调消息。 ## Hub 处理成员入站 Hub 对每条入站消息选择: - 需要向同一来源角色回复:按 schema 发送关联 reply/status; - 无需回复且已处理:调用 etunel_complete_coordination; - 需要其他角色:正确处理来源协调项,并按依赖创建一个或多个必要任务; - 同一轮到达多个相关结果:先更新成果、状态和依赖,再统一选择下一波次。 消息结算、排队和送达不代表 SUBTASK_ID、成果、阶段或 WORK_ID 完成。 ## 附件 直接使用当前消息正文和内嵌内容。仅当消息明确列出附件且为当前任务必要输入时,调用 etunel_receive_message 获取所需附件。不要为探测队列或重复确认而读取。