qwen-sci 0.2.0__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.
- qwen_sci-0.2.0/LICENSE +21 -0
- qwen_sci-0.2.0/PKG-INFO +492 -0
- qwen_sci-0.2.0/README.md +380 -0
- qwen_sci-0.2.0/pyproject.toml +233 -0
- qwen_sci-0.2.0/run_blog.sh +15 -0
- qwen_sci-0.2.0/run_experiment.sh +24 -0
- qwen_sci-0.2.0/run_idea.sh +15 -0
- qwen_sci-0.2.0/run_pipeline.sh +15 -0
- qwen_sci-0.2.0/run_survey.sh +15 -0
- qwen_sci-0.2.0/scripts/.gitkeep +0 -0
- qwen_sci-0.2.0/scripts/install_base.sh +9 -0
- qwen_sci-0.2.0/scripts/install_heavy.sh +154 -0
- qwen_sci-0.2.0/scripts/install_mcp_wrappers.sh +54 -0
- qwen_sci-0.2.0/scripts/sync_claude_anthropic_env.py +158 -0
- qwen_sci-0.2.0/src/__init__.py +1 -0
- qwen_sci-0.2.0/src/__main__.py +5 -0
- qwen_sci-0.2.0/src/agents/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/blog_agent/README.md +299 -0
- qwen_sci-0.2.0/src/agents/blog_agent/__init__.py +0 -0
- qwen_sci-0.2.0/src/agents/blog_agent/agent/__init__.py +0 -0
- qwen_sci-0.2.0/src/agents/blog_agent/agent/llm_config.py +109 -0
- qwen_sci-0.2.0/src/agents/blog_agent/agent/new_base_agent.py +388 -0
- qwen_sci-0.2.0/src/agents/blog_agent/scripts/run.py +497 -0
- qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-analyze/SKILL.md +376 -0
- qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-refine/SKILL.md +246 -0
- qwen_sci-0.2.0/src/agents/blog_agent/skills/blog-writer/SKILL.md +218 -0
- qwen_sci-0.2.0/src/agents/blog_agent/skills/workspace-navigator/SKILL.md +147 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/count_words_tool.py +161 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/download_paper_pdf_tool.py +158 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/gengraph.py +389 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/illustrate.py +116 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/ocr.py +217 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/search_core_tool.py +159 -0
- qwen_sci-0.2.0/src/agents/blog_agent/tools/search_paper_abstract_tool.py +164 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/deeperaser.pth +0 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/deeperaser.py +381 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/graph.db +0 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/retrieval.py +278 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/search_core.py +159 -0
- qwen_sci-0.2.0/src/agents/blog_agent/utils/semantic_scholar.py +669 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/README.md +93 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/__init__.py +0 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/__init__.py +4 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/base/__init__.py +11 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/base/agent.py +204 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/__init__.py +21 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/entry.py +11 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/planner.py +599 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/reviewer.py +128 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/code/worker.py +78 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/finalization/__init__.py +6 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/finalization/entry.py +350 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/master/__init__.py +3 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/master/entry.py +424 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/__init__.py +39 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/entry.py +7 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/planner.py +497 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/reviewer.py +99 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/prepare/worker.py +101 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/__init__.py +21 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/entry.py +11 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/planner.py +639 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/reviewer.py +124 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/agents/science/worker.py +34 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/config.py +937 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/main.py +378 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/__init__.py +88 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/ablation_results.py +444 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/artifacts.py +2481 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/code_review_context.py +473 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/contracts.py +1346 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/finalization_hooks.py +607 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/idea_components.py +102 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/manifests.py +192 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/openharness_runner.py +1091 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/openharness_vendor.py +58 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/phase_contracts.py +201 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/phase_runner.py +2574 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/prepare_contracts.py +614 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/project_integrity.py +409 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/report_layout.py +194 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/runtime/self_contained.py +179 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/__init__.py +45 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/benchmark-discovery/SKILL.md +33 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/bounded-tool-use/SKILL.md +31 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/code-enablement/SKILL.md +59 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/code-planning/SKILL.md +55 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/component-coverage/SKILL.md +26 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/environment-setup/SKILL.md +23 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/prepare-planning/SKILL.md +85 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/resource-acquisition/SKILL.md +69 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/science-execution/SKILL.md +46 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/skills/science-planning/SKILL.md +35 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/telemetry/__init__.py +161 -0
- qwen_sci-0.2.0/src/agents/experiment_agent/tools/__init__.py +6 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/__init__.py +268 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/artifacts.py +747 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/cache.py +319 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/completeness.py +130 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/contracts.py +771 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/counterexample_analyzer.py +187 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/design_evidence_paper_screener.py +470 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/discipline_catalog.py +178 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/evidence_cards.py +338 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/evidence_planner.py +452 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/formal_reasoning_planner.py +884 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/fulltext_acquisition.py +863 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/idea_adapter.py +100 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/idea_intake.py +87 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/llm_json.py +328 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/orchestrator.py +1220 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/reasoning_context.py +183 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/reasoning_validation.py +546 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/run.py +481 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/run_logging.py +292 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/scope_gate.py +198 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/study_type_composer.py +1360 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/survey_evidence.py +1381 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/template_router.py +195 -0
- qwen_sci-0.2.0/src/agents/experiment_design_agent/variable_claim_extractor.py +93 -0
- qwen_sci-0.2.0/src/agents/idea_agent/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/__init__.py +6 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/artifacts.py +308 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/base.py +122 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/ligagent.py +488 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/mcts.py +2060 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/__init__.py +48 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/advanced_analysis.py +235 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/algorithm_alignment.py +55 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/algorithm_structuring.py +48 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/component_extraction.py +62 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/component_novelty_evaluation.py +54 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/experiment_findings_extraction.py +39 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/idea_fusion.py +295 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/idea_introduction.py +30 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/idea_result_alignment.py +39 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/input_interpreter.py +52 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/keynote_ops.py +78 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/mcts_evaluation.py +235 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/mcts_generation.py +140 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/mechanism_commit_query.py +99 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/memory_selection.py +0 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/prompt_modes.py +16 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/rag_query.py +34 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/re_analysis_replan.py +48 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/reference_grounding.py +34 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/root_domain_classification.py +32 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/scientific_debate.py +88 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/scientific_materialization.py +45 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/skill_instantiation.py +193 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/theory_transfer_query.py +93 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/prompts/topic_background.py +15 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/DEFAULT_SKILL_TEMPLATES.json +263 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/alternative-path-contrast/SKILL.md +40 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/alternative-path-contrast/references/contrast_patterns.md +22 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/feedback-closed-loop/SKILL.md +40 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/feedback-closed-loop/references/mechanism_cards.md +24 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/hierarchical-decomposition/SKILL.md +39 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/hierarchical-decomposition/references/hierarchy_patterns.md +22 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/mechanism-commit-innovation/SKILL.md +39 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/mechanism-commit-innovation/references/mechanism_commit_patterns.md +24 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/multi-scale-coordinator/SKILL.md +39 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/multi-scale-coordinator/references/coordination_patterns.md +22 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/speculative-execution-with-repair/SKILL.md +41 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/speculative-execution-with-repair/references/speculation_patterns.md +22 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/surgical-modularity/SKILL.md +39 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/surgical-modularity/references/modularity_patterns.md +22 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/theory-transfer-injection/SKILL.md +40 -0
- qwen_sci-0.2.0/src/agents/idea_agent/agent/skills/edit_operator_skills/theory-transfer-injection/references/transfer_patterns.md +24 -0
- qwen_sci-0.2.0/src/agents/idea_agent/example/idea_result.json +900 -0
- qwen_sci-0.2.0/src/agents/idea_agent/run.py +276 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_advanced_analysis_contract.py +90 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_gap_hypothesis_bridge.py +166 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_idea_debate.py +480 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_idea_result_v5.py +99 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_idea_synthesis.py +92 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_mature_idea_sources.py +27 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_multimodal_idea_integration.py +386 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_profile_materialization_and_scoring.py +219 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_profile_native_skill_rendering.py +122 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_result_persistence.py +183 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_scientific_intervention_profiles.py +241 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_scientific_rubric_and_prompts.py +559 -0
- qwen_sci-0.2.0/src/agents/idea_agent/tests/test_strict_json_object_responses.py +48 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/ablation_inputs.py +60 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/chat_errors.py +95 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/chat_router.py +130 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/chat_transport.py +188 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/config_loader.py +166 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/json_utils.py +28 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/logger.py +287 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/progress.py +58 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/response_parsing.py +57 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/core/run_inputs.py +198 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/component_novelty.py +342 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/defect_registry.py +302 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/idea_routes.py +61 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/idea_taste_presets.py +312 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/mcts_helpers.py +738 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/mcts_runtime.py +3000 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/scientific_intervention_ontology.py +1561 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/scientific_rubric.py +211 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/mcts/skill_parsing.py +92 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/papers/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/papers/paper_graph_vector_store.py +499 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/papers/paper_repository.py +372 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/prompting/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/prompting/prompt_views.py +637 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/__init__.py +1 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/advanced_analysis_contract.py +244 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/gap_hypothesis_bridge.py +461 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_contract.py +426 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_debate.py +1238 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_diversity.py +163 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_fusion.py +889 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_helpers.py +478 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_portfolio.py +422 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/idea_synthesis.py +482 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/ligagent_flow.py +581 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/ligagent_handlers.py +1836 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/ligagent_helpers.py +1331 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/ligagent_utils.py +322 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/mature_idea_sources.py +648 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/multimodal_data_anchoring.py +578 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/result_persistence.py +774 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/stage_contract.py +76 -0
- qwen_sci-0.2.0/src/agents/idea_agent/utils/workflow/workflow_runtime.py +288 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/__init__.py +50 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/artifacts.py +270 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/authoring_blueprint.py +1246 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/bibtex_renderer.py +252 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/contract_repair.py +131 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/contracts.py +745 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/cross_section_editor.py +232 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/document_quality.py +987 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/idea_evolution.py +223 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/input_loader.py +76 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/latex_compiler.py +260 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/latex_safety.py +159 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/llm_json.py +74 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/markdown_renderer.py +275 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/pdf_validator.py +149 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/render.py +166 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/render_artifacts.py +187 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/run.py +765 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/run_logging.py +209 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/section_cache.py +184 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/section_composer.py +1764 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/section_router.py +209 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/semantic_validator.py +254 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/source_bundle.py +46 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/source_registry.py +208 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/survey_source_loader.py +137 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/template_adapter.py +173 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/template_profile.py +204 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/tex_renderer.py +496 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/theory_presentation.py +134 -0
- qwen_sci-0.2.0/src/agents/research_plan_author/theory_spine.py +703 -0
- qwen_sci-0.2.0/src/agents/survey_agent/Dockerfile +54 -0
- qwen_sci-0.2.0/src/agents/survey_agent/README.md +350 -0
- qwen_sci-0.2.0/src/agents/survey_agent/config/deep_survey.yaml +217 -0
- qwen_sci-0.2.0/src/agents/survey_agent/config/deep_survey_batch.yaml +176 -0
- qwen_sci-0.2.0/src/agents/survey_agent/config/deep_survey_fast.yaml +183 -0
- qwen_sci-0.2.0/src/agents/survey_agent/config/evaluate_baseline.yaml +197 -0
- qwen_sci-0.2.0/src/agents/survey_agent/config/outcomeRAG.yaml +159 -0
- qwen_sci-0.2.0/src/agents/survey_agent/env_report.md +348 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/__init__.py +0 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/code_collector.py +2194 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/code_report_generator.py +1282 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/data_manager.py +1713 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/database.py +167 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/fulltext_download_cache.py +462 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/fulltext_http.py +134 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/fulltext_resolution.py +749 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/judge.py +434 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/outcome_RAG.py +236 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/paper_graph_retriever.py +1075 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/pe.py +1729 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/pseudo_creator.py +782 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/pseudo_reviser.py +537 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/refine_agent.py +1952 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/survey_generator.py +5691 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/survey_visualizer.py +1817 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/visual_prompts.py +327 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/work_analyzer.py +2750 -0
- qwen_sci-0.2.0/src/agents/survey_agent/modules/work_collector.py +5649 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/baseline_evaluation.py +411 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_deep_survey.py +224 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_deep_survey_adapter.py +407 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_deep_survey_adapter_with_input.py +409 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_deep_survey_batch.py +228 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_deep_survey_batch_arg.py +243 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_deep_survey_batch_settings.py +218 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_keynotes_gen.py +128 -0
- qwen_sci-0.2.0/src/agents/survey_agent/scripts/run_work_clusters.py +140 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/__init__.py +0 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/ablation_utils.py +317 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/api_call.py +2518 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/chat_utils.py +82 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/config_utils.py +70 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/convert_to_md.py +29 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/err_info.py +24 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/file_utils.py +176 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/gpu_utils.py +145 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/graph_visualizer.py +279 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/html_utils.py +181 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/latex_generator_intra_cluster.py +529 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/latex_generator_relation_table.py +193 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/mineru_section_packer.py +334 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/mineru_utils.py +396 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/paper.py +144 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/read_yaml.py +15 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/repo_utils.py +167 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/rich_logger.py +77 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/step2v2.py +874 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/step2v2_extractor.py +856 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/topic_survey_storage.py +309 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/utils.py +118 -0
- qwen_sci-0.2.0/src/agents/survey_agent/utils/work.py +2 -0
- qwen_sci-0.2.0/src/cli.py +1611 -0
- qwen_sci-0.2.0/src/config/__init__.py +213 -0
- qwen_sci-0.2.0/src/config/default.yaml +1122 -0
- qwen_sci-0.2.0/src/harness/LICENSE +21 -0
- qwen_sci-0.2.0/src/harness/VENDORED.md +14 -0
- qwen_sci-0.2.0/src/harness/src/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/__main__.py +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/__init__.py +21 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/client.py +281 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/codex_client.py +407 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/copilot_auth.py +240 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/copilot_client.py +134 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/errors.py +19 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/openai_client.py +577 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/provider.py +186 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/registry.py +437 -0
- qwen_sci-0.2.0/src/harness/src/openharness/api/usage.py +17 -0
- qwen_sci-0.2.0/src/harness/src/openharness/auth/__init__.py +29 -0
- qwen_sci-0.2.0/src/harness/src/openharness/auth/external.py +610 -0
- qwen_sci-0.2.0/src/harness/src/openharness/auth/flows.py +189 -0
- qwen_sci-0.2.0/src/harness/src/openharness/auth/manager.py +482 -0
- qwen_sci-0.2.0/src/harness/src/openharness/auth/storage.py +269 -0
- qwen_sci-0.2.0/src/harness/src/openharness/autopilot/__init__.py +23 -0
- qwen_sci-0.2.0/src/harness/src/openharness/autopilot/service.py +2239 -0
- qwen_sci-0.2.0/src/harness/src/openharness/autopilot/types.py +91 -0
- qwen_sci-0.2.0/src/harness/src/openharness/bridge/__init__.py +20 -0
- qwen_sci-0.2.0/src/harness/src/openharness/bridge/manager.py +106 -0
- qwen_sci-0.2.0/src/harness/src/openharness/bridge/session_runner.py +46 -0
- qwen_sci-0.2.0/src/harness/src/openharness/bridge/types.py +37 -0
- qwen_sci-0.2.0/src/harness/src/openharness/bridge/work_secret.py +41 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/UPSTREAM +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/__init__.py +22 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/adapter.py +131 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/bus/__init__.py +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/bus/events.py +38 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/bus/queue.py +44 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/__init__.py +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/base.py +141 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/dingtalk.py +445 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/discord.py +311 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/email.py +410 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/feishu.py +1342 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/manager.py +257 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/matrix.py +700 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/mochat.py +897 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/qq.py +141 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/slack.py +284 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/telegram.py +525 -0
- qwen_sci-0.2.0/src/harness/src/openharness/channels/impl/whatsapp.py +159 -0
- qwen_sci-0.2.0/src/harness/src/openharness/cli.py +2551 -0
- qwen_sci-0.2.0/src/harness/src/openharness/commands/__init__.py +21 -0
- qwen_sci-0.2.0/src/harness/src/openharness/commands/registry.py +2783 -0
- qwen_sci-0.2.0/src/harness/src/openharness/config/__init__.py +34 -0
- qwen_sci-0.2.0/src/harness/src/openharness/config/paths.py +160 -0
- qwen_sci-0.2.0/src/harness/src/openharness/config/schema.py +119 -0
- qwen_sci-0.2.0/src/harness/src/openharness/config/settings.py +1104 -0
- qwen_sci-0.2.0/src/harness/src/openharness/coordinator/__init__.py +12 -0
- qwen_sci-0.2.0/src/harness/src/openharness/coordinator/agent_definitions.py +975 -0
- qwen_sci-0.2.0/src/harness/src/openharness/coordinator/coordinator_mode.py +520 -0
- qwen_sci-0.2.0/src/harness/src/openharness/engine/__init__.py +80 -0
- qwen_sci-0.2.0/src/harness/src/openharness/engine/cost_tracker.py +24 -0
- qwen_sci-0.2.0/src/harness/src/openharness/engine/messages.py +222 -0
- qwen_sci-0.2.0/src/harness/src/openharness/engine/query.py +1188 -0
- qwen_sci-0.2.0/src/harness/src/openharness/engine/query_engine.py +313 -0
- qwen_sci-0.2.0/src/harness/src/openharness/engine/stream_events.py +90 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/__init__.py +50 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/events.py +20 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/executor.py +242 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/hot_reload.py +31 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/loader.py +68 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/schemas.py +66 -0
- qwen_sci-0.2.0/src/harness/src/openharness/hooks/types.py +38 -0
- qwen_sci-0.2.0/src/harness/src/openharness/keybindings/__init__.py +14 -0
- qwen_sci-0.2.0/src/harness/src/openharness/keybindings/default_bindings.py +11 -0
- qwen_sci-0.2.0/src/harness/src/openharness/keybindings/loader.py +22 -0
- qwen_sci-0.2.0/src/harness/src/openharness/keybindings/parser.py +18 -0
- qwen_sci-0.2.0/src/harness/src/openharness/keybindings/resolver.py +13 -0
- qwen_sci-0.2.0/src/harness/src/openharness/mcp/__init__.py +79 -0
- qwen_sci-0.2.0/src/harness/src/openharness/mcp/client.py +298 -0
- qwen_sci-0.2.0/src/harness/src/openharness/mcp/config.py +16 -0
- qwen_sci-0.2.0/src/harness/src/openharness/mcp/types.py +76 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/__init__.py +25 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/agent.py +91 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/manager.py +183 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/memdir.py +52 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/migrate.py +137 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/paths.py +22 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/relevance.py +145 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/scan.py +116 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/schema.py +443 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/search.py +71 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/team.py +90 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/types.py +33 -0
- qwen_sci-0.2.0/src/harness/src/openharness/memory/usage.py +153 -0
- qwen_sci-0.2.0/src/harness/src/openharness/output_styles/__init__.py +5 -0
- qwen_sci-0.2.0/src/harness/src/openharness/output_styles/loader.py +42 -0
- qwen_sci-0.2.0/src/harness/src/openharness/permissions/__init__.py +26 -0
- qwen_sci-0.2.0/src/harness/src/openharness/permissions/checker.py +200 -0
- qwen_sci-0.2.0/src/harness/src/openharness/permissions/modes.py +13 -0
- qwen_sci-0.2.0/src/harness/src/openharness/personalization/__init__.py +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/personalization/extractor.py +138 -0
- qwen_sci-0.2.0/src/harness/src/openharness/personalization/rules.py +64 -0
- qwen_sci-0.2.0/src/harness/src/openharness/personalization/session_hook.py +65 -0
- qwen_sci-0.2.0/src/harness/src/openharness/platforms.py +86 -0
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/__init__.py +53 -0
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/bundled/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/installer.py +39 -0
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/loader.py +730 -0
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/schemas.py +24 -0
- qwen_sci-0.2.0/src/harness/src/openharness/plugins/types.py +59 -0
- qwen_sci-0.2.0/src/harness/src/openharness/prompts/__init__.py +14 -0
- qwen_sci-0.2.0/src/harness/src/openharness/prompts/claudemd.py +48 -0
- qwen_sci-0.2.0/src/harness/src/openharness/prompts/context.py +187 -0
- qwen_sci-0.2.0/src/harness/src/openharness/prompts/environment.py +135 -0
- qwen_sci-0.2.0/src/harness/src/openharness/prompts/system_prompt.py +109 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/Dockerfile +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/__init__.py +33 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/adapter.py +148 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/docker_backend.py +232 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/docker_image.py +103 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/path_validator.py +37 -0
- qwen_sci-0.2.0/src/harness/src/openharness/sandbox/session.py +63 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/__init__.py +30 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/autodream/__init__.py +34 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/autodream/backup.py +104 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/autodream/lock.py +138 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/autodream/prompt.py +128 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/autodream/service.py +313 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/compact/__init__.py +1725 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/cron.py +137 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/cron_scheduler.py +595 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/lsp/__init__.py +216 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/memory_extract/__init__.py +261 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/oauth/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/session_backend.py +97 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/session_memory/__init__.py +139 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/session_storage.py +230 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/token_estimation.py +15 -0
- qwen_sci-0.2.0/src/harness/src/openharness/services/tool_outputs.py +55 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/__init__.py +44 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/_frontmatter.py +97 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/__init__.py +75 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/commit.md +25 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/debug.md +25 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/diagnose.md +35 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/plan.md +39 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/review.md +33 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/simplify.md +26 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/skill-creator.md +175 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/bundled/content/test.md +38 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/loader.py +229 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/registry.py +29 -0
- qwen_sci-0.2.0/src/harness/src/openharness/skills/types.py +24 -0
- qwen_sci-0.2.0/src/harness/src/openharness/state/__init__.py +6 -0
- qwen_sci-0.2.0/src/harness/src/openharness/state/app_state.py +30 -0
- qwen_sci-0.2.0/src/harness/src/openharness/state/store.py +40 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/__init__.py +70 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/in_process.py +693 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/lockfile.py +24 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/mailbox.py +522 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/permission_sync.py +1168 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/registry.py +410 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/spawn_utils.py +229 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/subprocess_backend.py +171 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/team_lifecycle.py +910 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/types.py +398 -0
- qwen_sci-0.2.0/src/harness/src/openharness/swarm/worktree.py +315 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tasks/__init__.py +18 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tasks/local_agent_task.py +28 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tasks/local_shell_task.py +17 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tasks/manager.py +475 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tasks/stop_task.py +11 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tasks/types.py +32 -0
- qwen_sci-0.2.0/src/harness/src/openharness/themes/__init__.py +21 -0
- qwen_sci-0.2.0/src/harness/src/openharness/themes/builtin.py +89 -0
- qwen_sci-0.2.0/src/harness/src/openharness/themes/loader.py +55 -0
- qwen_sci-0.2.0/src/harness/src/openharness/themes/schema.py +54 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/__init__.py +107 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/agent_tool.py +141 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/ask_user_question_tool.py +46 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/base.py +80 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/bash_tool.py +259 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/brief_tool.py +33 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/config_tool.py +54 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/cron_create_tool.py +105 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/cron_delete_tool.py +32 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/cron_list_tool.py +69 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/cron_toggle_tool.py +37 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/enter_plan_mode_tool.py +28 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/enter_worktree_tool.py +80 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/exit_plan_mode_tool.py +28 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/exit_worktree_tool.py +42 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/file_edit_tool.py +95 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/file_read_tool.py +72 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/file_write_tool.py +87 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/glob_tool.py +175 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/grep_tool.py +374 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/image_generation_tool.py +447 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/image_to_text_tool.py +237 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/list_mcp_resources_tool.py +36 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/lsp_tool.py +154 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/mcp_auth_tool.py +71 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/mcp_tool.py +72 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/notebook_edit_tool.py +97 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/read_mcp_resource_tool.py +38 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/remote_trigger_tool.py +74 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/send_message_tool.py +58 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/skill_tool.py +43 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/sleep_tool.py +32 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/task_create_tool.py +56 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/task_get_tool.py +33 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/task_list_tool.py +35 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/task_output_tool.py +35 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/task_stop_tool.py +30 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/task_update_tool.py +50 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/team_create_tool.py +31 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/team_delete_tool.py +30 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/todo_write_tool.py +46 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/tool_search_tool.py +38 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/web_fetch_tool.py +117 -0
- qwen_sci-0.2.0/src/harness/src/openharness/tools/web_search_tool.py +119 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/__init__.py +5 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/app.py +320 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/backend_host.py +941 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/coordinator_drain.py +198 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/input.py +32 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/output.py +265 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/permission_dialog.py +14 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/protocol.py +247 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/react_launcher.py +179 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/runtime.py +799 -0
- qwen_sci-0.2.0/src/harness/src/openharness/ui/textual_app.py +495 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/__init__.py +0 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/file_lock.py +86 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/fs.py +98 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/helpers.py +77 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/network_guard.py +340 -0
- qwen_sci-0.2.0/src/harness/src/openharness/utils/shell.py +147 -0
- qwen_sci-0.2.0/src/harness/src/openharness/vim/__init__.py +5 -0
- qwen_sci-0.2.0/src/harness/src/openharness/vim/transitions.py +8 -0
- qwen_sci-0.2.0/src/harness/src/openharness/voice/__init__.py +7 -0
- qwen_sci-0.2.0/src/harness/src/openharness/voice/keyterms.py +10 -0
- qwen_sci-0.2.0/src/harness/src/openharness/voice/stream_stt.py +8 -0
- qwen_sci-0.2.0/src/harness/src/openharness/voice/voice_mode.py +44 -0
- qwen_sci-0.2.0/src/llm/__init__.py +29 -0
- qwen_sci-0.2.0/src/llm/image_generation.py +402 -0
- qwen_sci-0.2.0/src/llm/provider_registry.py +419 -0
- qwen_sci-0.2.0/src/llm/runtime_env.py +64 -0
- qwen_sci-0.2.0/src/llm/structured_output.py +131 -0
- qwen_sci-0.2.0/src/llm/vision.py +198 -0
- qwen_sci-0.2.0/src/memory/__init__.py +2 -0
- qwen_sci-0.2.0/src/memory/api/__init__.py +1 -0
- qwen_sci-0.2.0/src/memory/api/base_memory_system_api.py +98 -0
- qwen_sci-0.2.0/src/memory/api/base_symbolic_memory_system_api.py +190 -0
- qwen_sci-0.2.0/src/memory/api/base_vector_memory_system_api.py +116 -0
- qwen_sci-0.2.0/src/memory/api/faiss_memory_system_api.py +228 -0
- qwen_sci-0.2.0/src/memory/api/slot_process_api.py +827 -0
- qwen_sci-0.2.0/src/memory/api/symbolic_memory_system_api.py +572 -0
- qwen_sci-0.2.0/src/memory/memory_system/__init__.py +48 -0
- qwen_sci-0.2.0/src/memory/memory_system/component_taxonomy.py +430 -0
- qwen_sci-0.2.0/src/memory/memory_system/llm.py +437 -0
- qwen_sci-0.2.0/src/memory/memory_system/models.py +168 -0
- qwen_sci-0.2.0/src/memory/memory_system/user_prompt.py +418 -0
- qwen_sci-0.2.0/src/memory/memory_system/utils.py +282 -0
- qwen_sci-0.2.0/src/memory/memory_system/vectorstore.py +311 -0
- qwen_sci-0.2.0/src/memory/memory_system/working_slot.py +99 -0
- qwen_sci-0.2.0/src/pipeline/__init__.py +129 -0
- qwen_sci-0.2.0/src/pipeline/contracts.py +531 -0
- qwen_sci-0.2.0/src/pipeline/discipline_taxonomy.py +916 -0
- qwen_sci-0.2.0/src/pipeline/evidence_coverage_ledger.py +1150 -0
- qwen_sci-0.2.0/src/pipeline/evidence_refinement.py +620 -0
- qwen_sci-0.2.0/src/pipeline/experiment_to_symbolic.py +137 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/__init__.py +28 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/capabilities.py +107 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/claims.py +135 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/contract.py +291 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/data_sh_compiler.py +505 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/handoff_binding.py +135 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/manifest.py +254 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/native_analysis.py +479 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/perception.py +277 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/query_binding.py +65 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/rendering.py +120 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/safety.py +42 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/sampling.py +69 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/service.py +148 -0
- qwen_sci-0.2.0/src/pipeline/multimodal_evidence/survey_integration.py +460 -0
- qwen_sci-0.2.0/src/pipeline/paper_identity.py +52 -0
- qwen_sci-0.2.0/src/pipeline/research_design_inventory.py +338 -0
- qwen_sci-0.2.0/src/pipeline/research_domain_resolution.py +669 -0
- qwen_sci-0.2.0/src/pipeline/research_identity.py +548 -0
- qwen_sci-0.2.0/src/pipeline/research_question_contract.py +646 -0
- qwen_sci-0.2.0/src/pipeline/retrieval_lanes.py +889 -0
- qwen_sci-0.2.0/src/pipeline/run_loop.py +862 -0
- qwen_sci-0.2.0/src/pipeline/science_events.py +30 -0
- qwen_sci-0.2.0/src/pipeline/science_manifests.py +602 -0
- qwen_sci-0.2.0/src/pipeline/science_run.py +918 -0
- qwen_sci-0.2.0/src/pipeline/science_stages.py +709 -0
- qwen_sci-0.2.0/src/pipeline/science_workflow.py +807 -0
- qwen_sci-0.2.0/src/pipeline/sh_cluster_projection.py +306 -0
- qwen_sci-0.2.0/src/pipeline/sh_graph_provenance.py +648 -0
- qwen_sci-0.2.0/src/pipeline/subhypothesis_decomposition.py +392 -0
- qwen_sci-0.2.0/src/pipeline/subhypothesis_evidence.py +856 -0
- qwen_sci-0.2.0/src/pipeline/survey_evidence_plan.py +858 -0
- qwen_sci-0.2.0/src/pipeline/survey_gap_adjudication.py +647 -0
- qwen_sci-0.2.0/src/pipeline/survey_gap_candidates.py +840 -0
- qwen_sci-0.2.0/src/pipeline/survey_gap_ledger.py +683 -0
- qwen_sci-0.2.0/src/pipeline/survey_gap_triage.py +401 -0
- qwen_sci-0.2.0/src/pipeline/survey_handoff_persistence.py +481 -0
- qwen_sci-0.2.0/src/pipeline/survey_handoff_projection.py +457 -0
- qwen_sci-0.2.0/src/pipeline/survey_idea_handoff.py +1112 -0
- qwen_sci-0.2.0/src/pipeline/survey_idea_loader.py +289 -0
- qwen_sci-0.2.0/src/research_run_ids.py +11 -0
qwen_sci-0.2.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 OpenDFM
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
qwen_sci-0.2.0/PKG-INFO
ADDED
|
@@ -0,0 +1,492 @@
|
|
|
1
|
+
Metadata-Version: 2.5
|
|
2
|
+
Name: qwen-sci
|
|
3
|
+
Version: 0.2.0
|
|
4
|
+
Summary: Qwen-Sci multi-agent research workflow
|
|
5
|
+
License-File: LICENSE
|
|
6
|
+
Requires-Python: <3.13,>=3.12
|
|
7
|
+
Requires-Dist: absl-py==2.3.1
|
|
8
|
+
Requires-Dist: aiofiles==24.1.0
|
|
9
|
+
Requires-Dist: aiohappyeyeballs==2.6.1
|
|
10
|
+
Requires-Dist: aiohttp==3.13.4
|
|
11
|
+
Requires-Dist: aiosignal==1.4.0
|
|
12
|
+
Requires-Dist: annotated-types==0.7.0
|
|
13
|
+
Requires-Dist: anthropic==0.86.0
|
|
14
|
+
Requires-Dist: antlr4-python3-runtime==4.9.3
|
|
15
|
+
Requires-Dist: anyio==4.12.0
|
|
16
|
+
Requires-Dist: attrs==25.4.0
|
|
17
|
+
Requires-Dist: beautifulsoup4==4.14.3
|
|
18
|
+
Requires-Dist: boto3==1.42.19
|
|
19
|
+
Requires-Dist: botocore==1.42.19
|
|
20
|
+
Requires-Dist: certifi==2025.11.12
|
|
21
|
+
Requires-Dist: cffi==2.0.0
|
|
22
|
+
Requires-Dist: charset-normalizer==3.4.4
|
|
23
|
+
Requires-Dist: click==8.3.1
|
|
24
|
+
Requires-Dist: colorama==0.4.6
|
|
25
|
+
Requires-Dist: colorlog==6.10.1
|
|
26
|
+
Requires-Dist: croniter>=2.0.0
|
|
27
|
+
Requires-Dist: cryptography==46.0.3
|
|
28
|
+
Requires-Dist: dill==0.4.0
|
|
29
|
+
Requires-Dist: diskcache==5.6.3
|
|
30
|
+
Requires-Dist: distro==1.9.0
|
|
31
|
+
Requires-Dist: fastmcp==3.2.0
|
|
32
|
+
Requires-Dist: filelock==3.20.1
|
|
33
|
+
Requires-Dist: frozenlist==1.8.0
|
|
34
|
+
Requires-Dist: ftfy==6.3.1
|
|
35
|
+
Requires-Dist: google-genai==1.69.0
|
|
36
|
+
Requires-Dist: griffe==1.15.0
|
|
37
|
+
Requires-Dist: grpcio==1.76.0
|
|
38
|
+
Requires-Dist: h11==0.16.0
|
|
39
|
+
Requires-Dist: html2text
|
|
40
|
+
Requires-Dist: httpcore==1.0.9
|
|
41
|
+
Requires-Dist: httpx-retries==0.4.5
|
|
42
|
+
Requires-Dist: httpx-sse==0.4.3
|
|
43
|
+
Requires-Dist: httpx==0.28.1
|
|
44
|
+
Requires-Dist: hydra-core==1.3.2
|
|
45
|
+
Requires-Dist: idna==3.11
|
|
46
|
+
Requires-Dist: ijson==3.4.0.post0
|
|
47
|
+
Requires-Dist: importlib-resources==6.5.2
|
|
48
|
+
Requires-Dist: inscriptis==2.7.0
|
|
49
|
+
Requires-Dist: jinja2==3.1.6
|
|
50
|
+
Requires-Dist: jiter==0.12.0
|
|
51
|
+
Requires-Dist: jmespath==1.0.1
|
|
52
|
+
Requires-Dist: json-repair==0.54.3
|
|
53
|
+
Requires-Dist: jsonschema-specifications==2025.9.1
|
|
54
|
+
Requires-Dist: jsonschema==4.25.1
|
|
55
|
+
Requires-Dist: loguru==0.7.3
|
|
56
|
+
Requires-Dist: lxml==5.4.0
|
|
57
|
+
Requires-Dist: markdown-it-py==4.0.0
|
|
58
|
+
Requires-Dist: markdown==3.10
|
|
59
|
+
Requires-Dist: markupsafe==3.0.3
|
|
60
|
+
Requires-Dist: mcp==1.25.0
|
|
61
|
+
Requires-Dist: mdurl==0.1.2
|
|
62
|
+
Requires-Dist: multidict==6.7.0
|
|
63
|
+
Requires-Dist: networkx==3.4.2
|
|
64
|
+
Requires-Dist: numpy==2.3.5
|
|
65
|
+
Requires-Dist: omegaconf==2.3.0
|
|
66
|
+
Requires-Dist: openai-agents==0.6.8
|
|
67
|
+
Requires-Dist: openai==2.14.0
|
|
68
|
+
Requires-Dist: openhands-agent-server==1.16.0
|
|
69
|
+
Requires-Dist: openhands-sdk==1.13.1
|
|
70
|
+
Requires-Dist: openhands-tools==1.13.1
|
|
71
|
+
Requires-Dist: openhands-workspace==1.11.1
|
|
72
|
+
Requires-Dist: opentelemetry-api==1.44.0
|
|
73
|
+
Requires-Dist: opentelemetry-exporter-otlp==1.44.0
|
|
74
|
+
Requires-Dist: opentelemetry-instrumentation-threading==0.65b0
|
|
75
|
+
Requires-Dist: opentelemetry-instrumentation==0.65b0
|
|
76
|
+
Requires-Dist: opentelemetry-sdk==1.44.0
|
|
77
|
+
Requires-Dist: opentelemetry-semantic-conventions==0.65b0
|
|
78
|
+
Requires-Dist: packaging==26.3
|
|
79
|
+
Requires-Dist: protobuf==7.36.0
|
|
80
|
+
Requires-Dist: psutil==7.2.1
|
|
81
|
+
Requires-Dist: pyalex==0.21
|
|
82
|
+
Requires-Dist: pydantic-settings==2.12.0
|
|
83
|
+
Requires-Dist: pydantic==2.12.5
|
|
84
|
+
Requires-Dist: pygments==2.19.2
|
|
85
|
+
Requires-Dist: python-dateutil==2.9.0.post0
|
|
86
|
+
Requires-Dist: python-dotenv==1.2.1
|
|
87
|
+
Requires-Dist: python-multipart==0.0.21
|
|
88
|
+
Requires-Dist: pyyaml==6.0.2
|
|
89
|
+
Requires-Dist: readability-lxml
|
|
90
|
+
Requires-Dist: referencing==0.37.0
|
|
91
|
+
Requires-Dist: regex==2025.11.3
|
|
92
|
+
Requires-Dist: requests==2.32.5
|
|
93
|
+
Requires-Dist: rich==14.3.3
|
|
94
|
+
Requires-Dist: rpds-py==0.30.0
|
|
95
|
+
Requires-Dist: ruamel-yaml==0.19.1
|
|
96
|
+
Requires-Dist: s3transfer==0.16.0
|
|
97
|
+
Requires-Dist: six==1.17.0
|
|
98
|
+
Requires-Dist: sniffio==1.3.1
|
|
99
|
+
Requires-Dist: soupsieve==2.8.1
|
|
100
|
+
Requires-Dist: sse-starlette==3.1.2
|
|
101
|
+
Requires-Dist: starlette==0.51.0
|
|
102
|
+
Requires-Dist: tenacity==9.1.2
|
|
103
|
+
Requires-Dist: tiktoken==0.12.0
|
|
104
|
+
Requires-Dist: tqdm==4.67.1
|
|
105
|
+
Requires-Dist: trafilatura
|
|
106
|
+
Requires-Dist: typing-extensions==4.15.0
|
|
107
|
+
Requires-Dist: urllib3==2.6.2
|
|
108
|
+
Requires-Dist: uvicorn==0.40.0
|
|
109
|
+
Requires-Dist: xxhash==3.6.0
|
|
110
|
+
Requires-Dist: yarl==1.22.0
|
|
111
|
+
Description-Content-Type: text/markdown
|
|
112
|
+
|
|
113
|
+
# Qwen-Sci
|
|
114
|
+
|
|
115
|
+
**Qwen-Sci** is a multi-agent research workflow that turns a research topic into literature evidence, a structured research idea, a validated experimental design, and an English research plan. It provides one public command-line interface, `qwensci`, backed by Qwen or OpenAI-compatible language-model endpoints.
|
|
116
|
+
|
|
117
|
+
> **Release status — 0.2.0.** This repository contains the workflow code and configuration. API credentials, downloaded embedding models, graph/vector indexes, PDFs, experiment outputs, and runtime workspaces are intentionally local-only and are not included in Git.
|
|
118
|
+
|
|
119
|
+
[English](README.md) · [简体中文](README_CN.md) · [GitHub repository](https://github.com/Sodium-oxide/qwen_sci)
|
|
120
|
+
|
|
121
|
+
## What Qwen-Sci does
|
|
122
|
+
|
|
123
|
+
| Component | Purpose | Public command |
|
|
124
|
+
| --- | --- | --- |
|
|
125
|
+
| Survey Agent | Retrieves and analyses literature, groups evidence, and writes survey artifacts. | `qwensci survey` |
|
|
126
|
+
| Idea Agent (LigAgent) | Turns a topic, prior evidence, or a seed idea into a structured research proposal. | `qwensci idea` |
|
|
127
|
+
| ExperimentDesign Agent | Builds and validates a design-only experimental plan from an Idea result and evidence; it never executes experiments. | `qwensci exp_design` |
|
|
128
|
+
| Research Plan Author | Composes an English research-plan package from verified Survey and ExperimentDesign artifacts, optionally rendering a copied LaTeX template. | `qwensci author` |
|
|
129
|
+
| Science workflow | Creates or resumes the auditable Survey → Idea → ExperimentDesign → Author workflow. | `qwensci science` |
|
|
130
|
+
|
|
131
|
+
The `science` workflow is useful for an end-to-end design-only run. During development and debugging, running one agent at a time is usually clearer and gives each stage an explicit input and output.
|
|
132
|
+
|
|
133
|
+
## Requirements and supported environment
|
|
134
|
+
|
|
135
|
+
- Python **3.12** (`>=3.12,<3.13`)
|
|
136
|
+
- [`uv`](https://docs.astral.sh/uv/)
|
|
137
|
+
- A Qwen/DashScope account **or** an OpenAI-compatible endpoint
|
|
138
|
+
- Linux x86_64 or WSL2. The locked `uv` environment is currently targeted at Linux x86_64; Windows users should use WSL rather than a native Windows virtual environment.
|
|
139
|
+
|
|
140
|
+
Some workflows also require optional local assets and dependency groups:
|
|
141
|
+
|
|
142
|
+
| Capability | Install / provision |
|
|
143
|
+
| --- | --- |
|
|
144
|
+
| Core CLI and API-driven flows | `uv sync` |
|
|
145
|
+
| Memory and vector retrieval | `uv sync --group memory --group ml` |
|
|
146
|
+
| PDF parsing and survey full-text processing | `uv sync --group pdf` |
|
|
147
|
+
| Explicit image, video, signal, table, audio, 3D, or trajectory input | `uv sync --group multimodal` |
|
|
148
|
+
| Optional OCR, figure, and text-removal stack | `uv sync --group pdf --group blog` |
|
|
149
|
+
| Full local setup | `uv sync --all-groups` |
|
|
150
|
+
|
|
151
|
+
For the first complete setup, use `uv sync --all-groups`. It avoids the common `ModuleNotFoundError: pypdfium2` failure when a survey path needs PDF parsing.
|
|
152
|
+
|
|
153
|
+
## Install and configure
|
|
154
|
+
|
|
155
|
+
### 1. Clone and install
|
|
156
|
+
|
|
157
|
+
```bash
|
|
158
|
+
git clone https://github.com/Sodium-oxide/qwen_sci.git
|
|
159
|
+
cd qwen_sci
|
|
160
|
+
uv sync --all-groups
|
|
161
|
+
```
|
|
162
|
+
|
|
163
|
+
The PDF group is pinned to **MinerU 3.4.5** and includes its Linux vLLM
|
|
164
|
+
backend. Do not update it in an existing project environment with a separate
|
|
165
|
+
`pip install -U 'mineru[all]'`: that command does not re-resolve Qwen-Sci's
|
|
166
|
+
installed metadata and can leave incompatible package versions behind. After
|
|
167
|
+
changing dependency declarations, resolve and install the project as one set:
|
|
168
|
+
|
|
169
|
+
```bash
|
|
170
|
+
uv lock
|
|
171
|
+
uv sync --all-groups
|
|
172
|
+
uv pip check
|
|
173
|
+
```
|
|
174
|
+
|
|
175
|
+
`uv sync` deliberately does not install the `pip` package in a project
|
|
176
|
+
environment. Use `uv pip check` above for validation; it works without a
|
|
177
|
+
`pip` module. For a legacy virtual environment that is intentionally managed
|
|
178
|
+
with pip, pass the project and requirements file to the same resolver
|
|
179
|
+
invocation, then use pip's own check command:
|
|
180
|
+
|
|
181
|
+
```bash
|
|
182
|
+
python -m pip install --upgrade -e . -r requirements.txt
|
|
183
|
+
python -m pip check
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
`uv run` is the recommended way to run commands because it selects the project environment without manually activating it.
|
|
187
|
+
|
|
188
|
+
If you prefer activation, use the command appropriate for your shell:
|
|
189
|
+
|
|
190
|
+
```bash
|
|
191
|
+
# bash / zsh / WSL
|
|
192
|
+
source .venv/bin/activate
|
|
193
|
+
```
|
|
194
|
+
|
|
195
|
+
```powershell
|
|
196
|
+
# PowerShell (native Windows is not the supported dependency target)
|
|
197
|
+
.\.venv\Scripts\Activate.ps1
|
|
198
|
+
```
|
|
199
|
+
|
|
200
|
+
### 2. Create a private environment file
|
|
201
|
+
|
|
202
|
+
```bash
|
|
203
|
+
cp .env.example .env
|
|
204
|
+
```
|
|
205
|
+
|
|
206
|
+
In PowerShell, use:
|
|
207
|
+
|
|
208
|
+
```powershell
|
|
209
|
+
Copy-Item .env.example .env
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
`.env` is ignored by Git. Keep keys only in this file or in your deployment secret manager; never put a real credential in YAML, Python source, an issue, or a commit.
|
|
213
|
+
|
|
214
|
+
### 3. Configure a provider
|
|
215
|
+
|
|
216
|
+
Select the unified model provider with `QWENSCI_LLM_PROVIDER`. The public package and command are **Qwen-Sci** and `qwensci`.
|
|
217
|
+
|
|
218
|
+
For Qwen/DashScope, set the following in `.env`:
|
|
219
|
+
|
|
220
|
+
```dotenv
|
|
221
|
+
QWENSCI_LLM_PROVIDER=qwen
|
|
222
|
+
DASHSCOPE_API_KEY=replace-with-your-key
|
|
223
|
+
# Leave this default unless your DashScope-compatible gateway says otherwise.
|
|
224
|
+
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
|
|
225
|
+
|
|
226
|
+
# Required by the current `qwensci doctor` check and used by literature retrieval.
|
|
227
|
+
SEMANTIC_SCHOLAR_API_KEY=replace-with-your-key
|
|
228
|
+
```
|
|
229
|
+
|
|
230
|
+
For an OpenAI-compatible endpoint, use instead:
|
|
231
|
+
|
|
232
|
+
```dotenv
|
|
233
|
+
QWENSCI_LLM_PROVIDER=openai
|
|
234
|
+
OPENAI_API_KEY=replace-with-your-key
|
|
235
|
+
OPENAI_BASE_URL=https://api.openai.com/v1
|
|
236
|
+
SEMANTIC_SCHOLAR_API_KEY=replace-with-your-key
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Use `OPENAI_BASE_URL` for new configurations. `OPENAI_API_BASE` is an older compatibility alias; do not set conflicting values for both.
|
|
240
|
+
|
|
241
|
+
### 4. Inspect the local setup
|
|
242
|
+
|
|
243
|
+
```bash
|
|
244
|
+
uv run qwensci doctor
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
`doctor` is deliberately strict. It reports the active provider and role models, required credentials, and the optional local retrieval assets listed below. It exits non-zero until *all* of those checks pass, so a `FAIL` line for a graph database or a local embedding model means that full local retrieval is not ready—not that every API-only command is necessarily unusable.
|
|
248
|
+
|
|
249
|
+
## Quick start
|
|
250
|
+
|
|
251
|
+
After configuring `.env`, start with a survey. The topic is the research question; provide supporting context separately with `--research-brief`:
|
|
252
|
+
|
|
253
|
+
```bash
|
|
254
|
+
uv run qwensci survey \
|
|
255
|
+
--topic "Why do black holes exist?" \
|
|
256
|
+
--declared-domain "astrophysics" \
|
|
257
|
+
--research-brief "Nobel laureate Sir Roger Penrose proved Einstein’s prediction of the existence of black holes, which form when supermassive stars burn out and collapse in on themselves."
|
|
258
|
+
```
|
|
259
|
+
|
|
260
|
+
Then create an idea from the same question and context:
|
|
261
|
+
|
|
262
|
+
```bash
|
|
263
|
+
uv run qwensci idea \
|
|
264
|
+
--topic "Why do black holes exist?" \
|
|
265
|
+
--input "Nobel laureate Sir Roger Penrose proved Einstein’s prediction of the existence of black holes, which form when supermassive stars burn out and collapse in on themselves."
|
|
266
|
+
```
|
|
267
|
+
|
|
268
|
+
The default configuration is [`src/config/default.yaml`](src/config/default.yaml). A command-line `--topic` overrides the relevant topic for that run without editing the file. Use `--config /path/to/config.yaml` to run a separate configuration.
|
|
269
|
+
|
|
270
|
+
## Command reference
|
|
271
|
+
|
|
272
|
+
All commands below can be called as `uv run qwensci …`, or as `qwensci …` after activation/install. The agent commands and `doctor` accept `--config`; run `uv run qwensci <command> --help` for the complete option list.
|
|
273
|
+
|
|
274
|
+
### Environment diagnostics
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
uv run qwensci doctor
|
|
278
|
+
uv run qwensci-doctor
|
|
279
|
+
```
|
|
280
|
+
|
|
281
|
+
Use this before a full retrieval, ExperimentDesign, Author, or `science` run. It prints paths and setting names but never prints secret values.
|
|
282
|
+
|
|
283
|
+
### Survey
|
|
284
|
+
|
|
285
|
+
```bash
|
|
286
|
+
uv run qwensci survey \
|
|
287
|
+
--topic "Why do black holes exist?" \
|
|
288
|
+
--declared-domain "astrophysics" \
|
|
289
|
+
--research-brief "Nobel laureate Sir Roger Penrose proved Einstein’s prediction of the existence of black holes, which form when supermassive stars burn out and collapse in on themselves."
|
|
290
|
+
```
|
|
291
|
+
|
|
292
|
+
Useful survey options:
|
|
293
|
+
|
|
294
|
+
```bash
|
|
295
|
+
uv run qwensci survey \
|
|
296
|
+
--topic "Why do black holes exist?" \
|
|
297
|
+
--declared-domain "astrophysics" \
|
|
298
|
+
--research-objective "Explain the theoretical and astrophysical basis for black-hole formation." \
|
|
299
|
+
--research-brief "Nobel laureate Sir Roger Penrose proved Einstein’s prediction of the existence of black holes, which form when supermassive stars burn out and collapse in on themselves." \
|
|
300
|
+
--base-dir /path/to/survey-workspace \
|
|
301
|
+
--save-path /path/to/survey.md \
|
|
302
|
+
--save-json-path /path/to/survey.json
|
|
303
|
+
```
|
|
304
|
+
|
|
305
|
+
Without output overrides, survey artifacts are written below `src/agents/survey_agent/outputs/` according to the active configuration.
|
|
306
|
+
|
|
307
|
+
#### Explicit multimodal input
|
|
308
|
+
|
|
309
|
+
Multimodal input is disabled by default. Text-only Survey and Idea users do not need the multimodal group: Survey does not scan directories or read media unless you explicitly provide either repeatable `--multimodal-file` paths or one manifest. Before using explicit media input, install its bounded local readers:
|
|
310
|
+
|
|
311
|
+
```bash
|
|
312
|
+
uv sync --group multimodal
|
|
313
|
+
```
|
|
314
|
+
|
|
315
|
+
Use local-only analysis when the input must remain on your machine:
|
|
316
|
+
|
|
317
|
+
```bash
|
|
318
|
+
uv run qwensci survey \
|
|
319
|
+
--topic "Microstructure mechanisms under humidity cycling" \
|
|
320
|
+
--multimodal-file /data/micrograph-01.png \
|
|
321
|
+
--multimodal-file /data/micrograph-02.png
|
|
322
|
+
```
|
|
323
|
+
|
|
324
|
+
Use `multimodal_input_manifest_v1` when the modality is ambiguous or records need grouping metadata. Each `file` is relative to the manifest directory; absolute paths, `..` traversal, and symlinks outside that directory are rejected.
|
|
325
|
+
|
|
326
|
+
```json
|
|
327
|
+
{
|
|
328
|
+
"schema_version": "multimodal_input_manifest_v1",
|
|
329
|
+
"dataset_id": "experiment-042",
|
|
330
|
+
"records": [
|
|
331
|
+
{
|
|
332
|
+
"record_id": "img-001",
|
|
333
|
+
"file": "files/micrograph-01.tif",
|
|
334
|
+
"modality": "image",
|
|
335
|
+
"group": "batch-A",
|
|
336
|
+
"condition": "high-humidity",
|
|
337
|
+
"timepoint": "cycle-20"
|
|
338
|
+
}
|
|
339
|
+
]
|
|
340
|
+
}
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
```bash
|
|
344
|
+
uv run qwensci survey \
|
|
345
|
+
--topic "Microstructure mechanisms under humidity cycling" \
|
|
346
|
+
--multimodal-evidence-manifest /data/experiment-042/manifest.json
|
|
347
|
+
```
|
|
348
|
+
|
|
349
|
+
With both explicit input and `--allow-remote-perception`, Survey additionally allows the fixed `qwen3-vl-plus` model to inspect a bounded preview:
|
|
350
|
+
|
|
351
|
+
```bash
|
|
352
|
+
uv run qwensci survey \
|
|
353
|
+
--topic "Microstructure mechanisms under humidity cycling" \
|
|
354
|
+
--multimodal-file /data/micrograph-01.tif \
|
|
355
|
+
--allow-remote-perception
|
|
356
|
+
```
|
|
357
|
+
|
|
358
|
+
Without `--allow-remote-perception`, Survey performs bounded local-only metadata and aggregate native analysis. With it, only image, signal, audio, 3D, and trajectory records are eligible for a size-limited, re-encoded PNG preview sent to `qwen3-vl-plus`; video, table, text, and symbolic records remain local-only. Every eligible preview has EXIF and source paths removed. Raw media, Base64 payloads, preview paths, unfiltered model replies, and full tables never enter runtime evidence. Validated observations can become at most three data-anchored `MM_SH_*` retrieval questions, each with supporting and counter/alternative evidence queries. They are scheduled ahead of automatically decomposed SHs but remain hypotheses, not scientific conclusions.
|
|
359
|
+
|
|
360
|
+
Common input errors fail before Survey starts: `--allow-remote-perception` requires a file or manifest, `--multimodal-file` and `--multimodal-evidence-manifest` are mutually exclusive, and missing optional readers report `uv sync --group multimodal`. Molecular files are not treated as text: the first release rejects them until an independent chemistry group with RDKit support is introduced.
|
|
361
|
+
|
|
362
|
+
### Idea
|
|
363
|
+
|
|
364
|
+
```bash
|
|
365
|
+
uv run qwensci idea \
|
|
366
|
+
--topic "Why do black holes exist?" \
|
|
367
|
+
--input "Nobel laureate Sir Roger Penrose proved Einstein’s prediction of the existence of black holes, which form when supermassive stars burn out and collapse in on themselves."
|
|
368
|
+
```
|
|
369
|
+
|
|
370
|
+
The Idea Agent can also receive an input or seed idea and write to a selected output root:
|
|
371
|
+
|
|
372
|
+
```bash
|
|
373
|
+
uv run qwensci idea \
|
|
374
|
+
--topic "Why do black holes exist?" \
|
|
375
|
+
--input "Nobel laureate Sir Roger Penrose proved Einstein’s prediction of the existence of black holes, which form when supermassive stars burn out and collapse in on themselves." \
|
|
376
|
+
--mature-idea "Optional seed idea" \
|
|
377
|
+
--survey-manifest /path/to/survey_manifest.json \
|
|
378
|
+
--output-root /path/to/idea-runs
|
|
379
|
+
```
|
|
380
|
+
|
|
381
|
+
The expected artifact for ExperimentDesign is `idea_result.json` (or an Idea run directory containing it).
|
|
382
|
+
|
|
383
|
+
### ExperimentDesign
|
|
384
|
+
|
|
385
|
+
```bash
|
|
386
|
+
uv run qwensci exp_design \
|
|
387
|
+
--idea-json /path/to/idea_result.json \
|
|
388
|
+
--discipline-id "Astrophysics"
|
|
389
|
+
```
|
|
390
|
+
|
|
391
|
+
ExperimentDesign retrieves design evidence, composes and validates a design-only plan, and writes JSON, Markdown, an Author handoff JSON, and a JSONL run log. It does not run code, simulations, or experiments.
|
|
392
|
+
|
|
393
|
+
By default, outputs are placed beside the Idea result. Use `--output-dir` to select another directory, `--selected-direction` to choose a specific Idea direction, and `--model` to override the configured ExperimentDesign model.
|
|
394
|
+
|
|
395
|
+
### Research Plan Author
|
|
396
|
+
|
|
397
|
+
```bash
|
|
398
|
+
uv run qwensci author \
|
|
399
|
+
--author-input /path/to/experiment_design_author_<timestamp>.json \
|
|
400
|
+
--survey-manifest /path/to/survey_manifest.json
|
|
401
|
+
```
|
|
402
|
+
|
|
403
|
+
Author requires the ExperimentDesign handoff and a completed, verified Survey manifest. It composes an English-only proposal package; with `--template-dir` or a configured rendering template, it can copy the template into the run output and render a validated PDF. Use `--idea-result` only to include source-anchored Idea checkpoints.
|
|
404
|
+
|
|
405
|
+
### Science workflow
|
|
406
|
+
|
|
407
|
+
```bash
|
|
408
|
+
uv run qwensci science \
|
|
409
|
+
--topic "Why do black holes exist?" \
|
|
410
|
+
--discipline-id "Astrophysics"
|
|
411
|
+
```
|
|
412
|
+
|
|
413
|
+
`science` initializes or resumes an auditable, design-only run under `workspace/science-runs/`. Its stages bind Survey, Idea, ExperimentDesign, and Author artifacts by identity and fingerprints. Use `--resume /path/to/run` to continue a run, and `--restart-from <stage> --force` to invalidate that stage and downstream stages without deleting historical artifacts.
|
|
414
|
+
|
|
415
|
+
### Helper scripts and MCP wrappers
|
|
416
|
+
|
|
417
|
+
To install local MCP wrapper scripts, run:
|
|
418
|
+
|
|
419
|
+
```bash
|
|
420
|
+
uv run qwensci install-mcp-wrappers
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
This command invokes a Bash script and is therefore intended for Linux/WSL.
|
|
424
|
+
|
|
425
|
+
## Local retrieval assets
|
|
426
|
+
|
|
427
|
+
The repository does **not** ship the following large or generated resources:
|
|
428
|
+
|
|
429
|
+
```text
|
|
430
|
+
data/processed/graph.db
|
|
431
|
+
data/processed/core_component_summary_vector_store/build_stats.json
|
|
432
|
+
data/processed/core_component_summary_vector_store/faiss.index
|
|
433
|
+
data/processed/core_component_summary_vector_store/meta.json
|
|
434
|
+
models/all-MiniLM-L6-v2/
|
|
435
|
+
models/bge-m3/
|
|
436
|
+
```
|
|
437
|
+
|
|
438
|
+
Place externally provisioned assets at those paths, or update the appropriate paths in `src/config/default.yaml`. Do not commit models, vector stores, graph databases, downloaded papers, run logs, or a populated `workspace/` directory.
|
|
439
|
+
|
|
440
|
+
If you have the graph data and want to start the local graph service:
|
|
441
|
+
|
|
442
|
+
```bash
|
|
443
|
+
uv run uvicorn graph.server:app --host 127.0.0.1 --port 8000
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
## Environment variable reference
|
|
447
|
+
|
|
448
|
+
Copy `.env.example` and leave settings blank unless you need the corresponding feature. The following table is the public configuration reference for variables currently supplied by the template or read by the unified configuration.
|
|
449
|
+
|
|
450
|
+
| Group | Variables | When to set them |
|
|
451
|
+
| --- | --- | --- |
|
|
452
|
+
| Provider selection | `QWENSCI_LLM_PROVIDER` | Set to `qwen` or `openai`. |
|
|
453
|
+
| Runtime configuration | `QWENSCI_CONFIG`, `QWENSCI_CONFIG_PATH` | Optional runtime overrides for direct module invocation. Prefer the public `--config /path/to/config.yaml` option for normal CLI use. |
|
|
454
|
+
| ExperimentDesign | `EXPERIMENT_DESIGN_LLM_PROVIDER`, `EXPERIMENT_DESIGN_LLM_MODEL` | Override the ExperimentDesign provider or model. |
|
|
455
|
+
| Research Plan Author | `RESEARCH_PLAN_AUTHOR_LLM_PROVIDER`, `RESEARCH_PLAN_AUTHOR_LLM_MODEL`, `RESEARCH_PLAN_AUTHOR_QUALITY_MODEL` | Override the Author provider, composition model, or whole-document quality model. |
|
|
456
|
+
| Qwen text and vision | `DASHSCOPE_API_KEY`, `DASHSCOPE_BASE_URL`, `DASHSCOPE_IMAGE_BASE_URL` | Required for Qwen text calls; image endpoint/base URL is needed for Qwen figure generation. |
|
|
457
|
+
| OpenAI-compatible text | `OPENAI_API_KEY`, `OPENAI_BASE_URL`, `OPENAI_API_BASE`, `OPENAI_MODEL` | Use when the selected provider is `openai`; prefer `OPENAI_BASE_URL`. |
|
|
458
|
+
| Literature and retrieval | `SEMANTIC_SCHOLAR_API_KEY`, `OPENALEX_EMAIL`, `UNPAYWALL_EMAIL`, `SERPER_API_KEY`, `GITHUB_AI_TOKEN`, `JINA_API_KEY`, `TAVILY_API_KEY`, `HF_TOKEN` | Semantic Scholar is checked by `doctor`; the others enable their corresponding retrieval, search, download, or Hugging Face paths. OpenAlex can work without an email; Unpaywall DOI resolution needs one. |
|
|
459
|
+
| Survey role overrides | `SURVEY_LLM_MODEL`, `SURVEY_JUDGE_PROVIDER`, `SURVEY_JUDGE_MODEL` | Override the configured survey or judge model settings. |
|
|
460
|
+
| Idea role overrides | `IDEA_LLM_MODEL`, `IDEA_GENERATION_MODEL`, `IDEA_EVALUATION_MODEL` | Override the base, generation, or evaluation model for Idea Agent. |
|
|
461
|
+
| Memory | `MEMORY_LLM_PROVIDER`, `MEMORY_LLM_MODEL` | Override the LLM used by the shared memory subsystem. |
|
|
462
|
+
| Vision and image generation | `VISION_LLM_PROVIDER`, `VISION_QUALITY_MODEL`, `VISION_BATCH_MODEL`, `IMAGE_GENERATION_PROVIDER`, `IMAGE_ACADEMIC_FIGURE_MODEL`, `IMAGE_TEXT_RICH_FIGURE_MODEL`, `IMAGE_DRAFT_MODEL` | Change Qwen vision review or figure-generation model choices. |
|
|
463
|
+
| Direct legacy utility only | `SURVEY_AGENT_API_KEY`, `SURVEY_AGENT_API_URL`, `SURVEY_AGENT_MODEL_NAME`, `SURVEY_AGENT_DATA_DIR` | Required only when running `src/agents/survey_agent/utils/step2v2.py` directly; `qwensci survey` does not require this standalone utility configuration. |
|
|
464
|
+
| Agent-specific compatibility | `ANTHROPIC_API_KEY`, `ANTHROPIC_BASE_URL` | Needed only by code paths explicitly configured to use them; they do not select the unified provider by themselves. |
|
|
465
|
+
|
|
466
|
+
Use role-model overrides only after the basic provider setup works. The supported provider/model capabilities are declared in `src/config/default.yaml`; assigning a model to a role that needs unsupported capabilities can make `doctor` fail before a run starts.
|
|
467
|
+
|
|
468
|
+
## Configuration and output locations
|
|
469
|
+
|
|
470
|
+
`src/config/default.yaml` is the canonical unified configuration. It contains the provider registry, model capabilities, agent settings, workspace root, and default output locations.
|
|
471
|
+
|
|
472
|
+
| Area | Primary configuration |
|
|
473
|
+
| --- | --- |
|
|
474
|
+
| Shared provider/model registry | `llm:` in `src/config/default.yaml` |
|
|
475
|
+
| Survey Agent | `survey:` plus `src/agents/survey_agent/config/*.yaml` |
|
|
476
|
+
| Idea Agent | `idea:` |
|
|
477
|
+
| ExperimentDesign | `experiment_design:` |
|
|
478
|
+
| Research Plan Author | `research_plan_author:` |
|
|
479
|
+
| Workspace root | `workspace.root` (defaults to `workspace/`) |
|
|
480
|
+
|
|
481
|
+
For a reproducible research run, copy the default YAML to a separate private/project configuration, make changes there, and pass it with `--config`. Keep generated output and credentials outside source-controlled files.
|
|
482
|
+
|
|
483
|
+
## Security and data handling
|
|
484
|
+
|
|
485
|
+
- Treat every API key as a secret and rotate any key that has appeared in a public commit, chat, log, or screenshot.
|
|
486
|
+
- Review paths before sharing logs: local workspace paths may reveal usernames or organization information.
|
|
487
|
+
- Do not commit `.env`, model directories, graph/vector data, PDF caches, generated reports, or runtime workspaces.
|
|
488
|
+
- Use public, generic paths such as `/path/to/qwen-sci/workspace` in documentation and issue reports.
|
|
489
|
+
|
|
490
|
+
## License
|
|
491
|
+
|
|
492
|
+
See [LICENSE](LICENSE).
|