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.
- {super_dev-2.3.2/super_dev.egg-info → super_dev-2.3.4}/PKG-INFO +8 -16
- {super_dev-2.3.2 → super_dev-2.3.4}/README.md +7 -15
- {super_dev-2.3.2 → super_dev-2.3.4}/pyproject.toml +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/__init__.py +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/branding.py +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/catalogs.py +4 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli.py +35 -20
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_governance_mixin.py +2 -2
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_host_ops_mixin.py +71 -11
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_parser_mixin.py +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/config/manager.py +60 -3
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/document_generator.py +4 -4
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/delivery.py +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/integrations/manager.py +25 -23
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/integrations/manager_content_mixin.py +6 -11
- super_dev-2.3.4/super_dev/migrate.py +145 -0
- super_dev-2.3.4/super_dev/orchestrator/__init__.py +54 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/engine.py +69 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/experts.py +34 -0
- super_dev-2.3.4/super_dev/orchestrator/overseer.py +489 -0
- super_dev-2.3.4/super_dev/orchestrator/plan_executor.py +647 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/protocols/a2a.py +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/skills/manager.py +4 -2
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/skills/skill_template.py +2 -2
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/version_check.py +1 -1
- {super_dev-2.3.2 → super_dev-2.3.4/super_dev.egg-info}/PKG-INFO +8 -16
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/SOURCES.txt +2 -0
- super_dev-2.3.2/super_dev/migrate.py +0 -80
- super_dev-2.3.2/super_dev/orchestrator/__init__.py +0 -20
- {super_dev-2.3.2 → super_dev-2.3.4}/LICENSE +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/setup.cfg +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/_enforcement_bridge.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/analyzer.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/dependency_graph.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/detectors.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/feature_checklist.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/impact.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/models.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/product_audit.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/regression_guard.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/analyzer/repo_map.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_analysis_mixin.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_deploy_runtime_mixin.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_experience_mixin.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_release_quality_mixin.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/cli_spec_mixin.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/completion.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/config/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/config/frontend.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/adr_generator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/api_contract.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/compact_template.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/component_scaffold.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/creator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/document_generator_content_mixin.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/frontend_builder.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/implementation_builder.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/nextjs_scaffold.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/prompt_generator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/prompt_sections.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/prompt_templates.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/requirement_parser.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/spec_builder.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/creators/task_executor.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/cicd.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/migration.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/rehearsal.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/deployers/rehearsal_runner.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/aesthetics.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/charts.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/codegen.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/engine.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/generator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/landing.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/tech_stack.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/tokens.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/ui_intelligence.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/design/ux_guide.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/host_hooks.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/pre_code_gate.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/enforcement/validation.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/error_handler.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/exceptions.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/behavioral_prompts.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/loader.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/review_protocol.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/service.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/experts/toolkit.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/framework_harness.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/frameworks.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/harness_registry.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hook_harness.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hooks/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hooks/manager.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/hooks/models.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/integrations/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/knowledge_evolution.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/knowledge_tracker.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/consolidator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/extractor.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/memory/store.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/metrics/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/metrics/pipeline_metrics.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/onboarding.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/operational_harness.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/context_compact.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/contracts.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/governance.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/knowledge.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/knowledge_pusher.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/quality.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/orchestrator/telemetry.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/pipeline_cost.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/policy/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/policy/manager.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/project_templates.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/proof_pack.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/protocols/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/protocols/output_schemas.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/release_readiness.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reminders.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/review_state.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/code_review.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/external_reviews.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/quality_advisor.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/quality_gate.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/redteam.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/review_agents.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/rules/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/ui_review.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/reviewers/validation_rules.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/rules/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/rules/loader.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/session/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/session/brief.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/skills/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/consistency_checker.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/generator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/manager.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/models.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/traceability.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/specs/validator.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/terminal.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/tips.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/utils/__init__.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/utils/logger.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/web/api.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/workflow_harness.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev/workflow_state.py +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/dependency_links.txt +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/entry_points.txt +0 -0
- {super_dev-2.3.2 → super_dev-2.3.4}/super_dev.egg-info/requires.txt +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|
-
---
|
|
@@ -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
|
-
|
|
210
|
-
|
|
211
|
-
|
|
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
|
|
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=
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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.
|
|
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.
|
|
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
|
|
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=
|
|
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=
|
|
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=
|
|
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
|
|
1864
|
+
if target_skill_name in installed and not args.force:
|
|
1845
1865
|
self.console.print(
|
|
1846
|
-
f" [dim]- Skill 已存在: {
|
|
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=
|
|
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
|
|
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
|
-
" [
|
|
3161
|
-
" [dim]
|
|
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),
|
|
@@ -27,7 +27,7 @@ class ProjectConfig:
|
|
|
27
27
|
|
|
28
28
|
name: str
|
|
29
29
|
description: str = ""
|
|
30
|
-
version: str = "2.3.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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.
|
|
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
|