eduevidence 5.2.0 → 6.2.0
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.
- package/CONTRIBUTING.md +105 -0
- package/README.md +142 -75
- package/README.zh-CN.md +73 -30
- package/SKILL.md +397 -131
- package/agents/openai.yaml +4 -0
- package/assets/readme/controlled-execution.svg +34 -0
- package/assets/readme/landing-tour.gif +0 -0
- package/assets/readme/logo.png +0 -0
- package/assets/readme/research-workflow.svg +56 -0
- package/assets/readme/studio-graph.png +0 -0
- package/assets/readme/studio-overview.png +0 -0
- package/assets/readme/studio-reports.png +0 -0
- package/assets/readme/studio-tour.gif +0 -0
- package/autoevolve/config.yaml +17 -0
- package/autoevolve/program.md +25 -0
- package/autoevolve/protected.manifest.yaml +34 -0
- package/benchmarks/adversarial/cases.jsonl +7 -0
- package/benchmarks/evidence-library.json +5268 -0
- package/benchmarks/partitions.json +8 -0
- package/bin/eduevidence.js +2 -1
- package/docs/architecture.md +496 -0
- package/docs/autoresearch-evolution-plan.md +2903 -0
- package/docs/autoresearch-implementation-status.md +101 -0
- package/docs/demo-storyboard.md +20 -0
- package/docs/demo-workplace-ai.md +92 -0
- package/docs/demo.md +32 -0
- package/docs/install-guide.md +150 -0
- package/docs/orchestration-role-model.md +1254 -0
- package/docs/release-closeout/README.md +17 -0
- package/docs/release-closeout/frontend-acceptance.md +23 -0
- package/docs/release-closeout/issues.md +19 -0
- package/docs/release-closeout/verification.md +28 -0
- package/docs/release-contract.md +108 -0
- package/docs/research-studio-guide.zh-CN.md +166 -0
- package/docs/sciverse-api.md +125 -0
- package/eduevidence_cli.py +29 -13
- package/engine/_resources.py +13 -0
- package/engine/autoevolve/__init__.py +3 -0
- package/engine/autoevolve/agent_view.py +167 -0
- package/engine/autoevolve/core.py +357 -0
- package/engine/autoevolve/events.py +11 -0
- package/engine/autoevolve/git_workspace.py +77 -0
- package/engine/autoevolve/projection.py +23 -0
- package/engine/autoevolve/runner.py +413 -0
- package/engine/autoevolve/trust.py +146 -0
- package/engine/autoresearch/__init__.py +6 -0
- package/engine/autoresearch/commit.py +132 -0
- package/engine/autoresearch/contracts.py +126 -0
- package/engine/autoresearch/controller.py +207 -0
- package/engine/autoresearch/events.py +12 -0
- package/engine/autoresearch/gap_priority.py +168 -0
- package/engine/autoresearch/projection.py +30 -0
- package/engine/autoresearch/research_memory.py +59 -0
- package/engine/autoresearch/saturation.py +91 -0
- package/engine/briefs.py +2 -1
- package/engine/capabilities.py +1 -0
- package/engine/contracts.py +3 -1
- package/engine/decision_policy.py +96 -0
- package/engine/evidence_graph.py +14 -10
- package/engine/evidencecore.py +7 -5
- package/engine/gaps.py +132 -73
- package/engine/ids.py +2 -0
- package/engine/judge_pack.py +65 -0
- package/engine/library.py +6 -2
- package/engine/library_builtin.py +3 -1
- package/engine/living.py +36 -5
- package/engine/meta_synthesis.py +3 -1
- package/engine/migration.py +88 -3
- package/engine/orchestration.py +460 -0
- package/engine/paths.py +2 -0
- package/engine/pilot.py +36 -33
- package/engine/project.py +2 -2
- package/engine/research_service.py +113 -0
- package/engine/studio_read_model.py +400 -0
- package/engine/taxonomy.py +211 -0
- package/engine/tribunal.py +44 -33
- package/engine/update.py +1 -0
- package/engine/versions.py +1 -1
- package/engine/worker_result.py +109 -0
- package/engine/workflows.py +70 -0
- package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +2934 -0
- package/examples/ai-coding-assistant-evidence/artifact_manifest.json +15 -0
- package/examples/ai-coding-assistant-evidence/citation_check.json +79 -0
- package/examples/ai-coding-assistant-evidence/claims.jsonl +12 -0
- package/examples/ai-coding-assistant-evidence/evaluation.json +35 -0
- package/examples/ai-coding-assistant-evidence/evidence.jsonl +12 -0
- package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
- package/examples/ai-coding-assistant-evidence/frame.json +48 -0
- package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
- package/examples/ai-coding-assistant-evidence/intervention.json +51 -0
- package/examples/ai-coding-assistant-evidence/methodology.json +36 -0
- package/examples/ai-coding-assistant-evidence/raw_verdict.json +86 -0
- package/examples/ai-coding-assistant-evidence/report_spec.json +230 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +2934 -0
- package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +2934 -0
- package/examples/ai-coding-assistant-evidence/result.json +1457 -0
- package/examples/ai-coding-assistant-evidence/result.zh.json +1457 -0
- package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
- package/examples/ai-coding-assistant-evidence/sources.jsonl +8 -0
- package/examples/ai-coding-assistant-evidence/verdict.json +107 -0
- package/examples/spaced-retrieval-practice/applicability.json +14 -0
- package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
- package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
- package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
- package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
- package/examples/spaced-retrieval-practice/frame.json +58 -0
- package/examples/spaced-retrieval-practice/gate_report.json +101 -0
- package/examples/spaced-retrieval-practice/methodology.json +78 -0
- package/examples/spaced-retrieval-practice/report_spec.json +212 -0
- package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
- package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
- package/examples/spaced-retrieval-practice/result.json +942 -0
- package/examples/spaced-retrieval-practice/result.zh.json +942 -0
- package/examples/spaced-retrieval-practice/skeptic.json +70 -0
- package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
- package/examples/spaced-retrieval-practice/verdict.json +93 -0
- package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
- package/examples/workplace-ai-assistant/claims.jsonl +4 -0
- package/examples/workplace-ai-assistant/evaluation.json +19 -0
- package/examples/workplace-ai-assistant/evidence.jsonl +4 -0
- package/examples/workplace-ai-assistant/evidence_graph.json +444 -0
- package/examples/workplace-ai-assistant/final_verdict.json +78 -0
- package/examples/workplace-ai-assistant/frame.json +41 -0
- package/examples/workplace-ai-assistant/gate_report.json +101 -0
- package/examples/workplace-ai-assistant/intervention.json +27 -0
- package/examples/workplace-ai-assistant/legacy-link-check.json +16 -0
- package/examples/workplace-ai-assistant/methodology.json +60 -0
- package/examples/workplace-ai-assistant/report_spec.json +224 -0
- package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
- package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
- package/examples/workplace-ai-assistant/result.json +615 -0
- package/examples/workplace-ai-assistant/result.zh.json +615 -0
- package/examples/workplace-ai-assistant/search_log.json +19 -0
- package/examples/workplace-ai-assistant/skeptic.json +72 -0
- package/examples/workplace-ai-assistant/sources.jsonl +3 -0
- package/examples/workplace-ai-assistant/validation_result.json +9 -0
- package/examples/workplace-ai-assistant/verdict.json +78 -0
- package/install.sh +7 -7
- package/integrations/agent_mcp.py +2 -2
- package/integrations/orchestration_dispatch.py +146 -0
- package/package.json +46 -3
- package/pyproject.toml +14 -22
- package/references/autoresearch.md +30 -0
- package/references/evaluation-policy.md +24 -0
- package/references/orchestration.md +22 -0
- package/references/report-copy-style.md +67 -0
- package/references/retrieval-compliance.md +75 -0
- package/references/retrieval-protocol.md +20 -0
- package/references/scientific-invariants.md +19 -0
- package/retrieval/audit.py +178 -0
- package/retrieval/fetch.py +96 -0
- package/retrieval/sciverse.py +398 -0
- package/retrieval/search.py +47 -7
- package/schemas/applicability.schema.json +94 -0
- package/schemas/chart-spec.schema.json +10 -3
- package/schemas/evidence.schema.json +316 -43
- package/schemas/fetch-result.schema.json +2 -1
- package/schemas/intervention.schema.json +106 -21
- package/schemas/report-result.schema.json +12 -4
- package/schemas/report-spec.schema.json +98 -100
- package/schemas/skeptic.schema.json +86 -0
- package/schemas/source.schema.json +21 -2
- package/schemas/v2/finding.schema.json +5 -1
- package/schemas/v2/methodology-audit.schema.json +5 -1
- package/schemas/v2/outcome.schema.json +28 -5
- package/schemas/v2/project.schema.json +2 -2
- package/schemas/v2/run.schema.json +1 -1
- package/schemas/v2/study.schema.json +5 -1
- package/schemas/vNext/autoevolve-session.schema.json +34 -0
- package/schemas/vNext/eval-snapshot.schema.json +77 -0
- package/schemas/vNext/execution-plan.schema.json +50 -0
- package/schemas/vNext/gap-priority.schema.json +54 -0
- package/schemas/vNext/negative-search-record.schema.json +68 -0
- package/schemas/vNext/research-iteration.schema.json +87 -0
- package/schemas/vNext/research-strategy.schema.json +62 -0
- package/schemas/vNext/skill-experiment.schema.json +90 -0
- package/schemas/vNext/task-spec.schema.json +156 -0
- package/schemas/vNext/worker-result.schema.json +60 -0
- package/schemas/verdict.schema.json +164 -28
- package/scripts/benchmark_judge.py +2 -2
- package/scripts/benchmark_v3.py +26 -43
- package/scripts/build_esl_artifacts.py +4 -4
- package/scripts/build_evidence_library.py +2 -2
- package/scripts/build_gh_pages.py +98 -0
- package/scripts/build_readme_diagrams.py +72 -0
- package/scripts/build_report_variants.py +101 -0
- package/scripts/build_result.py +74 -9
- package/scripts/check_autoresearch_invariants.py +95 -0
- package/scripts/check_package_parity.py +85 -0
- package/scripts/check_protocol_alignment.py +375 -0
- package/scripts/check_versioned_schemas.py +254 -0
- package/scripts/claim_audit.py +13 -8
- package/scripts/compute_confidence.py +10 -0
- package/scripts/daily_evolve.py +30 -0
- package/scripts/dashboard_server.py +130 -101
- package/scripts/did_regression.py +17 -32
- package/scripts/enrich_projects_human_and_lieflat.py +1 -1
- package/scripts/evidence_score.py +5 -2
- package/scripts/generate_metrics.py +4 -3
- package/scripts/generate_new_projects.py +5 -5
- package/scripts/orchestrator.py +286 -36
- package/scripts/pre_verdict_gate.py +224 -26
- package/scripts/quickstart.py +18 -2
- package/scripts/rebake_all_5themes.py +1 -2
- package/scripts/research_auto_cli.py +475 -0
- package/scripts/run_workspace.py +24 -8
- package/scripts/search_provenance.py +64 -0
- package/scripts/serve_web.py +9 -10
- package/scripts/skill_lint.py +1 -1
- package/scripts/skill_payload.py +81 -0
- package/scripts/test_adversarial_empirical.py +26 -19
- package/scripts/validate_schema.py +46 -2
- package/scripts/vnext_cli.py +133 -0
- package/setup.py +12 -0
- package/skill/agents/evaluation-designer.md +20 -4
- package/skill/agents/evidence-analyst.md +19 -3
- package/skill/agents/evidence-judge.md +50 -2
- package/skill/agents/evidence-retriever.md +20 -3
- package/skill/agents/intervention-designer.md +20 -4
- package/skill/agents/method-reviewer.md +18 -2
- package/skill/agents/{education-planner.md → research-planner.md} +19 -3
- package/skill/agents/skeptic.md +18 -2
- package/skill/roles/registry.yaml +45 -0
- package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
- package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
- package/skill/sub-skills/data-analysis/SKILL.md +34 -15
- package/skill/sub-skills/ethics-review/SKILL.md +33 -10
- package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
- package/skill/sub-skills/evidence-review/SKILL.md +31 -12
- package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
- package/skill/sub-skills/literature-review/SKILL.md +35 -14
- package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
- package/skill/sub-skills/report-generation/SKILL.md +40 -6
- package/skill/sub-skills/research-planning/SKILL.md +41 -14
- package/skill/sub-skills/study-design/SKILL.md +30 -9
- package/skill/task-briefs/adjudicate.md +32 -7
- package/skill/task-briefs/applicability.md +38 -0
- package/skill/task-briefs/audit.md +32 -7
- package/skill/task-briefs/challenge.md +34 -5
- package/skill/task-briefs/evaluate.md +30 -5
- package/skill/task-briefs/extract.md +31 -8
- package/skill/task-briefs/frame.md +39 -10
- package/skill/task-briefs/intervene.md +32 -6
- package/skill/task-briefs/present.md +32 -8
- package/skill/task-briefs/projection.md +37 -0
- package/skill/task-briefs/retrieve.md +36 -6
- package/skill/workflows/decision-and-pilot.md +85 -0
- package/skill/workflows/evaluate-and-update.md +93 -0
- package/skill/workflows/evidence-review.md +117 -0
- package/visualization/eduevidence-report/assets/base.css +2 -2
- package/visualization/eduevidence-report/assets/reader.css +752 -0
- package/visualization/eduevidence-report/assets/reader.js +132 -0
- package/visualization/eduevidence-report/references/chart-selection-catalog.md +109 -0
- package/visualization/eduevidence-report/references/lieflat-composition.md +3 -1
- package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
- package/visualization/eduevidence-report/scripts/build_infographics.py +5 -1
- package/visualization/eduevidence-report/scripts/build_report.py +561 -121
- package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
- package/visualization/eduevidence-report/scripts/lieflat_engine.py +371 -136
- package/visualization/eduevidence-report/scripts/zh_labels.py +80 -1
- package/visualization/eduevidence-report/themes/academic.css +1 -1
- package/visualization/eduevidence-report/themes/claude.css +1 -1
- package/visualization/eduevidence-report/themes/datalab-dark.css +2 -2
- package/visualization/eduevidence-report/themes/datalab.css +2 -2
- package/visualization/eduevidence-report/themes/presentation.css +2 -2
- package/web/README.md +18 -0
- package/web/architecture.html +14885 -0
- package/web/index.html +53 -0
- package/web/studio/THIRD_PARTY_LICENSES.txt +146 -0
- package/web/studio/assets/index-B8tkF44Q.css +1 -0
- package/web/studio/assets/index-CQ6Keoyc.js +230 -0
- package/web/studio/config.json +1 -0
- package/web/studio/index.html +14 -0
- package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
- package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/bias.cpython-312.pyc +0 -0
- package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
- package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
- package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
- package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
- package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
- package/engine/__pycache__/events.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
- package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
- package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
- package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
- package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
- package/engine/__pycache__/ids.cpython-312.pyc +0 -0
- package/engine/__pycache__/library.cpython-312.pyc +0 -0
- package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
- package/engine/__pycache__/living.cpython-312.pyc +0 -0
- package/engine/__pycache__/log.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
- package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/migration.cpython-312.pyc +0 -0
- package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
- package/engine/__pycache__/paths.cpython-312.pyc +0 -0
- package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
- package/engine/__pycache__/planner.cpython-312.pyc +0 -0
- package/engine/__pycache__/project.cpython-312.pyc +0 -0
- package/engine/__pycache__/projections.cpython-312.pyc +0 -0
- package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
- package/engine/__pycache__/run.cpython-312.pyc +0 -0
- package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
- package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
- package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
- package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
- package/engine/__pycache__/update.cpython-312.pyc +0 -0
- package/engine/__pycache__/versions.cpython-312.pyc +0 -0
- package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
- package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
- package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
- package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
- package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
- package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
- package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
- package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
- package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
- package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
- package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
- package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
- package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
- package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
- package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
- package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
- package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
- package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
- package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
- package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
- package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
- package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
- package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
- package/visualization/eduevidence-report/scripts/__pycache__/zh_labels.cpython-312.pyc +0 -0
|
@@ -0,0 +1,1254 @@
|
|
|
1
|
+
# EduEvidence 角色、能力与子代理编排模型
|
|
2
|
+
|
|
3
|
+
> 本文定义 EduEvidence 下一阶段唯一的多角色 / 多代理语义。
|
|
4
|
+
> 核心目标:消除“Protocol Stage = Role = Sub-skill = Subagent”的混淆。
|
|
5
|
+
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
## 1. 唯一分层模型
|
|
9
|
+
|
|
10
|
+
EduEvidence 从此严格区分 5 个概念:
|
|
11
|
+
|
|
12
|
+
```text
|
|
13
|
+
Protocol Stage
|
|
14
|
+
≠ Scientific Role
|
|
15
|
+
≠ Capability
|
|
16
|
+
≠ Worker/Subagent
|
|
17
|
+
≠ Model/CLI
|
|
18
|
+
```
|
|
19
|
+
|
|
20
|
+
### Protocol Stage
|
|
21
|
+
|
|
22
|
+
回答:**研究流程现在进行到哪里?**
|
|
23
|
+
|
|
24
|
+
权威定义仍然只有 Canonical 9-step Protocol:
|
|
25
|
+
|
|
26
|
+
```text
|
|
27
|
+
Frame → Retrieve → Extract → Challenge → Audit → Adjudicate
|
|
28
|
+
→ Applicability → Intervene → Evaluate
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
Stage 是科学流程,不是 Agent。
|
|
32
|
+
|
|
33
|
+
---
|
|
34
|
+
|
|
35
|
+
### Scientific Role
|
|
36
|
+
|
|
37
|
+
回答:**谁对某一种科学责任负责?**
|
|
38
|
+
|
|
39
|
+
Role 是责任边界,不代表一定要启动独立模型。
|
|
40
|
+
|
|
41
|
+
例如:
|
|
42
|
+
|
|
43
|
+
```text
|
|
44
|
+
Skeptic
|
|
45
|
+
= 对反证充分性负责
|
|
46
|
+
|
|
47
|
+
Methodologist
|
|
48
|
+
= 对方法学审计负责
|
|
49
|
+
|
|
50
|
+
Adjudicator
|
|
51
|
+
= 对最终 evidence-bounded decision 负责
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
---
|
|
55
|
+
|
|
56
|
+
### Capability
|
|
57
|
+
|
|
58
|
+
回答:**完成任务需要什么可复用能力?**
|
|
59
|
+
|
|
60
|
+
例如:
|
|
61
|
+
|
|
62
|
+
```text
|
|
63
|
+
query expansion
|
|
64
|
+
full-text fetch
|
|
65
|
+
study identity resolution
|
|
66
|
+
finding extraction
|
|
67
|
+
contradiction analysis
|
|
68
|
+
methodology audit
|
|
69
|
+
gap derivation
|
|
70
|
+
study design
|
|
71
|
+
data analysis
|
|
72
|
+
report rendering
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
Capability 可以由:
|
|
76
|
+
|
|
77
|
+
```text
|
|
78
|
+
脚本
|
|
79
|
+
Python engine
|
|
80
|
+
Skill recipe
|
|
81
|
+
单 Agent
|
|
82
|
+
Subagent
|
|
83
|
+
MCP tool
|
|
84
|
+
```
|
|
85
|
+
|
|
86
|
+
执行。
|
|
87
|
+
|
|
88
|
+
Capability 不是角色。
|
|
89
|
+
|
|
90
|
+
---
|
|
91
|
+
|
|
92
|
+
### Worker / Subagent
|
|
93
|
+
|
|
94
|
+
回答:**这一次运行里,要不要创建一个独立执行实例?**
|
|
95
|
+
|
|
96
|
+
Subagent 是 runtime object,不是静态架构成员。
|
|
97
|
+
|
|
98
|
+
同一个 `evidence-retrieval` Capability:
|
|
99
|
+
|
|
100
|
+
```text
|
|
101
|
+
S 级任务
|
|
102
|
+
→ 主 Agent 自己调用工具
|
|
103
|
+
|
|
104
|
+
M 级任务
|
|
105
|
+
→ 2 个 Search Worker 并行
|
|
106
|
+
|
|
107
|
+
L 级任务
|
|
108
|
+
→ 4 个按证据轴拆分的 Search Worker
|
|
109
|
+
```
|
|
110
|
+
|
|
111
|
+
所以:
|
|
112
|
+
|
|
113
|
+
> **子代理数量由任务独立性和复杂度决定,不由角色数量决定。**
|
|
114
|
+
|
|
115
|
+
---
|
|
116
|
+
|
|
117
|
+
### Model / CLI
|
|
118
|
+
|
|
119
|
+
回答:**Worker 在哪个执行底座上运行?**
|
|
120
|
+
|
|
121
|
+
它只是 execution adapter。
|
|
122
|
+
|
|
123
|
+
```text
|
|
124
|
+
Role / TaskSpec
|
|
125
|
+
↓
|
|
126
|
+
能力需求
|
|
127
|
+
↓
|
|
128
|
+
Agent MCP approval / inventory
|
|
129
|
+
↓
|
|
130
|
+
CLI + model
|
|
131
|
+
```
|
|
132
|
+
|
|
133
|
+
不允许:
|
|
134
|
+
|
|
135
|
+
```text
|
|
136
|
+
Skeptic 永远等于 Claude
|
|
137
|
+
Retriever 永远等于 OMP
|
|
138
|
+
```
|
|
139
|
+
|
|
140
|
+
具体映射仍遵守现有 `agent_mcp_approval.json + safe_spawn()`。
|
|
141
|
+
|
|
142
|
+
---
|
|
143
|
+
|
|
144
|
+
# 2. 当前 8 个 `skill/agents` 如何重新解释
|
|
145
|
+
|
|
146
|
+
当前仓库有:
|
|
147
|
+
|
|
148
|
+
```text
|
|
149
|
+
research-planner
|
|
150
|
+
evidence-retriever
|
|
151
|
+
evidence-analyst
|
|
152
|
+
skeptic
|
|
153
|
+
method-reviewer
|
|
154
|
+
evidence-judge
|
|
155
|
+
intervention-designer
|
|
156
|
+
evaluation-designer
|
|
157
|
+
```
|
|
158
|
+
|
|
159
|
+
不再称它们为“八个一定存在的 Agent”。
|
|
160
|
+
|
|
161
|
+
重新分类:
|
|
162
|
+
|
|
163
|
+
## A. Scientific Authority Roles
|
|
164
|
+
|
|
165
|
+
这些角色承担不可省略的独立科学责任:
|
|
166
|
+
|
|
167
|
+
```text
|
|
168
|
+
Skeptic
|
|
169
|
+
Method Reviewer
|
|
170
|
+
Evidence Judge
|
|
171
|
+
```
|
|
172
|
+
|
|
173
|
+
其中 Skeptic / Method Reviewer 在高复杂度场景适合独立上下文;Evidence Judge 在高影响任务中适合与主分析分离。
|
|
174
|
+
|
|
175
|
+
---
|
|
176
|
+
|
|
177
|
+
## B. Domain Responsibility Profiles
|
|
178
|
+
|
|
179
|
+
```text
|
|
180
|
+
Education Planner
|
|
181
|
+
Intervention Designer
|
|
182
|
+
Evaluation Designer
|
|
183
|
+
```
|
|
184
|
+
|
|
185
|
+
它们定义责任与输出契约,但多数时候可以由 Lead Researcher 调用对应 capability 完成,不必单独 spawn。
|
|
186
|
+
|
|
187
|
+
只有当:
|
|
188
|
+
|
|
189
|
+
```text
|
|
190
|
+
任务复杂
|
|
191
|
+
上下文很大
|
|
192
|
+
需要专门定量推理
|
|
193
|
+
需要独立设计复核
|
|
194
|
+
```
|
|
195
|
+
|
|
196
|
+
才转成独立 Worker。
|
|
197
|
+
|
|
198
|
+
---
|
|
199
|
+
|
|
200
|
+
## C. Execution Worker Profiles
|
|
201
|
+
|
|
202
|
+
```text
|
|
203
|
+
Evidence Retriever
|
|
204
|
+
Evidence Analyst
|
|
205
|
+
```
|
|
206
|
+
|
|
207
|
+
它们本质最接近 worker template。
|
|
208
|
+
|
|
209
|
+
可以有:
|
|
210
|
+
|
|
211
|
+
```text
|
|
212
|
+
Retriever Worker #1
|
|
213
|
+
Retriever Worker #2
|
|
214
|
+
Retriever Worker #3
|
|
215
|
+
```
|
|
216
|
+
|
|
217
|
+
但三者共享同一个 profile,TaskSpec 不同。
|
|
218
|
+
|
|
219
|
+
不需要创造:
|
|
220
|
+
|
|
221
|
+
```text
|
|
222
|
+
retriever-1.md
|
|
223
|
+
retriever-2.md
|
|
224
|
+
retriever-3.md
|
|
225
|
+
```
|
|
226
|
+
|
|
227
|
+
---
|
|
228
|
+
|
|
229
|
+
# 3. 新增唯一 Orchestrator:Lead Researcher
|
|
230
|
+
|
|
231
|
+
新增逻辑角色:
|
|
232
|
+
|
|
233
|
+
```text
|
|
234
|
+
Lead Researcher / Orchestrator
|
|
235
|
+
```
|
|
236
|
+
|
|
237
|
+
它负责:
|
|
238
|
+
|
|
239
|
+
```text
|
|
240
|
+
理解用户任务
|
|
241
|
+
选择 Workflow
|
|
242
|
+
运行 Complexity Gate
|
|
243
|
+
建立 Capability DAG
|
|
244
|
+
决定哪些节点本地执行
|
|
245
|
+
决定哪些节点 spawn
|
|
246
|
+
分配 TaskSpec
|
|
247
|
+
控制预算
|
|
248
|
+
等待 / 恢复 worker
|
|
249
|
+
合并 staging artifacts
|
|
250
|
+
触发 scientific gates
|
|
251
|
+
决定是否继续 research loop
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
它**不拥有以下权力**:
|
|
255
|
+
|
|
256
|
+
```text
|
|
257
|
+
绕过 schema
|
|
258
|
+
绕过 provenance
|
|
259
|
+
修改 gold/evaluator
|
|
260
|
+
把未验证 worker 输出直接写入 Graph
|
|
261
|
+
在高影响模式下自己审核自己的最终 verdict
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
Lead Researcher 是 workflow control plane,不是“最权威专家”。
|
|
265
|
+
|
|
266
|
+
---
|
|
267
|
+
|
|
268
|
+
# 4. Single Writer Principle
|
|
269
|
+
|
|
270
|
+
Canonical State 只能由主引擎写入:
|
|
271
|
+
|
|
272
|
+
```text
|
|
273
|
+
Evidence Graph
|
|
274
|
+
GraphRevision
|
|
275
|
+
DecisionSnapshot
|
|
276
|
+
KnowledgeGap persistent state
|
|
277
|
+
StudyDesign
|
|
278
|
+
PilotRun
|
|
279
|
+
AnalysisRun
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
所有 Subagent:
|
|
283
|
+
|
|
284
|
+
```text
|
|
285
|
+
read snapshot
|
|
286
|
+
→ perform bounded task
|
|
287
|
+
→ return staging artifact
|
|
288
|
+
```
|
|
289
|
+
|
|
290
|
+
禁止直接:
|
|
291
|
+
|
|
292
|
+
```text
|
|
293
|
+
commit Graph
|
|
294
|
+
rewrite HEAD
|
|
295
|
+
write DecisionSnapshot
|
|
296
|
+
modify evaluator
|
|
297
|
+
modify protected scientific rules
|
|
298
|
+
```
|
|
299
|
+
|
|
300
|
+
流程:
|
|
301
|
+
|
|
302
|
+
```text
|
|
303
|
+
Subagent Result
|
|
304
|
+
↓
|
|
305
|
+
Staging Artifact
|
|
306
|
+
↓
|
|
307
|
+
Schema Gate
|
|
308
|
+
↓
|
|
309
|
+
Provenance Gate
|
|
310
|
+
↓
|
|
311
|
+
Semantic / Scientific Gate
|
|
312
|
+
↓
|
|
313
|
+
Lead accepts
|
|
314
|
+
↓
|
|
315
|
+
Engine commit
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
这样可以避免并行 worker 同时写状态导致 race / evidence corruption。
|
|
319
|
+
|
|
320
|
+
---
|
|
321
|
+
|
|
322
|
+
# 5. TaskSpec:所有子代理派发的唯一契约
|
|
323
|
+
|
|
324
|
+
任何 `safe_spawn()` 前先创建 TaskSpec。
|
|
325
|
+
|
|
326
|
+
建议 Contract:
|
|
327
|
+
|
|
328
|
+
```json
|
|
329
|
+
{
|
|
330
|
+
"task_id": "TSK-...",
|
|
331
|
+
"run_id": "RUN-...",
|
|
332
|
+
"project_id": "PRJ-...",
|
|
333
|
+
"base_revision": 8,
|
|
334
|
+
"role_profile": "evidence-retriever",
|
|
335
|
+
"objective": "寻找 novice CS1 中关闭 AI 后的 transfer/independent performance 直接证据",
|
|
336
|
+
"why_parallel": "independent evidence axis",
|
|
337
|
+
"input_artifacts": [
|
|
338
|
+
"frame.json",
|
|
339
|
+
"gap:GAP-..."
|
|
340
|
+
],
|
|
341
|
+
"allowed_capabilities": [
|
|
342
|
+
"web_search",
|
|
343
|
+
"academic_search",
|
|
344
|
+
"fetch_source"
|
|
345
|
+
],
|
|
346
|
+
"forbidden_actions": [
|
|
347
|
+
"adjudicate",
|
|
348
|
+
"graph_commit",
|
|
349
|
+
"modify_scope"
|
|
350
|
+
],
|
|
351
|
+
"search_boundary": {
|
|
352
|
+
"population": "novice CS1",
|
|
353
|
+
"outcomes": ["transfer", "independent_problem_solving"]
|
|
354
|
+
},
|
|
355
|
+
"budget": {
|
|
356
|
+
"max_queries": 5,
|
|
357
|
+
"max_sources": 20,
|
|
358
|
+
"timeout_seconds": 240
|
|
359
|
+
},
|
|
360
|
+
"output_contract": "candidate-source-batch",
|
|
361
|
+
"termination": "budget_exhausted_or_sufficient_candidates"
|
|
362
|
+
}
|
|
363
|
+
```
|
|
364
|
+
|
|
365
|
+
TaskSpec 必须回答:
|
|
366
|
+
|
|
367
|
+
```text
|
|
368
|
+
目标是什么?
|
|
369
|
+
为什么需要独立 worker?
|
|
370
|
+
给它什么上下文?
|
|
371
|
+
不能做什么?
|
|
372
|
+
预算多少?
|
|
373
|
+
返回什么 schema?
|
|
374
|
+
什么时候停止?
|
|
375
|
+
```
|
|
376
|
+
|
|
377
|
+
没有完整 TaskSpec,不派发。
|
|
378
|
+
|
|
379
|
+
---
|
|
380
|
+
|
|
381
|
+
# 6. WorkerResult
|
|
382
|
+
|
|
383
|
+
每个 worker 只返回结构化结果:
|
|
384
|
+
|
|
385
|
+
```json
|
|
386
|
+
{
|
|
387
|
+
"task_id": "TSK-...",
|
|
388
|
+
"status": "completed",
|
|
389
|
+
"artifacts": [],
|
|
390
|
+
"source_ids": [],
|
|
391
|
+
"limitations": [],
|
|
392
|
+
"negative_results": [],
|
|
393
|
+
"budget_used": {},
|
|
394
|
+
"needs_followup": false
|
|
395
|
+
}
|
|
396
|
+
```
|
|
397
|
+
|
|
398
|
+
不要返回 5000 字“工作总结”给 Orchestrator。
|
|
399
|
+
|
|
400
|
+
Lead 需要的是:
|
|
401
|
+
|
|
402
|
+
```text
|
|
403
|
+
Artifact
|
|
404
|
+
Provenance
|
|
405
|
+
Limitations
|
|
406
|
+
Status
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
而不是 worker 的完整思考过程。
|
|
410
|
+
|
|
411
|
+
---
|
|
412
|
+
|
|
413
|
+
# 7. Capability DAG 决定派发,不是 Role List
|
|
414
|
+
|
|
415
|
+
示例:Evidence Review。
|
|
416
|
+
|
|
417
|
+
```text
|
|
418
|
+
Frame
|
|
419
|
+
↓
|
|
420
|
+
Retrieve ────────┐
|
|
421
|
+
↓ │
|
|
422
|
+
Extract │
|
|
423
|
+
↓ │
|
|
424
|
+
Challenge ◄──────┘
|
|
425
|
+
↓
|
|
426
|
+
Audit
|
|
427
|
+
↓
|
|
428
|
+
Adjudicate
|
|
429
|
+
↓
|
|
430
|
+
Applicability
|
|
431
|
+
```
|
|
432
|
+
|
|
433
|
+
真正适合并行的是:
|
|
434
|
+
|
|
435
|
+
```text
|
|
436
|
+
Retrieve 的独立搜索方向
|
|
437
|
+
Extract 的不同 Source batch
|
|
438
|
+
Challenge 的独立反证路径
|
|
439
|
+
部分 Method review batch
|
|
440
|
+
```
|
|
441
|
+
|
|
442
|
+
不适合并行的是:
|
|
443
|
+
|
|
444
|
+
```text
|
|
445
|
+
最终 Graph commit
|
|
446
|
+
最终 Decision adjudication
|
|
447
|
+
依赖上一阶段完整状态的 Gap derivation
|
|
448
|
+
```
|
|
449
|
+
|
|
450
|
+
原则:
|
|
451
|
+
|
|
452
|
+
> **Parallelize independent evidence acquisition; serialize canonical state transitions.**
|
|
453
|
+
|
|
454
|
+
---
|
|
455
|
+
|
|
456
|
+
# 8. 子代理派发判定器
|
|
457
|
+
|
|
458
|
+
新增 `ExecutionPlanner`。
|
|
459
|
+
|
|
460
|
+
输入:
|
|
461
|
+
|
|
462
|
+
```text
|
|
463
|
+
workflow
|
|
464
|
+
complexity
|
|
465
|
+
capability DAG
|
|
466
|
+
current evidence size
|
|
467
|
+
budget
|
|
468
|
+
Agent MCP availability
|
|
469
|
+
user approval
|
|
470
|
+
```
|
|
471
|
+
|
|
472
|
+
输出:
|
|
473
|
+
|
|
474
|
+
```text
|
|
475
|
+
local nodes
|
|
476
|
+
worker nodes
|
|
477
|
+
parallel groups
|
|
478
|
+
dependencies
|
|
479
|
+
model capability requirements
|
|
480
|
+
```
|
|
481
|
+
|
|
482
|
+
判定条件:
|
|
483
|
+
|
|
484
|
+
## 应 spawn
|
|
485
|
+
|
|
486
|
+
满足至少一类:
|
|
487
|
+
|
|
488
|
+
```text
|
|
489
|
+
A. 可以真正并行的独立搜索空间
|
|
490
|
+
B. 需要独立反证,避免 path dependence
|
|
491
|
+
C. 需要独立方法学判断
|
|
492
|
+
D. 上下文过大,需要隔离
|
|
493
|
+
E. 专门工具集与主 Agent 明显不同
|
|
494
|
+
F. 高影响 verdict 需要 independent review
|
|
495
|
+
```
|
|
496
|
+
|
|
497
|
+
## 不应 spawn
|
|
498
|
+
|
|
499
|
+
```text
|
|
500
|
+
简单单问题
|
|
501
|
+
工作只需一次工具调用
|
|
502
|
+
任务高度串行
|
|
503
|
+
worker 会读取几乎完全相同上下文并做相同搜索
|
|
504
|
+
spawn 协调成本高于工作本身
|
|
505
|
+
只是为了“八角色齐全”
|
|
506
|
+
```
|
|
507
|
+
|
|
508
|
+
---
|
|
509
|
+
|
|
510
|
+
# 9. S / M / L 的默认执行拓扑
|
|
511
|
+
|
|
512
|
+
## S — Single Agent First
|
|
513
|
+
|
|
514
|
+
默认:
|
|
515
|
+
|
|
516
|
+
```text
|
|
517
|
+
Lead Researcher
|
|
518
|
+
├─ Frame capability
|
|
519
|
+
├─ Retrieve capability
|
|
520
|
+
├─ Extract capability
|
|
521
|
+
├─ Challenge checklist
|
|
522
|
+
├─ Audit checklist
|
|
523
|
+
└─ Adjudicate
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
```text
|
|
527
|
+
Subagents = 0
|
|
528
|
+
```
|
|
529
|
+
|
|
530
|
+
只有用户显式要求独立验证时才 spawn。
|
|
531
|
+
|
|
532
|
+
---
|
|
533
|
+
|
|
534
|
+
## M — Selective Delegation
|
|
535
|
+
|
|
536
|
+
默认:
|
|
537
|
+
|
|
538
|
+
```text
|
|
539
|
+
Lead Researcher
|
|
540
|
+
│
|
|
541
|
+
├─ Search Worker A — direct/support evidence
|
|
542
|
+
├─ Search Worker B — contradiction/null/risk evidence
|
|
543
|
+
│
|
|
544
|
+
├─ [optional] Extraction Worker — large source batch
|
|
545
|
+
│
|
|
546
|
+
├─ Skeptic — independent challenge if decision-relevant
|
|
547
|
+
├─ Method Reviewer — when design quality matters
|
|
548
|
+
│
|
|
549
|
+
└─ Lead / Judge → final bounded decision
|
|
550
|
+
```
|
|
551
|
+
|
|
552
|
+
典型并发 worker:
|
|
553
|
+
|
|
554
|
+
```text
|
|
555
|
+
2–4
|
|
556
|
+
```
|
|
557
|
+
|
|
558
|
+
不是固定 8 个。
|
|
559
|
+
|
|
560
|
+
---
|
|
561
|
+
|
|
562
|
+
## L — Orchestrator + Bounded Worker Pool
|
|
563
|
+
|
|
564
|
+
```text
|
|
565
|
+
Lead Researcher
|
|
566
|
+
│
|
|
567
|
+
├─ Retrieval Fan-out
|
|
568
|
+
│ ├─ Worker A: direct causal evidence
|
|
569
|
+
│ ├─ Worker B: transfer / retention
|
|
570
|
+
│ ├─ Worker C: harms / null / contradiction
|
|
571
|
+
│ └─ Worker D: applicability / subgroup / current evidence
|
|
572
|
+
│
|
|
573
|
+
├─ Evidence Merge + deterministic dedupe
|
|
574
|
+
│
|
|
575
|
+
├─ Extraction Fan-out(仅来源多时)
|
|
576
|
+
│ ├─ Worker E: batch 1
|
|
577
|
+
│ └─ Worker F: batch 2
|
|
578
|
+
│
|
|
579
|
+
├─ Scientific Independence
|
|
580
|
+
│ ├─ Skeptic
|
|
581
|
+
│ └─ Method Reviewer
|
|
582
|
+
│
|
|
583
|
+
├─ Canonical Graph Commit
|
|
584
|
+
│
|
|
585
|
+
├─ Evidence Judge
|
|
586
|
+
│
|
|
587
|
+
└─ [high impact] Independent Final Reviewer
|
|
588
|
+
```
|
|
589
|
+
|
|
590
|
+
默认硬上限:
|
|
591
|
+
|
|
592
|
+
```text
|
|
593
|
+
active parallel workers <= 6
|
|
594
|
+
```
|
|
595
|
+
|
|
596
|
+
具体值由 budget/config 调整。
|
|
597
|
+
|
|
598
|
+
禁止递归 spawn swarm。
|
|
599
|
+
|
|
600
|
+
---
|
|
601
|
+
|
|
602
|
+
# 10. Retrieval Worker 应按“证据轴”拆,不按网站拆
|
|
603
|
+
|
|
604
|
+
坏拆法:
|
|
605
|
+
|
|
606
|
+
```text
|
|
607
|
+
Agent A 搜 Google Scholar
|
|
608
|
+
Agent B 搜 Semantic Scholar
|
|
609
|
+
Agent C 搜 Crossref
|
|
610
|
+
```
|
|
611
|
+
|
|
612
|
+
因为三个 worker 很可能搜同样的问题。
|
|
613
|
+
|
|
614
|
+
优先拆法:
|
|
615
|
+
|
|
616
|
+
```text
|
|
617
|
+
A:直接 Outcome / causal evidence
|
|
618
|
+
B:retention / transfer / independent performance
|
|
619
|
+
C:negative / null / risk / dependency
|
|
620
|
+
D:population / subgroup / applicability
|
|
621
|
+
E:最新 temporal evidence(需要时)
|
|
622
|
+
```
|
|
623
|
+
|
|
624
|
+
Provider 是 capability,不是研究方向。
|
|
625
|
+
|
|
626
|
+
这样每个 worker 有不同 epistemic objective。
|
|
627
|
+
|
|
628
|
+
---
|
|
629
|
+
|
|
630
|
+
# 11. Independence 有三种,不要混淆
|
|
631
|
+
|
|
632
|
+
## Search Independence
|
|
633
|
+
|
|
634
|
+
不同 query / evidence axis。
|
|
635
|
+
|
|
636
|
+
适用 Retriever Workers。
|
|
637
|
+
|
|
638
|
+
## Context Independence
|
|
639
|
+
|
|
640
|
+
Reviewer 不读取主分析的推理过程,只读取 canonical artifacts。
|
|
641
|
+
|
|
642
|
+
适用 Method Reviewer / Skeptic。
|
|
643
|
+
|
|
644
|
+
## Model-family Independence
|
|
645
|
+
|
|
646
|
+
使用不同模型家族。
|
|
647
|
+
|
|
648
|
+
适用高影响 Cross-Model Review。
|
|
649
|
+
|
|
650
|
+
现有 Agent MCP 对 Skeptic 已支持 `different-model-family` capability constraint;继续保留。
|
|
651
|
+
|
|
652
|
+
不是所有 worker 都必须不同模型。
|
|
653
|
+
|
|
654
|
+
---
|
|
655
|
+
|
|
656
|
+
# 12. Skeptic 的正确位置
|
|
657
|
+
|
|
658
|
+
Skeptic 不只是一个“最后检查员”。
|
|
659
|
+
|
|
660
|
+
有两个触发点:
|
|
661
|
+
|
|
662
|
+
```text
|
|
663
|
+
Challenge Search
|
|
664
|
+
→ 独立寻找 counter/null/alternative evidence
|
|
665
|
+
|
|
666
|
+
Pre-Verdict Review
|
|
667
|
+
→ 检查是否仍漏反证 / scope / unsupported claim
|
|
668
|
+
```
|
|
669
|
+
|
|
670
|
+
同一个责任 profile 可以被调用两次,但不意味着启动两个永久 Agent。
|
|
671
|
+
|
|
672
|
+
---
|
|
673
|
+
|
|
674
|
+
# 13. Method Reviewer 的正确位置
|
|
675
|
+
|
|
676
|
+
Method Reviewer 只审:
|
|
677
|
+
|
|
678
|
+
```text
|
|
679
|
+
study design
|
|
680
|
+
measurement
|
|
681
|
+
bias
|
|
682
|
+
precision
|
|
683
|
+
Task vs Learning
|
|
684
|
+
```
|
|
685
|
+
|
|
686
|
+
不要让它承担:
|
|
687
|
+
|
|
688
|
+
```text
|
|
689
|
+
总体 verdict
|
|
690
|
+
检索
|
|
691
|
+
最终 intervention design
|
|
692
|
+
```
|
|
693
|
+
|
|
694
|
+
来源很多时:
|
|
695
|
+
|
|
696
|
+
```text
|
|
697
|
+
Method Reviewer worker 可以按 Study batch 并行
|
|
698
|
+
```
|
|
699
|
+
|
|
700
|
+
但 body-of-evidence appraisal 最终要统一合并。
|
|
701
|
+
|
|
702
|
+
---
|
|
703
|
+
|
|
704
|
+
# 14. Evidence Judge 的正确位置
|
|
705
|
+
|
|
706
|
+
Evidence Judge 必须在:
|
|
707
|
+
|
|
708
|
+
```text
|
|
709
|
+
Graph 已稳定
|
|
710
|
+
Challenge 完成
|
|
711
|
+
Method Audit 完成
|
|
712
|
+
Pre-Verdict Gate 通过
|
|
713
|
+
```
|
|
714
|
+
|
|
715
|
+
之后执行。
|
|
716
|
+
|
|
717
|
+
Judge 不再从 worker 自然语言总结做决策。
|
|
718
|
+
|
|
719
|
+
只读取 canonical / validated artifacts:
|
|
720
|
+
|
|
721
|
+
```text
|
|
722
|
+
Frame
|
|
723
|
+
Graph Revision
|
|
724
|
+
Claim synthesis
|
|
725
|
+
Audits
|
|
726
|
+
Gap state
|
|
727
|
+
Applicability inputs
|
|
728
|
+
```
|
|
729
|
+
|
|
730
|
+
这会显著降低 coordination noise。
|
|
731
|
+
|
|
732
|
+
---
|
|
733
|
+
|
|
734
|
+
# 15. Intervention / Evaluation 不再默认派 Agent
|
|
735
|
+
|
|
736
|
+
只有:
|
|
737
|
+
|
|
738
|
+
```text
|
|
739
|
+
用户进入 Decision & Pilot
|
|
740
|
+
或 Full Research Cycle
|
|
741
|
+
且当前 Decision 允许继续
|
|
742
|
+
```
|
|
743
|
+
|
|
744
|
+
才激活。
|
|
745
|
+
|
|
746
|
+
简单 PILOT:
|
|
747
|
+
|
|
748
|
+
```text
|
|
749
|
+
Lead + study-design capability
|
|
750
|
+
```
|
|
751
|
+
|
|
752
|
+
复杂 Pilot:
|
|
753
|
+
|
|
754
|
+
```text
|
|
755
|
+
Intervention Designer worker
|
|
756
|
+
+
|
|
757
|
+
Evaluation Designer worker
|
|
758
|
+
```
|
|
759
|
+
|
|
760
|
+
若涉及人类受试:
|
|
761
|
+
|
|
762
|
+
```text
|
|
763
|
+
Ethics capability / human gate
|
|
764
|
+
```
|
|
765
|
+
|
|
766
|
+
---
|
|
767
|
+
|
|
768
|
+
# 16. Autoresearch 的子代理拓扑
|
|
769
|
+
|
|
770
|
+
## Evidence Autoresearch
|
|
771
|
+
|
|
772
|
+
```text
|
|
773
|
+
Research Loop Controller
|
|
774
|
+
│
|
|
775
|
+
├─ Gap Priority capability
|
|
776
|
+
├─ Hypothesis Planner capability
|
|
777
|
+
│
|
|
778
|
+
├─ bounded Retrieval Workers
|
|
779
|
+
│ ├─ directness axis
|
|
780
|
+
│ ├─ contradiction axis
|
|
781
|
+
│ └─ applicability/freshness axis(按需要)
|
|
782
|
+
│
|
|
783
|
+
├─ validation / extraction
|
|
784
|
+
├─ independent challenge/method review(按门触发)
|
|
785
|
+
│
|
|
786
|
+
├─ Single Writer Graph Commit
|
|
787
|
+
├─ Decision Drift
|
|
788
|
+
│
|
|
789
|
+
└─ Next Gap
|
|
790
|
+
```
|
|
791
|
+
|
|
792
|
+
不要让每个 iteration 自动启动全套 8 角色。
|
|
793
|
+
|
|
794
|
+
---
|
|
795
|
+
|
|
796
|
+
## Skill Autoresearch
|
|
797
|
+
|
|
798
|
+
使用“研究组织”而不是 swarm:
|
|
799
|
+
|
|
800
|
+
```text
|
|
801
|
+
Experiment Orchestrator
|
|
802
|
+
│
|
|
803
|
+
├─ Hypothesis Proposer
|
|
804
|
+
├─ Candidate Implementer
|
|
805
|
+
│
|
|
806
|
+
├─ Protected Evaluator(不是可变 Agent)
|
|
807
|
+
│ ├─ deterministic tests
|
|
808
|
+
│ ├─ DEV benchmark
|
|
809
|
+
│ ├─ HOLDOUT
|
|
810
|
+
│ └─ adversarial
|
|
811
|
+
│
|
|
812
|
+
└─ Promotion Policy
|
|
813
|
+
```
|
|
814
|
+
|
|
815
|
+
`Evaluator` 必须是 protected harness;LLM judge 只能作为补充 grader,不能拥有最终 override 权。
|
|
816
|
+
|
|
817
|
+
可以使用独立 Reviewer 对复杂结果做解释,但它同样不能修改 evaluator。
|
|
818
|
+
|
|
819
|
+
---
|
|
820
|
+
|
|
821
|
+
# 17. Autoresearch 中 Worker 绝不能修改这些对象
|
|
822
|
+
|
|
823
|
+
```text
|
|
824
|
+
benchmarks/annotations/**
|
|
825
|
+
benchmarks/holdout/**
|
|
826
|
+
benchmarks/evaluator/**
|
|
827
|
+
schemas/**
|
|
828
|
+
protected scientific rules
|
|
829
|
+
Graph historical revisions
|
|
830
|
+
Decision history
|
|
831
|
+
```
|
|
832
|
+
|
|
833
|
+
即使 worker 拥有写权限,也由 protected manifest / CI hard gate 拦截。
|
|
834
|
+
|
|
835
|
+
---
|
|
836
|
+
|
|
837
|
+
# 18. Worker Context 最小化
|
|
838
|
+
|
|
839
|
+
子代理不继承主 Agent 整个对话。
|
|
840
|
+
|
|
841
|
+
只收到:
|
|
842
|
+
|
|
843
|
+
```text
|
|
844
|
+
TaskSpec
|
|
845
|
+
必要 artifact refs
|
|
846
|
+
必要 protocol excerpt
|
|
847
|
+
必要 schema
|
|
848
|
+
必要 source batch
|
|
849
|
+
```
|
|
850
|
+
|
|
851
|
+
不发送:
|
|
852
|
+
|
|
853
|
+
```text
|
|
854
|
+
整个项目 README
|
|
855
|
+
整个 SKILL.md
|
|
856
|
+
所有历史对话
|
|
857
|
+
所有其他 worker 输出
|
|
858
|
+
```
|
|
859
|
+
|
|
860
|
+
除非任务确实需要。
|
|
861
|
+
|
|
862
|
+
目的:
|
|
863
|
+
|
|
864
|
+
```text
|
|
865
|
+
减少 context pollution
|
|
866
|
+
降低 path dependence
|
|
867
|
+
降低 token cost
|
|
868
|
+
提高责任边界清晰度
|
|
869
|
+
```
|
|
870
|
+
|
|
871
|
+
---
|
|
872
|
+
|
|
873
|
+
# 19. Worker 间默认不直接通信
|
|
874
|
+
|
|
875
|
+
拓扑:
|
|
876
|
+
|
|
877
|
+
```text
|
|
878
|
+
Worker A ─┐
|
|
879
|
+
Worker B ─┼→ Lead / Artifact Merge
|
|
880
|
+
Worker C ─┘
|
|
881
|
+
```
|
|
882
|
+
|
|
883
|
+
不要默认:
|
|
884
|
+
|
|
885
|
+
```text
|
|
886
|
+
A ↔ B ↔ C ↔ D
|
|
887
|
+
```
|
|
888
|
+
|
|
889
|
+
Peer-to-peer 会增加:
|
|
890
|
+
|
|
891
|
+
```text
|
|
892
|
+
状态一致性
|
|
893
|
+
重复讨论
|
|
894
|
+
错误传播
|
|
895
|
+
无法归因
|
|
896
|
+
```
|
|
897
|
+
|
|
898
|
+
需要 follow-up 时,由 Lead 重新创建 TaskSpec。
|
|
899
|
+
|
|
900
|
+
---
|
|
901
|
+
|
|
902
|
+
# 20. 动态 Steering
|
|
903
|
+
|
|
904
|
+
如果 Agent MCP 支持 steer / followup,EduEvidence 只通过 adapter 使用,不复制其 queue/state machine。
|
|
905
|
+
|
|
906
|
+
Steer 只用于:
|
|
907
|
+
|
|
908
|
+
```text
|
|
909
|
+
worker 明显偏题
|
|
910
|
+
新证据改变搜索方向
|
|
911
|
+
预算即将耗尽,需要收敛
|
|
912
|
+
```
|
|
913
|
+
|
|
914
|
+
所有 steer 记录到 run log。
|
|
915
|
+
|
|
916
|
+
---
|
|
917
|
+
|
|
918
|
+
# 21. Failure / Timeout
|
|
919
|
+
|
|
920
|
+
每个 TaskSpec 必须有 timeout。
|
|
921
|
+
|
|
922
|
+
worker:
|
|
923
|
+
|
|
924
|
+
```text
|
|
925
|
+
completed
|
|
926
|
+
partial
|
|
927
|
+
timeout
|
|
928
|
+
tool_failure
|
|
929
|
+
blocked
|
|
930
|
+
invalid_output
|
|
931
|
+
```
|
|
932
|
+
|
|
933
|
+
Lead 对 partial 结果可以:
|
|
934
|
+
|
|
935
|
+
```text
|
|
936
|
+
接受已有 artifact
|
|
937
|
+
重派更小任务
|
|
938
|
+
降级本地执行
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
不能因为一个 worker timeout 让整个 Evidence Graph 状态半写入。
|
|
942
|
+
|
|
943
|
+
Single Writer 保证失败前后 canonical state 一致。
|
|
944
|
+
|
|
945
|
+
---
|
|
946
|
+
|
|
947
|
+
# 22. 成本控制
|
|
948
|
+
|
|
949
|
+
ExecutionPlanner 先估计:
|
|
950
|
+
|
|
951
|
+
```text
|
|
952
|
+
parallelism benefit
|
|
953
|
+
coordination cost
|
|
954
|
+
model cost
|
|
955
|
+
tool cost
|
|
956
|
+
context cost
|
|
957
|
+
```
|
|
958
|
+
|
|
959
|
+
只有:
|
|
960
|
+
|
|
961
|
+
```text
|
|
962
|
+
Expected information gain > delegation overhead
|
|
963
|
+
```
|
|
964
|
+
|
|
965
|
+
才 spawn。
|
|
966
|
+
|
|
967
|
+
这不是展示 Agent 数量的产品。
|
|
968
|
+
|
|
969
|
+
---
|
|
970
|
+
|
|
971
|
+
# 23. EventBus 事件
|
|
972
|
+
|
|
973
|
+
新增:
|
|
974
|
+
|
|
975
|
+
```text
|
|
976
|
+
orchestrator.plan.created
|
|
977
|
+
orchestrator.task.dispatched
|
|
978
|
+
orchestrator.task.completed
|
|
979
|
+
orchestrator.task.failed
|
|
980
|
+
orchestrator.artifact.accepted
|
|
981
|
+
orchestrator.artifact.rejected
|
|
982
|
+
orchestrator.merge.completed
|
|
983
|
+
orchestrator.gate.failed
|
|
984
|
+
```
|
|
985
|
+
|
|
986
|
+
每个事件至少包含:
|
|
987
|
+
|
|
988
|
+
```text
|
|
989
|
+
run_id
|
|
990
|
+
task_id
|
|
991
|
+
role_profile
|
|
992
|
+
capability
|
|
993
|
+
status
|
|
994
|
+
cost/latency when available
|
|
995
|
+
```
|
|
996
|
+
|
|
997
|
+
Dashboard 显示 DAG,而不是“八个头像都亮了”。
|
|
998
|
+
|
|
999
|
+
---
|
|
1000
|
+
|
|
1001
|
+
# 24. Role Registry
|
|
1002
|
+
|
|
1003
|
+
新增:
|
|
1004
|
+
|
|
1005
|
+
```text
|
|
1006
|
+
skill/roles/registry.yaml
|
|
1007
|
+
```
|
|
1008
|
+
|
|
1009
|
+
建议结构:
|
|
1010
|
+
|
|
1011
|
+
```yaml
|
|
1012
|
+
roles:
|
|
1013
|
+
skeptic:
|
|
1014
|
+
class: scientific_authority
|
|
1015
|
+
duties:
|
|
1016
|
+
- contradiction_sufficiency
|
|
1017
|
+
- scope_challenge
|
|
1018
|
+
capabilities:
|
|
1019
|
+
- contradiction_analysis
|
|
1020
|
+
spawn_policy: independent_when_M_or_L
|
|
1021
|
+
independence: context
|
|
1022
|
+
|
|
1023
|
+
method-reviewer:
|
|
1024
|
+
class: scientific_authority
|
|
1025
|
+
duties:
|
|
1026
|
+
- study_methodology
|
|
1027
|
+
capabilities:
|
|
1028
|
+
- methodology_audit
|
|
1029
|
+
spawn_policy: when_methodology_material
|
|
1030
|
+
|
|
1031
|
+
evidence-judge:
|
|
1032
|
+
class: scientific_authority
|
|
1033
|
+
duties:
|
|
1034
|
+
- bounded_decision
|
|
1035
|
+
capabilities:
|
|
1036
|
+
- adjudication
|
|
1037
|
+
spawn_policy: separate_for_high_impact
|
|
1038
|
+
|
|
1039
|
+
evidence-retriever:
|
|
1040
|
+
class: worker_profile
|
|
1041
|
+
capabilities:
|
|
1042
|
+
- retrieve
|
|
1043
|
+
- fetch
|
|
1044
|
+
spawn_policy: parallel_when_search_space_decomposable
|
|
1045
|
+
```
|
|
1046
|
+
|
|
1047
|
+
Registry 是 runtime source of truth。
|
|
1048
|
+
|
|
1049
|
+
`skill/agents/*.md` 暂时作为 detailed profile / compatibility layer。
|
|
1050
|
+
|
|
1051
|
+
---
|
|
1052
|
+
|
|
1053
|
+
# 25. `skill/agents` 迁移策略
|
|
1054
|
+
|
|
1055
|
+
Phase 1:
|
|
1056
|
+
|
|
1057
|
+
```text
|
|
1058
|
+
不改路径
|
|
1059
|
+
新增 Role Registry
|
|
1060
|
+
SKILL.md 改用“role profile”语言
|
|
1061
|
+
```
|
|
1062
|
+
|
|
1063
|
+
Phase 2:
|
|
1064
|
+
|
|
1065
|
+
```text
|
|
1066
|
+
新增 skill/roles/
|
|
1067
|
+
旧 skill/agents/ 变兼容 shim / alias
|
|
1068
|
+
integrations/agent_mcp.py 改读取 registry
|
|
1069
|
+
```
|
|
1070
|
+
|
|
1071
|
+
Phase 3:
|
|
1072
|
+
|
|
1073
|
+
```text
|
|
1074
|
+
所有内部引用迁移完成后
|
|
1075
|
+
决定是否删除 agents 命名
|
|
1076
|
+
```
|
|
1077
|
+
|
|
1078
|
+
避免一次大改破坏 Agent MCP approval / tests。
|
|
1079
|
+
|
|
1080
|
+
---
|
|
1081
|
+
|
|
1082
|
+
# 26. ExecutionPlan Artifact
|
|
1083
|
+
|
|
1084
|
+
每次运行保存:
|
|
1085
|
+
|
|
1086
|
+
```text
|
|
1087
|
+
runs/<RUN>/execution-plan.json
|
|
1088
|
+
```
|
|
1089
|
+
|
|
1090
|
+
示例:
|
|
1091
|
+
|
|
1092
|
+
```json
|
|
1093
|
+
{
|
|
1094
|
+
"complexity": "L",
|
|
1095
|
+
"workflow": "evidence-review",
|
|
1096
|
+
"nodes": [
|
|
1097
|
+
{"id":"frame","mode":"local"},
|
|
1098
|
+
{"id":"retrieve-direct","mode":"worker","parallel_group":"R1"},
|
|
1099
|
+
{"id":"retrieve-counter","mode":"worker","parallel_group":"R1"},
|
|
1100
|
+
{"id":"extract","mode":"local_or_batch_worker"},
|
|
1101
|
+
{"id":"skeptic","mode":"worker","independent":true},
|
|
1102
|
+
{"id":"audit","mode":"worker"},
|
|
1103
|
+
{"id":"adjudicate","mode":"judge"}
|
|
1104
|
+
]
|
|
1105
|
+
}
|
|
1106
|
+
```
|
|
1107
|
+
|
|
1108
|
+
这样每次“为什么派了 4 个 Agent”都有可审计答案。
|
|
1109
|
+
|
|
1110
|
+
---
|
|
1111
|
+
|
|
1112
|
+
# 27. 多代理 Benchmark
|
|
1113
|
+
|
|
1114
|
+
不要只测最终答案。
|
|
1115
|
+
|
|
1116
|
+
新增 orchestration 指标:
|
|
1117
|
+
|
|
1118
|
+
```text
|
|
1119
|
+
Duplicate Search Rate
|
|
1120
|
+
Coverage Gain per Worker
|
|
1121
|
+
Unique Eligible Evidence per Worker
|
|
1122
|
+
Coordination Token Cost
|
|
1123
|
+
Worker Failure Recovery Rate
|
|
1124
|
+
Artifact Acceptance Rate
|
|
1125
|
+
Parallel Speedup
|
|
1126
|
+
Cross-Worker Contradiction Yield
|
|
1127
|
+
Judge Dependency on Unvalidated Text = 0
|
|
1128
|
+
Canonical State Conflict = 0
|
|
1129
|
+
```
|
|
1130
|
+
|
|
1131
|
+
重点指标:
|
|
1132
|
+
|
|
1133
|
+
```text
|
|
1134
|
+
Marginal Evidence Gain / Added Cost
|
|
1135
|
+
```
|
|
1136
|
+
|
|
1137
|
+
如果 4 worker 相比 2 worker:
|
|
1138
|
+
|
|
1139
|
+
```text
|
|
1140
|
+
cost +90%
|
|
1141
|
+
evidence gain +3%
|
|
1142
|
+
```
|
|
1143
|
+
|
|
1144
|
+
则 4 worker 拓扑应被 autoresearch 淘汰。
|
|
1145
|
+
|
|
1146
|
+
---
|
|
1147
|
+
|
|
1148
|
+
# 28. Orchestration Autoresearch
|
|
1149
|
+
|
|
1150
|
+
Outer Loop 可以自动实验:
|
|
1151
|
+
|
|
1152
|
+
```text
|
|
1153
|
+
2 vs 3 retrieval workers
|
|
1154
|
+
按 provider 拆 vs 按 evidence axis 拆
|
|
1155
|
+
是否独立 Skeptic
|
|
1156
|
+
何时启用 Method Reviewer
|
|
1157
|
+
哪个 complexity threshold 值得 spawn
|
|
1158
|
+
context bundle 大小
|
|
1159
|
+
TaskSpec wording
|
|
1160
|
+
```
|
|
1161
|
+
|
|
1162
|
+
但评价目标是:
|
|
1163
|
+
|
|
1164
|
+
```text
|
|
1165
|
+
科学质量
|
|
1166
|
+
+ unique evidence gain
|
|
1167
|
+
+ robustness
|
|
1168
|
+
+ cost
|
|
1169
|
+
```
|
|
1170
|
+
|
|
1171
|
+
不是“更多 Agent”。
|
|
1172
|
+
|
|
1173
|
+
---
|
|
1174
|
+
|
|
1175
|
+
# 29. 默认最终拓扑
|
|
1176
|
+
|
|
1177
|
+
```text
|
|
1178
|
+
User
|
|
1179
|
+
│
|
|
1180
|
+
▼
|
|
1181
|
+
Lead Researcher
|
|
1182
|
+
│
|
|
1183
|
+
Workflow + Complexity
|
|
1184
|
+
│
|
|
1185
|
+
Capability DAG
|
|
1186
|
+
│
|
|
1187
|
+
┌─────────────┴─────────────┐
|
|
1188
|
+
│ │
|
|
1189
|
+
Local Delegated
|
|
1190
|
+
Capability TaskSpec
|
|
1191
|
+
│ │
|
|
1192
|
+
│ Agent MCP safe_spawn
|
|
1193
|
+
│ │
|
|
1194
|
+
│ Worker Pool
|
|
1195
|
+
│ │
|
|
1196
|
+
└─────────────┬─────────────┘
|
|
1197
|
+
▼
|
|
1198
|
+
Staging Artifacts
|
|
1199
|
+
│
|
|
1200
|
+
Schema + Provenance Gate
|
|
1201
|
+
│
|
|
1202
|
+
Scientific Gates
|
|
1203
|
+
│
|
|
1204
|
+
▼
|
|
1205
|
+
Single Writer Engine
|
|
1206
|
+
│
|
|
1207
|
+
Graph Revision
|
|
1208
|
+
│
|
|
1209
|
+
Skeptic / Method Review
|
|
1210
|
+
│
|
|
1211
|
+
▼
|
|
1212
|
+
Evidence Judge
|
|
1213
|
+
│
|
|
1214
|
+
DecisionSnapshot
|
|
1215
|
+
```
|
|
1216
|
+
|
|
1217
|
+
---
|
|
1218
|
+
|
|
1219
|
+
# 30. 最终规则
|
|
1220
|
+
|
|
1221
|
+
1. **9 步协议是流程,不是 9 个 Agent。**
|
|
1222
|
+
2. **8 个现有 role profile 不是 8 个常驻子代理。**
|
|
1223
|
+
3. **Capability 是可复用能力,不是组织结构。**
|
|
1224
|
+
4. **Subagent 是按需 runtime worker。**
|
|
1225
|
+
5. **只并行真正独立的工作。**
|
|
1226
|
+
6. **主 Agent/Lead 保持唯一 workflow control。**
|
|
1227
|
+
7. **Canonical state 单写者。**
|
|
1228
|
+
8. **子代理只返回 staging artifacts。**
|
|
1229
|
+
9. **高影响 Challenge / Audit / Verdict 才强调独立性。**
|
|
1230
|
+
10. **模型/CLI 只是 adapter,继续由 approval + safe_spawn 控制。**
|
|
1231
|
+
11. **多代理是否值得,用 benchmark 测,不靠视觉上“很 Agentic”。**
|
|
1232
|
+
12. **Autoresearch 可以优化编排策略,但不能修改科学不变量。**
|
|
1233
|
+
|
|
1234
|
+
---
|
|
1235
|
+
|
|
1236
|
+
# 31. 外部架构依据
|
|
1237
|
+
|
|
1238
|
+
本模型吸收但不照搬以下实践:
|
|
1239
|
+
|
|
1240
|
+
- Anthropic Multi-Agent Research:使用 orchestrator-worker,Lead 规划并派发明确边界的独立搜索任务;其公开复盘特别强调,模糊 delegation 会导致 worker 重复搜索、遗漏和 coordination overhead。
|
|
1241
|
+
- OpenAI Practical Guide to Building Agents:优先从单 Agent 开始,只有逻辑复杂度、工具重叠或独立专业化真正需要时进入 multi-agent;需要统一用户控制时使用 manager pattern。
|
|
1242
|
+
- Anthropic Long-running Harness:把 planner / generator / evaluator 的责任分开,并通过结构化 artifact 做跨阶段 handoff,而不是传递无限自然语言上下文。
|
|
1243
|
+
|
|
1244
|
+
EduEvidence 在此基础上进一步增加科学研究特有约束:
|
|
1245
|
+
|
|
1246
|
+
```text
|
|
1247
|
+
provenance
|
|
1248
|
+
evidence append-only
|
|
1249
|
+
scientific independence
|
|
1250
|
+
single canonical writer
|
|
1251
|
+
protected evaluator
|
|
1252
|
+
```
|
|
1253
|
+
|
|
1254
|
+
这使多代理只是执行增强,不成为科学真理来源。
|