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.
Files changed (386) hide show
  1. package/CONTRIBUTING.md +105 -0
  2. package/README.md +142 -75
  3. package/README.zh-CN.md +73 -30
  4. package/SKILL.md +397 -131
  5. package/agents/openai.yaml +4 -0
  6. package/assets/readme/controlled-execution.svg +34 -0
  7. package/assets/readme/landing-tour.gif +0 -0
  8. package/assets/readme/logo.png +0 -0
  9. package/assets/readme/research-workflow.svg +56 -0
  10. package/assets/readme/studio-graph.png +0 -0
  11. package/assets/readme/studio-overview.png +0 -0
  12. package/assets/readme/studio-reports.png +0 -0
  13. package/assets/readme/studio-tour.gif +0 -0
  14. package/autoevolve/config.yaml +17 -0
  15. package/autoevolve/program.md +25 -0
  16. package/autoevolve/protected.manifest.yaml +34 -0
  17. package/benchmarks/adversarial/cases.jsonl +7 -0
  18. package/benchmarks/evidence-library.json +5268 -0
  19. package/benchmarks/partitions.json +8 -0
  20. package/bin/eduevidence.js +2 -1
  21. package/docs/architecture.md +496 -0
  22. package/docs/autoresearch-evolution-plan.md +2903 -0
  23. package/docs/autoresearch-implementation-status.md +101 -0
  24. package/docs/demo-storyboard.md +20 -0
  25. package/docs/demo-workplace-ai.md +92 -0
  26. package/docs/demo.md +32 -0
  27. package/docs/install-guide.md +150 -0
  28. package/docs/orchestration-role-model.md +1254 -0
  29. package/docs/release-closeout/README.md +17 -0
  30. package/docs/release-closeout/frontend-acceptance.md +23 -0
  31. package/docs/release-closeout/issues.md +19 -0
  32. package/docs/release-closeout/verification.md +28 -0
  33. package/docs/release-contract.md +108 -0
  34. package/docs/research-studio-guide.zh-CN.md +166 -0
  35. package/docs/sciverse-api.md +125 -0
  36. package/eduevidence_cli.py +29 -13
  37. package/engine/_resources.py +13 -0
  38. package/engine/autoevolve/__init__.py +3 -0
  39. package/engine/autoevolve/agent_view.py +167 -0
  40. package/engine/autoevolve/core.py +357 -0
  41. package/engine/autoevolve/events.py +11 -0
  42. package/engine/autoevolve/git_workspace.py +77 -0
  43. package/engine/autoevolve/projection.py +23 -0
  44. package/engine/autoevolve/runner.py +413 -0
  45. package/engine/autoevolve/trust.py +146 -0
  46. package/engine/autoresearch/__init__.py +6 -0
  47. package/engine/autoresearch/commit.py +132 -0
  48. package/engine/autoresearch/contracts.py +126 -0
  49. package/engine/autoresearch/controller.py +207 -0
  50. package/engine/autoresearch/events.py +12 -0
  51. package/engine/autoresearch/gap_priority.py +168 -0
  52. package/engine/autoresearch/projection.py +30 -0
  53. package/engine/autoresearch/research_memory.py +59 -0
  54. package/engine/autoresearch/saturation.py +91 -0
  55. package/engine/briefs.py +2 -1
  56. package/engine/capabilities.py +1 -0
  57. package/engine/contracts.py +3 -1
  58. package/engine/decision_policy.py +96 -0
  59. package/engine/evidence_graph.py +14 -10
  60. package/engine/evidencecore.py +7 -5
  61. package/engine/gaps.py +132 -73
  62. package/engine/ids.py +2 -0
  63. package/engine/judge_pack.py +65 -0
  64. package/engine/library.py +6 -2
  65. package/engine/library_builtin.py +3 -1
  66. package/engine/living.py +36 -5
  67. package/engine/meta_synthesis.py +3 -1
  68. package/engine/migration.py +88 -3
  69. package/engine/orchestration.py +460 -0
  70. package/engine/paths.py +2 -0
  71. package/engine/pilot.py +36 -33
  72. package/engine/project.py +2 -2
  73. package/engine/research_service.py +113 -0
  74. package/engine/studio_read_model.py +400 -0
  75. package/engine/taxonomy.py +211 -0
  76. package/engine/tribunal.py +44 -33
  77. package/engine/update.py +1 -0
  78. package/engine/versions.py +1 -1
  79. package/engine/worker_result.py +109 -0
  80. package/engine/workflows.py +70 -0
  81. package/examples/ai-coding-assistant-evidence/EduEvidence_Report.html +2934 -0
  82. package/examples/ai-coding-assistant-evidence/artifact_manifest.json +15 -0
  83. package/examples/ai-coding-assistant-evidence/citation_check.json +79 -0
  84. package/examples/ai-coding-assistant-evidence/claims.jsonl +12 -0
  85. package/examples/ai-coding-assistant-evidence/evaluation.json +35 -0
  86. package/examples/ai-coding-assistant-evidence/evidence.jsonl +12 -0
  87. package/examples/ai-coding-assistant-evidence/final_verdict.json +107 -0
  88. package/examples/ai-coding-assistant-evidence/frame.json +48 -0
  89. package/examples/ai-coding-assistant-evidence/gate_report.json +101 -0
  90. package/examples/ai-coding-assistant-evidence/intervention.json +51 -0
  91. package/examples/ai-coding-assistant-evidence/methodology.json +36 -0
  92. package/examples/ai-coding-assistant-evidence/raw_verdict.json +86 -0
  93. package/examples/ai-coding-assistant-evidence/report_spec.json +230 -0
  94. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_academic.html +2934 -0
  95. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_claude.html +2934 -0
  96. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab-dark.html +2934 -0
  97. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_datalab.html +2934 -0
  98. package/examples/ai-coding-assistant-evidence/reports-5themes/EduEvidence_Report_presentation.html +2934 -0
  99. package/examples/ai-coding-assistant-evidence/reports-5themes/report_academic.html +2934 -0
  100. package/examples/ai-coding-assistant-evidence/reports-5themes/report_claude.html +2934 -0
  101. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab-dark.html +2934 -0
  102. package/examples/ai-coding-assistant-evidence/reports-5themes/report_datalab.html +2934 -0
  103. package/examples/ai-coding-assistant-evidence/reports-5themes/report_presentation.html +2934 -0
  104. package/examples/ai-coding-assistant-evidence/result.json +1457 -0
  105. package/examples/ai-coding-assistant-evidence/result.zh.json +1457 -0
  106. package/examples/ai-coding-assistant-evidence/skeptic.json +72 -0
  107. package/examples/ai-coding-assistant-evidence/sources.jsonl +8 -0
  108. package/examples/ai-coding-assistant-evidence/verdict.json +107 -0
  109. package/examples/spaced-retrieval-practice/applicability.json +14 -0
  110. package/examples/spaced-retrieval-practice/artifact_manifest.json +15 -0
  111. package/examples/spaced-retrieval-practice/claims.jsonl +3 -0
  112. package/examples/spaced-retrieval-practice/evidence.jsonl +6 -0
  113. package/examples/spaced-retrieval-practice/final_verdict.json +93 -0
  114. package/examples/spaced-retrieval-practice/frame.json +58 -0
  115. package/examples/spaced-retrieval-practice/gate_report.json +101 -0
  116. package/examples/spaced-retrieval-practice/methodology.json +78 -0
  117. package/examples/spaced-retrieval-practice/report_spec.json +212 -0
  118. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_academic.html +2728 -0
  119. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_claude.html +2728 -0
  120. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab-dark.html +2728 -0
  121. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_datalab.html +2728 -0
  122. package/examples/spaced-retrieval-practice/reports-5themes/EduEvidence_Report_presentation.html +2728 -0
  123. package/examples/spaced-retrieval-practice/reports-5themes/report_academic.html +2728 -0
  124. package/examples/spaced-retrieval-practice/reports-5themes/report_claude.html +2728 -0
  125. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab-dark.html +2728 -0
  126. package/examples/spaced-retrieval-practice/reports-5themes/report_datalab.html +2728 -0
  127. package/examples/spaced-retrieval-practice/reports-5themes/report_presentation.html +2728 -0
  128. package/examples/spaced-retrieval-practice/result.json +942 -0
  129. package/examples/spaced-retrieval-practice/result.zh.json +942 -0
  130. package/examples/spaced-retrieval-practice/skeptic.json +70 -0
  131. package/examples/spaced-retrieval-practice/sources.jsonl +7 -0
  132. package/examples/spaced-retrieval-practice/verdict.json +93 -0
  133. package/examples/workplace-ai-assistant/artifact_manifest.json +15 -0
  134. package/examples/workplace-ai-assistant/claims.jsonl +4 -0
  135. package/examples/workplace-ai-assistant/evaluation.json +19 -0
  136. package/examples/workplace-ai-assistant/evidence.jsonl +4 -0
  137. package/examples/workplace-ai-assistant/evidence_graph.json +444 -0
  138. package/examples/workplace-ai-assistant/final_verdict.json +78 -0
  139. package/examples/workplace-ai-assistant/frame.json +41 -0
  140. package/examples/workplace-ai-assistant/gate_report.json +101 -0
  141. package/examples/workplace-ai-assistant/intervention.json +27 -0
  142. package/examples/workplace-ai-assistant/legacy-link-check.json +16 -0
  143. package/examples/workplace-ai-assistant/methodology.json +60 -0
  144. package/examples/workplace-ai-assistant/report_spec.json +224 -0
  145. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_academic.html +2814 -0
  146. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_claude.html +2814 -0
  147. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab-dark.html +2814 -0
  148. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_datalab.html +2814 -0
  149. package/examples/workplace-ai-assistant/reports-5themes/EduEvidence_Report_presentation.html +2814 -0
  150. package/examples/workplace-ai-assistant/reports-5themes/report_academic.html +2814 -0
  151. package/examples/workplace-ai-assistant/reports-5themes/report_claude.html +2814 -0
  152. package/examples/workplace-ai-assistant/reports-5themes/report_datalab-dark.html +2814 -0
  153. package/examples/workplace-ai-assistant/reports-5themes/report_datalab.html +2814 -0
  154. package/examples/workplace-ai-assistant/reports-5themes/report_presentation.html +2814 -0
  155. package/examples/workplace-ai-assistant/result.json +615 -0
  156. package/examples/workplace-ai-assistant/result.zh.json +615 -0
  157. package/examples/workplace-ai-assistant/search_log.json +19 -0
  158. package/examples/workplace-ai-assistant/skeptic.json +72 -0
  159. package/examples/workplace-ai-assistant/sources.jsonl +3 -0
  160. package/examples/workplace-ai-assistant/validation_result.json +9 -0
  161. package/examples/workplace-ai-assistant/verdict.json +78 -0
  162. package/install.sh +7 -7
  163. package/integrations/agent_mcp.py +2 -2
  164. package/integrations/orchestration_dispatch.py +146 -0
  165. package/package.json +46 -3
  166. package/pyproject.toml +14 -22
  167. package/references/autoresearch.md +30 -0
  168. package/references/evaluation-policy.md +24 -0
  169. package/references/orchestration.md +22 -0
  170. package/references/report-copy-style.md +67 -0
  171. package/references/retrieval-compliance.md +75 -0
  172. package/references/retrieval-protocol.md +20 -0
  173. package/references/scientific-invariants.md +19 -0
  174. package/retrieval/audit.py +178 -0
  175. package/retrieval/fetch.py +96 -0
  176. package/retrieval/sciverse.py +398 -0
  177. package/retrieval/search.py +47 -7
  178. package/schemas/applicability.schema.json +94 -0
  179. package/schemas/chart-spec.schema.json +10 -3
  180. package/schemas/evidence.schema.json +316 -43
  181. package/schemas/fetch-result.schema.json +2 -1
  182. package/schemas/intervention.schema.json +106 -21
  183. package/schemas/report-result.schema.json +12 -4
  184. package/schemas/report-spec.schema.json +98 -100
  185. package/schemas/skeptic.schema.json +86 -0
  186. package/schemas/source.schema.json +21 -2
  187. package/schemas/v2/finding.schema.json +5 -1
  188. package/schemas/v2/methodology-audit.schema.json +5 -1
  189. package/schemas/v2/outcome.schema.json +28 -5
  190. package/schemas/v2/project.schema.json +2 -2
  191. package/schemas/v2/run.schema.json +1 -1
  192. package/schemas/v2/study.schema.json +5 -1
  193. package/schemas/vNext/autoevolve-session.schema.json +34 -0
  194. package/schemas/vNext/eval-snapshot.schema.json +77 -0
  195. package/schemas/vNext/execution-plan.schema.json +50 -0
  196. package/schemas/vNext/gap-priority.schema.json +54 -0
  197. package/schemas/vNext/negative-search-record.schema.json +68 -0
  198. package/schemas/vNext/research-iteration.schema.json +87 -0
  199. package/schemas/vNext/research-strategy.schema.json +62 -0
  200. package/schemas/vNext/skill-experiment.schema.json +90 -0
  201. package/schemas/vNext/task-spec.schema.json +156 -0
  202. package/schemas/vNext/worker-result.schema.json +60 -0
  203. package/schemas/verdict.schema.json +164 -28
  204. package/scripts/benchmark_judge.py +2 -2
  205. package/scripts/benchmark_v3.py +26 -43
  206. package/scripts/build_esl_artifacts.py +4 -4
  207. package/scripts/build_evidence_library.py +2 -2
  208. package/scripts/build_gh_pages.py +98 -0
  209. package/scripts/build_readme_diagrams.py +72 -0
  210. package/scripts/build_report_variants.py +101 -0
  211. package/scripts/build_result.py +74 -9
  212. package/scripts/check_autoresearch_invariants.py +95 -0
  213. package/scripts/check_package_parity.py +85 -0
  214. package/scripts/check_protocol_alignment.py +375 -0
  215. package/scripts/check_versioned_schemas.py +254 -0
  216. package/scripts/claim_audit.py +13 -8
  217. package/scripts/compute_confidence.py +10 -0
  218. package/scripts/daily_evolve.py +30 -0
  219. package/scripts/dashboard_server.py +130 -101
  220. package/scripts/did_regression.py +17 -32
  221. package/scripts/enrich_projects_human_and_lieflat.py +1 -1
  222. package/scripts/evidence_score.py +5 -2
  223. package/scripts/generate_metrics.py +4 -3
  224. package/scripts/generate_new_projects.py +5 -5
  225. package/scripts/orchestrator.py +286 -36
  226. package/scripts/pre_verdict_gate.py +224 -26
  227. package/scripts/quickstart.py +18 -2
  228. package/scripts/rebake_all_5themes.py +1 -2
  229. package/scripts/research_auto_cli.py +475 -0
  230. package/scripts/run_workspace.py +24 -8
  231. package/scripts/search_provenance.py +64 -0
  232. package/scripts/serve_web.py +9 -10
  233. package/scripts/skill_lint.py +1 -1
  234. package/scripts/skill_payload.py +81 -0
  235. package/scripts/test_adversarial_empirical.py +26 -19
  236. package/scripts/validate_schema.py +46 -2
  237. package/scripts/vnext_cli.py +133 -0
  238. package/setup.py +12 -0
  239. package/skill/agents/evaluation-designer.md +20 -4
  240. package/skill/agents/evidence-analyst.md +19 -3
  241. package/skill/agents/evidence-judge.md +50 -2
  242. package/skill/agents/evidence-retriever.md +20 -3
  243. package/skill/agents/intervention-designer.md +20 -4
  244. package/skill/agents/method-reviewer.md +18 -2
  245. package/skill/agents/{education-planner.md → research-planner.md} +19 -3
  246. package/skill/agents/skeptic.md +18 -2
  247. package/skill/roles/registry.yaml +45 -0
  248. package/skill/sub-skills/aihot-trend-analysis/SKILL.md +28 -9
  249. package/skill/sub-skills/contradiction-analysis/SKILL.md +31 -11
  250. package/skill/sub-skills/data-analysis/SKILL.md +34 -15
  251. package/skill/sub-skills/ethics-review/SKILL.md +33 -10
  252. package/skill/sub-skills/evidence-extraction/SKILL.md +29 -11
  253. package/skill/sub-skills/evidence-review/SKILL.md +31 -12
  254. package/skill/sub-skills/gap-analysis/SKILL.md +31 -9
  255. package/skill/sub-skills/literature-review/SKILL.md +35 -14
  256. package/skill/sub-skills/methodology-audit/SKILL.md +29 -12
  257. package/skill/sub-skills/report-generation/SKILL.md +40 -6
  258. package/skill/sub-skills/research-planning/SKILL.md +41 -14
  259. package/skill/sub-skills/study-design/SKILL.md +30 -9
  260. package/skill/task-briefs/adjudicate.md +32 -7
  261. package/skill/task-briefs/applicability.md +38 -0
  262. package/skill/task-briefs/audit.md +32 -7
  263. package/skill/task-briefs/challenge.md +34 -5
  264. package/skill/task-briefs/evaluate.md +30 -5
  265. package/skill/task-briefs/extract.md +31 -8
  266. package/skill/task-briefs/frame.md +39 -10
  267. package/skill/task-briefs/intervene.md +32 -6
  268. package/skill/task-briefs/present.md +32 -8
  269. package/skill/task-briefs/projection.md +37 -0
  270. package/skill/task-briefs/retrieve.md +36 -6
  271. package/skill/workflows/decision-and-pilot.md +85 -0
  272. package/skill/workflows/evaluate-and-update.md +93 -0
  273. package/skill/workflows/evidence-review.md +117 -0
  274. package/visualization/eduevidence-report/assets/base.css +2 -2
  275. package/visualization/eduevidence-report/assets/reader.css +752 -0
  276. package/visualization/eduevidence-report/assets/reader.js +132 -0
  277. package/visualization/eduevidence-report/references/chart-selection-catalog.md +109 -0
  278. package/visualization/eduevidence-report/references/lieflat-composition.md +3 -1
  279. package/visualization/eduevidence-report/scripts/build_figures.py +25 -3
  280. package/visualization/eduevidence-report/scripts/build_infographics.py +5 -1
  281. package/visualization/eduevidence-report/scripts/build_report.py +561 -121
  282. package/visualization/eduevidence-report/scripts/charts_data.py +2 -0
  283. package/visualization/eduevidence-report/scripts/lieflat_engine.py +371 -136
  284. package/visualization/eduevidence-report/scripts/zh_labels.py +80 -1
  285. package/visualization/eduevidence-report/themes/academic.css +1 -1
  286. package/visualization/eduevidence-report/themes/claude.css +1 -1
  287. package/visualization/eduevidence-report/themes/datalab-dark.css +2 -2
  288. package/visualization/eduevidence-report/themes/datalab.css +2 -2
  289. package/visualization/eduevidence-report/themes/presentation.css +2 -2
  290. package/web/README.md +18 -0
  291. package/web/architecture.html +14885 -0
  292. package/web/index.html +53 -0
  293. package/web/studio/THIRD_PARTY_LICENSES.txt +146 -0
  294. package/web/studio/assets/index-B8tkF44Q.css +1 -0
  295. package/web/studio/assets/index-CQ6Keoyc.js +230 -0
  296. package/web/studio/config.json +1 -0
  297. package/web/studio/index.html +14 -0
  298. package/engine/__pycache__/__init__.cpython-312.pyc +0 -0
  299. package/engine/__pycache__/analysis.cpython-312.pyc +0 -0
  300. package/engine/__pycache__/bias.cpython-312.pyc +0 -0
  301. package/engine/__pycache__/briefs.cpython-312.pyc +0 -0
  302. package/engine/__pycache__/capabilities.cpython-312.pyc +0 -0
  303. package/engine/__pycache__/citation_check.cpython-312.pyc +0 -0
  304. package/engine/__pycache__/contracts.cpython-312.pyc +0 -0
  305. package/engine/__pycache__/datasets.cpython-312.pyc +0 -0
  306. package/engine/__pycache__/events.cpython-312.pyc +0 -0
  307. package/engine/__pycache__/evidence_graph.cpython-312.pyc +0 -0
  308. package/engine/__pycache__/evidence_review.cpython-312.pyc +0 -0
  309. package/engine/__pycache__/evidencecore.cpython-312.pyc +0 -0
  310. package/engine/__pycache__/gap_lens.cpython-312.pyc +0 -0
  311. package/engine/__pycache__/gaps.cpython-312.pyc +0 -0
  312. package/engine/__pycache__/graph_store.cpython-312.pyc +0 -0
  313. package/engine/__pycache__/graph_validate.cpython-312.pyc +0 -0
  314. package/engine/__pycache__/ids.cpython-312.pyc +0 -0
  315. package/engine/__pycache__/library.cpython-312.pyc +0 -0
  316. package/engine/__pycache__/library_builtin.cpython-312.pyc +0 -0
  317. package/engine/__pycache__/living.cpython-312.pyc +0 -0
  318. package/engine/__pycache__/log.cpython-312.pyc +0 -0
  319. package/engine/__pycache__/meta_analysis.cpython-312.pyc +0 -0
  320. package/engine/__pycache__/meta_synthesis.cpython-312.pyc +0 -0
  321. package/engine/__pycache__/migration.cpython-312.pyc +0 -0
  322. package/engine/__pycache__/mode_router.cpython-312.pyc +0 -0
  323. package/engine/__pycache__/paths.cpython-312.pyc +0 -0
  324. package/engine/__pycache__/pilot.cpython-312.pyc +0 -0
  325. package/engine/__pycache__/planner.cpython-312.pyc +0 -0
  326. package/engine/__pycache__/project.cpython-312.pyc +0 -0
  327. package/engine/__pycache__/projections.cpython-312.pyc +0 -0
  328. package/engine/__pycache__/robustness.cpython-312.pyc +0 -0
  329. package/engine/__pycache__/run.cpython-312.pyc +0 -0
  330. package/engine/__pycache__/semantics.cpython-312.pyc +0 -0
  331. package/engine/__pycache__/study_design.cpython-312.pyc +0 -0
  332. package/engine/__pycache__/synthesis.cpython-312.pyc +0 -0
  333. package/engine/__pycache__/tribunal.cpython-312.pyc +0 -0
  334. package/engine/__pycache__/update.cpython-312.pyc +0 -0
  335. package/engine/__pycache__/versions.cpython-312.pyc +0 -0
  336. package/integrations/__pycache__/__init__.cpython-312.pyc +0 -0
  337. package/integrations/__pycache__/agent_mcp.cpython-312.pyc +0 -0
  338. package/integrations/__pycache__/smart_web_fetch.cpython-312.pyc +0 -0
  339. package/retrieval/__pycache__/__init__.cpython-312.pyc +0 -0
  340. package/retrieval/__pycache__/corpus_store.cpython-312.pyc +0 -0
  341. package/retrieval/__pycache__/dedupe.cpython-312.pyc +0 -0
  342. package/retrieval/__pycache__/failures.cpython-312.pyc +0 -0
  343. package/retrieval/__pycache__/fetch.cpython-312.pyc +0 -0
  344. package/retrieval/__pycache__/search.cpython-312.pyc +0 -0
  345. package/retrieval/__pycache__/source.cpython-312.pyc +0 -0
  346. package/retrieval/__pycache__/validate.cpython-312.pyc +0 -0
  347. package/scripts/__pycache__/__init__.cpython-312.pyc +0 -0
  348. package/scripts/__pycache__/benchmark.cpython-312.pyc +0 -0
  349. package/scripts/__pycache__/benchmark_evaluator.cpython-312.pyc +0 -0
  350. package/scripts/__pycache__/benchmark_judge.cpython-312.pyc +0 -0
  351. package/scripts/__pycache__/benchmark_routing.cpython-312.pyc +0 -0
  352. package/scripts/__pycache__/benchmark_v2.cpython-312.pyc +0 -0
  353. package/scripts/__pycache__/benchmark_v3.cpython-312.pyc +0 -0
  354. package/scripts/__pycache__/build_result.cpython-312.pyc +0 -0
  355. package/scripts/__pycache__/claim_audit.cpython-312.pyc +0 -0
  356. package/scripts/__pycache__/complexity_gate.cpython-312.pyc +0 -0
  357. package/scripts/__pycache__/compute_confidence.cpython-312.pyc +0 -0
  358. package/scripts/__pycache__/dashboard_server.cpython-312.pyc +0 -0
  359. package/scripts/__pycache__/did_regression.cpython-312.pyc +0 -0
  360. package/scripts/__pycache__/effect_calculator.cpython-312.pyc +0 -0
  361. package/scripts/__pycache__/evidence_matrix.cpython-312.pyc +0 -0
  362. package/scripts/__pycache__/evidence_score.cpython-312.pyc +0 -0
  363. package/scripts/__pycache__/evidence_semantics.cpython-312.pyc +0 -0
  364. package/scripts/__pycache__/fetch_benchmark.cpython-312.pyc +0 -0
  365. package/scripts/__pycache__/lint_report_layout.cpython-312.pyc +0 -0
  366. package/scripts/__pycache__/orchestrator.cpython-312.pyc +0 -0
  367. package/scripts/__pycache__/pre_verdict_gate.cpython-312.pyc +0 -0
  368. package/scripts/__pycache__/recompute_demo_quality.cpython-312.pyc +0 -0
  369. package/scripts/__pycache__/render_report.cpython-312.pyc +0 -0
  370. package/scripts/__pycache__/render_report_html.cpython-312.pyc +0 -0
  371. package/scripts/__pycache__/run_workspace.cpython-312.pyc +0 -0
  372. package/scripts/__pycache__/skill_lint.cpython-312.pyc +0 -0
  373. package/scripts/__pycache__/startup_probe.cpython-312.pyc +0 -0
  374. package/scripts/__pycache__/sync_killer_demo_report.cpython-312.pyc +0 -0
  375. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.0.2.pyc +0 -0
  376. package/scripts/__pycache__/test_adversarial_empirical.cpython-312-pytest-9.1.1.pyc +0 -0
  377. package/scripts/__pycache__/validate_schema.cpython-312.pyc +0 -0
  378. package/visualization/eduevidence-report/scripts/__pycache__/adapter_contract.cpython-312.pyc +0 -0
  379. package/visualization/eduevidence-report/scripts/__pycache__/build_artifact_manifest.cpython-312.pyc +0 -0
  380. package/visualization/eduevidence-report/scripts/__pycache__/build_charts.cpython-312.pyc +0 -0
  381. package/visualization/eduevidence-report/scripts/__pycache__/build_figures.cpython-312.pyc +0 -0
  382. package/visualization/eduevidence-report/scripts/__pycache__/build_infographics.cpython-312.pyc +0 -0
  383. package/visualization/eduevidence-report/scripts/__pycache__/build_report.cpython-312.pyc +0 -0
  384. package/visualization/eduevidence-report/scripts/__pycache__/charts_data.cpython-312.pyc +0 -0
  385. package/visualization/eduevidence-report/scripts/__pycache__/lieflat_engine.cpython-312.pyc +0 -0
  386. 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
+ 这使多代理只是执行增强,不成为科学真理来源。