super-dev 2.3.2__tar.gz → 2.3.4__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (162) hide show
  1. {super_dev-2.3.2/super_dev.egg-info → super_dev-2.3.4}/PKG-INFO +8 -16
  2. {super_dev-2.3.2 → super_dev-2.3.4}/README.md +7 -15
  3. {super_dev-2.3.2 → super_dev-2.3.4}/pyproject.toml +1 -1
  4. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/__init__.py +1 -1
  5. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/branding.py +1 -1
  6. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/catalogs.py +4 -0
  7. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli.py +35 -20
  8. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_governance_mixin.py +2 -2
  9. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_host_ops_mixin.py +71 -11
  10. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_parser_mixin.py +1 -1
  11. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/config/manager.py +60 -3
  12. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/document_generator.py +4 -4
  13. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/delivery.py +1 -1
  14. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/integrations/manager.py +25 -23
  15. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/integrations/manager_content_mixin.py +6 -11
  16. super_dev-2.3.4/super_dev/migrate.py +145 -0
  17. super_dev-2.3.4/super_dev/orchestrator/__init__.py +54 -0
  18. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/engine.py +69 -0
  19. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/experts.py +34 -0
  20. super_dev-2.3.4/super_dev/orchestrator/overseer.py +489 -0
  21. super_dev-2.3.4/super_dev/orchestrator/plan_executor.py +647 -0
  22. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/protocols/a2a.py +1 -1
  23. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/skills/manager.py +4 -2
  24. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/skills/skill_template.py +2 -2
  25. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/version_check.py +1 -1
  26. {super_dev-2.3.2 → super_dev-2.3.4/super_dev.egg-info}/PKG-INFO +8 -16
  27. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/SOURCES.txt +2 -0
  28. super_dev-2.3.2/super_dev/migrate.py +0 -80
  29. super_dev-2.3.2/super_dev/orchestrator/__init__.py +0 -20
  30. {super_dev-2.3.2 → super_dev-2.3.4}/LICENSE +0 -0
  31. {super_dev-2.3.2 → super_dev-2.3.4}/setup.cfg +0 -0
  32. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/_enforcement_bridge.py +0 -0
  33. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/__init__.py +0 -0
  34. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/analyzer.py +0 -0
  35. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/dependency_graph.py +0 -0
  36. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/detectors.py +0 -0
  37. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/feature_checklist.py +0 -0
  38. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/impact.py +0 -0
  39. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/models.py +0 -0
  40. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/product_audit.py +0 -0
  41. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/regression_guard.py +0 -0
  42. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/repo_map.py +0 -0
  43. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_analysis_mixin.py +0 -0
  44. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_deploy_runtime_mixin.py +0 -0
  45. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_experience_mixin.py +0 -0
  46. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_release_quality_mixin.py +0 -0
  47. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_spec_mixin.py +0 -0
  48. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/completion.py +0 -0
  49. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/config/__init__.py +0 -0
  50. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/config/frontend.py +0 -0
  51. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/__init__.py +0 -0
  52. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/adr_generator.py +0 -0
  53. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/api_contract.py +0 -0
  54. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/compact_template.py +0 -0
  55. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/component_scaffold.py +0 -0
  56. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/creator.py +0 -0
  57. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/document_generator_content_mixin.py +0 -0
  58. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/frontend_builder.py +0 -0
  59. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/implementation_builder.py +0 -0
  60. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/nextjs_scaffold.py +0 -0
  61. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/prompt_generator.py +0 -0
  62. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/prompt_sections.py +0 -0
  63. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/prompt_templates.py +0 -0
  64. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/requirement_parser.py +0 -0
  65. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/spec_builder.py +0 -0
  66. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/task_executor.py +0 -0
  67. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/__init__.py +0 -0
  68. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/cicd.py +0 -0
  69. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/migration.py +0 -0
  70. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/rehearsal.py +0 -0
  71. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/rehearsal_runner.py +0 -0
  72. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/__init__.py +0 -0
  73. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/aesthetics.py +0 -0
  74. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/charts.py +0 -0
  75. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/codegen.py +0 -0
  76. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/engine.py +0 -0
  77. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/generator.py +0 -0
  78. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/landing.py +0 -0
  79. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/tech_stack.py +0 -0
  80. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/tokens.py +0 -0
  81. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/ui_intelligence.py +0 -0
  82. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/ux_guide.py +0 -0
  83. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/__init__.py +0 -0
  84. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/host_hooks.py +0 -0
  85. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/pre_code_gate.py +0 -0
  86. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/validation.py +0 -0
  87. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/error_handler.py +0 -0
  88. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/exceptions.py +0 -0
  89. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/__init__.py +0 -0
  90. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/behavioral_prompts.py +0 -0
  91. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/loader.py +0 -0
  92. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/review_protocol.py +0 -0
  93. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/service.py +0 -0
  94. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/toolkit.py +0 -0
  95. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/framework_harness.py +0 -0
  96. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/frameworks.py +0 -0
  97. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/harness_registry.py +0 -0
  98. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hook_harness.py +0 -0
  99. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hooks/__init__.py +0 -0
  100. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hooks/manager.py +0 -0
  101. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hooks/models.py +0 -0
  102. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/integrations/__init__.py +0 -0
  103. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/knowledge_evolution.py +0 -0
  104. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/knowledge_tracker.py +0 -0
  105. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/__init__.py +0 -0
  106. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/consolidator.py +0 -0
  107. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/extractor.py +0 -0
  108. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/store.py +0 -0
  109. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/metrics/__init__.py +0 -0
  110. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/metrics/pipeline_metrics.py +0 -0
  111. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/onboarding.py +0 -0
  112. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/operational_harness.py +0 -0
  113. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/context_compact.py +0 -0
  114. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/contracts.py +0 -0
  115. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/governance.py +0 -0
  116. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/knowledge.py +0 -0
  117. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/knowledge_pusher.py +0 -0
  118. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/quality.py +0 -0
  119. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/telemetry.py +0 -0
  120. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/pipeline_cost.py +0 -0
  121. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/policy/__init__.py +0 -0
  122. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/policy/manager.py +0 -0
  123. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/project_templates.py +0 -0
  124. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/proof_pack.py +0 -0
  125. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/protocols/__init__.py +0 -0
  126. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/protocols/output_schemas.py +0 -0
  127. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/release_readiness.py +0 -0
  128. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reminders.py +0 -0
  129. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/review_state.py +0 -0
  130. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/__init__.py +0 -0
  131. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/code_review.py +0 -0
  132. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/external_reviews.py +0 -0
  133. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/quality_advisor.py +0 -0
  134. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/quality_gate.py +0 -0
  135. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/redteam.py +0 -0
  136. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/review_agents.py +0 -0
  137. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/rules/__init__.py +0 -0
  138. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/ui_review.py +0 -0
  139. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/validation_rules.py +0 -0
  140. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/rules/__init__.py +0 -0
  141. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/rules/loader.py +0 -0
  142. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/session/__init__.py +0 -0
  143. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/session/brief.py +0 -0
  144. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/skills/__init__.py +0 -0
  145. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/__init__.py +0 -0
  146. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/consistency_checker.py +0 -0
  147. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/generator.py +0 -0
  148. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/manager.py +0 -0
  149. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/models.py +0 -0
  150. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/traceability.py +0 -0
  151. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/validator.py +0 -0
  152. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/terminal.py +0 -0
  153. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/tips.py +0 -0
  154. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/utils/__init__.py +0 -0
  155. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/utils/logger.py +0 -0
  156. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/web/api.py +0 -0
  157. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/workflow_harness.py +0 -0
  158. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/workflow_state.py +0 -0
  159. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/dependency_links.txt +0 -0
  160. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/entry_points.txt +0 -0
  161. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/requires.txt +0 -0
  162. {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/top_level.txt +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: super-dev
3
- Version: 2.3.2
3
+ Version: 2.3.4
4
4
  Summary: Super Dev - Pipeline AI Coding Assistant
5
5
  Author-email: Excellent <11964948@qq.com>
6
6
  License-Expression: MIT
@@ -60,7 +60,10 @@ Dynamic: license-file
60
60
 
61
61
  ## 版本
62
62
 
63
- 当前版本:`2.3.2`
63
+ 当前版本:`2.3.4`
64
+
65
+ - 发布说明:[v2.3.4 更新内容](docs/releases/2.3.4.md)
66
+ - 官网更新历史:[superdev.goder.ai/changelog](https://superdev.goder.ai/changelog)
64
67
 
65
68
  ---
66
69
 
@@ -471,13 +474,13 @@ super-dev
471
474
  ### 3. 指定版本安装
472
475
 
473
476
  ```bash
474
- pip install super-dev==2.3.2
477
+ pip install super-dev==2.3.4
475
478
  ```
476
479
 
477
480
  ### 4. GitHub 指定标签安装
478
481
 
479
482
  ```bash
480
- pip install git+https://github.com/shangyankeji/super-dev.git@v2.3.2
483
+ pip install git+https://github.com/shangyankeji/super-dev.git@v2.3.4
481
484
  ```
482
485
 
483
486
  ### 5. 源码开发安装
@@ -648,7 +651,7 @@ super-dev bootstrap --name my-project --platform web --frontend next --backend n
648
651
 
649
652
  ## 架构概览
650
653
 
651
- Super Dev 2.3.2 架构由四层组成:**宿主接入层**(20 个统一接入宿主 + 1 个 OpenClaw 手动插件宿主)、**知识治理层**(306 索引 / 渐进式加载 / 自演化)、**编排引擎层**(9 阶段流水线 / 11 专家 / 验证规则引擎)、**交付审计层**(DORA 度量 / ADR / 一致性检测 / proof-pack)。
654
+ Super Dev 2.3.4 架构由四层组成:**宿主接入层**(20 个统一接入宿主 + 1 个 OpenClaw 手动插件宿主)、**知识治理层**(306 索引 / 渐进式加载 / 自演化)、**编排引擎层**(9 阶段流水线 / 11 专家 + Overseer / 验证规则引擎)、**交付审计层**(DORA 度量 / ADR / 一致性检测 / proof-pack)。
652
655
 
653
656
  ### 一、系统高阶流转架构
654
657
 
@@ -1250,14 +1253,3 @@ super-dev: 你的需求
1250
1253
  ## License
1251
1254
 
1252
1255
  [MIT](LICENSE)
1253
- ## 2.3.2 更新重点
1254
-
1255
- - 21 个宿主口径继续收正:`20` 个统一接入宿主 + `1` 个 OpenClaw 手动插件宿主,安装脚本、README、官网 Docs、能力审计页和站点矩阵统一到同一套真实模型。
1256
- - Claude Code / Codex 继续深适配到官方协议:`CLAUDE.md + skills + optional plugin enhancement`、`AGENTS.md + skills + repo plugin enhancement`,不再停留在旧的 commands-first / skill-only 近似模型。
1257
- - Kiro / Qoder / Cursor / Trae / CodeBuddy 等 IDE 宿主继续按真实 surface 深适配,避免“代码一套、官网一套、安装引导又一套”的漂移。
1258
- - 恢复链继续产品化:`resume / next / continue / doctor / validate / Web API` 统一带现实场景卡,`SESSION_BRIEF` 直接告诉用户“第二天回来继续开发 / 只想知道下一步 / 本地流程中断后恢复”该怎么做。
1259
- - 工作流治理继续加固:`workflow history`、语义事件、hook history、workflow/framework/hook/operational harness、recent operational timeline 现在已经一起进入 proof-pack 和 release readiness。
1260
- - 跨平台框架支持继续深化:`uni-app / Taro / React Native / Flutter / Desktop Web Shell` 的 framework playbook 现在不只进 UI 契约,也进入脚手架、runtime、quality gate、release readiness 和 proof-pack。
1261
- - UI 系统继续强化:emoji 作为功能图标被系统级禁止,UI 契约、token、图标库、组件生态、导航骨架、主题入口、framework harness 一起纳入交付门禁。
1262
-
1263
- ---
@@ -19,7 +19,10 @@
19
19
 
20
20
  ## 版本
21
21
 
22
- 当前版本:`2.3.2`
22
+ 当前版本:`2.3.4`
23
+
24
+ - 发布说明:[v2.3.4 更新内容](docs/releases/2.3.4.md)
25
+ - 官网更新历史:[superdev.goder.ai/changelog](https://superdev.goder.ai/changelog)
23
26
 
24
27
  ---
25
28
 
@@ -430,13 +433,13 @@ super-dev
430
433
  ### 3. 指定版本安装
431
434
 
432
435
  ```bash
433
- pip install super-dev==2.3.2
436
+ pip install super-dev==2.3.4
434
437
  ```
435
438
 
436
439
  ### 4. GitHub 指定标签安装
437
440
 
438
441
  ```bash
439
- pip install git+https://github.com/shangyankeji/super-dev.git@v2.3.2
442
+ pip install git+https://github.com/shangyankeji/super-dev.git@v2.3.4
440
443
  ```
441
444
 
442
445
  ### 5. 源码开发安装
@@ -607,7 +610,7 @@ super-dev bootstrap --name my-project --platform web --frontend next --backend n
607
610
 
608
611
  ## 架构概览
609
612
 
610
- Super Dev 2.3.2 架构由四层组成:**宿主接入层**(20 个统一接入宿主 + 1 个 OpenClaw 手动插件宿主)、**知识治理层**(306 索引 / 渐进式加载 / 自演化)、**编排引擎层**(9 阶段流水线 / 11 专家 / 验证规则引擎)、**交付审计层**(DORA 度量 / ADR / 一致性检测 / proof-pack)。
613
+ Super Dev 2.3.4 架构由四层组成:**宿主接入层**(20 个统一接入宿主 + 1 个 OpenClaw 手动插件宿主)、**知识治理层**(306 索引 / 渐进式加载 / 自演化)、**编排引擎层**(9 阶段流水线 / 11 专家 + Overseer / 验证规则引擎)、**交付审计层**(DORA 度量 / ADR / 一致性检测 / proof-pack)。
611
614
 
612
615
  ### 一、系统高阶流转架构
613
616
 
@@ -1209,14 +1212,3 @@ super-dev: 你的需求
1209
1212
  ## License
1210
1213
 
1211
1214
  [MIT](LICENSE)
1212
- ## 2.3.2 更新重点
1213
-
1214
- - 21 个宿主口径继续收正:`20` 个统一接入宿主 + `1` 个 OpenClaw 手动插件宿主,安装脚本、README、官网 Docs、能力审计页和站点矩阵统一到同一套真实模型。
1215
- - Claude Code / Codex 继续深适配到官方协议:`CLAUDE.md + skills + optional plugin enhancement`、`AGENTS.md + skills + repo plugin enhancement`,不再停留在旧的 commands-first / skill-only 近似模型。
1216
- - Kiro / Qoder / Cursor / Trae / CodeBuddy 等 IDE 宿主继续按真实 surface 深适配,避免“代码一套、官网一套、安装引导又一套”的漂移。
1217
- - 恢复链继续产品化:`resume / next / continue / doctor / validate / Web API` 统一带现实场景卡,`SESSION_BRIEF` 直接告诉用户“第二天回来继续开发 / 只想知道下一步 / 本地流程中断后恢复”该怎么做。
1218
- - 工作流治理继续加固:`workflow history`、语义事件、hook history、workflow/framework/hook/operational harness、recent operational timeline 现在已经一起进入 proof-pack 和 release readiness。
1219
- - 跨平台框架支持继续深化:`uni-app / Taro / React Native / Flutter / Desktop Web Shell` 的 framework playbook 现在不只进 UI 契约,也进入脚手架、runtime、quality gate、release readiness 和 proof-pack。
1220
- - UI 系统继续强化:emoji 作为功能图标被系统级禁止,UI 契约、token、图标库、组件生态、导航骨架、主题入口、framework harness 一起纳入交付门禁。
1221
-
1222
- ---
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "super-dev"
7
- version = "2.3.2"
7
+ version = "2.3.4"
8
8
  description = "Super Dev - Pipeline AI Coding Assistant"
9
9
  readme = "README.md"
10
10
  requires-python = ">=3.10"
@@ -6,6 +6,6 @@
6
6
  最后修改:2025-12-30
7
7
  """
8
8
 
9
- __version__ = "2.3.2"
9
+ __version__ = "2.3.4"
10
10
  __author__ = "Excellent"
11
11
  __description__ = "超级开发战队 - 一个宿主内 AI 开发治理与编排工具"
@@ -3,7 +3,7 @@
3
3
  from __future__ import annotations
4
4
 
5
5
  LOGO_COMPACT = "Super Dev"
6
- VERSION = "2.3.2"
6
+ VERSION = "2.3.4"
7
7
 
8
8
  # 阶段编号和名称映射
9
9
  PHASE_NAMES: dict[str, str] = {
@@ -233,9 +233,12 @@ HOST_RUNTIME_VALIDATION_OVERRIDES: dict[str, dict[str, list[str]]] = {
233
233
  "确认项目根 `CLAUDE.md`、兼容 `.claude/CLAUDE.md`、项目级 `.claude/skills/super-dev/` 与用户级 `~/.claude/skills/` 已被当前会话重新加载。",
234
234
  "确认 `/super-dev` 直接进入 Super Dev,而不是普通聊天或旁路兼容命令面。",
235
235
  "确认改文档、补充、继续修改等自然语言仍留在当前 Super Dev 流程内。",
236
+ "若 execution_mode 为 plan-execute,确认 .super-dev/plans/ 目录可写且 PlanExecutor 已初始化。",
237
+ "若 codex_review_enabled 为 true,确认 codex CLI 可用(运行 which codex 验证)且 Overseer 已启用。",
236
238
  ],
237
239
  "pass_criteria": [
238
240
  "Claude Code 在 `CLAUDE.md + skills` 主模型下进入并保持同一条 Super Dev 流程,兼容 commands/agents 与可选 plugin enhancement 不会造成分叉。",
241
+ "Plan-Execute 模式下,每个阶段执行前有对应的 execution plan 文件。Overseer 审查报告在 .super-dev/overseer/ 中持续更新。",
239
242
  ],
240
243
  "resume_checklist": [
241
244
  "Claude Code 恢复时不能绕过当前确认门或返工门,并要确认重新打开的会话再次读取了 `CLAUDE.md + skills`。",
@@ -289,6 +292,7 @@ HOST_RUNTIME_VALIDATION_OVERRIDES: dict[str, dict[str, list[str]]] = {
289
292
  "确认 Codex App/Desktop 若在 `/` 列表里出现 `super-dev`,它被当作已启用 Skill 入口,而不是项目自定义 slash 文件。",
290
293
  "确认 `super-dev:` 仍可作为 AGENTS 驱动的自然语言回退入口,但不是 Codex 官方主触发面。",
291
294
  "确认会话没有先解释 skill 或退回普通聊天,而是直接进入 Super Dev 流程。",
295
+ "若被用于 Claude-Codex 混合模式审查,确认 codex --quiet --prompt 可正常执行。",
292
296
  ],
293
297
  "pass_criteria": [
294
298
  "重开 codex 后的新会话确实加载了项目 AGENTS.md、项目级 `.agents/skills/super-dev/`、全局 AGENTS 与官方 Skills,并识别 repo plugin enhancement。",
@@ -198,26 +198,16 @@ class SuperDevCLI(
198
198
 
199
199
  if parsed_args.command is None:
200
200
  project_dir = Path.cwd()
201
- if self._project_has_super_dev_context(project_dir):
202
- resume_args = argparse.Namespace(json=False)
203
- return self._cmd_resume(resume_args)
204
-
205
- # Onboarding: show first-run guide if applicable
206
- try:
207
- from .onboarding import OnboardingGuide
208
201
 
209
- guide = OnboardingGuide()
210
- if guide.should_show(project_dir):
211
- guide.show(self.console)
212
- guide.mark_seen(project_dir)
213
- except Exception:
214
- pass
202
+ # Auto-migrate if project config is outdated
203
+ if self._project_has_super_dev_context(project_dir):
204
+ self._auto_migrate_if_needed(project_dir)
215
205
 
216
206
  install_args = argparse.Namespace(
217
207
  host=None,
218
208
  all=False,
219
209
  auto=False,
220
- skill_name="super-dev-core",
210
+ skill_name="super-dev",
221
211
  no_skill=False,
222
212
  skip_integrate=False,
223
213
  skip_slash=False,
@@ -1785,6 +1775,31 @@ class SuperDevCLI(
1785
1775
  "framework_playbook": load_framework_playbook_summary(project_dir),
1786
1776
  }
1787
1777
 
1778
+ def _auto_migrate_if_needed(self, project_dir: Path) -> None:
1779
+ """检测项目配置版本,如果低于当前 CLI 版本则自动迁移。"""
1780
+ try:
1781
+ config_path = project_dir / "super-dev.yaml"
1782
+ if not config_path.exists():
1783
+ return
1784
+ import yaml
1785
+
1786
+ data = yaml.safe_load(config_path.read_text(encoding="utf-8")) or {}
1787
+ project_version = data.get("version", "")
1788
+ if project_version == __version__:
1789
+ return
1790
+ self.console.print(
1791
+ f"[yellow]检测到项目配置版本 {project_version or '未知'},"
1792
+ f"当前 CLI 版本 {__version__},正在自动迁移...[/yellow]"
1793
+ )
1794
+ from .migrate import migrate_project
1795
+
1796
+ changes = migrate_project(project_dir)
1797
+ for change in changes:
1798
+ self.console.print(f" [green]✓[/green] {change}")
1799
+ self.console.print("")
1800
+ except Exception:
1801
+ pass
1802
+
1788
1803
  def _project_has_super_dev_context(self, project_dir: Path) -> bool:
1789
1804
  """只有当前目录有 super-dev.yaml 且不是家目录才算 Super Dev 项目。"""
1790
1805
  project_dir = Path(project_dir).resolve()
@@ -4069,7 +4084,7 @@ class SuperDevCLI(
4069
4084
  skill_path = skill_manager.install(
4070
4085
  source="super-dev",
4071
4086
  target=target,
4072
- name="super-dev-core",
4087
+ name=skill_manager.default_skill_name(target),
4073
4088
  force=True,
4074
4089
  ).path
4075
4090
  skill_install = {
@@ -4107,7 +4122,7 @@ class SuperDevCLI(
4107
4122
  report = self._collect_host_diagnostics(
4108
4123
  project_dir=project_dir,
4109
4124
  targets=targets,
4110
- skill_name="super-dev-core",
4125
+ skill_name="super-dev",
4111
4126
  check_integrate=True,
4112
4127
  check_skill=True,
4113
4128
  check_slash=True,
@@ -4411,7 +4426,7 @@ class SuperDevCLI(
4411
4426
  report = self._collect_host_diagnostics(
4412
4427
  project_dir=project_dir,
4413
4428
  targets=targets,
4414
- skill_name="super-dev-core",
4429
+ skill_name="super-dev",
4415
4430
  check_integrate=True,
4416
4431
  check_skill=True,
4417
4432
  check_slash=True,
@@ -4421,7 +4436,7 @@ class SuperDevCLI(
4421
4436
  repair_actions = self._repair_host_diagnostics(
4422
4437
  project_dir=project_dir,
4423
4438
  report=report,
4424
- skill_name="super-dev-core",
4439
+ skill_name="super-dev",
4425
4440
  force=bool(args.force),
4426
4441
  check_integrate=True,
4427
4442
  check_skill=True,
@@ -4430,7 +4445,7 @@ class SuperDevCLI(
4430
4445
  report = self._collect_host_diagnostics(
4431
4446
  project_dir=project_dir,
4432
4447
  targets=targets,
4433
- skill_name="super-dev-core",
4448
+ skill_name="super-dev",
4434
4449
  check_integrate=True,
4435
4450
  check_skill=True,
4436
4451
  check_slash=True,
@@ -4680,7 +4695,7 @@ class SuperDevCLI(
4680
4695
  report = self._collect_host_diagnostics(
4681
4696
  project_dir=project_dir,
4682
4697
  targets=targets,
4683
- skill_name="super-dev-core",
4698
+ skill_name="super-dev",
4684
4699
  check_integrate=True,
4685
4700
  check_skill=True,
4686
4701
  check_slash=True,
@@ -1013,11 +1013,11 @@ class CliGovernanceMixin:
1013
1013
  # ------------------------------------------------------------------
1014
1014
 
1015
1015
  def _cmd_migrate(self, _args: Any) -> int:
1016
- """执行项目迁移 (2.2.0+ -> 2.3.2)。"""
1016
+ """执行项目迁移 (2.2.0+ -> 2.3.4)。"""
1017
1017
  from .migrate import migrate_project
1018
1018
 
1019
1019
  project_dir = Path.cwd()
1020
- self.console.print("[cyan]正在执行 2.2.0+ → 2.3.2 迁移...[/cyan]\n")
1020
+ self.console.print("[cyan]正在执行 2.2.0+ → 2.3.4 迁移...[/cyan]\n")
1021
1021
 
1022
1022
  changes = migrate_project(project_dir)
1023
1023
 
@@ -731,6 +731,23 @@ class CliHostOpsMixin:
731
731
 
732
732
  return detected, details
733
733
 
734
+ # Families where IDE and CLI targets share the same config directories.
735
+ # When both are detected, prefer the CLI variant (more complete integration).
736
+ _HOST_FAMILIES: list[tuple[str, str]] = [
737
+ ("cursor-cli", "cursor"),
738
+ ("kiro-cli", "kiro"),
739
+ ("qoder-cli", "qoder"),
740
+ ("codebuddy-cli", "codebuddy"),
741
+ ]
742
+
743
+ def _deduplicate_host_family(self, detected: list[str]) -> list[str]:
744
+ """When both CLI and IDE variants of the same host are detected, keep only CLI."""
745
+ result = list(detected)
746
+ for cli_variant, ide_variant in self._HOST_FAMILIES:
747
+ if cli_variant in result and ide_variant in result:
748
+ result.remove(ide_variant)
749
+ return result
750
+
734
751
  def _collect_configured_host_targets(
735
752
  self,
736
753
  *,
@@ -808,7 +825,7 @@ class CliHostOpsMixin:
808
825
  report = self._collect_host_diagnostics(
809
826
  project_dir=project_dir,
810
827
  targets=candidate_targets,
811
- skill_name="super-dev-core",
828
+ skill_name="super-dev",
812
829
  check_integrate=True,
813
830
  check_skill=True,
814
831
  check_slash=True,
@@ -1599,6 +1616,7 @@ class CliHostOpsMixin:
1599
1616
  host_actions: dict[str, str] = {}
1600
1617
  contract_needs_repair = "contract" in missing
1601
1618
  user_surfaces_need_repair = "user_surfaces" in missing
1619
+ effective_skill_name = SkillManager.default_skill_name(target)
1602
1620
 
1603
1621
  if contract_needs_repair:
1604
1622
  try:
@@ -1615,7 +1633,7 @@ class CliHostOpsMixin:
1615
1633
  skill_manager.install(
1616
1634
  source="super-dev",
1617
1635
  target=target,
1618
- name=skill_name,
1636
+ name=effective_skill_name,
1619
1637
  force=True,
1620
1638
  )
1621
1639
  host_actions["contract"] = "refreshed"
@@ -1643,7 +1661,7 @@ class CliHostOpsMixin:
1643
1661
  skill_manager.install(
1644
1662
  source="super-dev",
1645
1663
  target=target,
1646
- name=skill_name,
1664
+ name=effective_skill_name,
1647
1665
  force=True,
1648
1666
  )
1649
1667
  repaired_any = True
@@ -1662,7 +1680,7 @@ class CliHostOpsMixin:
1662
1680
  skill_manager.install(
1663
1681
  source="super-dev",
1664
1682
  target=target,
1665
- name=skill_name,
1683
+ name=effective_skill_name,
1666
1684
  force=force,
1667
1685
  )
1668
1686
  host_actions["skill"] = "fixed"
@@ -1714,6 +1732,7 @@ class CliHostOpsMixin:
1714
1732
  targets = available_targets
1715
1733
  elif args.auto:
1716
1734
  targets, detected_meta = self._detect_host_targets(available_targets=available_targets)
1735
+ targets = self._deduplicate_host_family(targets)
1717
1736
  if not targets:
1718
1737
  self.console.print("[red]未检测到可用宿主,请改用 --host 指定或使用 --all[/red]")
1719
1738
  self.console.print(f"[dim]{self._custom_host_path_override_hint()}[/dim]")
@@ -1840,16 +1859,17 @@ class CliHostOpsMixin:
1840
1859
  " [dim]- 未检测到官方或兼容 Skill 目录,已跳过宿主级 Skill 安装[/dim]"
1841
1860
  )
1842
1861
  else:
1862
+ target_skill_name = SkillManager.default_skill_name(target)
1843
1863
  installed = set(skill_manager.list_installed(target))
1844
- if args.skill_name in installed and not args.force:
1864
+ if target_skill_name in installed and not args.force:
1845
1865
  self.console.print(
1846
- f" [dim]- Skill 已存在: {args.skill_name}(可加 --force 重装)[/dim]"
1866
+ f" [dim]- Skill 已存在: {target_skill_name}(可加 --force 重装)[/dim]"
1847
1867
  )
1848
1868
  else:
1849
1869
  install_result = skill_manager.install(
1850
1870
  source="super-dev",
1851
1871
  target=target,
1852
- name=args.skill_name,
1872
+ name=target_skill_name,
1853
1873
  force=args.force,
1854
1874
  )
1855
1875
  if detail:
@@ -1859,12 +1879,35 @@ class CliHostOpsMixin:
1859
1879
  )
1860
1880
  else:
1861
1881
  self.console.print(" [green]✓[/green] Skill: 已安装")
1882
+ # Clean up legacy super-dev-core for hosts that now use super-dev
1883
+ if target_skill_name == "super-dev" and "super-dev-core" in installed:
1884
+ try:
1885
+ skill_manager.uninstall("super-dev-core", target)
1886
+ self.console.print(
1887
+ " [green]✓[/green] 已清理旧版 super-dev-core(统一为 super-dev)"
1888
+ )
1889
+ except Exception:
1890
+ pass
1862
1891
  except Exception as exc:
1863
1892
  has_error = True
1864
1893
  self.console.print(f" [red]✗[/red] Skill 安装失败: {exc}")
1865
1894
  elif not args.skip_skill:
1866
1895
  self.console.print(" [dim]- 该宿主默认按项目规则运行,已跳过 Skill 安装[/dim]")
1867
1896
 
1897
+ # Clean up legacy agent file for Claude Code
1898
+ if target == "claude-code":
1899
+ legacy_agent = Path.home() / ".claude" / "agents" / "super-dev-core.md"
1900
+ project_agent = project_dir / ".claude" / "agents" / "super-dev-core.md"
1901
+ for legacy_path in [legacy_agent, project_agent]:
1902
+ if legacy_path.exists():
1903
+ try:
1904
+ legacy_path.unlink()
1905
+ self.console.print(
1906
+ f" [green]✓[/green] 已清理旧版: {legacy_path.name}"
1907
+ )
1908
+ except Exception:
1909
+ pass
1910
+
1868
1911
  if not args.skip_slash:
1869
1912
  try:
1870
1913
  if integration_manager.supports_slash(target):
@@ -2666,7 +2709,7 @@ class CliHostOpsMixin:
2666
2709
  host=target,
2667
2710
  all=False,
2668
2711
  auto=False,
2669
- skill_name="super-dev-core",
2712
+ skill_name="super-dev",
2670
2713
  skip_integrate=False,
2671
2714
  skip_skill=False,
2672
2715
  skip_slash=False,
@@ -3153,13 +3196,30 @@ class CliHostOpsMixin:
3153
3196
 
3154
3197
  from rich.panel import Panel
3155
3198
 
3199
+ self.console.print("")
3200
+ self.console.print("[green]✓ 升级完成[/green]")
3201
+
3202
+ # Auto-migrate using the newly installed version (new process)
3203
+ self.console.print("[cyan]正在自动迁移宿主配置到新版...[/cyan]")
3204
+ try:
3205
+ from . import cli as cli_module
3206
+
3207
+ migrate_result = cli_module.subprocess.run(
3208
+ ["super-dev", "migrate"], check=False
3209
+ )
3210
+ if migrate_result.returncode == 0:
3211
+ self.console.print("[green]✓ 宿主配置已迁移到新版[/green]")
3212
+ else:
3213
+ self.console.print("[yellow]自动迁移未完成,可手动执行: super-dev migrate[/yellow]")
3214
+ except Exception:
3215
+ self.console.print("[yellow]自动迁移未执行,可手动执行: super-dev migrate[/yellow]")
3216
+
3156
3217
  self.console.print("")
3157
3218
  self.console.print(
3158
3219
  Panel(
3159
3220
  "[bold green]升级完成[/bold green]\n\n"
3160
- " [bold]请关闭当前终端,重新打开后再使用 super-dev[/bold]\n\n"
3161
- " [dim]当前进程仍加载旧版本代码,必须重启终端才能生效[/dim]\n"
3162
- " [dim]验证: super-dev --version[/dim]",
3221
+ " [dim]当前终端进程仍加载旧版代码[/dim]\n"
3222
+ " [dim]建议重开终端后使用,验证: super-dev --version[/dim]",
3163
3223
  border_style="green",
3164
3224
  expand=True,
3165
3225
  padding=(1, 2),
@@ -1887,7 +1887,7 @@ class CliParserMixin:
1887
1887
  subparsers.add_parser(
1888
1888
  "migrate",
1889
1889
  help="迁移项目到最新版本",
1890
- description="将 2.2.0+ 项目配置迁移到 2.3.2(更新配置、规则文件与 hooks)",
1890
+ description="将 2.2.0+ 项目配置迁移到 2.3.4(更新配置、规则文件与 hooks)",
1891
1891
  )
1892
1892
 
1893
1893
  return parser
@@ -27,7 +27,7 @@ class ProjectConfig:
27
27
 
28
28
  name: str
29
29
  description: str = ""
30
- version: str = "2.3.2"
30
+ version: str = "2.3.4"
31
31
  author: str = ""
32
32
  license: str = "MIT"
33
33
 
@@ -67,6 +67,16 @@ class ProjectConfig:
67
67
  host_profile_targets: list[str] = field(default_factory=list) # 目标宿主画像(用于质量门禁和运营看板)
68
68
  host_profile_enforce_selected: bool = False # 仅按 host_profile_targets 计算宿主兼容性
69
69
 
70
+ # Plan-Execute 与 Overseer 配置
71
+ execution_mode: str = "standard" # standard | plan-execute
72
+ overseer_enabled: bool = False # 启用 Overseer 质量监督
73
+ codex_review_enabled: bool = False # 启用 Codex 独立审查(Claude-Codex 混合模式)
74
+ codex_review_phases: list[str] = field(default_factory=lambda: [
75
+ "drafting", "redteam", "qa"
76
+ ]) # 哪些阶段触发 Codex 审查
77
+ overseer_halt_on_critical: bool = True # Overseer 发现 Critical 偏差时暂停流水线
78
+ plan_failure_budget: int = 3 # Plan-Execute 步骤默认失败预算
79
+
70
80
  # 输出目录
71
81
  output_dir: str = "output"
72
82
 
@@ -81,7 +91,7 @@ class ConfigManager:
81
91
  DEFAULT_CONFIG: dict[str, Any] = {
82
92
  "name": "my-project",
83
93
  "description": "A Super Dev project",
84
- "version": "2.3.2",
94
+ "version": "2.3.4",
85
95
  "platform": "web",
86
96
  "frontend": "next", # 默认使用 Next.js
87
97
  "backend": "node",
@@ -95,6 +105,12 @@ class ConfigManager:
95
105
  "host_compatibility_min_ready_hosts": 1,
96
106
  "host_profile_targets": [],
97
107
  "host_profile_enforce_selected": False,
108
+ "execution_mode": "standard",
109
+ "overseer_enabled": False,
110
+ "codex_review_enabled": False,
111
+ "codex_review_phases": ["drafting", "redteam", "qa"],
112
+ "overseer_halt_on_critical": True,
113
+ "plan_failure_budget": 3,
98
114
  "output_dir": "output",
99
115
  # 前端配置
100
116
  "ui_library": None,
@@ -211,6 +227,7 @@ class ConfigManager:
211
227
  "knowledge_cache_ttl_seconds": int,
212
228
  "host_compatibility_min_score": int,
213
229
  "host_compatibility_min_ready_hosts": int,
230
+ "plan_failure_budget": int,
214
231
  }
215
232
 
216
233
  # 转换类型
@@ -235,6 +252,23 @@ class ConfigManager:
235
252
  lowered = value.strip().lower()
236
253
  converted_kwargs[key] = lowered in {"1", "true", "yes", "y", "on"}
237
254
  continue
255
+ if key == "overseer_enabled" and isinstance(value, str):
256
+ lowered = value.strip().lower()
257
+ converted_kwargs[key] = lowered in {"1", "true", "yes", "y", "on"}
258
+ continue
259
+ if key == "codex_review_enabled" and isinstance(value, str):
260
+ lowered = value.strip().lower()
261
+ converted_kwargs[key] = lowered in {"1", "true", "yes", "y", "on"}
262
+ continue
263
+ if key == "overseer_halt_on_critical" and isinstance(value, str):
264
+ lowered = value.strip().lower()
265
+ converted_kwargs[key] = lowered in {"1", "true", "yes", "y", "on"}
266
+ continue
267
+ if key == "codex_review_phases" and isinstance(value, str):
268
+ converted_kwargs[key] = [
269
+ item.strip() for item in value.split(",") if item.strip()
270
+ ]
271
+ continue
238
272
  if key in type_converters and isinstance(value, str):
239
273
  try:
240
274
  converted_kwargs[key] = type_converters[key](value)
@@ -337,6 +371,13 @@ class ConfigManager:
337
371
  + ", ".join(sorted(set(unsupported_targets)))
338
372
  )
339
373
 
374
+ # 验证执行模式
375
+ valid_execution_modes = ("standard", "plan-execute")
376
+ if config.execution_mode not in valid_execution_modes:
377
+ errors.append(f"execution_mode 必须是: {', '.join(valid_execution_modes)}")
378
+ if config.plan_failure_budget < 1:
379
+ errors.append("plan_failure_budget 不能小于 1")
380
+
340
381
  # 验证知识增强配置
341
382
  if config.knowledge_cache_ttl_seconds < 0:
342
383
  errors.append("knowledge_cache_ttl_seconds 不能小于 0")
@@ -374,6 +415,8 @@ class ConfigManager:
374
415
  "backend": {"type": "str", "required": True, "allowed": list(PIPELINE_BACKEND_IDS)},
375
416
  "database": {"type": "str", "required": False, "allowed": ["postgresql", "mysql", "mongodb", "redis", "sqlite", ""]},
376
417
  "quality_gate": {"type": "int", "required": False, "min": 0, "max": 100},
418
+ "execution_mode": {"type": "str", "required": False, "allowed": ["standard", "plan-execute"]},
419
+ "plan_failure_budget": {"type": "int", "required": False, "min": 1, "max": 10},
377
420
  "host_compatibility_min_score": {"type": "int", "required": False, "min": 0, "max": 100},
378
421
  "host_compatibility_min_ready_hosts": {"type": "int", "required": False, "min": 0},
379
422
  "knowledge_cache_ttl_seconds": {"type": "int", "required": False, "min": 0},
@@ -529,9 +572,23 @@ class ConfigManager:
529
572
  "transforms": {},
530
573
  "removals": ["deprecated_field"],
531
574
  },
575
+ {
576
+ "from_version": "2.2",
577
+ "to_version": "2.3",
578
+ "description": "从 v2.2 迁移到 v2.3:新增 Plan-Execute、Overseer 和 Claude-Codex 混合模式配置",
579
+ "transforms": {
580
+ "execution_mode": lambda data: data.get("execution_mode", "standard"),
581
+ "overseer_enabled": lambda data: data.get("overseer_enabled", False),
582
+ "codex_review_enabled": lambda data: data.get("codex_review_enabled", False),
583
+ "codex_review_phases": lambda data: data.get("codex_review_phases", ["drafting", "redteam", "qa"]),
584
+ "overseer_halt_on_critical": lambda data: data.get("overseer_halt_on_critical", True),
585
+ "plan_failure_budget": lambda data: data.get("plan_failure_budget", 3),
586
+ },
587
+ "removals": [],
588
+ },
532
589
  ]
533
590
 
534
- def migrate_config(self, target_version: str = "2.3.2") -> tuple[bool, list[str]]:
591
+ def migrate_config(self, target_version: str = "2.3.4") -> tuple[bool, list[str]]:
535
592
  """
536
593
  将配置文件从当前版本迁移到目标版本。
537
594
 
@@ -226,7 +226,7 @@ class DocumentGenerator(DocumentGeneratorContentMixin):
226
226
  doc = f"""# {self.name} - 产品需求文档 (PRD)
227
227
 
228
228
  > **生成时间**: {datetime.now().strftime('%Y-%m-%d %H:%M')}
229
- > **版本**: v2.3.2
229
+ > **版本**: v2.3.4
230
230
  > **状态**: 草稿
231
231
 
232
232
  ---
@@ -470,7 +470,7 @@ class DocumentGenerator(DocumentGeneratorContentMixin):
470
470
 
471
471
  | 版本 | 日期 | 变更内容 | 作者 |
472
472
  |:---|:---|:---|:---|
473
- | v2.3.2 | {datetime.now().strftime('%Y-%m-%d')} | 初始版本 | Super Dev |
473
+ | v2.3.4 | {datetime.now().strftime('%Y-%m-%d')} | 初始版本 | Super Dev |
474
474
  """
475
475
 
476
476
  # 追加 Prompt 模板版本标记
@@ -488,7 +488,7 @@ class DocumentGenerator(DocumentGeneratorContentMixin):
488
488
  doc = f"""# {self.name} - 架构设计文档
489
489
 
490
490
  > **生成时间**: {datetime.now().strftime('%Y-%m-%d %H:%M')}
491
- > **版本**: v2.3.2
491
+ > **版本**: v2.3.4
492
492
  > **架构师**: Super Dev ARCHITECT 专家
493
493
 
494
494
  ---
@@ -944,7 +944,7 @@ jobs:
944
944
  doc_parts.append(f"""# {self.name} - UI/UX 设计文档
945
945
 
946
946
  > **生成时间**: {datetime.now().strftime('%Y-%m-%d %H:%M')}
947
- > **版本**: v2.3.2
947
+ > **版本**: v2.3.4
948
948
  > **设计师**: Super Dev UI/UX 专家
949
949
 
950
950
  ---
@@ -26,7 +26,7 @@ class ArtifactSpec:
26
26
  class DeliveryPackager:
27
27
  """交付包生成器"""
28
28
 
29
- def __init__(self, project_dir: Path, name: str, version: str = "2.3.2"):
29
+ def __init__(self, project_dir: Path, name: str, version: str = "2.3.4"):
30
30
  self.project_dir = Path(project_dir).resolve()
31
31
  self.name = name
32
32
  self.version = version