devsquad 3.6.5__tar.gz → 3.6.7__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.
- devsquad-3.6.7/PKG-INFO +665 -0
- devsquad-3.6.7/README.md +585 -0
- devsquad-3.6.7/devsquad.egg-info/PKG-INFO +665 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/devsquad.egg-info/SOURCES.txt +17 -8
- {devsquad-3.6.5 → devsquad-3.6.7}/pyproject.toml +2 -6
- devsquad-3.6.7/scripts/MANUAL_PUBLISHING_GUIDE.md +226 -0
- devsquad-3.6.7/scripts/PUBLISHING_GUIDE.md +208 -0
- devsquad-3.6.7/scripts/RELEASE_NOTES_V3.6.5.md +570 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/routes/metrics_gates.py +2 -2
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api_server.py +17 -10
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/auth.py +13 -7
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/cli.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/__init__.py +11 -0
- devsquad-3.6.7/scripts/collaboration/_version.py +1 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/agent_briefing.py +8 -16
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/async_coordinator.py +38 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/checkpoint_manager.py +18 -20
- devsquad-3.6.7/scripts/collaboration/dispatch_models.py +359 -0
- devsquad-3.6.7/scripts/collaboration/dispatch_performance.py +235 -0
- devsquad-3.6.7/scripts/collaboration/dispatcher.py +2047 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/lifecycle_protocol.py +2 -15
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/llm_cache.py +157 -6
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/memory_bridge.py +2 -2
- devsquad-3.6.7/scripts/collaboration/multi_level_cache.py +703 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/performance_fingerprint.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/redis_cache.py +85 -1
- devsquad-3.6.5/scripts/collaboration/skillifier.py → devsquad-3.6.7/scripts/collaboration/skill_extractor.py +66 -431
- devsquad-3.6.7/scripts/collaboration/skill_storage.py +164 -0
- devsquad-3.6.7/scripts/collaboration/skillifier.py +466 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/workflow_engine.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/dashboard.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/history_manager.py +7 -6
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/mcp_server.py +2 -2
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/__init__.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/dispatch/handler.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/intent/handler.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/registry.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/retrospective/handler.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/review/handler.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/security/handler.py +1 -1
- devsquad-3.6.7/skills/test/__init__.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/skills/test/handler.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_agent_briefing.py +8 -6
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_auth_phase5.py +4 -2
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_cli_deep_v362.py +22 -22
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_dispatcher_test.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_dispatcher_phase5_core.py +9 -9
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_history_manager_v362.py +6 -3
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_input_validator_phase5.py +5 -4
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_lifecycle_protocol.py +4 -2
- devsquad-3.6.7/tests/test_mcp_server_v362.py +606 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_permission_guard_phase5.py +49 -45
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_plan_c_unified_architecture.py +1 -1
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_production_features.py +2 -2
- devsquad-3.6.5/PKG-INFO +0 -1237
- devsquad-3.6.5/README.md +0 -1157
- devsquad-3.6.5/devsquad.egg-info/PKG-INFO +0 -1237
- devsquad-3.6.5/scripts/collaboration/_version.py +0 -1
- devsquad-3.6.5/scripts/collaboration/dispatcher.py +0 -1895
- devsquad-3.6.5/tests/test_mcp_server_v362.py +0 -545
- {devsquad-3.6.5 → devsquad-3.6.7}/LICENSE +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/devsquad.egg-info/dependency_links.txt +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/devsquad.egg-info/entry_points.txt +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/devsquad.egg-info/requires.txt +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/devsquad.egg-info/top_level.txt +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/__init__.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/ai_semantic_matcher.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/alert_manager.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/__init__.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/models.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/routes/__init__.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/routes/dispatch.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/routes/lifecycle.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/api/routes/metrics.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/cli/__init__.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/cli/cli_visual.py +0 -0
- {devsquad-3.6.5/skills/retrospective → devsquad-3.6.7/scripts/collaboration/_archived}/__init__.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/adaptive_role_selector_test.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/async_integration_example.py +0 -0
- {devsquad-3.6.5/scripts → devsquad-3.6.7/scripts/collaboration/_archived}/code_quality.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/execution_guard_test.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/feedback_control_loop_test.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/integration_example.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/multi_level_cache.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/similar_task_recommender_test.py +0 -0
- {devsquad-3.6.5/scripts/collaboration → devsquad-3.6.7/scripts/collaboration/_archived}/structured_logging.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/adaptive_role_selector.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/ai_semantic_matcher.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/anchor_checker.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/anti_rationalization.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/async_adapter.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/async_llm_backend.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/audit_logger.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/batch_scheduler.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/cache_interface.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/ci_feedback_adapter.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/code_map_generator.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/concern_pack_loader.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/confidence_score.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/config_loader.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/consensus.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/context_compressor.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/coordinator.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/dual_layer_context.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/enhanced_worker.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/execution_guard.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/feature_usage_tracker.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/feedback_control_loop.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/five_axis_consensus.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/input_validator.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/intent_workflow_mapper.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/language_parsers.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/llm_backend.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/llm_cache_async.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/llm_retry.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/llm_retry_async.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/mce_adapter.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/models.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/multi_tenant.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/null_providers.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/operation_classifier.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/output_slicer.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/performance_monitor.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/permission_guard.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/prometheus_metrics.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/prompt_assembler.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/prompt_variant_generator.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/protocols.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/rbac_engine.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/report_formatter.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/retrospective.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/role_matcher.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/role_template_market.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/rule_collector.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/scratchpad.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/similar_task_recommender.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/skill_registry.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/standardized_role_template.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/task_completion_checker.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/test_quality_guard.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/unified_gate_engine.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/usage_tracker.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/user_friendly_error.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/verification_gate.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/warmup_manager.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/collaboration/worker.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/generate_benchmark_report.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/scripts/verify_v361.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/setup.cfg +0 -0
- {devsquad-3.6.5/skills/test → devsquad-3.6.7/skills/retrospective}/__init__.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_anchor_retrospective.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_anti_rationalization.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_api_server_v362.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_ci_feedback_adapter.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_cli_lifecycle.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_cli_phase5.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_claw_integration_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_context_compressor_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_core_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_dispatcher_ux_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_e2e_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_enhanced_e2e_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_llm_cache_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_llm_retry_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_mce_adapter_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_memory_bridge_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_performance_monitor_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_permission_guard_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_prompt_optimization_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_role_mapping_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_skillifier_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_test_quality_guard.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_test_quality_guard_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_upstream_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_collaboration_warmup_manager_test.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_comprehensive_integration.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_confidence_score.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_config_injection.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_extended_integration.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_final_integration.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_five_axis_consensus.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_full_lifecycle_adapter.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_intent_workflow_mapper.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_llm_cache_protocol.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_null_providers.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_operation_classifier.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_output_slicer.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_performance_fingerprint.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_performance_monitor_protocol.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_protocols.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_quick_bonus.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_rule_injection_security.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_standardized_role_template.py +0 -0
- {devsquad-3.6.5 → devsquad-3.6.7}/tests/test_verification_gate.py +0 -0
devsquad-3.6.7/PKG-INFO
ADDED
|
@@ -0,0 +1,665 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: devsquad
|
|
3
|
+
Version: 3.6.7
|
|
4
|
+
Summary: Production-Ready Multi-Role AI Task Orchestrator
|
|
5
|
+
Author-email: DevSquad Team <devsquad@example.com>
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/lulin70/DevSquad
|
|
8
|
+
Project-URL: Documentation, https://github.com/lulin70/DevSquad/blob/main/README.md
|
|
9
|
+
Project-URL: Repository, https://github.com/lulin70/DevSquad.git
|
|
10
|
+
Project-URL: Issues, https://github.com/lulin70/DevSquad/issues
|
|
11
|
+
Project-URL: PyPI, https://pypi.org/project/devsquad/
|
|
12
|
+
Keywords: multi-agent,orchestration,llm,ai,collaboration,role-based,consensus,cybernetics,task-dispatch,openai,anthropic,cli,api,dashboard
|
|
13
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
14
|
+
Classifier: Intended Audience :: Developers
|
|
15
|
+
Classifier: License :: OSI Approved :: MIT License
|
|
16
|
+
Classifier: Operating System :: OS Independent
|
|
17
|
+
Classifier: Programming Language :: Python :: 3
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
20
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
21
|
+
Classifier: Topic :: Scientific/Engineering :: Artificial Intelligence
|
|
22
|
+
Classifier: Topic :: Software Development :: Libraries :: Python Modules
|
|
23
|
+
Classifier: Typing :: Typed
|
|
24
|
+
Requires-Python: >=3.10
|
|
25
|
+
Description-Content-Type: text/markdown
|
|
26
|
+
License-File: LICENSE
|
|
27
|
+
Requires-Dist: pyyaml>=6.0
|
|
28
|
+
Requires-Dist: fastapi>=0.100.0
|
|
29
|
+
Requires-Dist: uvicorn[standard]>=0.23.0
|
|
30
|
+
Requires-Dist: pydantic>=2.0
|
|
31
|
+
Provides-Extra: openai
|
|
32
|
+
Requires-Dist: openai>=1.0; extra == "openai"
|
|
33
|
+
Provides-Extra: anthropic
|
|
34
|
+
Requires-Dist: anthropic>=0.18; extra == "anthropic"
|
|
35
|
+
Provides-Extra: carrymem
|
|
36
|
+
Requires-Dist: carrymem[devsquad]>=0.2.8; extra == "carrymem"
|
|
37
|
+
Provides-Extra: mcp
|
|
38
|
+
Requires-Dist: mcp>=0.9; extra == "mcp"
|
|
39
|
+
Provides-Extra: monitoring
|
|
40
|
+
Requires-Dist: psutil>=5.9; extra == "monitoring"
|
|
41
|
+
Requires-Dist: prometheus-client>=0.19; extra == "monitoring"
|
|
42
|
+
Provides-Extra: api
|
|
43
|
+
Requires-Dist: fastapi>=0.100.0; extra == "api"
|
|
44
|
+
Requires-Dist: uvicorn[standard]>=0.23.0; extra == "api"
|
|
45
|
+
Requires-Dist: pydantic>=2.0; extra == "api"
|
|
46
|
+
Provides-Extra: visualization
|
|
47
|
+
Requires-Dist: streamlit>=1.28.0; extra == "visualization"
|
|
48
|
+
Requires-Dist: jupyter>=1.0; extra == "visualization"
|
|
49
|
+
Provides-Extra: alerts
|
|
50
|
+
Requires-Dist: slack-sdk>=3.21.0; extra == "alerts"
|
|
51
|
+
Provides-Extra: dev
|
|
52
|
+
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
53
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "dev"
|
|
54
|
+
Requires-Dist: pytest-cov>=4.1; extra == "dev"
|
|
55
|
+
Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
56
|
+
Requires-Dist: mypy>=1.0; extra == "dev"
|
|
57
|
+
Requires-Dist: black>=23.0; extra == "dev"
|
|
58
|
+
Requires-Dist: flake8>=6.0; extra == "dev"
|
|
59
|
+
Provides-Extra: all
|
|
60
|
+
Requires-Dist: openai>=1.0; extra == "all"
|
|
61
|
+
Requires-Dist: anthropic>=0.18; extra == "all"
|
|
62
|
+
Requires-Dist: carrymem[devsquad]>=0.2.8; extra == "all"
|
|
63
|
+
Requires-Dist: mcp>=0.9; extra == "all"
|
|
64
|
+
Requires-Dist: psutil>=5.9; extra == "all"
|
|
65
|
+
Requires-Dist: prometheus-client>=0.19; extra == "all"
|
|
66
|
+
Requires-Dist: fastapi>=0.100.0; extra == "all"
|
|
67
|
+
Requires-Dist: uvicorn[standard]>=0.23.0; extra == "all"
|
|
68
|
+
Requires-Dist: pydantic>=2.0; extra == "all"
|
|
69
|
+
Requires-Dist: streamlit>=1.28.0; extra == "all"
|
|
70
|
+
Requires-Dist: jupyter>=1.0; extra == "all"
|
|
71
|
+
Requires-Dist: slack-sdk>=3.21.0; extra == "all"
|
|
72
|
+
Requires-Dist: pytest>=7.0; extra == "all"
|
|
73
|
+
Requires-Dist: pytest-asyncio>=0.21; extra == "all"
|
|
74
|
+
Requires-Dist: pytest-cov>=4.1; extra == "all"
|
|
75
|
+
Requires-Dist: ruff>=0.4.0; extra == "all"
|
|
76
|
+
Requires-Dist: mypy>=1.0; extra == "all"
|
|
77
|
+
Requires-Dist: black>=23.0; extra == "all"
|
|
78
|
+
Requires-Dist: flake8>=6.0; extra == "all"
|
|
79
|
+
Dynamic: license-file
|
|
80
|
+
|
|
81
|
+
# DevSquad — Multi-Role AI Task Orchestrator
|
|
82
|
+
|
|
83
|
+
<p align="center">
|
|
84
|
+
<strong>🎯 把「单个 AI 助手」升级成「7 人 AI 专业团队」</strong>
|
|
85
|
+
<br>
|
|
86
|
+
<em>One task → Multi-role AI collaboration → One conclusion | V3.6.6 Enterprise Ready</em>
|
|
87
|
+
</p>
|
|
88
|
+
|
|
89
|
+
<p align="center">
|
|
90
|
+
<img alt="Python" src="https://img.shields.io/badge/Python-3.9+-blue?logo=python&logoColor=white" />
|
|
91
|
+
<img alt="License" src="https://img.shields.io/badge/License-MIT-green" />
|
|
92
|
+
<img alt="Tests" src="https://img.shields.io/badge/Tests-1855%20passing-brightgreen" />
|
|
93
|
+
<img alt="Version" src="https://img.shields.io/badge/V3.6.7-success" />
|
|
94
|
+
<img alt="CI" src="https://img.shields.io/badge/CI-GitHub_Actions-blue?logo=githubactions" />
|
|
95
|
+
<img alt="Quality" src="https://img.shields.io/badge/Code%20Quality-4.3%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%86-blue" />
|
|
96
|
+
<img alt="Security" src="https://img.shields.io/badge/Security-5%2F5%20%E2%98%85%E2%98%85%E2%98%85%E2%98%85%E2%98%85-success" />
|
|
97
|
+
</p>
|
|
98
|
+
|
|
99
|
+
---
|
|
100
|
+
|
|
101
|
+
## 📖 太长不看?先看这个(30 秒)
|
|
102
|
+
|
|
103
|
+
### DevSquad 是什么?
|
|
104
|
+
|
|
105
|
+
**DevSquad** 是一个多角色 AI 任务编排器。当你提交一个任务时,它不再是单个 AI 回答,而是让 **7 个专业角色**(架构师、安全专家、测试员、开发者等)**并行协作**,最后给出经过多方审核的结论。
|
|
106
|
+
|
|
107
|
+
```
|
|
108
|
+
传统 AI: 你 ──→ ChatGPT ──→ 一个回答(可能不全面)
|
|
109
|
+
DevSquad: 你 ──→ DevSquad ──→ [架构师+安全+测试+开发...] ──→ 多维度共识结论
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
### 核心优势(对比单 AI)
|
|
113
|
+
|
|
114
|
+
| 痛点 | 传统单 AI | DevSquad |
|
|
115
|
+
|------|----------|----------|
|
|
116
|
+
| **视角单一** | 只有通用视角 | 7 个专业角色并行审视 ✅ |
|
|
117
|
+
| **质量不可控** | 可能遗漏安全问题 | 多维度交叉验证 + 共识机制 ✅ |
|
|
118
|
+
| **无审计追踪** | 不知道回答依据什么 | 完整审计链 + SHA256 完整性校验 ✅ |
|
|
119
|
+
| **复杂任务崩溃** | 长任务容易丢失上下文 | Checkpoint 断点续传 + 工作流引擎 ✅ |
|
|
120
|
+
|
|
121
|
+
### 最快上手(5 分钟)
|
|
122
|
+
|
|
123
|
+
```bash
|
|
124
|
+
# 安装
|
|
125
|
+
pip install devsquad
|
|
126
|
+
|
|
127
|
+
# 运行 - 让 AI 团队帮你设计认证系统
|
|
128
|
+
devsquad run "设计一个安全的用户认证系统" --roles architect,security,tester,coder
|
|
129
|
+
|
|
130
|
+
# 输出结构化报告:
|
|
131
|
+
# ✅ 架构师建议:采用 JWT + Refresh Token 方案...
|
|
132
|
+
# ✅ 安全专家审查:需防范 CSRF、XSS、SQL 注入...
|
|
133
|
+
# ✅ 测试策略:单元测试覆盖率达 90%+...
|
|
134
|
+
# ✅ 开发实现:提供完整代码框架...
|
|
135
|
+
# 📊 共识结论:方案可行,风险可控...
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
### 什么时候用 DevSquad?
|
|
139
|
+
|
|
140
|
+
| 你的需求 | 推荐方案 |
|
|
141
|
+
|---------|---------|
|
|
142
|
+
| 简单问答("Python 怎么写 for 循环?") | 直接用 ChatGPT/Claude ✅ |
|
|
143
|
+
| 代码片段审查 | DevSquad 单角色模式 ✅ |
|
|
144
|
+
| 复杂系统设计(需要多视角) | **DevSquad 多角色协作** 🎯 |
|
|
145
|
+
| 生产环境自动化流程 | **DevSquad + REST API + Dashboard** 🎯 |
|
|
146
|
+
|
|
147
|
+
📚 **想深入了解?** → [完整快速入门指南](QUICKSTART.md) | [70+ 模块详细参考](SKILL.md)
|
|
148
|
+
|
|
149
|
+
---
|
|
150
|
+
|
|
151
|
+
<details>
|
|
152
|
+
<summary>🔍 点击展开:完整功能介绍与架构详解</summary>
|
|
153
|
+
|
|
154
|
+
## 🚀 V3.6.7: Redis Cache + Async Dispatch + Dispatcher Refactor
|
|
155
|
+
|
|
156
|
+
**DevSquad V3.6.7** adds Redis Cache L2 backend for three-tier caching (memory→disk→Redis), async dispatch with `asyncio.gather` for concurrent LLM calls, dispatcher refactored from 788-line monolith into 18 step methods (extracted `dispatch_models.py` and `dispatch_performance.py`), fixed `DispatchResult.to_dict()`/`to_markdown()` missing 5 fields (data loss bug), cleaned up `except:pass` patterns, removed redundant `to_dict()` wrappers, and restored 183 previously xfailed tests — bringing total to 1855 tests passing with CI re-enabled.
|
|
157
|
+
|
|
158
|
+
---
|
|
159
|
+
|
|
160
|
+
## ⚡ Quick Start (4 Ways to Use DevSquad)
|
|
161
|
+
|
|
162
|
+
### 方式 1:命令行(推荐新手)
|
|
163
|
+
|
|
164
|
+
```bash
|
|
165
|
+
# Interactive setup wizard (1-2 minutes)
|
|
166
|
+
python scripts/cli.py init
|
|
167
|
+
|
|
168
|
+
# Then start collaborating!
|
|
169
|
+
devsquad dispatch -t "your task description"
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
### 方式 2:Web Dashboard(推荐团队)
|
|
173
|
+
|
|
174
|
+
```bash
|
|
175
|
+
# Start Streamlit dashboard with authentication
|
|
176
|
+
streamlit run scripts/dashboard.py
|
|
177
|
+
|
|
178
|
+
# Open http://localhost:8501
|
|
179
|
+
# Login with default account, then change password immediately.
|
|
180
|
+
# Username: admin Password: <your-secure-password>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
### 方式 3:REST API(推荐集成)
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
# Install dependencies
|
|
187
|
+
pip install fastapi uvicorn
|
|
188
|
+
|
|
189
|
+
# Start API server
|
|
190
|
+
uvicorn scripts.api_server:app --host 0.0.0.0 --port 8000 --reload
|
|
191
|
+
|
|
192
|
+
# Access Swagger UI: http://localhost:8000/docs
|
|
193
|
+
# Access ReDoc: http://localhost:8000/redoc
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
### 方式 4:Python API(推荐开发者)
|
|
197
|
+
|
|
198
|
+
```python
|
|
199
|
+
from scripts.collaboration.dispatcher import MultiAgentDispatcher
|
|
200
|
+
|
|
201
|
+
dispatcher = MultiAgentDispatcher()
|
|
202
|
+
result = dispatcher.dispatch(
|
|
203
|
+
task="Optimize database query performance",
|
|
204
|
+
roles=["architect", "security", "tester"],
|
|
205
|
+
)
|
|
206
|
+
print(result.report)
|
|
207
|
+
print(result.consensus)
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
---
|
|
211
|
+
|
|
212
|
+
## 👥 7 Core Roles
|
|
213
|
+
|
|
214
|
+
| Role | CLI ID | Aliases | Weight | Best For |
|
|
215
|
+
|------|--------|---------|--------|----------|
|
|
216
|
+
| 🏗️ **Architect** | `arch` | `architect` | 1.5 | System design, tech stack, performance/security architecture |
|
|
217
|
+
| 📋 **Product Manager** | `pm` | `product-manager` | 1.2 | Requirements, user stories, acceptance criteria |
|
|
218
|
+
| 🛡️ **Security Expert** | `sec` | `security` | 1.1 | Threat modeling, vulnerability audit, compliance |
|
|
219
|
+
| 🧪 **Tester** | `test` | `tester`, `qa` | 1.0 | Test strategy, quality assurance, edge cases |
|
|
220
|
+
| 💻 **Coder** | `coder` | `solo-coder`, `dev` | 1.0 | Implementation, code review, performance optimization |
|
|
221
|
+
| 🔧 **DevOps** | `infra` | `devops` | 1.0 | CI/CD, containerization, monitoring, infrastructure |
|
|
222
|
+
| 🎨 **UI Designer** | `ui` | `ui-designer` | 0.9 | UX flow, interaction design, accessibility |
|
|
223
|
+
|
|
224
|
+
**Auto-match**: If no roles specified, the dispatcher automatically matches based on task keywords.
|
|
225
|
+
|
|
226
|
+
---
|
|
227
|
+
|
|
228
|
+
## 🏗️ Five Capability Domains (Architecture Overview)
|
|
229
|
+
|
|
230
|
+
DevSquad's 70+ modules are organized into **5 capability domains**, each solving a specific problem:
|
|
231
|
+
|
|
232
|
+
### 🎯 Domain 1: Task Orchestration Engine (Core)
|
|
233
|
+
|
|
234
|
+
> **让 7 个角色高效协作的「指挥中心」**
|
|
235
|
+
|
|
236
|
+
| Module | Purpose | When to Use |
|
|
237
|
+
|--------|---------|------------|
|
|
238
|
+
| **MultiAgentDispatcher** | Unified dispatch entry point | All tasks automatically |
|
|
239
|
+
| **Coordinator** | Task decomposition + role assignment | Complex tasks needing breakdown |
|
|
240
|
+
| **Scratchpad** | Shared blackboard for real-time info exchange | Inter-role collaboration |
|
|
241
|
+
| **ConsensusEngine** | Weighted voting + veto + escalation mechanism | Security/architecture disputes |
|
|
242
|
+
| **BatchScheduler** | Parallel/sequential hybrid scheduling | Resource-constrained environments |
|
|
243
|
+
|
|
244
|
+
**Core Workflow:**
|
|
245
|
+
```
|
|
246
|
+
User Task → [InputValidator] → [RoleMatcher] → [Coordinator Orchestration]
|
|
247
|
+
→ [ThreadPoolExecutor Parallel Workers] → [Scratchpad Real-time Sharing]
|
|
248
|
+
→ [ConsensusEngine] → [ReportFormatter] → [Structured Report]
|
|
249
|
+
```
|
|
250
|
+
|
|
251
|
+
### 🛡️ Domain 2: Quality Assurance System
|
|
252
|
+
|
|
253
|
+
> **防止 AI 「偷懒」或「幻觉」**
|
|
254
|
+
|
|
255
|
+
| Module | Purpose | When to Use |
|
|
256
|
+
|--------|---------|------------|
|
|
257
|
+
| **InputValidator** | Security validation + 40-pattern detection (14 forbidden + 21 prompt injection + 5 suspicious) | Production environments |
|
|
258
|
+
| **VerificationGate** | Mandatory evidence requirements + 7 Red Flags detection | Critical decision scenarios |
|
|
259
|
+
| **AntiRationalizationEngine** | Per-role excuse→rebuttal tables to prevent quality shortcuts | High quality requirements |
|
|
260
|
+
| **TestQualityGuard** | Test quality audit (API validation / anti-pattern detection / dimension coverage) | Pre-release verification |
|
|
261
|
+
| **PermissionGuard** | 4-level safety gate (PLAN/DEFAULT/AUTO/BYPASS) | Security-sensitive tasks |
|
|
262
|
+
|
|
263
|
+
### ⚡ Domain 3: Performance & Reliability
|
|
264
|
+
|
|
265
|
+
> **让系统更快、更稳定、更省钱**
|
|
266
|
+
|
|
267
|
+
| Module | Purpose | When to Use |
|
|
268
|
+
|--------|---------|------------|
|
|
269
|
+
| **LLMCache** | TTL-based LRU cache with disk persistence (60-80% cost reduction) | High-frequency usage |
|
|
270
|
+
| **LLMRetry** | Exponential backoff + circuit breaker + multi-backend fallback | Unstable networks |
|
|
271
|
+
| **FeedbackControlLoop** | Closed-loop feedback control with automatic iteration until quality threshold met | High quality output pursuit |
|
|
272
|
+
| **ExecutionGuard** | Real-time abort guard (timeout/output/keywords) for safe execution | Long-running tasks |
|
|
273
|
+
| **FallbackBackend** | Automatic backend failover with health monitoring | High availability requirements |
|
|
274
|
+
|
|
275
|
+
### 📊 Domain 4: Observability & Governance
|
|
276
|
+
|
|
277
|
+
> **知道系统在做什么、做得怎么样**
|
|
278
|
+
|
|
279
|
+
| Module | Purpose | When to Use |
|
|
280
|
+
|--------|---------|------------|
|
|
281
|
+
| **PerformanceMonitor** | P95/P99 response time, CPU/memory tracking, bottleneck detection | Performance tuning |
|
|
282
|
+
| **UsageTracker** | Token/cost usage tracking and reporting | Cost control |
|
|
283
|
+
| **AuditLogger** | SHA256 integrity operation logs with CSV/JSON export | Compliance auditing |
|
|
284
|
+
| **RBAC Engine** | 15+ fine-grained permissions, 5 roles (SUPER_ADMIN/ADMIN/OPERATOR/ANALYST/VIEWER) | Enterprise access control |
|
|
285
|
+
| **HistoryManager** | SQLite time-series storage: metrics snapshots, alert history, API logs | Retrospective analysis |
|
|
286
|
+
| **AlertManager** | Multi-channel alerting: Console/Slack/Email/Webhook with rate limiting | Production monitoring |
|
|
287
|
+
|
|
288
|
+
### 🔌 Domain 5: Integration & Extension
|
|
289
|
+
|
|
290
|
+
> **融入你的现有工具链**
|
|
291
|
+
|
|
292
|
+
| Module | Purpose | When to Use |
|
|
293
|
+
|--------|---------|------------|
|
|
294
|
+
| **CLI** | Command-line interface with lifecycle commands | Daily developer usage |
|
|
295
|
+
| **REST API (FastAPI)** | 10+ endpoints with OpenAPI/Swagger docs | Microservice integration |
|
|
296
|
+
| **Dashboard (Streamlit)** | Interactive web dashboard with authentication | Operations team visualization |
|
|
297
|
+
| **MCP Protocol** | Integration with TRAE/Claude Code/Cursor | AI Agent ecosystem |
|
|
298
|
+
| **Docker Support** | Multi-stage build for production deployment | Containerized environments |
|
|
299
|
+
| **GitHub Actions CI** | Python 3.9-3.12 matrix testing | CI/CD pipelines |
|
|
300
|
+
|
|
301
|
+
---
|
|
302
|
+
|
|
303
|
+
## 🔬 Cybernetics Enhancement Modules (V3.6.1)
|
|
304
|
+
|
|
305
|
+
> **非侵入式包装设计 — 可选开关,零修改现有核心逻辑**
|
|
306
|
+
|
|
307
|
+
The 5 cybernetic modules work independently or together without modifying existing core logic:
|
|
308
|
+
|
|
309
|
+
```
|
|
310
|
+
User Task
|
|
311
|
+
↓
|
|
312
|
+
[SimilarTaskRecommender] ← Optional: suggest roles from history
|
|
313
|
+
↓
|
|
314
|
+
[AdaptiveRoleSelector] ← Optional: optimize role selection
|
|
315
|
+
↓
|
|
316
|
+
[MultiAgentDispatcher]
|
|
317
|
+
↓
|
|
318
|
+
[FeedbackControlLoop] ← Wrap dispatcher for auto-iteration
|
|
319
|
+
↓ [each worker step]
|
|
320
|
+
[ExecutionGuard] ← Guard each worker execution
|
|
321
|
+
↓
|
|
322
|
+
[PerformanceFingerprint] ← Record after dispatch completes
|
|
323
|
+
```
|
|
324
|
+
|
|
325
|
+
### 1️⃣ FeedbackControlLoop (反馈闭环控制器)
|
|
326
|
+
- Closed-loop feedback control with automatic iteration until quality threshold met
|
|
327
|
+
- Configurable quality gate (`quality_gate`) and maximum iterations
|
|
328
|
+
- Lightweight quality assessment (no LLM calls), supports dry-run mode
|
|
329
|
+
|
|
330
|
+
### 2️⃣ ExecutionGuard (执行守护者)
|
|
331
|
+
- Real-time execution monitoring with 4 abort conditions: timeout, output size, token count, critical keywords
|
|
332
|
+
- Lightweight checks (<1ms), zero external dependencies
|
|
333
|
+
- Dynamically configurable thresholds
|
|
334
|
+
|
|
335
|
+
### 3️⃣ PerformanceFingerprint (性能指纹系统)
|
|
336
|
+
- Unified execution fingerprint recording (fuses 4 data sources)
|
|
337
|
+
- Pure Python TF-IDF implementation (no sklearn/numpy), supports English/Chinese mixed content
|
|
338
|
+
- JSON persistence to `.devsquad_data/fingerprints/`, graceful cold-start degradation
|
|
339
|
+
|
|
340
|
+
### 4️⃣ SimilarTaskRecommender (相似任务推荐器)
|
|
341
|
+
- TF-IDF-based task similarity search with historical success configuration recommendations
|
|
342
|
+
- Intelligent role combination recommendation, intent prediction, execution time estimation
|
|
343
|
+
- Confidence scoring (high/medium/low), graceful cold-start degradation
|
|
344
|
+
|
|
345
|
+
### 5️⃣ AdaptiveRoleSelector (自适应角色选择器)
|
|
346
|
+
- Three-tier selection strategy based on historical success rates
|
|
347
|
+
- Configurable minimum success rate and maximum role count
|
|
348
|
+
- Supports manual statistics updates and comprehensive role effectiveness reporting
|
|
349
|
+
|
|
350
|
+
**Recommended usage** (progressive adoption):
|
|
351
|
+
```python
|
|
352
|
+
from scripts.collaboration import (
|
|
353
|
+
MultiAgentDispatcher, FeedbackControlLoop,
|
|
354
|
+
ExecutionGuard, PerformanceFingerprint
|
|
355
|
+
)
|
|
356
|
+
|
|
357
|
+
dispatcher = MultiAgentDispatcher()
|
|
358
|
+
guard = ExecutionGuard()
|
|
359
|
+
fingerprint = PerformanceFingerprint()
|
|
360
|
+
|
|
361
|
+
# Option 1: Full cybernetics stack
|
|
362
|
+
loop = FeedbackControlLoop(dispatcher, quality_gate=0.7)
|
|
363
|
+
result = loop.run("Your task here")
|
|
364
|
+
|
|
365
|
+
# Option 2: Guard only (minimal adoption)
|
|
366
|
+
result = dispatcher.dispatch("Your task")
|
|
367
|
+
for w in result.worker_results:
|
|
368
|
+
abort, reason = guard.check_abort(w.output, w.duration)
|
|
369
|
+
if abort:
|
|
370
|
+
print(f"Aborted: {reason}")
|
|
371
|
+
|
|
372
|
+
# Option 3: Learning only
|
|
373
|
+
fingerprint.record_execution("task", result, result.timing, result.matched_roles)
|
|
374
|
+
similar = fingerprint.find_similar("new task", top_k=3)
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
All modules are **optional switches** — DevSquad works perfectly without them.
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
## 🏗️ Architecture Overview (Layered Design)
|
|
382
|
+
|
|
383
|
+
```
|
|
384
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
385
|
+
│ User Access Layer │
|
|
386
|
+
│ ┌──────────────┐ ┌──────────────┐ ┌──────────────┐ │
|
|
387
|
+
│ │ Streamlit │ │ FastAPI REST │ │ CLI/Notebook │ │
|
|
388
|
+
│ │ Dashboard │ │ API Server │ │ (Existing) │ │
|
|
389
|
+
│ │ (Auth+HTTPS) │ │ (Swagger) │ │ │ │
|
|
390
|
+
│ └──────┬───────┘ └──────┬───────┘ └──────────────┘ │
|
|
391
|
+
└─────────┼───────────────┼───────────────────────────────────┘
|
|
392
|
+
│ │
|
|
393
|
+
▼ ▼
|
|
394
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
395
|
+
│ Business Logic Layer │
|
|
396
|
+
│ ┌─────────────┐ ┌─────────────┐ ┌─────────────┐ │
|
|
397
|
+
│ │AuthManager │ │AlertManager │ │HistoryMgr │ │
|
|
398
|
+
│ │(RBAC Auth) │ │(Multi-Chnl) │ │(SQLite TSDB)│ │
|
|
399
|
+
│ └─────────────┘ └─────────────┘ └─────────────┘ │
|
|
400
|
+
│ ┌─────────────────────────────────────────────┐ │
|
|
401
|
+
│ │ LifecycleProtocol (11-Phase Engine) │ │
|
|
402
|
+
│ │ UnifiedGateEngine + CheckpointManager │ │
|
|
403
|
+
│ └─────────────────────────────────────────────┘ │
|
|
404
|
+
└─────────────────────────┬───────────────────────────────────┘
|
|
405
|
+
│
|
|
406
|
+
▼
|
|
407
|
+
┌─────────────────────────────────────────────────────────────┐
|
|
408
|
+
│ Data Persistence Layer │
|
|
409
|
+
│ ┌────────────┐ ┌────────────┐ ┌────────────────────────┐ │
|
|
410
|
+
│ │ SQLite DB │ │ YAML Config│ │ Checkpoint Files │ │
|
|
411
|
+
│ │ (History) │ │ (Deploy) │ │ (Lifecycle State) │ │
|
|
412
|
+
│ └────────────┘ └────────────┘ └────────────────────────┘ │
|
|
413
|
+
└─────────────────────────────────────────────────────────────┘
|
|
414
|
+
```
|
|
415
|
+
|
|
416
|
+
---
|
|
417
|
+
|
|
418
|
+
## 🧩 Layered Sub-Skill Architecture (V3.6.0)
|
|
419
|
+
|
|
420
|
+
> DevSquad provides **6 atomic sub-skills** that can be used independently or together.
|
|
421
|
+
> Each sub-skill is a thin wrapper (~50 lines) importing existing core modules — no duplicated logic.
|
|
422
|
+
|
|
423
|
+
```
|
|
424
|
+
skills/
|
|
425
|
+
├── dispatch/ → DispatchSkill — MultiAgentDispatcher (7-role orchestration)
|
|
426
|
+
├── intent/ → IntentSkill — IntentWorkflowMapper (6 intents × 3 languages)
|
|
427
|
+
├── review/ → ReviewSkill — FiveAxisConsensusEngine (5-axis code review)
|
|
428
|
+
├── security/ → SecuritySkill — InputValidator + OperationClassifier + PermissionGuard
|
|
429
|
+
├── test/ → TestSkill — TestQualityGuard + test strategy generation
|
|
430
|
+
└── retrospective/ → RetroSkill — RetrospectiveEngine + pattern extraction
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
### Sub-Skill Quick Reference
|
|
434
|
+
|
|
435
|
+
| Skill | Core Method | Wraps | Mock Mode |
|
|
436
|
+
|-------|------------|-------|:---------:|
|
|
437
|
+
| `dispatch` | `run(task, roles, mode)` | MultiAgentDispatcher | ✅ |
|
|
438
|
+
| `intent` | `detect(text, lang)` | IntentWorkflowMapper | ✅ |
|
|
439
|
+
| `review` | `review(code)` | FiveAxisConsensusEngine | ✅ |
|
|
440
|
+
| `security` | `scan_input(text)` | InputValidator + OpClassifier | ✅ |
|
|
441
|
+
| `test` | `generate_strategy(module)` | TestQualityGuard | ✅ |
|
|
442
|
+
| `retrospective` | `run_retrospective(results)` | RetrospectiveEngine | ✅ |
|
|
443
|
+
|
|
444
|
+
### Usage Examples
|
|
445
|
+
|
|
446
|
+
```python
|
|
447
|
+
# Direct import (recommended for single skill)
|
|
448
|
+
from skills.dispatch.handler import DispatchSkill
|
|
449
|
+
result = DispatchSkill().run("Fix login bug", roles=["coder", "tester"])
|
|
450
|
+
|
|
451
|
+
# Via registry (dynamic discovery)
|
|
452
|
+
from skills import get_skill, list_skills
|
|
453
|
+
print(list_skills()) # ['dispatch', 'intent', 'review', 'security', 'test', 'retrospective']
|
|
454
|
+
skill = get_skill("security")
|
|
455
|
+
result = skill.scan_input("DROP TABLE users; --")
|
|
456
|
+
```
|
|
457
|
+
|
|
458
|
+
All sub-skills work **without any API key** in Mock mode.
|
|
459
|
+
|
|
460
|
+
---
|
|
461
|
+
|
|
462
|
+
## 📋 Plan C Architecture (Core Engine)
|
|
463
|
+
|
|
464
|
+
**Unified Lifecycle Architecture** - Resolves CLI 6 commands vs 11-phase lifecycle:
|
|
465
|
+
|
|
466
|
+
```
|
|
467
|
+
CLI View Layer (6 commands) Core Engine (11 phases)
|
|
468
|
+
┌─────────────────────┐ ┌──────────────────────────┐
|
|
469
|
+
│ spec → P1, P2 │───View ──→│ P1: Requirements │
|
|
470
|
+
│ plan → P7 │ Mapping │ P2: Architecture │
|
|
471
|
+
│ build → P8 │ │ P3: Technical Design │
|
|
472
|
+
│ test → P9 │ │ ... │
|
|
473
|
+
│ review → P8,P6 │ │ P10: Deployment │
|
|
474
|
+
│ ship → P10 │ │ P11: Operations │
|
|
475
|
+
└─────────────────────┘ └──────────────────────────┘
|
|
476
|
+
↓ ↓
|
|
477
|
+
UnifiedGateEngine CheckpointManager
|
|
478
|
+
(Phase + Worker gates) (Lifecycle state persistence)
|
|
479
|
+
```
|
|
480
|
+
|
|
481
|
+
**Core Components:**
|
|
482
|
+
- ✅ **LifecycleProtocol** - Abstract interface for unified lifecycle management
|
|
483
|
+
- ✅ **UnifiedGateEngine** - Integrates VerificationGate + Phase transition gates
|
|
484
|
+
- ✅ **FullLifecycleAdapter** - Complete 11-phase lifecycle with dependency resolution
|
|
485
|
+
- ✅ **Enhanced CheckpointManager** - Auto save/restore lifecycle state across sessions
|
|
486
|
+
|
|
487
|
+
---
|
|
488
|
+
|
|
489
|
+
## 📦 Installation
|
|
490
|
+
|
|
491
|
+
### Prerequisites
|
|
492
|
+
- **Python 3.9+** (3.9, 3.10, 3.11, 3.12 supported)
|
|
493
|
+
- **pip** or **pipenv** for package management
|
|
494
|
+
|
|
495
|
+
### Option A: PyPI Install (Recommended)
|
|
496
|
+
```bash
|
|
497
|
+
# Install from PyPI — zero setup, ready to use
|
|
498
|
+
pip install devsquad
|
|
499
|
+
|
|
500
|
+
# With optional dependencies
|
|
501
|
+
pip install "devsquad[api]" # FastAPI + Streamlit dashboard
|
|
502
|
+
pip install "devsquad[all]" # All optional features
|
|
503
|
+
```
|
|
504
|
+
|
|
505
|
+
### Option B: Git Clone + Local Install
|
|
506
|
+
```bash
|
|
507
|
+
git clone https://github.com/weiransoft/devsquad.git
|
|
508
|
+
cd DevSquad
|
|
509
|
+
|
|
510
|
+
# Install core package (minimal dependencies)
|
|
511
|
+
pip install -e .
|
|
512
|
+
|
|
513
|
+
# Ready to use!
|
|
514
|
+
devsquad dispatch -t "Design user authentication system"
|
|
515
|
+
```
|
|
516
|
+
|
|
517
|
+
### Verify Installation
|
|
518
|
+
```bash
|
|
519
|
+
# Check version
|
|
520
|
+
devsquad --version
|
|
521
|
+
# Expected: devsquad 3.6.6
|
|
522
|
+
|
|
523
|
+
# Run tests
|
|
524
|
+
pytest tests/ -v --tb=short
|
|
525
|
+
# Expected: 1500+ passed
|
|
526
|
+
```
|
|
527
|
+
|
|
528
|
+
---
|
|
529
|
+
|
|
530
|
+
## ⚙️ Configuration
|
|
531
|
+
|
|
532
|
+
Create `.devsquad.yaml` in your project root:
|
|
533
|
+
|
|
534
|
+
```yaml
|
|
535
|
+
quality_control:
|
|
536
|
+
enabled: true
|
|
537
|
+
strict_mode: true
|
|
538
|
+
min_quality_score: 85
|
|
539
|
+
|
|
540
|
+
llm:
|
|
541
|
+
backend: openai
|
|
542
|
+
base_url: "" # Set via DEVSQUAD_OPENAI_BASE_URL env var
|
|
543
|
+
model: "" # Set via DEVSQUAD_OPENAI_MODEL env var
|
|
544
|
+
timeout: 120
|
|
545
|
+
```
|
|
546
|
+
|
|
547
|
+
Or use environment variables (higher priority):
|
|
548
|
+
|
|
549
|
+
```bash
|
|
550
|
+
export DEVSQUAD_LLM_BACKEND=openai
|
|
551
|
+
export DEVSQUAD_OPENAI_BASE_URL=https://api.openai.com/v1
|
|
552
|
+
export DEVSQUAD_OPENAI_MODEL=gpt-4
|
|
553
|
+
export DEVSQUAD_OPENAI_API_KEY=sk-...
|
|
554
|
+
```
|
|
555
|
+
|
|
556
|
+
**Environment Variables Reference:**
|
|
557
|
+
|
|
558
|
+
| Variable | Purpose | Default |
|
|
559
|
+
|----------|---------|---------|
|
|
560
|
+
| `DEVSQUAD_LLM_BACKEND` | Default backend type (mock\|trae\|openai\|anthropic\|fallback) | `mock` |
|
|
561
|
+
| `DEVSQUAD_OPENAI_API_KEY` | OpenAI/MOKA AI API key | None |
|
|
562
|
+
| `DEVSQUAD_OPENAI_BASE_URL` | OpenAI-compatible base URL | None |
|
|
563
|
+
| `DEVSQUAD_OPENAI_MODEL` | OpenAI model name | `gpt-4` |
|
|
564
|
+
| `DEVSQUAD_ANTHROPIC_API_KEY` | Anthropic API key | None |
|
|
565
|
+
| `DEVSQUAD_ANTHROPIC_BASE_URL` | Anthropic-compatible base URL | None |
|
|
566
|
+
| `DEVSQUAD_ANTHROPIC_MODEL` | Anthropic model name | `claude-sonnet-4-20250514` |
|
|
567
|
+
| `DEVSQUAD_LOG_LEVEL` | Logging level | `WARNING` |
|
|
568
|
+
|
|
569
|
+
---
|
|
570
|
+
|
|
571
|
+
## 🧪 Testing
|
|
572
|
+
|
|
573
|
+
### Quick Smoke Test (< 30 seconds)
|
|
574
|
+
```bash
|
|
575
|
+
python3 scripts/cli.py --version # Expected: DevSquad 3.6.6
|
|
576
|
+
python3 scripts/cli.py status # Expected: System ready
|
|
577
|
+
python3 scripts/cli.py roles # Expected: 7 core roles listed
|
|
578
|
+
```
|
|
579
|
+
|
|
580
|
+
### Full Test Suite
|
|
581
|
+
```bash
|
|
582
|
+
# Run all tests (1855 tests passing)
|
|
583
|
+
python3 -m pytest tests/ -q --tb=line
|
|
584
|
+
|
|
585
|
+
# With coverage report
|
|
586
|
+
python3 -m pytest tests/ --cov=scripts --cov-report=term-missing
|
|
587
|
+
```
|
|
588
|
+
|
|
589
|
+
### Test Layering Strategy
|
|
590
|
+
|
|
591
|
+
| Priority | Scope | Examples | Count |
|
|
592
|
+
|----------|-------|----------|-------|
|
|
593
|
+
| **P0** | Quality Framework Core | AntiRationalization, VerificationGate, IntentWorkflowMapper, AuthManager | ~200 |
|
|
594
|
+
| **P1** | Enhancement Modules | FiveAxisConsensus, OperationClassifier, OutputSlicer | ~150 |
|
|
595
|
+
| **P1+** | Cybernetics (V3.6.6) | FeedbackControlLoop, ExecutionGuard, PerformanceFingerprint, etc. | **110** |
|
|
596
|
+
| **P2** | Integration & E2E | Full lifecycle dispatch, cross-module integration | ~200 |
|
|
597
|
+
| **P3** | Unit per Module | Core dispatcher, RoleMapping, MCEAdapter, LLM backends | ~400+ |
|
|
598
|
+
|
|
599
|
+
**Total: 1855 tests**
|
|
600
|
+
|
|
601
|
+
Run by priority:
|
|
602
|
+
```bash
|
|
603
|
+
# P0 only (critical path, < 10s)
|
|
604
|
+
python3 -m pytest tests/ -k "anti_ratif or verification or intent_workflow or auth" -q
|
|
605
|
+
|
|
606
|
+
# P0 + P1 (quality + enhancement, < 30s)
|
|
607
|
+
python3 -m pytest tests/ -k "anti_ratif or verification or intent or auth or five_axis or operation" -q
|
|
608
|
+
|
|
609
|
+
# Full suite
|
|
610
|
+
python3 -m pytest tests/ -q --tb=line
|
|
611
|
+
```
|
|
612
|
+
|
|
613
|
+
---
|
|
614
|
+
|
|
615
|
+
## 📚 Documentation
|
|
616
|
+
|
|
617
|
+
| Document | Description | Language |
|
|
618
|
+
|----------|-------------|----------|
|
|
619
|
+
| [**QUICKSTART.md**](QUICKSTART.md) | **⭐ 30 秒快速入门指南(推荐新用户)** | 中文 |
|
|
620
|
+
| [SKILL.md](SKILL.md) | 完整技能手册 + 70+ 模块参考 | EN/CN/JP |
|
|
621
|
+
| [GUIDE.md](GUIDE.md) | 完全用户指南 | 中文 |
|
|
622
|
+
| [INSTALL.md](INSTALL.md) | 安装指南 (Unix + Windows) | EN/CN |
|
|
623
|
+
| [EXAMPLES.md](EXAMPLES.md) | 实际使用示例 | EN |
|
|
624
|
+
| [CHANGELOG.md](CHANGELOG.md) | 版本历史记录 | EN |
|
|
625
|
+
| [docs/i18n/README_CN.md](docs/i18n/README_CN.md) | 中文说明 | 中文 |
|
|
626
|
+
| [docs/i18n/README_JP.md](docs/i18n/README_JP.md) | 日本語説明 | 日本語 |
|
|
627
|
+
| [docs/PRD.md](docs/PRD.md) | 产品需求文档 | 中文 |
|
|
628
|
+
| [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) | 技术架构文档 | 中文 |
|
|
629
|
+
|
|
630
|
+
---
|
|
631
|
+
|
|
632
|
+
## 🤝 Contributing
|
|
633
|
+
|
|
634
|
+
1. Fork the repository
|
|
635
|
+
2. Create feature branch (`git checkout -b feature/amazing-feature`)
|
|
636
|
+
3. Commit changes (`git commit -m 'Add amazing feature'`)
|
|
637
|
+
4. Push to branch (`git push origin feature/amazing-feature`)
|
|
638
|
+
5. Open a Pull Request
|
|
639
|
+
|
|
640
|
+
---
|
|
641
|
+
|
|
642
|
+
## 📄 License
|
|
643
|
+
|
|
644
|
+
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
645
|
+
|
|
646
|
+
---
|
|
647
|
+
|
|
648
|
+
<p align="center">
|
|
649
|
+
<strong>⭐ 如果 DevSquad 对你有帮助,请给个 Star!⭐</strong>
|
|
650
|
+
<br>
|
|
651
|
+
<em>让更多开发者享受到「AI 团队协作」的力量</em>
|
|
652
|
+
<br>
|
|
653
|
+
<br>
|
|
654
|
+
<strong>🙏 Acknowledgments</strong>
|
|
655
|
+
<br>
|
|
656
|
+
Inspired by <a href="https://github.com/weiransoft/TraeMultiAgentSkill">TraeMultiAgentSkill</a> upstream project
|
|
657
|
+
<br>
|
|
658
|
+
Built with ❤️ by the DevSquad team
|
|
659
|
+
</p>
|
|
660
|
+
|
|
661
|
+
---
|
|
662
|
+
|
|
663
|
+
*Last updated: 2026-06-07 | Version: V3.6.7*
|
|
664
|
+
|
|
665
|
+
</details>
|