from __future__ import annotations """ AI Prompt 集中管理 所有 AI 相关 prompt 模板放在此处,避免在 services 中硬编码。 使用 .format() 或 f-string 时需保证占位符与调用处一致。 """ from .ai_prompts_catalog import ( PROMPT_IMPACT_ANALYSIS, PROMPT_STRATEGIC_ANALYSIS_HEADER, PROMPT_RAG_CONTEXT_HEADER, PROMPT_RAG_CONTEXT_ITEM, PROMPT_CODE_AUDIT, PROMPT_CONTEXT_INSIGHTS, PROMPT_FEISHU_HUMANIZED_REPLY, PROMPT_FEISHU_PROJECT_SIGNAL_CLASSIFICATION, PROMPT_FEISHU_LEVEL_CLASSIFICATION, PROMPT_FEISHU_SIGNAL_EXTRACTION, PROMPT_FEISHU_PROJECT_PREFILL, PROMPT_PROJECT_REQUIREMENT_EXTRACTION, PROMPT_FEISHU_TASK_ORCHESTRATION, PROMPT_SIGNAL_SOURCE_ONBOARDING, PROMPT_AI_WORKER_SIGNAL_SOURCE_EXECUTION, PROMPT_AI_PMO_INTENT_CLASSIFICATION, PROMPT_AI_PMO_SIGNAL_BATCH_ANALYSIS, PROMPT_DRAFT_GENERATOR, PROMPT_RAG_INTENT_CLASSIFICATION, PROMPT_RAG_ANSWER, PROMPT_DECISION_QA, PROMPT_RAG_DB_PROJECT_QA, PROMPT_GENERATE_CHARTER, PROMPT_DECOMPOSE_TASKS, PROMPT_RECOMMEND_ASSIGNEES, PROMPT_ALIGNMENT_SCORE, PROMPT_COGNITIVE_CONFLICTS, PROMPT_EVALUATE_MODEL_REQUIREMENT, PROMPT_ANALYZE_CAPABILITY_GAP, PROMPT_ANALYZE_COST_ROI, PROMPT_ANALYZE_COST_OPTIMIZATION, PROMPT_ASSESS_MODEL_UPDATE_IMPACT, PROMPT_EXPERIMENT_SYNC_DECISION, PROMPT_SKILL_SCORE_UPDATE, PROMPT_WORKLOAD_OPTIMIZATION, PROMPT_ANALYZE_FOOD_CALORIES, PROMPT_SIGNAL_PLANNER, PROMPT_FEISHU_DIRECT_QA, PROMPT_FEISHU_MIXED_QA, PROMPT_PROJECT_STATUS_QA, PROMPT_MEMBER_WORKLOAD_QA, PROMPT_AI_PMO_QA, PROMPT_AI_PMO_REQUIREMENT_PLAN_QA, PROMPT_EXTERNAL_TREND_QA, PROMPT_INDUSTRY_TREND_QA, ) from .ai_prompt_registry import ( PROMPT_REGISTRY, PROMPT_REGISTRY_MAP, get_prompt_registry, get_prompt_registry_entry, iter_prompt_registry_keys, ) # Deprecated compatibility aliases kept outside the registry surface. PROMPT_FEISHU_REQUIREMENT_ANALYSIS = PROMPT_FEISHU_PROJECT_SIGNAL_CLASSIFICATION PROMPT_TASK_BREAKDOWN = PROMPT_DECOMPOSE_TASKS PMFLOW_SEMANTIC_CONTEXT_DECISION_PROMPT = """ 你是 PMFlow 的统一语义规划层。 你的输入是系统整理好的 semantic context packet。你的职责不是执行写操作,而是: 1. 判断用户这句话是否继续当前 topic。 2. 判断当前 workflow 是否继续停留在 plan。 3. 给出 draft patch 建议。 4. 给出要回复给用户的内容。 5. 明确 requested_actions 与是否需要确认。 硬约束: - 只能依据 packet 中的事实、草稿、recent turns、mode card 判断。 - 不得把推断包装成事实。 - 不得请求 mode card 明确禁止的动作。 - 输出必须是一个 JSON 对象,不要输出 Markdown。 JSON schema: { "topic_relation": "continue_current_topic | new_topic | uncertain", "mode_decision": "stay_plan | ready_confirm | request_execute | answer_only", "draft_patch": {}, "assistant_reply": "string", "requires_confirmation": true, "requested_actions": ["reply.compose"], "confidence": 0.0, "uncertainties": [] } semantic_context_packet: {semantic_packet} """.strip() def build_default_role_prompt_bundle() -> dict: """返回默认角色 Prompt 配置(每次调用返回新对象)。""" return { "version": 1, "active_role_key": "pm_dispatcher", "roles": [ { "role_key": "pm_dispatcher", "role_name": "产品经理(立项评审)", "role_description": "负责查重、评审、起草立项建议并给出确认前的产品方案", "enabled": True, "system_prompt": """ 你是 PMFlow 的 PMO 协作中枢中的立项评审角色(pm_dispatcher)。 职责边界(只做评审与起草,不直接执行写操作): 1. 聚焦查重、复用/合并、立项评审,优先判断是否已有同名或相似项目。 2. 输出面向业务决策的结论:是否新建、复用、合并或暂缓。 3. 基于项目上下文产出可讨论草案,覆盖项目定位、MVP、需求清单、风险与负责人建议。 4. 若信息不足,提出关键澄清问题(最多 3 个),不凭空补齐。 输出框架: 1. 先结论:1-2 句复述需求并给出立项方向。 2. 再查重:明确同名或相似项目判断,给出差异点与复用价值。 3. 再方案:给出 MVP、关键需求、主要风险、负责人建议、后续动作。 4. 全程专业、克制、结论先行,避免空泛口号。 禁止项: - 不要编造不存在的数据、进展或执行结果。 - 不要把评审写成机械化模板。 - 不要使用命令式、生硬语气。 - 不要输出与 PMFlow 业务无关的泛化建议。 """.strip(), }, { "role_key": "tech_architect", "role_name": "技术架构师", "role_description": "负责技术方案约束、风险评估与实现边界", "enabled": True, "system_prompt": """ 你是 PMFlow 的技术架构角色(tech_architect)。 职责边界: 1. 专注可行性、依赖、风险边界,不代替产品评审或交付推进。 2. 输出技术结论与约束,帮助团队判断是否能安全落地。 输出要点: 1. 先给结论:可行 / 有风险 / 需拆分。 2. 再给依据:关键依赖、性能风险、安全风险、兼容风险、成本约束。 3. 再给路径:最小可行步骤、建议拆分方式、必要前置条件。 4. 结尾明确:是否建议立即进入开发。 风格要求: - 简洁、严谨、可执行。 - 不讲空话,不编造验证结果。 """.strip(), }, { "role_key": "delivery_coach", "role_name": "交付推进官", "role_description": "负责推进节奏、协调分工与交付闭环", "enabled": True, "system_prompt": """ 你是 PMFlow 的交付推进角色(delivery_coach)。 职责边界: 1. 聚焦节奏、排期、负责人、推进动作。 2. 不代替技术评审,不输出与推进无关的实现细节。 输出格式: 1. 当前状态判断(一句话,先结论)。 2. 建议动作(不超过 3 条,动词开头,强调优先级与负责人)。 3. 风险提示(如有,突出阻塞与依赖)。 风格要求: - 明确、友好、推动协作。 - 结论先行,动作可执行,避免空泛管理话术。 """.strip(), }, ], } __all__ = [ "PROMPT_IMPACT_ANALYSIS", "PROMPT_TASK_BREAKDOWN", "PROMPT_STRATEGIC_ANALYSIS_HEADER", "PROMPT_RAG_CONTEXT_HEADER", "PROMPT_RAG_CONTEXT_ITEM", "PROMPT_CODE_AUDIT", "PROMPT_CONTEXT_INSIGHTS", "PROMPT_FEISHU_REQUIREMENT_ANALYSIS", "PROMPT_FEISHU_HUMANIZED_REPLY", "PROMPT_FEISHU_PROJECT_SIGNAL_CLASSIFICATION", "PROMPT_FEISHU_LEVEL_CLASSIFICATION", "PROMPT_FEISHU_SIGNAL_EXTRACTION", "PROMPT_FEISHU_PROJECT_PREFILL", "PROMPT_PROJECT_REQUIREMENT_EXTRACTION", "PROMPT_FEISHU_TASK_ORCHESTRATION", "PROMPT_SIGNAL_SOURCE_ONBOARDING", "PROMPT_AI_WORKER_SIGNAL_SOURCE_EXECUTION", "PROMPT_AI_PMO_INTENT_CLASSIFICATION", "PROMPT_AI_PMO_SIGNAL_BATCH_ANALYSIS", "PROMPT_DRAFT_GENERATOR", "PROMPT_RAG_INTENT_CLASSIFICATION", "PROMPT_RAG_ANSWER", "PROMPT_DECISION_QA", "PROMPT_RAG_DB_PROJECT_QA", "PROMPT_GENERATE_CHARTER", "PROMPT_DECOMPOSE_TASKS", "PROMPT_RECOMMEND_ASSIGNEES", "PROMPT_ALIGNMENT_SCORE", "PROMPT_COGNITIVE_CONFLICTS", "PROMPT_EVALUATE_MODEL_REQUIREMENT", "PROMPT_ANALYZE_CAPABILITY_GAP", "PROMPT_ANALYZE_COST_ROI", "PROMPT_ANALYZE_COST_OPTIMIZATION", "PROMPT_ASSESS_MODEL_UPDATE_IMPACT", "PROMPT_EXPERIMENT_SYNC_DECISION", "PROMPT_SKILL_SCORE_UPDATE", "PROMPT_WORKLOAD_OPTIMIZATION", "PROMPT_ANALYZE_FOOD_CALORIES", "PROMPT_SIGNAL_PLANNER", "PROMPT_FEISHU_DIRECT_QA", "PROMPT_FEISHU_MIXED_QA", "PROMPT_PROJECT_STATUS_QA", "PROMPT_MEMBER_WORKLOAD_QA", "PROMPT_AI_PMO_QA", "PROMPT_AI_PMO_REQUIREMENT_PLAN_QA", "PROMPT_EXTERNAL_TREND_QA", "PROMPT_INDUSTRY_TREND_QA", "PMFLOW_SEMANTIC_CONTEXT_DECISION_PROMPT", "PROMPT_REGISTRY", "PROMPT_REGISTRY_MAP", "get_prompt_registry", "get_prompt_registry_entry", "iter_prompt_registry_keys", "build_default_role_prompt_bundle", ]