16 KiB
16 KiB
ARCHITECTURE INVENTORY
1. 目的
- 本文档承接 PMFlow 的架构库存与关键入口索引。
CLAUDE.md保留当前架构说明、运行边界和参考模式。- 本文档记录当前模块分布、重要子包、关键脚本与前端页面分组,后续架构变更统一在此同步。
2. 同步规则
- 任何影响目录结构、主入口、模块归属、前后端页面/API 分组、脚本布局的架构变更,都必须同步更新:
CLAUDE.mddocs/architecture/ARCHITECTURE_INVENTORY.md
- API/Schema 契约变更仍需同步:
docs/architecture/API_CONTRACTS.md- 对应前端
types/api封装
- 路由/函数名/运行时流向变更仍需同步:
docs/architecture/DATAFLOW.mdbackend/.control_plane/pmflow-routing-rules.json
3. 顶层库存
docs/INBOX_INLINE_OPS_3_PHASE_CHECKLIST.md:消息台内联操作执行清单docs/architecture/MASTER_CONTRACT.md:跨栈主契约docs/architecture/CODE_REFERENCE_INDEX.md:新增代码参考入口与高频代码索引docs/architecture/RUNTIME_GUARDRAILS.md:运行边界、守门规则与已知运行假设docs/architecture/API_CONTRACTS.md:接口/Schema 契约docs/architecture/DATAFLOW.md:主链与数据流说明docs/architecture/TASK_BRIEF_TEMPLATE.md:任务包模板docs/superpowers/plans/:实现计划docs/superpowers/specs/:需求/方案规格docs/task_briefs/:任务包产物与验收截图
4. 后端库存
4.1 API 路由分组
backend/app/api/ai_steward_api/backend/app/api/ai_pmo_api/backend/app/api/feishu_api/backend/app/api/rag_api/backend/app/api/sstc_api/backend/app/api/signals_api/backend/app/api/signal_sources_api/backend/app/api/semantic_facts_api/backend/app/api/skill_tags_api/backend/app/api/ai_logs_api/
4.2 AI PMO 与语义主链
backend/app/services/ai_pmo/ai_pmo_kernel/backend/app/services/ai_pmo/ai_pmo_kernel_ingress_flow/backend/app/services/ai_pmo/project_operating_context_builder.pybackend/app/services/ai_pmo/ai_pmo_typed_executor_execute/backend/app/services/ai_pmo/ai_pmo_typed_executor_discovery/backend/app/services/ai_pmo/semantic_context/backend/app/services/ai_pmo/workflow_semantic_planner/backend/app/services/ai_pmo/draft_confirm_handler.py
4.3 问答、模型与生成
backend/app/services/adaptive_rag_service/backend/app/services/adaptive_rag_service/internal_query_context.pybackend/app/services/adaptive_rag_service/mixin_project_fit_brief.pybackend/app/services/adaptive_rag_service/mixin_query_route_gateway.pybackend/app/services/adaptive_rag_service/mixin_query_route_governance.pybackend/app/schemas/project_operating_context.pybackend/app/services/external_query_service/backend/app/services/semantic_fact_service/backend/app/services/semantic_fact_service/hooks.pybackend/app/services/llm_service/backend/app/services/ai_steward_service/backend/app/services/feedback_center/backend/app/services/task_brief_service.pybackend/app/config/ai_prompts.pybackend/app/config/ai_prompts_catalog/backend/app/config/ai_prompt_registry.pybackend/app/services/model/model_routing/service.pybackend/app/services/model/model_config.py
4.4 集成、信号与运行时
backend/app/services/integrations/feishu_integration_service/backend/app/services/integrations/feishu_outbox/service.pybackend/app/services/integrations/feishu_signal_pipeline/backend/app/services/signal/signal_capture_service/backend/app/services/signal/signal_source_orchestration/backend/app/services/signal/signal_source_repair/backend/app/services/signal/signal_planner/backend/app/services/signal/draft_generator_service.pybackend/app/core/startup/backend/app/utils/thread_context.pybackend/app/utils/timezone.pybackend/app/utils/audited_write.pybackend/alembic/versions/
4.5 Mounted Runtime / 训练相关
backend/app/models/reply_iteration.pybackend/app/models/training_pipeline.pybackend/app/models/mounted_ai_runtime.pybackend/app/models/query_route_memory.pybackend/app/models/semantic_fact.pybackend/app/models/semantic_fact_extraction_run.pybackend/app/api/ai_steward_api/routes_reply_iteration.pybackend/app/api/ai_steward_api/routes_training_pipeline.pybackend/app/api/ai_steward_api/routes_mounted_ai.py
4.6 结构归并结果
backend/app/services/根目录已目录化收敛,新增服务优先进入对应子包。- API canonical 入口优先使用
*_api/子包,不再优先引用顶层兼容壳。 - 运行时业务动作归因优先走“对象/上下文绑定 ->
SemanticContextPacket->SemanticDecision-> gatekeeper”。 - non-plan
query.answer现已在AdaptiveRAG内增加Query Route Gateway:只消费上游单次结构化query_profile/source_policy/effective_source_policy与显式 hint,结合ProjectOperatingContext归一化产出route_mode / decision_origin / reply_contract / probe_snapshot(contract audit) / execution_recipe,不再在运行时执行 internal/external probe 或 route memory 强拍板,再进入检索与回答主链。 ProjectOperatingContext当前由project_operating_context_builder.py统一组装:最小范围固定为“当前项目 + 当前仓库摘要 + 页面/线程锚点”;world model 建完后会回填resolved_project_id / repo_scope,再供Query Route Gateway、mixin_project_fit_brief.py与 answer payload 消费。- internal
query.answer的下一阶段基线已经确认:Query Route Gateway之后不再直接靠快答分支拍板,而是统一进入Operation Contract -> Target Resolver -> Query DSL Plan -> InternalContextPacket -> 白名单受控执行器 -> semantic facts 优先 -> verifier主链;InternalContextPacket由backend/app/services/adaptive_rag_service/internal_query_context.py定义,并作为 internal executor / verifier / runtime summary 的运行时单一真源;相关设计规格见docs/superpowers/specs/2026-04-15-internal-query-dsl-plan-design.md与docs/superpowers/specs/2026-04-15-semantic-facts-read-model-design.md。 - internal 主链现已补上 packet 预检:
mixin_answer_mainline.py在组完InternalContextPacket后,会先拦截missing packet / missing operation contract / target clarify / missing query plan contract这类上下文不完整场景,再决定是否进入 deterministic fast path、internal model-config fast path、GLM semantic fast path 或 retrieval;query_semantics对operation_contract / target_resolution / query_plan的镜像也已收口到单点兼容写回。 - external
query.answer已完成 second-pass 收口:Query Route Gateway之后统一进入backend/app/services/external_query_service/,按ProjectFitBrief -> External Query Planner -> External Query Gateway -> External Provider Registry -> MCP adapter 优先 -> bounded fallback live search -> external answer verifier -> ExternalContextPacket -> ExternalAnswerPresenter执行;planner 会显式消费fit_brief_summary / project_scope_hint / recommendation_goal / project_object_anchors,其中 formal object anchors 现优先来自ProjectFitBrief.signal_source_anchors,不再拿 feature capability 名称直接冒充 formal project object;payload 会拆出fit_brief / external_recommendation,AdaptiveRAG external probe、freshness fetch 与 external route retrieval 已接到这条链上,并对 external sources 执行 fail-closed 过滤;当前presenter.py使用独立 external-only prompt 家族,并强制区分verifier_blocked / no_relevant_results / retrieval_failed / indirect_only,不再回流industry_trend/external_trendscene prompt;相关设计规格见docs/superpowers/specs/2026-04-15-external-query-gateway-design.md。 - QA session detail 持久化现已补齐
routing_snapshot.response_payload:mixin_core_intent.py在写QARecord时会把project_operating_context / execution_recipe / fit_brief / external_recommendation / handoff_mode / can_enter_plan / recommended_next_step一并归档,mixin_qa_session_list_ops_p1.py再将其投影给 AI Steward 历史回放,避免即时回答与 session detail 出现两套合同。 - Feishu QA 呈现现与同一份 handoff payload 对齐:
mixin_receive_routing.py会先基于project_operating_context读取当前项目实体快照,再走“两段式 presenter”:第一段用结构化 analysis plan 只挑 1-2 个当前项目实体并写清conclusion / focus_entities / missing_mapping / next_step;第二段才允许自然化改写最终qa_direct文本。运行时会同时校验 fixed opener、标签摘要以及未入选实体泄漏;若任一条件不满足,则 fail-closed 回退到 analysis-plan deterministic 文本。同时保留draft_pending_confirm / requirement_plan_followup / pending_manual优先走 action card,避免把飞书回归修成单纯文案 bypass。 - unified handoff 当前补有最小 rollback guard:
shared_utils.py提供 env flag 解析,mixin_query_route_gateway.py/mixin_answer_retrieval.py/mixin_answer_payload.py分别支持独立关闭execution_recipe增强、fit_brief + external_recommendation构建、以及默认offer_after_answer呈现,不需要回退 ingress/context 真源。 query.answer的客户可见回答展示也已确认独立基线:运行时证据必须拆成customer_safe与admin_debug双视图,客户侧统一消费中文化display_label,禁止直接暴露raw_source_label、机器来源或内部术语;external answer presenter 的 prompt 输入也必须保持 external-only,仅允许消费经 verifier 通过的外部证据摘要与计划摘要;相关设计规格见docs/superpowers/specs/2026-04-15-answer-presentation-policy-design.md。semantic_fact_service已升级为统一基线:semantic_facts / semantic_fact_extraction_runs读模型、ORM 提交钩子自动收集对象变更并 upsertingest_events(channel=semantic_fact_extract)、统一 worker 抽取/失活,以及 internal query 的 facts-first 主路径。- semantic facts 自动抽取覆盖
project / task / signal / document / user / requirement(charter) / release / review八类业务对象;manual retry 与 backfill 走同一队列、同一 worker,不再开旁路。 - MCP 模板接入中心已接入
backend/app/api/mcp_api/+backend/app/services/mcp_config/:租户内统一保存 MCP 模板 catalog、server 配置 bundle、命令预览、validate 结果、runtime probe 与pending_local_apply / user_confirmed / not_required状态;backend_direct模板既支持远程streamable_http(如microsoft_learn),也支持后端内建backend_adapterruntime(如duckduckgo),本地stdio模板只输出 Local Bridge/兼容 host 接入说明,服务端不直写客户机器~/.codex/config.toml。 query_route_memories作为独立路由记忆表,承接QARecord的 route audit、feedback 回灌和离线评估样本,不复用原 answer-quality 资产表。query_route_memories现已补 manager-only 只读治理入口:backend/app/api/rag_api/routes_route_governance.py+mixin_query_route_governance.py负责/rag/query-route-governance/summary|items|items/{id},统一暴露reply_contract / probe_snapshot / query_profile / feedback_outcome审计快照,但 v1 不做在线自动调路由。backend/tests/test_runtime_structured_semantics_contract.py与backend/tests/test_feishu_pipeline_queue_contract.py共同守门 runtime 结构化语义收口,锁定飞书入口、signal capture、reply/runtime routing 不得回流旧词法拍板 helper。backend/tests/test_external_query_planner.py现已补进 external fallback 回归,锁定 planner fallback 只能产出 generic external plan,不得再根据weather/news/public_model/...之类对象映射在运行时硬分 query_kind。
5. 前端库存
5.1 页面分组
frontend/src/pages/inbox/frontend/src/pages/ai-steward/frontend/src/pages/scheduler-center/frontend/src/pages/project-board/frontend/src/pages/projects/frontend/src/pages/users/frontend/src/pages/recipes/frontend/src/pages/feishu-config/frontend/src/pages/ai-config/frontend/src/pages/model-routing-config/frontend/src/pages/ai-config/mcp-config/frontend/src/pages/query-route-governance/frontend/src/pages/task-brief-center/frontend/src/pages/task-brief-runs/frontend/src/pages/task-brief-template/frontend/src/pages/charter-detail/frontend/src/pages/contract-sync-board/frontend/src/pages/dashboard/frontend/src/pages/knowledge-graph-context-board/frontend/src/pages/semantic-facts-board/frontend/src/pages/login/frontend/src/pages/skill-tasks/frontend/src/pages/skills/frontend/src/pages/user-profile/frontend/src/pages/user-skills/frontend/src/pages/workload-detail/frontend/src/pages/workloads/
5.2 API 与共享模块
frontend/src/api/aiPmo.tsfrontend/src/api/aiSteward.tsfrontend/src/components/ai-steward/frontend/src/components/ai-steward/QAConversationStatusBar.tsxfrontend/src/components/ai-steward/QAResponseMetaCard.tsxfrontend/src/components/ai-steward/QAResponseMetaCard.test.tsx- AI Steward 问答浮窗现分三层显性化:
FloatingQAChat.tsx负责即时回答/历史回放归一化,QAConversationStatusBar.tsx展示对象/来源/仓库/执行通道/plan handoff,QAResponseMetaCard.tsx展示fit_brief / external_recommendation / recommended_next_step,对应前端回归由FloatingQAChat.test.tsx与QAResponseMetaCard.test.tsx锁定。 frontend/src/api/taskBriefs.tsfrontend/src/api/modelRouting.tsfrontend/src/api/mcp.tsfrontend/src/api/knowledgeGraph.tsfrontend/src/api/semanticFacts.tsfrontend/src/api/queryRouteGovernance.tsfrontend/src/api/mountedAi.tsfrontend/src/api/feedbackCenter.tsfrontend/src/api/sstc.tsfrontend/src/components/inbox/frontend/src/components/sstc/frontend/src/pages/scheduler-center/components/frontend/src/pages/ai-steward/components/frontend/src/lib/
5.3 前端结构边界
- 页面级编排逻辑优先收敛到
pages/*/子目录。 - API 调用统一走
frontend/src/api/,不在页面或组件内直接fetch。 frontend/src/components/sstc/继续作为 SSTC 共享组件目录维护。- AI Steward 浮窗的“当前对象/来源模式/证据状态”必须直接消费
/rag/ask与 QA session API 的显式 contract 字段,禁止在前端靠回答正文反推 internal/external 或 plan 状态。 - 网页问答显式锚点 v1 只能消费稳定强锚点:项目页路径中的
project_id与 URL query 中已显式存在的project_id/source_chat_id;前端禁止自行猜测source_chat_id。 AI Config -> Governance Tools现新增/ai-config/mcp-config、/ai-config/query-route-governance与/ai-config/semantic-facts-board入口;三类治理页都只对BOSS/ADMIN开放。MCP 页负责模板化配置、后端直连/Local Bridge 状态展示、runtime probe、命令预览与本机确认;route/context 页负责 mismatch、clarify-heavy 与 negative feedback 样本排查;semantic facts 页负责 KPI、队列、对象表与详情抽屉。
6. 工具与运行库存
backend/scripts/repair_requirement_plan_history.pyscripts/start_model_probe.shscripts/model_probe.pyscripts/gen_task_brief.shscripts/check_contract_sync.shfrontend/playwright.config.tsfrontend/vitest.setup.tsfrontend/e2e/feishu-project-full-flow.spec.ts
7. 维护建议
- 想看“现在怎么跑、边界怎么定”:先看
AGENTS.md,再看CLAUDE.md - 想看“模块都搬到哪里了、目录怎么分组”:看本文档
- 想看“接口/数据流契约”:看
docs/architecture/API_CONTRACTS.md与docs/architecture/DATAFLOW.md