feat(ability): PipelineAbility加流程修订/定向重做三钩子(2026-09-17用户裁定:用户有权调整流程并要求从任一阶段按意见重做,或只给意见由LLM判注入点)——stage_reentry_describe(重做影响说明进确认待办,破坏性预告)/stage_reentry(确认生效时执行阶段重置,产线语义知识)/progress_summary(LLM判注入点的进度上下文);getters三件套+__init__导出;flow-plan技能同步(修订概念/定向重做会话流程/detect_reentry_stage纪律:判定失败如实转告禁自己猜)

This commit is contained in:
yumoqing 2026-09-18 00:05:42 +08:00
parent ef91f05ab3
commit 190023ebbf
3 changed files with 68 additions and 7 deletions

View File

@ -37,6 +37,9 @@ from .ability import (
get_flow_template,
flow_template_to_dict,
flow_stage_to_dict,
get_stage_reentry_handler,
get_stage_reentry_describe,
get_progress_summary_handler,
)
from .slash import (
SlashCommand,

View File

@ -101,6 +101,22 @@ class PipelineAbility:
menus: List[Dict] = field(default_factory=list) # 产线功能菜单AgentIO 上方)[{"label","icon","url","type"}]
flow_stages: List[FlowStage] = field(default_factory=list) # 预制流程阶段(空 = 该产线未声明可裁剪流程)
flow_templates: List[FlowTemplate] = field(default_factory=list) # 多流程模板≥2 条时文件导入触发 LLM 自动判流;空 = 单流程,用 flow_stages
# ── 流程修订/定向重做钩子2026-09-17flow_plan_capability.revise_flow_plan 消费)──
# 用户有权在项目运行中调整流程、并要求从任一阶段按意见重做(甚至只给意见,由
# LLM 判注入点 detect_reentry_stage。引擎只做通用编排修订计划提案/用户确认/
# CAS 换版/钩子回调),「重置某阶段意味着清哪些产出、复位哪些状态」是产线语义
# 知识,由产线注册钩子提供;未注册 = 该产线不支持定向重做(引擎诚实拒绝)。
# stage_reentry_describe: async (sor, project_id, stage_key, affected_keys) -> str
# 重做影响说明(进确认待办正文——破坏性动作预告,用户确认前看得到将发生什么)
# stage_reentry: async (sor, project_id, stage_key, affected_keys,
# user_requirements, operator_id) -> (ok, msg)
# 确认生效时执行阶段重置(清产出/复位状态/作废下游交付物),之后产线流转
# 机制(对账器/next_role 链)按既有逻辑自动从该阶段重新推进
# progress_summary: async (sor, project_id) -> str
# 项目进度摘要detect_reentry_stage LLM 判注入点的上下文)
stage_reentry_describe: Optional[Callable] = None
stage_reentry: Optional[Callable] = None
progress_summary: Optional[Callable] = None
# ── 全局注册表 ──
@ -224,6 +240,24 @@ def flow_template_to_dict(t: FlowTemplate) -> Dict:
}
def get_stage_reentry_handler(pipeline_id: str) -> Optional[Callable]:
"""取产线注册的阶段重做执行钩子None = 产线不支持定向重做)。"""
a = get_ability(pipeline_id)
return a.stage_reentry if a else None
def get_stage_reentry_describe(pipeline_id: str) -> Optional[Callable]:
"""取产线注册的重做影响说明钩子None = 无产线级说明,引擎给通用文案)。"""
a = get_ability(pipeline_id)
return a.stage_reentry_describe if a else None
def get_progress_summary_handler(pipeline_id: str) -> Optional[Callable]:
"""取产线注册的进度摘要钩子detect_reentry_stage LLM 判注入点用)。"""
a = get_ability(pipeline_id)
return a.progress_summary if a else None
def flow_stage_to_dict(st: FlowStage) -> Dict:
"""FlowStage → dict展示/落库用)。"""
return {

View File

@ -1,6 +1,6 @@
---
name: flow-plan
description: 产线流程裁剪与 PM 任务拆解的通用概念规范——预制流程阶段、裁剪合法性、确认门禁、复杂度判断与子任务编排。任何产线的会话 agent 裁剪流程、PM 拆解复杂任务时先读它。触发:流程裁剪/简化流程/跳过阶段/任务拆解/子任务编排。
description: 产线流程裁剪/修订/定向重做与 PM 任务拆解的通用概念规范——预制流程阶段、裁剪合法性、确认门禁、运行中修订、从任一阶段重做、复杂度判断与子任务编排。任何产线的会话 agent 裁剪/修订流程、用户要求重做某阶段、PM 拆解复杂任务时先读它。触发:流程裁剪/简化流程/跳过阶段/调整流程/重做某阶段/从XX开始重来/任务拆解/子任务编排。
capability: flow_plan_capability
tools: [create_sub_tasks]
---
@ -10,10 +10,15 @@ tools: [create_sub_tasks]
## 一、概念
- **预制流程** = 产线声明的阶段链(能力包 flow_stageskey/label/描述/可裁性/角色/依赖)。
- **流程裁剪计划** = 项目级的一次性决定:哪些阶段保留、哪些裁掉。存 pipeline_flow_plans
- **流程裁剪计划** = 项目级决定:哪些阶段保留、哪些裁掉。存 pipeline_flow_plans
状态机 draft → pending_confirm → confirmed / rejected驳回可修订重提version+1
- **裁剪只在项目启动阶段有效**已有角色任务产出结果approved/completed后拒绝裁剪
确认后不可改(要改流程 = 新建项目)。
- **首次裁剪propose_flow_plan只在项目启动阶段有效**:已有角色任务产出结果
approved/completed后拒绝首次裁剪。
- **运行中修订revise_flow_plan2026-09-17 起)**:用户有权随时调整流程——对已
confirmed 计划提修订版v+1 → pending_confirm可改裁剪、可要求从任一阶段按意见
定向重做reentry_stage。修订确认前旧计划持续生效无空窗用户确认时换版
(旧版 superseded+ 产线钩子执行阶段重置(清产出/复位状态/作废交付物),之后
流转机制自动从注入阶段重新推进。
## 二、可裁性三级(代码硬校验,不是 LLM 自觉)
@ -39,9 +44,28 @@ propose 时代码校验拒绝。**任何校验失败都要把原因如实转告
## 四、会话 agent 工具
- show_flow_template列预制流程阶段与可裁性裁剪前必用别凭记忆猜 key
- propose_flow_plan(trim_keys, user_requirements, propose_note):生成草案+发确认待办。
user_requirements 必须写用户要求原文(进确认待办给用户看)。
- get_flow_plan查计划状态与驳回意见。
- propose_flow_plan(trim_keys, user_requirements, propose_note)**项目未开跑时**生成
首次裁剪草案+发确认待办。user_requirements 必须写用户要求原文(进确认待办给用户看)。
- revise_flow_plan(user_requirements, reentry_stage?, trim_keys?, propose_note?,
reentry_detect_note?)**计划已确认后**的流程修订(改裁剪 和/或 定向重做)。
被拒绝并提示「已确认请改用 revise」时就用它。
- detect_reentry_stage(user_comment):用户只给修改意见、没指明从哪个阶段重做时调用——
LLM 按意见+阶段声明+项目进度判定注入点(语义判断归 LLM禁词匹配。返回
stage_key+判定依据 note**原样**传给 revise_flow_plannote 进确认待办由用户核对,
错判由确认门兜住)。判定失败(空 key时如实转告用户失败原因禁止自己猜阶段。
- get_flow_plan查计划状态、驳回意见、定向重做注入点。
### 定向重做的会话流程用户说「从XX重做/按意见改」时)
1. 用户指明了阶段 → show_flow_template 核对 key → revise_flow_plan(reentry_stage=key,
user_requirements=用户意见原文)。
2. 用户只给意见没指明阶段 → detect_reentry_stage(user_comment=意见原文) →
成功则 revise_flow_plan(reentry_stage=返回key, reentry_detect_note=返回note原文,
user_requirements=意见原文);失败则如实转告。
3. 修订确认待办发出后告知用户:确认前旧计划持续生效;确认时才执行阶段重置
(待办正文有破坏性影响预告——重置会清哪些产出、作废哪些交付物)。
4. 你没有确认权——禁止声称已确认/已重做;用户确认后流转机制自动推进,不要替用户
手动派任务。
## 五、PM 复杂度拆解create_sub_tasks