"""引擎级共享能力:跨产线通用的任务/交付件/问答/项目生命周期工具集合。 这些 handler 操作的都是**通用表**(pipeline_tasks / pipeline_deliverables / pipeline_agent_questions / sd_projects),与具体产线无关。历史原因它们的实现落在 sdlc_ability.py 里;本模块把「通用那部分」聚合出来,供任意产线能力包复用: from pipeline_service.shared_ability import SHARED_TOOLS, SHARED_HANDLERS 这样新产线(如投标产线 bidding_general)不必复制 700 行任务管理代码,也不必反向依赖 另一个产线的能力包。零行为变更:只是引用,不移动实现。 后续可把这些 handler 的实现物理迁移到本模块,sdlc_ability 改为从这里 import。 """ import logging logger = logging.getLogger("pipeline.shared_ability") # 通用工具名单(产线无关)。凡涉及 sd_iterations / sd_features / sd_bugs / # sd_test_* / sd_deploy_envs 的 SDLC 专属工具都不在此列。 _GENERIC_TOOL_NAMES = [ # 任务 "create_task", "list_tasks", "task_detail", "reset_task_retry", "approve_task", "complete_task", "cancel_task", # agent 运行 / 诊断 "start_agents", "diagnose_project", "check_progress", # 交付件 "list_deliverables", "view_deliverable", "submit_deliverable", "approve_deliverable", "reject_deliverable", # 问答冒泡 "list_questions", "answer_question", "escalate_question", # 项目生命周期 "list_projects", "start_project", "complete_project", "archive_project", "reopen_project", "pause_project", "resume_project", "backup_project", # 角色模型 "list_role_models", "set_role_model", ] SHARED_TOOLS = [] SHARED_HANDLERS = {} def _build(): global SHARED_TOOLS, SHARED_HANDLERS try: from .sdlc_ability import SDL_TOOLS, SDL_HANDLERS except Exception as e: logger.warning("shared_ability: 无法加载通用 handler 源: %s", str(e)[:160]) return names = set(_GENERIC_TOOL_NAMES) SHARED_TOOLS = [t for t in SDL_TOOLS if getattr(t, "name", "") in names] SHARED_HANDLERS = {k: v for k, v in SDL_HANDLERS.items() if k in names} missing = names - set(SHARED_HANDLERS) if missing: logger.info("shared_ability: 以下通用工具未找到 handler(跳过): %s", sorted(missing)) logger.info("shared_ability: %d tools / %d handlers 可复用", len(SHARED_TOOLS), len(SHARED_HANDLERS)) _build()