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,2903 @@
1
+ # EduEvidence vNext — Autoresearch 自进化研究系统完整实施计划
2
+
3
+ > 状态:Implementation Blueprint
4
+ > 范围:EduEvidence Skill + Research Engine + Benchmark + Agent MCP 编排 + Living Evidence
5
+ > 配套文档:[`docs/orchestration-role-model.md`](./orchestration-role-model.md)
6
+
7
+ ---
8
+
9
+ # 0. 最终定义
10
+
11
+ EduEvidence 下一阶段不增加一个新的“Autoresearch 用户功能页”,也不把现有研究流程改造成无限自主 Agent。
12
+
13
+ 保持当前三个用户入口:
14
+
15
+ ```text
16
+ Evidence Review
17
+ → Decision & Pilot
18
+ → Evaluate & Update
19
+ ```
20
+
21
+ 保持 Canonical 9-step Protocol:
22
+
23
+ ```text
24
+ Frame → Retrieve → Extract → Challenge → Audit → Adjudicate
25
+ → Applicability → Intervene → Evaluate
26
+ ```
27
+
28
+ 在它们下面增加一个 **Autonomous Research Meta-Layer**,形成三条不同性质的闭环:
29
+
30
+ ```text
31
+ ┌────────────────────────────────────────────────────────────┐
32
+ │ Loop A — Evidence Autoresearch │
33
+ │ “当前决策最值得继续寻找哪一条证据?” │
34
+ │ Gap → Research Hypothesis → Experiment → Evidence Gain │
35
+ │ → GraphRevision → Decision Drift → Next Gap │
36
+ └────────────────────────────────────────────────────────────┘
37
+
38
+ ┌────────────────────────────────────────────────────────────┐
39
+ │ Loop B — Decision-to-Outcome │
40
+ │ “真实 Pilot 数据会不会改变当前决定?” │
41
+ │ Decision → Pilot → Data → Analysis → GraphRevision │
42
+ │ → DecisionSnapshot │
43
+ └────────────────────────────────────────────────────────────┘
44
+
45
+ ┌────────────────────────────────────────────────────────────┐
46
+ │ Loop C — Skill Autoresearch │
47
+ │ “EduEvidence 这个研究系统本身还能不能做得更好?” │
48
+ │ Hypothesis → One Change → Eval → Keep/Revert → Repeat │
49
+ └────────────────────────────────────────────────────────────┘
50
+ ```
51
+
52
+ 三条循环对应三个问题:
53
+
54
+ ```text
55
+ Evidence Loop:我们还缺什么知识?
56
+ Decision Loop:新证据是否改变行动?
57
+ Skill Loop:我们的研究方法本身还能不能更好?
58
+ ```
59
+
60
+ 最终产品定位升级为:
61
+
62
+ > **Living Decision Research Engine**
63
+ > 不只把证据变成决定,还主动判断下一条最值得寻找的证据,并持续验证怎样让研究系统本身变得更好。
64
+
65
+ ---
66
+
67
+ # 1. 核心思想来源
68
+
69
+ ## 1.1 Karpathy autoresearch:吸收“实验组织代码”,不复制训练任务
70
+
71
+ `karpathy/autoresearch` 的关键设计不是“让 AI 一晚上跑很多次”,而是:
72
+
73
+ ```text
74
+ 固定 evaluator
75
+ 固定实验预算
76
+ 限制 mutation surface
77
+ 先跑 baseline
78
+ 一次只改一个核心变量
79
+ 真实运行
80
+ 机械测量
81
+ keep / discard
82
+ append-only 实验日志
83
+ git 作为长期实验记忆
84
+ ```
85
+
86
+ 原版刻意把:
87
+
88
+ ```text
89
+ prepare.py / evaluate_bpb
90
+ ```
91
+
92
+ 冻结,只允许 Agent 修改 `train.py`;每次训练使用固定 5 分钟时间预算,以单一 `val_bpb` 比较,并执行:
93
+
94
+ ```text
95
+ commit
96
+ → run
97
+ → measure
98
+ → keep / reset
99
+ → log
100
+ → next experiment
101
+ ```
102
+
103
+ 其中 `program.md` 本质是“研究组织代码”:人类不是逐次编辑训练代码,而是定义 AI 研究员怎样组织自主实验。
104
+
105
+ EduEvidence 直接吸收以下原则:
106
+
107
+ 1. **Evaluator 与研究对象分离。**
108
+ 2. **Mutation surface 有边界。**
109
+ 3. **Baseline 必跑。**
110
+ 4. **一次实验一个主假设。**
111
+ 5. **失败必须记录。**
112
+ 6. **结果弱而复杂度大,不保留。**
113
+ 7. **实验历史本身是未来推理输入。**
114
+ 8. **循环有预算、Plateau 和停止条件。**
115
+
116
+ 不照搬:
117
+
118
+ ```text
119
+ 单一 score 决定所有研究质量
120
+ validated evidence keep/discard
121
+ 无限运行
122
+ Agent 可改 evaluator
123
+ ```
124
+
125
+ 参考:
126
+ - https://github.com/karpathy/autoresearch
127
+ - https://github.com/karpathy/autoresearch/blob/master/program.md
128
+
129
+ ---
130
+
131
+ ## 1.2 通用 Autoresearch Skill:吸收“薄路由 + 可验证目标 + plateau”
132
+
133
+ 后续通用 autoresearch 实现进一步验证了几个适合 EduEvidence 的工程模式:
134
+
135
+ ```text
136
+ 薄 control-plane Skill
137
+ 子命令 / references 按需加载
138
+ Success predicate
139
+ Round-0 baseline/dry-run
140
+ bounded iteration
141
+ holdout / adversarial verify hop
142
+ Plateau detection
143
+ checkpoint + resumable state
144
+ simplicity criterion
145
+ ```
146
+
147
+ EduEvidence 不复制它的 14 个命令,但采用:
148
+
149
+ ```text
150
+ Control Plane ≠ Detailed Procedures
151
+ ```
152
+
153
+ 这也与当前 Skill 的 progressive loading 方向一致。
154
+
155
+ 参考:
156
+ - https://github.com/uditgoenka/autoresearch
157
+ - https://github.com/uditgoenka/autoresearch/blob/master/guide/autoresearch-orchestrator.md
158
+
159
+ ---
160
+
161
+ ## 1.3 Living Systematic Review:Autoresearch 不能破坏系统综述纪律
162
+
163
+ Cochrane 对 living systematic review 的核心定义是:
164
+
165
+ > Review 持续更新,新证据出现后被识别并纳入,而不是每次重新从零生成一个结论。
166
+
167
+ 这与 EduEvidence 当前 `engine/living.py` 的:
168
+
169
+ ```text
170
+ DecisionSnapshot subscription
171
+ → incremental evidence
172
+ → GraphRevision n+1
173
+ → drift
174
+ ```
175
+
176
+ 高度一致。
177
+
178
+ Autoresearch 不替换 Living Evidence,而是让 Living Evidence 从:
179
+
180
+ ```text
181
+ “监控预设 query terms”
182
+ ```
183
+
184
+ 升级为:
185
+
186
+ ```text
187
+ “根据当前 Evidence Graph / KnowledgeGap / Decision Boundary
188
+ 动态决定下一轮最有价值的检索目标”
189
+ ```
190
+
191
+ 参考:
192
+ - https://training.cochrane.org/handbook/current/chapter-22
193
+
194
+ ---
195
+
196
+ ## 1.4 Active Learning Screening:优化“先看什么”,不能决定“什么是真证据”
197
+
198
+ ASReview 等 active-learning systematic review 工具证明:
199
+
200
+ ```text
201
+ 机器学习可以显著改善 record screening 的排序效率
202
+ ```
203
+
204
+ EduEvidence 可以吸收为:
205
+
206
+ ```text
207
+ Screening Priority
208
+ ```
209
+
210
+ 用于回答:
211
+
212
+ > 下一篇最值得 Fetch / Screen 的候选 Source 是哪一篇?
213
+
214
+ 但严格禁止把 active-learning ranking 直接解释为:
215
+
216
+ ```text
217
+ 证据权重
218
+ 研究质量
219
+ 支持结论概率
220
+ ```
221
+
222
+ Ranking 只优化 screening order。
223
+
224
+ 参考:
225
+ - https://asreview.nl/project/read-the-docs/
226
+
227
+ ---
228
+
229
+ ## 1.5 Value of Information:把“下一步研究什么”连接到 Decision
230
+
231
+ Value of Information 的核心不是“信息越多越好”,而是:
232
+
233
+ > 新信息是否足以减少当前决策的不确定性,从而避免错误行动?
234
+
235
+ 完整 EVPI / EVPPI / EVSI 通常需要明确的 decision model、utility / loss 和概率分布。EduEvidence 当前没有资格默认生成这些正式统计量。
236
+
237
+ 因此 vNext 首先实现:
238
+
239
+ ```text
240
+ Conceptual Decision Value of Information
241
+ ```
242
+
243
+ 简称:
244
+
245
+ ```text
246
+ DVI — Decision Value of Information
247
+ ```
248
+
249
+ 它是**透明的研究优先级启发式**,不是概率、不是效应量、不是正式 EVSI。
250
+
251
+ 只有未来某个项目具备完整 decision-analytic model 时,才允许接入 formal VOI adapter。
252
+
253
+ 参考:
254
+ - https://pubmed.ncbi.nlm.nih.gov/32113617/
255
+ - https://pmc.ncbi.nlm.nih.gov/articles/PMC7613968/
256
+ - https://pubmed.ncbi.nlm.nih.gov/25986471/
257
+
258
+ ---
259
+
260
+ # 2. 三条“宪法级”原则
261
+
262
+ 保留现有:
263
+
264
+ > **Optimize for decision integrity, not answer confidence.**
265
+
266
+ 新增:
267
+
268
+ > **Optimize the research process, never the conclusion.**
269
+
270
+ 新增:
271
+
272
+ > **Every iteration must improve the evidence state, improve the research system, or teach us why an attempted path failed.**
273
+
274
+ 这三条进入 `references/scientific-invariants.md`,并纳入 protected manifest。
275
+
276
+ ---
277
+
278
+ # 3. 当前仓库的可复用地基
279
+
280
+ 本次不是重建。
281
+
282
+ 现有模块直接复用:
283
+
284
+ | 当前能力 | 文件/目录 | vNext 用途 |
285
+ |---|---|---|
286
+ | Canonical 9-step | `docs/architecture.md` | 不变 |
287
+ | Project/Run/Revision/DecisionSnapshot | `engine/` | 继续作为 canonical state |
288
+ | Immutable Graph Revision | `engine/graph_store.py` | Evidence Autoresearch 的写入基础 |
289
+ | KnowledgeGap derivation | `engine/gaps.py` | 加 DVI / lifecycle,不替换原推导 |
290
+ | Study Design grounding | `engine/study_design.py` | Search saturation → Pilot 的硬 gate |
291
+ | Pilot reinjection | `engine/pilot.py` / `engine/update.py` | Decision-to-Outcome Loop |
292
+ | Living Evidence | `engine/living.py` | Evidence Autoresearch 的增量 ingestion 基础 |
293
+ | Decision adjudication | `engine/tribunal.py` | 新 GraphRevision 后重算 |
294
+ | EventBus | `engine/events.py` | Autoresearch 全过程事件流 |
295
+ | Agent MCP adapter | `integrations/agent_mcp.py` | bounded worker dispatch |
296
+ | `safe_spawn()` | `integrations/agent_mcp.py` | 唯一多代理派发入口继续保留 |
297
+ | S/M/L Complexity | `scripts/complexity_gate.py` | ExecutionPlanner 输入 |
298
+ | 30 题 Benchmark | `benchmarks/questions.jsonl` | DEV eval 起点 |
299
+ | Gold annotations | `benchmarks/annotations/` | scientific eval 起点 |
300
+ | Empirical benchmark | `benchmarks/empirical/` | Outer Loop 真实评估 |
301
+ | Graph deterministic metrics | `benchmarks/evaluator/v2_graph_metrics.py` | L0 contract gates |
302
+ | CI | `.github/workflows/ci.yml` | protected / autoresearch gate 扩展 |
303
+
304
+ ---
305
+
306
+ # 4. 必须消除的架构混淆
307
+
308
+ 当前仓库同时存在:
309
+
310
+ ```text
311
+ 9 个 Protocol Stage
312
+ 8 个 skill/agents profiles
313
+ 多个 skill/sub-skills capabilities
314
+ Agent MCP multi-model dispatch
315
+ ```
316
+
317
+ vNext 唯一定义:
318
+
319
+ ```text
320
+ Protocol Stage
321
+ ≠ Scientific Role
322
+ ≠ Capability
323
+ ≠ Worker/Subagent
324
+ ≠ Model/CLI
325
+ ```
326
+
327
+ 完整规则见:
328
+
329
+ [`docs/orchestration-role-model.md`](./orchestration-role-model.md)
330
+
331
+ 核心一句:
332
+
333
+ > **Parallelize independent evidence acquisition; serialize canonical state transitions.**
334
+
335
+ 以及:
336
+
337
+ > **Subagent count is determined by task decomposability, not role count.**
338
+
339
+ ---
340
+
341
+ # 5. 最终总体架构
342
+
343
+ ```text
344
+ USER
345
+
346
+
347
+ EduEvidence Skill
348
+
349
+ Evidence Review / Decision & Pilot /
350
+ Evaluate & Update
351
+
352
+
353
+ Lead Researcher
354
+
355
+ Workflow + Complexity Gate
356
+
357
+ Capability DAG
358
+
359
+ ┌─────────────┴────────────┐
360
+ │ │
361
+ ▼ ▼
362
+ Platform Native Agent MCP Enhanced
363
+ Local execution bounded subagents
364
+ │ │
365
+ └─────────────┬────────────┘
366
+
367
+ Staging Artifacts
368
+
369
+ Schema / Provenance / Science Gates
370
+
371
+
372
+ Single Writer Engine
373
+
374
+ ┌─────────────┼─────────────┐
375
+ ▼ ▼ ▼
376
+ Evidence Graph Decision State Research Memory
377
+
378
+
379
+ GraphRevision N
380
+
381
+ ┌────┴───────────────┐
382
+ ▼ ▼
383
+ Evidence Autoresearch Decision-to-Outcome
384
+ │ │
385
+ └─────────┬──────────┘
386
+
387
+ GraphRevision N+1
388
+
389
+
390
+ Repository / Skill Implementation
391
+
392
+
393
+ Skill Autoresearch
394
+ Hypothesis → Candidate → Protected Eval
395
+ → Keep/Revert → SkillRevision
396
+ ```
397
+
398
+ ---
399
+
400
+ # 6. Canonical State 命名重新冻结
401
+
402
+ 避免“Revision”概念混乱。
403
+
404
+ ## 现实研究状态
405
+
406
+ ```text
407
+ Project
408
+ Run
409
+ GraphRevision
410
+ DecisionSnapshot
411
+ ResearchIteration
412
+ KnowledgeGap
413
+ ```
414
+
415
+ ### GraphRevision
416
+
417
+ 表示:
418
+
419
+ > 我们对现实问题所拥有的 Evidence Graph 变了。
420
+
421
+ 例如:
422
+
423
+ ```text
424
+ GraphRevision 7 → 8
425
+ ```
426
+
427
+ ---
428
+
429
+ ### DecisionSnapshot
430
+
431
+ 表示:
432
+
433
+ > 基于某个 GraphRevision 的当前 decision-bounded adjudication。
434
+
435
+ ---
436
+
437
+ ### ResearchIteration
438
+
439
+ 表示:
440
+
441
+ > Evidence Autoresearch 做过的一轮“下一条证据”实验。
442
+
443
+ 它可以:
444
+
445
+ ```text
446
+ 找到 valid evidence
447
+ 只找到重复 evidence
448
+ 没有找到 eligible evidence
449
+ tool failure
450
+ search saturation evidence
451
+ ```
452
+
453
+ ResearchIteration 不等于 GraphRevision。
454
+
455
+ 没有新 validated evidence 时:
456
+
457
+ ```text
458
+ ResearchIteration +1
459
+ GraphRevision 不变
460
+ ```
461
+
462
+ 这是必须保留的信息。
463
+
464
+ ---
465
+
466
+ ## Skill 自身状态
467
+
468
+ ```text
469
+ SkillRevision
470
+ SkillExperiment
471
+ EvalSnapshot
472
+ ```
473
+
474
+ ### SkillRevision
475
+
476
+ 表示:
477
+
478
+ > EduEvidence 研究系统本身的一版实现。
479
+
480
+ 它与 GraphRevision 完全分离。
481
+
482
+ ---
483
+
484
+ # 7. Loop A — Evidence Autoresearch
485
+
486
+ ## 7.1 目标
487
+
488
+ 现在的 Evidence Review 主要回答:
489
+
490
+ ```text
491
+ 当前证据支持什么?
492
+ ```
493
+
494
+ Evidence Autoresearch 再回答:
495
+
496
+ ```text
497
+ 如果我们还允许花下一单位 research budget,
498
+ 最值得获取哪类新证据?
499
+ ```
500
+
501
+ ---
502
+
503
+ ## 7.2 基本循环
504
+
505
+ ```text
506
+ READ STATE
507
+ Project + GraphRevision N + DecisionSnapshot N
508
+ + KnowledgeGaps + previous ResearchIterations
509
+
510
+ RANK GAPS
511
+ Decision Value of Information
512
+
513
+ SELECT ONE
514
+ one KnowledgeGap / one research objective
515
+
516
+ HYPOTHESIZE
517
+ one falsifiable research strategy
518
+
519
+ PLAN
520
+ TaskSpec + budget + termination
521
+
522
+ EXECUTE
523
+ Retrieve / Fetch / Validate / Extract
524
+ + Challenge / Audit when triggered
525
+
526
+ MEASURE
527
+ Evidence Gain / Search Yield / Decision Relevance
528
+
529
+ COMMIT
530
+ valid evidence append-only → GraphRevision N+1
531
+ or no-change iteration log
532
+
533
+ RE-ADJUDICATE
534
+ candidate DecisionSnapshot / drift
535
+
536
+ LEARN
537
+ append ResearchIteration + negative search memory
538
+
539
+ NEXT
540
+ recompute gap priority
541
+ ```
542
+
543
+ ---
544
+
545
+ # 8. KnowledgeGap vNext
546
+
547
+ 当前 `engine/gaps.py` 的强项是:Gap 来自真实 graph coverage,而不是自由文本 future work。
548
+
549
+ 保留这个定义。
550
+
551
+ 新增 metadata:
552
+
553
+ ```json
554
+ {
555
+ "gap_id": "GAP-...",
556
+ "status": "open",
557
+ "gap_type": "missing_transfer",
558
+ "derived_from_graph_revision": 8,
559
+ "decision_relevance": "high",
560
+ "uncertainty_source": "directness",
561
+ "minimum_useful_evidence": {
562
+ "population": "novice CS1",
563
+ "outcome": "independent_problem_solving",
564
+ "measurement_context": "without_ai"
565
+ },
566
+ "research_priority": {
567
+ "dvi_band": "high",
568
+ "rationale": []
569
+ },
570
+ "attempted_strategy_ids": [],
571
+ "negative_search_ids": [],
572
+ "resolution_status": "unresolved"
573
+ }
574
+ ```
575
+
576
+ ---
577
+
578
+ # 9. Gap Lifecycle
579
+
580
+ 新增 lifecycle:
581
+
582
+ ```text
583
+ OPEN
584
+
585
+ PRIORITIZED
586
+
587
+ SEARCHING
588
+
589
+ PARTIALLY_RESOLVED
590
+
591
+ RESOLVED
592
+ ```
593
+
594
+ 另一条:
595
+
596
+ ```text
597
+ OPEN
598
+
599
+ SEARCHING
600
+
601
+ SEARCH_SATURATED
602
+
603
+ EMPIRICAL_EVIDENCE_NEEDED
604
+
605
+ StudyDesign / Pilot
606
+ ```
607
+
608
+ 另一条:
609
+
610
+ ```text
611
+ OPEN
612
+
613
+ LOW_DECISION_VALUE
614
+ ```
615
+
616
+ Low DVI 不代表“永远不研究”,只是当前 decision context 下不优先。
617
+
618
+ ---
619
+
620
+ # 10. DVI — Decision Value of Information
621
+
622
+ ## 10.1 vNext 只实现 Conceptual DVI
623
+
624
+ 禁止输出:
625
+
626
+ ```text
627
+ “这项研究有 83.7% 的信息价值”
628
+ ```
629
+
630
+ 也禁止把 DVI 称为正式 EVPI / EVSI。
631
+
632
+ DVI 是透明优先级模型。
633
+
634
+ ---
635
+
636
+ ## 10.2 排序维度
637
+
638
+ 每个 Gap 计算以下 ordinal dimensions:
639
+
640
+ ```text
641
+ Decision Sensitivity
642
+ 当前 decision 对这个未知量有多敏感?
643
+
644
+ Current Uncertainty
645
+ 当前 evidence 对它有多不确定?
646
+
647
+ Directness Deficit
648
+ 缺的是直接 outcome 证据还是仅补充性信息?
649
+
650
+ Applicability Relevance
651
+ 是否直接关系目标人群 / 场景?
652
+
653
+ Expected Evidence Availability
654
+ 二手证据是否可能存在?
655
+
656
+ Research Cost
657
+ 预计检索/筛选/新研究成本?
658
+
659
+ Risk / Irreversibility
660
+ 如果现在做错决定,后果是否高?
661
+ ```
662
+
663
+ ---
664
+
665
+ ## 10.3 结果只分 band
666
+
667
+ ```text
668
+ HIGH
669
+ MEDIUM
670
+ LOW
671
+ ```
672
+
673
+ 同时返回 rationale:
674
+
675
+ ```json
676
+ {
677
+ "gap_id": "GAP-...",
678
+ "dvi_band": "HIGH",
679
+ "drivers": [
680
+ "当前 ADOPT/PILOT 边界主要被 independent transfer 缺失限制",
681
+ "目标人群完全匹配",
682
+ "已有候选文献线索"
683
+ ],
684
+ "cost_band": "LOW",
685
+ "next_research_mode": "secondary_evidence_search"
686
+ }
687
+ ```
688
+
689
+ 排序必须可解释。
690
+
691
+ ---
692
+
693
+ # 11. 一轮只能有一个主 Research Hypothesis
694
+
695
+ 示例:
696
+
697
+ ```json
698
+ {
699
+ "research_iteration_id": "RIT-0017",
700
+ "gap_id": "GAP-transfer-novice",
701
+ "hypothesis": "针对 novice CS1 + without-AI transfer test 的定向检索,将发现至少一条比当前证据更直接的 eligible Study",
702
+ "strategy_id": "STRAT-targeted-transfer-v1",
703
+ "expected_gain": "directness",
704
+ "budget": {
705
+ "max_queries": 6,
706
+ "max_candidates": 30,
707
+ "max_fulltext_fetches": 12
708
+ }
709
+ }
710
+ ```
711
+
712
+ 禁止一轮同时:
713
+
714
+ ```text
715
+ 换检索算法
716
+ 换 OutcomeClassifier
717
+ 改 Gap ranking
718
+ 加新数据库
719
+ 改 Method Audit prompt
720
+ ```
721
+
722
+ 否则无法归因。
723
+
724
+ ---
725
+
726
+ # 12. Research Experiment 类型
727
+
728
+ 首版只允许明确枚举:
729
+
730
+ ```text
731
+ TARGETED_RETRIEVAL
732
+ COUNTER_EVIDENCE_RETRIEVAL
733
+ APPLICABILITY_RETRIEVAL
734
+ TEMPORAL_REFRESH
735
+ CITATION_CHAINING
736
+ SCREENING_PRIORITY
737
+ SOURCE_RECOVERY
738
+ ```
739
+
740
+ 未来再增加。
741
+
742
+ 它们都是:
743
+
744
+ > 获取证据的研究策略实验。
745
+
746
+ 不是:
747
+
748
+ > 自动改变科学规则。
749
+
750
+ ---
751
+
752
+ # 13. Evidence 绝对 Append-only
753
+
754
+ 这是从 autoresearch 移植时最重要的差异。
755
+
756
+ 代码候选可以:
757
+
758
+ ```text
759
+ keep / revert
760
+ ```
761
+
762
+ Validated Evidence 不可以:
763
+
764
+ ```text
765
+ 支持当前结论 → keep
766
+ 反对当前结论 → discard
767
+ ```
768
+
769
+ 只要符合:
770
+
771
+ ```text
772
+ 真实来源
773
+ 符合纳排标准
774
+ provenance 可验证
775
+ schema 合法
776
+ ```
777
+
778
+ 就必须保留,不论:
779
+
780
+ ```text
781
+ support
782
+ contradict
783
+ neutral
784
+ null
785
+ ```
786
+
787
+ 科学不变量:
788
+
789
+ > **Never optimize the evidence set toward a preferred conclusion.**
790
+
791
+ ---
792
+
793
+ # 14. Negative Search Result 也是 Artifact
794
+
795
+ 新增:
796
+
797
+ ```text
798
+ NegativeSearchRecord
799
+ ```
800
+
801
+ 记录:
802
+
803
+ ```json
804
+ {
805
+ "negative_search_id": "NSR-...",
806
+ "research_iteration_id": "RIT-...",
807
+ "gap_id": "GAP-...",
808
+ "queries": [],
809
+ "providers": [],
810
+ "candidate_count": 23,
811
+ "fetched_count": 8,
812
+ "eligible_count": 0,
813
+ "exclusion_reasons": {},
814
+ "searched_at": "...",
815
+ "scope": {},
816
+ "conclusion": "no_eligible_evidence_found_within_search_scope"
817
+ }
818
+ ```
819
+
820
+ 禁止写:
821
+
822
+ ```text
823
+ “No evidence exists.”
824
+ ```
825
+
826
+ 只能说:
827
+
828
+ ```text
829
+ “在本轮明确 search scope 内未找到 eligible evidence。”
830
+ ```
831
+
832
+ ---
833
+
834
+ # 15. Search Saturation Gate
835
+
836
+ 不能无限搜论文。
837
+
838
+ 每个 Gap 追踪:
839
+
840
+ ```text
841
+ new independent studies per iteration
842
+ new eligible findings per iteration
843
+ new direct-outcome findings
844
+ new population coverage
845
+ new contradiction yield
846
+ new DOI/source uniqueness
847
+ Decision Boundary delta
848
+ query/provider novelty
849
+ ```
850
+
851
+ 当连续多轮出现:
852
+
853
+ ```text
854
+ unique eligible evidence ≈ 0
855
+ 直接证据增量 = 0
856
+ 重复来源持续升高
857
+ Decision Boundary 无变化
858
+ 新的 search strategies 已基本耗尽
859
+ ```
860
+
861
+ 标记:
862
+
863
+ ```text
864
+ SEARCH_SATURATED
865
+ ```
866
+
867
+ 首版不用一个武断的单阈值。
868
+
869
+ 使用:
870
+
871
+ ```text
872
+ 2–3 consecutive low-yield iterations
873
+ + strategy diversity exhausted
874
+ + no high-value unresolved retrievable path
875
+ ```
876
+
877
+ 作为 deterministic + policy 判定。
878
+
879
+ ---
880
+
881
+ # 16. 自动从 Literature 转向 Pilot 的条件
882
+
883
+ 必须同时满足:
884
+
885
+ ```text
886
+ Gap DVI = HIGH
887
+ Gap 对 Decision material
888
+ Secondary Search = saturated
889
+ Gap 仍 unresolved
890
+ 新实证研究在伦理 / 可行性上允许
891
+ ```
892
+
893
+ 然后:
894
+
895
+ ```text
896
+ KnowledgeGap
897
+ → EMPIRICAL_EVIDENCE_NEEDED
898
+ → StudyDesign grounding gate
899
+ → preregistration-ready Pilot
900
+ ```
901
+
902
+ 这直接复用当前:
903
+
904
+ ```text
905
+ No Study Design Without Grounded Gap
906
+ ```
907
+
908
+ ---
909
+
910
+ # 17. Evidence Autoresearch 的停止条件
911
+
912
+ 任何一项满足即可停:
913
+
914
+ ```text
915
+ 目标 Gap RESOLVED
916
+ Decision 对该 Gap 不再敏感
917
+ 所有 HIGH-DVI gaps 已处理
918
+ research budget exhausted
919
+ search saturation
920
+ 需要新的 empirical study
921
+ 用户要求停止
922
+ 工具不可用且无有效降级路径
923
+ ```
924
+
925
+ 不允许“NEVER STOP”。
926
+
927
+ 研究系统必须 bounded。
928
+
929
+ ---
930
+
931
+ # 18. Decision 的自动化边界
932
+
933
+ Evidence Autoresearch 可以自动:
934
+
935
+ ```text
936
+ 生成新的 GraphRevision
937
+ 运行 deterministic tribunal
938
+ 生成 candidate DecisionSnapshot / DriftReport
939
+ ```
940
+
941
+ 但不得自动:
942
+
943
+ ```text
944
+ 执行真实世界干预
945
+ 改变学校政策
946
+ 开始人类受试 Pilot
947
+ 对高影响 Decision 自动 promote 为 accepted operational decision
948
+ ```
949
+
950
+ 新增:
951
+
952
+ ```text
953
+ DecisionSnapshot.status
954
+ = candidate | reviewed | accepted
955
+ ```
956
+
957
+ 若迁移成本过高,首版可先在 `extensions.review_status` 实现,再升级 schema。
958
+
959
+ Living refresh 生成:
960
+
961
+ ```text
962
+ candidate
963
+ ```
964
+
965
+ 用户 / human gate 接受后:
966
+
967
+ ```text
968
+ accepted
969
+ ```
970
+
971
+ ---
972
+
973
+ # 19. Loop B — Decision-to-Outcome 保持现有语义
974
+
975
+ 不重写 `engine/pilot.py`。
976
+
977
+ 保持:
978
+
979
+ ```text
980
+ Decision
981
+ → grounded StudyDesign
982
+ → PilotRun
983
+ → privacy-safe Data
984
+ → validated AnalysisRun
985
+ → local Finding
986
+ → GraphRevision
987
+ → DecisionSnapshot
988
+ ```
989
+
990
+ Autoresearch 只负责在前面回答:
991
+
992
+ > 为什么现在应该从 literature 转入这个 Pilot?
993
+
994
+ ---
995
+
996
+ # 20. Loop C — Skill Autoresearch
997
+
998
+ ## 20.1 目标
999
+
1000
+ 自动实验:
1001
+
1002
+ > 怎样让 EduEvidence 的真实研究质量更高,同时不破坏科学纪律、鲁棒性和成本?
1003
+
1004
+ ---
1005
+
1006
+ ## 20.2 基本循环
1007
+
1008
+ ```text
1009
+ BASELINE
1010
+
1011
+ Read previous experiments
1012
+
1013
+ Propose ONE hypothesis
1014
+
1015
+ Create candidate branch/worktree
1016
+
1017
+ Modify allowed surface
1018
+
1019
+ Fast deterministic gates
1020
+
1021
+ DEV benchmark
1022
+
1023
+ If promising → repeated empirical eval
1024
+
1025
+ HOLDOUT / adversarial verify
1026
+
1027
+ Promotion policy
1028
+ ├─ KEEP → candidate best branch
1029
+ ├─ REJECT → discard candidate code
1030
+ ├─ RETEST → more repeats
1031
+ └─ HUMAN_REVIEW → ambiguous/high-impact
1032
+
1033
+ Log everything
1034
+
1035
+ Next experiment
1036
+ ```
1037
+
1038
+ ---
1039
+
1040
+ # 21. Protected Scientific Core
1041
+
1042
+ 新增:
1043
+
1044
+ ```text
1045
+ autoevolve/protected.manifest.yaml
1046
+ ```
1047
+
1048
+ 首版保护:
1049
+
1050
+ ```yaml
1051
+ protected:
1052
+ - benchmarks/annotations/**
1053
+ - benchmarks/holdout/**
1054
+ - benchmarks/evaluator/**
1055
+ - schemas/**
1056
+ - references/scientific-invariants.md
1057
+ - scripts/pre_verdict_gate.py
1058
+ - scripts/compute_confidence.py
1059
+ - engine/graph_store.py::revision_integrity
1060
+ - engine/study_design.py::grounding_gate
1061
+ - tests/scientific_invariants/**
1062
+ ```
1063
+
1064
+ Runner 在实验前后计算 hash。
1065
+
1066
+ 任何 protected mutation:
1067
+
1068
+ ```text
1069
+ EXPERIMENT_INVALID
1070
+ ```
1071
+
1072
+ 不进入评分。
1073
+
1074
+ ---
1075
+
1076
+ # 22. Mutation Surface
1077
+
1078
+ ## Tier A — Safe Mutable
1079
+
1080
+ 适合自动实验:
1081
+
1082
+ ```text
1083
+ retrieval query templates
1084
+ search ordering
1085
+ Challenge prompts
1086
+ context packing
1087
+ role instructions
1088
+ workflow wording
1089
+ few-shot examples
1090
+ report phrasing
1091
+ routing heuristics that do not alter scientific invariants
1092
+ model routing / cost strategy
1093
+ cache strategy
1094
+ ```
1095
+
1096
+ ---
1097
+
1098
+ ## Tier B — Controlled Mutable
1099
+
1100
+ 需要完整 regression:
1101
+
1102
+ ```text
1103
+ OutcomeClassifier implementation
1104
+ ranking weights
1105
+ Complexity Gate thresholds
1106
+ Gap priority heuristics
1107
+ Graph linking heuristics
1108
+ retrieval dedupe heuristics
1109
+ orchestration policy
1110
+ ```
1111
+
1112
+ ---
1113
+
1114
+ ## Tier C — Protected
1115
+
1116
+ 不可自动修改:
1117
+
1118
+ ```text
1119
+ Gold / Holdout
1120
+ Evaluator definitions
1121
+ Schema ground truth
1122
+ No Direct Learning Evidence → No ADOPT
1123
+ No False Precision
1124
+ Fail-closed causal analysis
1125
+ Synthetic/real separation
1126
+ StudyDesign grounding
1127
+ privacy / ethics constraints
1128
+ canonical revision integrity
1129
+ ```
1130
+
1131
+ ---
1132
+
1133
+ # 23. Outer Loop 不是单分数优化
1134
+
1135
+ Karpathy 原版可使用:
1136
+
1137
+ ```text
1138
+ val_bpb ↓
1139
+ ```
1140
+
1141
+ EduEvidence 必须采用:
1142
+
1143
+ ```text
1144
+ Constraint-first Pareto Evaluation
1145
+ ```
1146
+
1147
+ ---
1148
+
1149
+ # 24. 评估层级
1150
+
1151
+ ## L0 — Scientific / Contract Hard Gates
1152
+
1153
+ 任意失败:
1154
+
1155
+ ```text
1156
+ REJECT
1157
+ ```
1158
+
1159
+ 包括:
1160
+
1161
+ ```text
1162
+ Schema validity
1163
+ Graph traceability
1164
+ Study identity correctness
1165
+ Independent study counting
1166
+ No false precision
1167
+ No unsupported ADOPT
1168
+ Synthetic-data separation
1169
+ Grounded Gap requirement
1170
+ Protected file integrity
1171
+ PII / privacy guards
1172
+ ```
1173
+
1174
+ 当前 `v2_graph_metrics.py` 继续作为其中一部分。
1175
+
1176
+ 它明确只能测 software / contract conformance,不能声称 scientific truth;该边界保持。
1177
+
1178
+ ---
1179
+
1180
+ ## L1 — Scientific Correctness
1181
+
1182
+ ```text
1183
+ Outcome Separation
1184
+ Citation Support
1185
+ Contradiction precision/recall
1186
+ Decision Calibration
1187
+ Scope Calibration
1188
+ Methodology issue detection
1189
+ Gap correctness
1190
+ ```
1191
+
1192
+ 使用:
1193
+
1194
+ ```text
1195
+ gold annotations
1196
+ human/judge annotations where appropriate
1197
+ ```
1198
+
1199
+ ---
1200
+
1201
+ ## L2 — Research Quality
1202
+
1203
+ 新增:
1204
+
1205
+ ```text
1206
+ Direct Evidence Gain
1207
+ Unique Eligible Evidence Yield
1208
+ Counter-evidence Yield
1209
+ Applicability Coverage
1210
+ Gap Resolution Rate
1211
+ Research Saturation Efficiency
1212
+ Decision-relevant Evidence Gain
1213
+ ```
1214
+
1215
+ ---
1216
+
1217
+ ## L3 — Robustness
1218
+
1219
+ ```text
1220
+ S/M/L
1221
+ multiple domains
1222
+ multiple model families
1223
+ repeated runs
1224
+ retrieval provider variation
1225
+ missing-data scenarios
1226
+ adversarial cases
1227
+ ```
1228
+
1229
+ ---
1230
+
1231
+ ## L4 — Efficiency
1232
+
1233
+ ```text
1234
+ token
1235
+ cost
1236
+ latency
1237
+ search calls
1238
+ fetch calls
1239
+ subagent count
1240
+ parallel speedup
1241
+ ```
1242
+
1243
+ ---
1244
+
1245
+ ## L5 — Simplicity
1246
+
1247
+ ```text
1248
+ LOC delta
1249
+ SKILL.md token load
1250
+ number of rules
1251
+ number of branches
1252
+ new dependencies
1253
+ maintenance surface
1254
+ ```
1255
+
1256
+ 同等质量:
1257
+
1258
+ ```text
1259
+ 更简单 = 更优
1260
+ ```
1261
+
1262
+ ---
1263
+
1264
+ # 25. Promotion Policy
1265
+
1266
+ 先看 hard gates。
1267
+
1268
+ ```text
1269
+ if L0 fails:
1270
+ REJECT
1271
+ ```
1272
+
1273
+ 然后:
1274
+
1275
+ ```text
1276
+ if core scientific metric material regression:
1277
+ REJECT
1278
+ ```
1279
+
1280
+ 否则比较 Pareto:
1281
+
1282
+ ```text
1283
+ quality
1284
+ robustness
1285
+ efficiency
1286
+ simplicity
1287
+ ```
1288
+
1289
+ 状态:
1290
+
1291
+ ```text
1292
+ KEEP
1293
+ REJECT
1294
+ RETEST
1295
+ HUMAN_REVIEW
1296
+ CRASH
1297
+ INVALID
1298
+ ```
1299
+
1300
+ ---
1301
+
1302
+ # 26. Noise Floor 与重复运行
1303
+
1304
+ LLM 输出不是 deterministic benchmark。
1305
+
1306
+ 保持当前 benchmark 的:
1307
+
1308
+ ```text
1309
+ repeats >= 3
1310
+ prefer 5
1311
+ mean + variance / CI
1312
+ ```
1313
+
1314
+ 并进一步:
1315
+
1316
+ ```text
1317
+ 小于 noise floor 的提升不得自动 KEEP
1318
+ ```
1319
+
1320
+ 候选状态:
1321
+
1322
+ ```text
1323
+ candidate delta < empirical noise
1324
+ → RETEST
1325
+ ```
1326
+
1327
+ 不要让 +0.2% 的偶然波动累计成“自我进化”。
1328
+
1329
+ ---
1330
+
1331
+ # 27. Benchmark 三分区
1332
+
1333
+ 当前 30 题不能让 Agent 反复看到全部内容。
1334
+
1335
+ 重组:
1336
+
1337
+ ```text
1338
+ benchmarks/
1339
+ ├── dev/
1340
+ ├── holdout/
1341
+ ├── adversarial/
1342
+ ├── temporal/
1343
+ └── evaluator/
1344
+ ```
1345
+
1346
+ ---
1347
+
1348
+ ## DEV
1349
+
1350
+ Agent 可以读取。
1351
+
1352
+ 用途:
1353
+
1354
+ ```text
1355
+ fast iteration
1356
+ ```
1357
+
1358
+ ---
1359
+
1360
+ ## HOLDOUT
1361
+
1362
+ Candidate 不能读取题目与 gold。
1363
+
1364
+ 只允许 protected evaluator 调用。
1365
+
1366
+ 用途:
1367
+
1368
+ ```text
1369
+ promotion gate
1370
+ ```
1371
+
1372
+ ---
1373
+
1374
+ ## ADVERSARIAL
1375
+
1376
+ 至少覆盖:
1377
+
1378
+ ```text
1379
+ fake DOI
1380
+ fabricated citation
1381
+ search snippet pretending to be evidence
1382
+ missing CI
1383
+ same Study split into multiple Findings
1384
+ task performance treated as learning
1385
+ population mismatch
1386
+ subgroup overclaim
1387
+ contradictory evidence
1388
+ retracted / corrected source
1389
+ synthetic evidence leakage
1390
+ prompt injection in source content
1391
+ PII in empirical dataset
1392
+ singular DID / invalid causal design
1393
+ ```
1394
+
1395
+ ---
1396
+
1397
+ ## TEMPORAL
1398
+
1399
+ 用于:
1400
+
1401
+ ```text
1402
+ recent evidence refresh
1403
+ new publications
1404
+ model/provider drift
1405
+ ```
1406
+
1407
+ 不能 hard-code 成永久 gold;保留 evaluation timestamp。
1408
+
1409
+ ---
1410
+
1411
+ # 28. Benchmark Hacking Guard
1412
+
1413
+ 任何实验不得:
1414
+
1415
+ ```text
1416
+ 修改 evaluator
1417
+ 读取 holdout gold
1418
+ 减少 benchmark workload
1419
+ 跳过失败题
1420
+ 把 unknown 当 pass
1421
+ 针对 question ID 写特例
1422
+ 通过少输出降低 unsupported rate
1423
+ ```
1424
+
1425
+ 防止“少说少错”:
1426
+
1427
+ ```text
1428
+ precision + recall 必须成对报告
1429
+ ```
1430
+
1431
+ 例如:
1432
+
1433
+ ```text
1434
+ Contradiction precision
1435
+ Contradiction recall
1436
+ ```
1437
+
1438
+ 同时看。
1439
+
1440
+ ---
1441
+
1442
+ # 29. Experiment Memory
1443
+
1444
+ 新增:
1445
+
1446
+ ```text
1447
+ autoevolve/
1448
+ ├── program.md
1449
+ ├── config.yaml
1450
+ ├── protected.manifest.yaml
1451
+ ├── results.tsv
1452
+ ├── experiments.jsonl
1453
+ ├── best.json
1454
+ ├── ideas.md
1455
+ ├── findings.md
1456
+ └── runs/
1457
+ ```
1458
+
1459
+ ---
1460
+
1461
+ # 30. `results.tsv`
1462
+
1463
+ ```text
1464
+ experiment_id
1465
+ parent_revision
1466
+ candidate_commit
1467
+ scope
1468
+ hypothesis
1469
+ eval_suite_hash
1470
+ model_manifest
1471
+ repeats
1472
+ hard_gates
1473
+ science_score
1474
+ research_score
1475
+ robustness
1476
+ cost
1477
+ latency
1478
+ complexity_delta
1479
+ status
1480
+ description
1481
+ ```
1482
+
1483
+ 失败同样写入。
1484
+
1485
+ `results.tsv` 是 append-only。
1486
+
1487
+ ---
1488
+
1489
+ # 31. `experiments.jsonl`
1490
+
1491
+ 每轮保留完整机器可读结构:
1492
+
1493
+ ```json
1494
+ {
1495
+ "experiment_id": "EXP-0017",
1496
+ "hypothesis": "显式拆分 direct evidence 与 transfer query 能提高 contradiction/directness recall",
1497
+ "why": "E12/E15 显示当前 retrieve 在 outcome axis 上混合",
1498
+ "change": [],
1499
+ "baseline": {},
1500
+ "candidate": {},
1501
+ "result": "KEEP",
1502
+ "interpretation": "...",
1503
+ "what_this_rules_out": [],
1504
+ "next_ideas": []
1505
+ }
1506
+ ```
1507
+
1508
+ Research Memory 不只保存 score。
1509
+
1510
+ ---
1511
+
1512
+ # 32. Git Workflow
1513
+
1514
+ Autoresearch 永远不直接在 `main` 上实验。
1515
+
1516
+ ```text
1517
+ main
1518
+ └── autoresearch/<run-tag>
1519
+ ├── experiment commit 1
1520
+ ├── experiment commit 2
1521
+ └── best candidate
1522
+ ```
1523
+
1524
+ 更稳妥实现:
1525
+
1526
+ ```text
1527
+ git worktree
1528
+ ```
1529
+
1530
+ 每个 candidate 有独立工作树。
1531
+
1532
+ ---
1533
+
1534
+ # 33. 自动 Promotion 边界
1535
+
1536
+ 自动允许:
1537
+
1538
+ ```text
1539
+ 在 autoresearch branch 内 keep / revert
1540
+ 更新 best candidate pointer
1541
+ 生成 PR 内容
1542
+ ```
1543
+
1544
+ 自动禁止:
1545
+
1546
+ ```text
1547
+ merge main
1548
+ release
1549
+ 修改 protected core
1550
+ 删除 benchmark history
1551
+ force push
1552
+ 真实部署
1553
+ ```
1554
+
1555
+ 最终 merge 人工确认。
1556
+
1557
+ ---
1558
+
1559
+ # 34. Plateau / Ceiling
1560
+
1561
+ Skill Autoresearch 不无限运行。
1562
+
1563
+ 默认:
1564
+
1565
+ ```text
1566
+ max_experiments_per_session = 25
1567
+ ```
1568
+
1569
+ 每日 unattended 可配置:
1570
+
1571
+ ```text
1572
+ max_experiments = 50
1573
+ max_cost
1574
+ max_wall_time
1575
+ ```
1576
+
1577
+ Plateau:
1578
+
1579
+ ```text
1580
+ 连续 5 个 valid experiments
1581
+ 没有超过 noise floor 的 Pareto improvement
1582
+ ```
1583
+
1584
+ 停止并输出:
1585
+
1586
+ ```text
1587
+ plateau report
1588
+ best revision
1589
+ near misses
1590
+ next hypotheses
1591
+ ```
1592
+
1593
+ ---
1594
+
1595
+ # 35. 每日自动进化模式
1596
+
1597
+ 未来 CLI:
1598
+
1599
+ ```bash
1600
+ eduevidence evolve run --budget daily
1601
+ ```
1602
+
1603
+ 配置:
1604
+
1605
+ ```yaml
1606
+ schedule_profile: daily
1607
+ max_experiments: 20
1608
+ max_cost_usd: 5
1609
+ max_wall_minutes: 180
1610
+ mutation_tiers:
1611
+ - safe
1612
+ allow_controlled: false
1613
+ promotion: branch_only
1614
+ ```
1615
+
1616
+ 每次运行结束:
1617
+
1618
+ ```text
1619
+ Daily Evolution Report
1620
+ ├── baseline
1621
+ ├── experiments attempted
1622
+ ├── kept
1623
+ ├── rejected
1624
+ ├── crashes
1625
+ ├── best candidate
1626
+ ├── metric deltas
1627
+ ├── cost
1628
+ ├── protected integrity
1629
+ └── next ideas
1630
+ ```
1631
+
1632
+ 初版不让 daily mode 自动改 Tier B。
1633
+
1634
+ ---
1635
+
1636
+ # 36. 多角色 / 子代理编排
1637
+
1638
+ 完整权威定义:
1639
+
1640
+ [`docs/orchestration-role-model.md`](./orchestration-role-model.md)
1641
+
1642
+ 核心改变:
1643
+
1644
+ ```text
1645
+ 8 role profiles
1646
+
1647
+ 8 permanent agents
1648
+ ```
1649
+
1650
+ ---
1651
+
1652
+ # 37. 新增 Lead Researcher / ExecutionPlanner
1653
+
1654
+ 逻辑组件:
1655
+
1656
+ ```text
1657
+ engine/orchestration/planner.py
1658
+ ```
1659
+
1660
+ 职责:
1661
+
1662
+ ```text
1663
+ Workflow routing
1664
+ Complexity classification
1665
+ Capability DAG
1666
+ local vs delegate decision
1667
+ parallel groups
1668
+ TaskSpec creation
1669
+ budget allocation
1670
+ independence requirements
1671
+ fallback
1672
+ ```
1673
+
1674
+ 它不直接调用外部 daemon。
1675
+
1676
+ 执行仍走:
1677
+
1678
+ ```text
1679
+ integrations/agent_mcp.py::safe_spawn()
1680
+ ```
1681
+
1682
+ ---
1683
+
1684
+ # 38. TaskSpec
1685
+
1686
+ 新增 schema:
1687
+
1688
+ ```text
1689
+ schemas/vNext/task-spec.schema.json
1690
+ ```
1691
+
1692
+ 必须包括:
1693
+
1694
+ ```text
1695
+ task_id
1696
+ run_id
1697
+ base_revision
1698
+ role_profile
1699
+ objective
1700
+ reason_for_delegation
1701
+ input_artifacts
1702
+ allowed_capabilities
1703
+ forbidden_actions
1704
+ scope
1705
+ budget
1706
+ output_contract
1707
+ termination
1708
+ ```
1709
+
1710
+ 没有 TaskSpec 不 spawn。
1711
+
1712
+ ---
1713
+
1714
+ # 39. Single Writer
1715
+
1716
+ 任何 Worker 只能输出:
1717
+
1718
+ ```text
1719
+ Staging Artifact
1720
+ ```
1721
+
1722
+ 只有主引擎可以:
1723
+
1724
+ ```text
1725
+ Graph commit
1726
+ DecisionSnapshot write
1727
+ KnowledgeGap persistent update
1728
+ StudyDesign write
1729
+ ```
1730
+
1731
+ 并行只发生在证据获取 / 分析。
1732
+
1733
+ Canonical State transition 串行。
1734
+
1735
+ ---
1736
+
1737
+ # 40. 默认 S/M/L 拓扑
1738
+
1739
+ ## S
1740
+
1741
+ ```text
1742
+ Lead only
1743
+ subagents = 0
1744
+ ```
1745
+
1746
+ ---
1747
+
1748
+ ## M
1749
+
1750
+ 典型:
1751
+
1752
+ ```text
1753
+ Lead
1754
+ ├─ direct/support retrieval worker
1755
+ ├─ counter/risk retrieval worker
1756
+ ├─ optional Method Reviewer
1757
+ └─ Judge / Lead adjudication
1758
+ ```
1759
+
1760
+ 典型 active workers:
1761
+
1762
+ ```text
1763
+ 2–4
1764
+ ```
1765
+
1766
+ ---
1767
+
1768
+ ## L
1769
+
1770
+ ```text
1771
+ Lead
1772
+
1773
+ ├─ Retrieval Worker — direct causal
1774
+ ├─ Retrieval Worker — transfer/retention
1775
+ ├─ Retrieval Worker — harms/null/counter
1776
+ ├─ Retrieval Worker — applicability/freshness
1777
+
1778
+ ├─ deterministic merge/dedupe
1779
+ ├─ optional Extraction batches
1780
+
1781
+ ├─ independent Skeptic
1782
+ ├─ Method Reviewer
1783
+
1784
+ ├─ Single Writer Graph commit
1785
+ ├─ Evidence Judge
1786
+ └─ high-impact Independent Final Review
1787
+ ```
1788
+
1789
+ 默认:
1790
+
1791
+ ```text
1792
+ parallel active workers <= 6
1793
+ ```
1794
+
1795
+ 禁止 recursive swarm。
1796
+
1797
+ ---
1798
+
1799
+ # 41. Worker 按 Evidence Axis 拆,不按 Provider 拆
1800
+
1801
+ 优先:
1802
+
1803
+ ```text
1804
+ 直接效果
1805
+ transfer / retention
1806
+ negative / null / risks
1807
+ population / subgroup
1808
+ current/fresh evidence
1809
+ ```
1810
+
1811
+ 而不是:
1812
+
1813
+ ```text
1814
+ Google Worker
1815
+ Crossref Worker
1816
+ Semantic Scholar Worker
1817
+ ```
1818
+
1819
+ Provider 是工具,不是 epistemic objective。
1820
+
1821
+ ---
1822
+
1823
+ # 42. Independence 的三种含义
1824
+
1825
+ ```text
1826
+ Search independence
1827
+ Context independence
1828
+ Model-family independence
1829
+ ```
1830
+
1831
+ 只在需要时使用。
1832
+
1833
+ Skeptic / final reviewer 才优先强调:
1834
+
1835
+ ```text
1836
+ context + model-family independence
1837
+ ```
1838
+
1839
+ Retriever workers 不必浪费成本全部使用不同旗舰模型。
1840
+
1841
+ ---
1842
+
1843
+ # 43. Multi-agent Autoresearch
1844
+
1845
+ Outer Loop 可以自动实验:
1846
+
1847
+ ```text
1848
+ 1 vs 2 vs 4 retrieval workers
1849
+ provider split vs evidence-axis split
1850
+ Skeptic always vs triggered
1851
+ Method Review batch size
1852
+ TaskSpec detail level
1853
+ worker context bundle size
1854
+ S/M/L spawn thresholds
1855
+ fast/strong routing
1856
+ ```
1857
+
1858
+ 优化目标:
1859
+
1860
+ ```text
1861
+ Marginal Evidence Gain / Added Cost
1862
+ ```
1863
+
1864
+ 不是:
1865
+
1866
+ ```text
1867
+ Agent 数量越多越高级
1868
+ ```
1869
+
1870
+ ---
1871
+
1872
+ # 44. Orchestration Metrics
1873
+
1874
+ 新增:
1875
+
1876
+ ```text
1877
+ Duplicate Search Rate
1878
+ Unique Eligible Evidence / Worker
1879
+ Coverage Gain / Worker
1880
+ Counter Evidence Yield
1881
+ Artifact Acceptance Rate
1882
+ Worker Failure Recovery Rate
1883
+ Coordination Token Cost
1884
+ Parallel Speedup
1885
+ Canonical State Conflict
1886
+ Unvalidated Text Used by Judge
1887
+ ```
1888
+
1889
+ 硬目标:
1890
+
1891
+ ```text
1892
+ Canonical State Conflict = 0
1893
+ Unvalidated Text Used by Judge = 0
1894
+ ```
1895
+
1896
+ ---
1897
+
1898
+ # 45. EventBus 新事件
1899
+
1900
+ ## Evidence Autoresearch
1901
+
1902
+ ```text
1903
+ autoresearch.evidence.started
1904
+ autoresearch.gap.ranked
1905
+ autoresearch.hypothesis.created
1906
+ autoresearch.iteration.started
1907
+ autoresearch.search.completed
1908
+ autoresearch.iteration.no_gain
1909
+ autoresearch.iteration.evidence_gain
1910
+ autoresearch.saturation.detected
1911
+ autoresearch.empirical_needed
1912
+ autoresearch.evidence.completed
1913
+ ```
1914
+
1915
+ ## Skill Autoresearch
1916
+
1917
+ ```text
1918
+ autoevolve.session.started
1919
+ autoevolve.experiment.created
1920
+ autoevolve.candidate.built
1921
+ autoevolve.eval.completed
1922
+ autoevolve.candidate.kept
1923
+ autoevolve.candidate.rejected
1924
+ autoevolve.candidate.retest
1925
+ autoevolve.plateau
1926
+ autoevolve.session.completed
1927
+ ```
1928
+
1929
+ ## Orchestration
1930
+
1931
+ ```text
1932
+ orchestrator.plan.created
1933
+ orchestrator.task.dispatched
1934
+ orchestrator.task.completed
1935
+ orchestrator.task.failed
1936
+ orchestrator.artifact.accepted
1937
+ orchestrator.artifact.rejected
1938
+ ```
1939
+
1940
+ ---
1941
+
1942
+ # 46. CLI 设计
1943
+
1944
+ 不破坏现有命令。
1945
+
1946
+ 新增两个命令域:
1947
+
1948
+ ```text
1949
+ research auto
1950
+
1951
+ evolve
1952
+ ```
1953
+
1954
+ ---
1955
+
1956
+ ## Evidence Autoresearch
1957
+
1958
+ ```bash
1959
+ eduevidence research auto start --project PRJ-...
1960
+ eduevidence research auto step --project PRJ-...
1961
+ eduevidence research auto status --project PRJ-...
1962
+ eduevidence research auto report --project PRJ-...
1963
+ eduevidence research auto stop --project PRJ-...
1964
+ ```
1965
+
1966
+ `step` 永远只执行一轮,便于测试。
1967
+
1968
+ `start` 才执行 bounded loop。
1969
+
1970
+ ---
1971
+
1972
+ ## Skill Autoresearch
1973
+
1974
+ ```bash
1975
+ eduevidence evolve init
1976
+ eduevidence evolve baseline
1977
+ eduevidence evolve run --max-experiments 20
1978
+ eduevidence evolve status
1979
+ eduevidence evolve report
1980
+ eduevidence evolve best
1981
+ eduevidence evolve prepare-pr
1982
+ ```
1983
+
1984
+ 不提供:
1985
+
1986
+ ```text
1987
+ auto-merge-main
1988
+ ```
1989
+
1990
+ ---
1991
+
1992
+ # 47. 新目录
1993
+
1994
+ ```text
1995
+ eduevidence/
1996
+ ├── autoevolve/
1997
+ │ ├── program.md
1998
+ │ ├── config.yaml
1999
+ │ ├── protected.manifest.yaml
2000
+ │ ├── results.tsv
2001
+ │ ├── experiments.jsonl
2002
+ │ ├── best.json
2003
+ │ └── runs/
2004
+
2005
+ ├── engine/
2006
+ │ ├── autoresearch/
2007
+ │ │ ├── controller.py
2008
+ │ │ ├── gap_priority.py
2009
+ │ │ ├── hypothesis.py
2010
+ │ │ ├── iteration.py
2011
+ │ │ ├── saturation.py
2012
+ │ │ ├── research_memory.py
2013
+ │ │ └── contracts.py
2014
+ │ │
2015
+ │ ├── orchestration/
2016
+ │ │ ├── planner.py
2017
+ │ │ ├── role_registry.py
2018
+ │ │ ├── task_spec.py
2019
+ │ │ ├── worker_result.py
2020
+ │ │ └── merge.py
2021
+ │ │
2022
+ │ └── autoevolve/
2023
+ │ ├── controller.py
2024
+ │ ├── mutation_scope.py
2025
+ │ ├── evaluator.py
2026
+ │ ├── promotion.py
2027
+ │ ├── experiment_log.py
2028
+ │ └── git_workspace.py
2029
+
2030
+ ├── skill/
2031
+ │ ├── roles/
2032
+ │ │ └── registry.yaml
2033
+ │ └── agents/ # compatibility during migration
2034
+
2035
+ ├── benchmarks/
2036
+ │ ├── dev/
2037
+ │ ├── holdout/
2038
+ │ ├── adversarial/
2039
+ │ ├── temporal/
2040
+ │ └── evaluator/
2041
+
2042
+ └── schemas/vNext/
2043
+ ```
2044
+
2045
+ ---
2046
+
2047
+ # 48. 新 Schema
2048
+
2049
+ 首版:
2050
+
2051
+ ```text
2052
+ research-iteration.schema.json
2053
+ research-strategy.schema.json
2054
+ negative-search-record.schema.json
2055
+ gap-priority.schema.json
2056
+ task-spec.schema.json
2057
+ worker-result.schema.json
2058
+ execution-plan.schema.json
2059
+ skill-experiment.schema.json
2060
+ eval-snapshot.schema.json
2061
+ autoevolve-session.schema.json
2062
+ ```
2063
+
2064
+ 不立即重写原 v2/v3/v4 schema。
2065
+
2066
+ ---
2067
+
2068
+ # 49. ResearchIteration Schema 核心字段
2069
+
2070
+ ```text
2071
+ iteration_id
2072
+ project_id
2073
+ base_graph_revision
2074
+ gap_id
2075
+ hypothesis
2076
+ strategy
2077
+ budget
2078
+ execution_plan_id
2079
+ search_attempts
2080
+ candidate_sources
2081
+ validated_evidence_ids
2082
+ negative_search_ids
2083
+ evidence_gain
2084
+ new_graph_revision|null
2085
+ decision_snapshot_id|null
2086
+ status
2087
+ started_at
2088
+ completed_at
2089
+ ```
2090
+
2091
+ 状态:
2092
+
2093
+ ```text
2094
+ completed_gain
2095
+ completed_no_gain
2096
+ search_saturated
2097
+ empirical_needed
2098
+ budget_exhausted
2099
+ tool_failure
2100
+ invalid
2101
+ ```
2102
+
2103
+ ---
2104
+
2105
+ # 50. SkillExperiment Schema 核心字段
2106
+
2107
+ ```text
2108
+ experiment_id
2109
+ session_id
2110
+ parent_skill_revision
2111
+ hypothesis
2112
+ mutation_scope
2113
+ changed_files
2114
+ candidate_commit
2115
+ baseline_eval_id
2116
+ candidate_eval_id
2117
+ protected_hash_before
2118
+ protected_hash_after
2119
+ status
2120
+ promotion_reason
2121
+ complexity_delta
2122
+ ```
2123
+
2124
+ ---
2125
+
2126
+ # 51. Dashboard / Web Studio
2127
+
2128
+ 不是 P0。
2129
+
2130
+ 在 Engine 稳定后新增两个面板:
2131
+
2132
+ ## Research Loop
2133
+
2134
+ ```text
2135
+ Current Decision
2136
+ Open Gaps ranked by DVI
2137
+ Current Research Hypothesis
2138
+ Iterations
2139
+ Evidence Gain
2140
+ Search Saturation
2141
+ Decision Drift
2142
+ ```
2143
+
2144
+ ## Skill Evolution
2145
+
2146
+ ```text
2147
+ Baseline vs Best
2148
+ Experiment Timeline
2149
+ Keep / Reject
2150
+ Metric Radar
2151
+ Cost
2152
+ Plateau
2153
+ Protected Core status
2154
+ ```
2155
+
2156
+ 不要做“8 个 Agent 头像同时工作”。
2157
+
2158
+ 展示:
2159
+
2160
+ ```text
2161
+ Capability DAG + active TaskSpec
2162
+ ```
2163
+
2164
+ ---
2165
+
2166
+ # 52. SKILL.md 改造原则
2167
+
2168
+ 不要把整套 Autoresearch 写进顶层 `SKILL.md`。
2169
+
2170
+ SKILL.md 只加入:
2171
+
2172
+ ```text
2173
+ Autonomous Research Meta-Layer
2174
+ ```
2175
+
2176
+ 约 20–35 行,说明:
2177
+
2178
+ ```text
2179
+ 何时启用 Evidence Autoresearch
2180
+ 何时启用 Skill Autoresearch(仅维护者/开发模式)
2181
+ 科学不变量
2182
+ references 路由
2183
+ ```
2184
+
2185
+ 详细内容进入:
2186
+
2187
+ ```text
2188
+ references/autoresearch.md
2189
+ references/orchestration.md
2190
+ references/evaluation-policy.md
2191
+ ```
2192
+
2193
+ 保持 SKILL.md control-plane。
2194
+
2195
+ ---
2196
+
2197
+ # 53. Skill 自进化绝不能改用户研究状态
2198
+
2199
+ Skill Autoresearch 使用 fixture / benchmark project。
2200
+
2201
+ 不得对真实用户 Project:
2202
+
2203
+ ```text
2204
+ 自动修改 Graph
2205
+ 生成新的 accepted Decision
2206
+ 删除证据
2207
+ 重写研究历史
2208
+ ```
2209
+
2210
+ Outer Loop 与用户数据物理隔离。
2211
+
2212
+ ---
2213
+
2214
+ # 54. Evidence Autoresearch 绝不能改 Skill
2215
+
2216
+ 相反:
2217
+
2218
+ Evidence Autoresearch 只可以影响:
2219
+
2220
+ ```text
2221
+ Project research state
2222
+ ResearchIteration log
2223
+ GraphRevision
2224
+ candidate DecisionSnapshot
2225
+ ```
2226
+
2227
+ 不能修改 repo:
2228
+
2229
+ ```text
2230
+ SKILL.md
2231
+ retrieval prompts
2232
+ engine code
2233
+ evaluator
2234
+ ```
2235
+
2236
+ 两条 loop 权限完全分离。
2237
+
2238
+ ---
2239
+
2240
+ # 55. Agent MCP 权限
2241
+
2242
+ 继续遵守:
2243
+
2244
+ ```text
2245
+ Detect
2246
+ → Recommend
2247
+ → explicit user approval
2248
+ → safe_spawn
2249
+ ```
2250
+
2251
+ Autoresearch 不绕过用户已经建立的模型 / CLI authorization。
2252
+
2253
+ 在 unattended Skill Autoresearch session 中,只能使用:
2254
+
2255
+ ```text
2256
+ session 开始前已批准的 model/CLI allowlist
2257
+ ```
2258
+
2259
+ 不能中途自行授权新模型。
2260
+
2261
+ ---
2262
+
2263
+ # 56. 安全与研究诚信
2264
+
2265
+ 硬规则:
2266
+
2267
+ ```text
2268
+ No evaluator mutation
2269
+ No holdout leakage
2270
+ No evidence deletion because unfavorable
2271
+ No fake precision
2272
+ No fake citations
2273
+ No autonomous human-subject study launch
2274
+ No PII upload
2275
+ No automatic main merge
2276
+ No recursive unbounded agent spawning
2277
+ No evidence-set optimization toward desired verdict
2278
+ ```
2279
+
2280
+ ---
2281
+
2282
+ # 57. Tests — Evidence Autoresearch
2283
+
2284
+ 新增:
2285
+
2286
+ ```text
2287
+ tests/test_autoresearch_gap_priority.py
2288
+ tests/test_autoresearch_iteration.py
2289
+ tests/test_autoresearch_negative_search.py
2290
+ tests/test_autoresearch_saturation.py
2291
+ tests/test_autoresearch_transition_to_pilot.py
2292
+ tests/test_autoresearch_append_only.py
2293
+ tests/test_autoresearch_decision_drift.py
2294
+ ```
2295
+
2296
+ 必须覆盖:
2297
+
2298
+ ```text
2299
+ negative evidence 不被丢弃
2300
+ no-result 不被写成 no evidence exists
2301
+ no-gain iteration 不产生 GraphRevision
2302
+ 重复 evidence 不产生 revision
2303
+ high-DVI saturated gap → empirical_needed
2304
+ low-DVI gap 不自动生成 Pilot
2305
+ ```
2306
+
2307
+ ---
2308
+
2309
+ # 58. Tests — Orchestration
2310
+
2311
+ 新增:
2312
+
2313
+ ```text
2314
+ tests/test_execution_planner.py
2315
+ tests/test_task_spec.py
2316
+ tests/test_worker_merge.py
2317
+ tests/test_single_writer.py
2318
+ tests/test_role_registry.py
2319
+ tests/test_orchestration_budget.py
2320
+ ```
2321
+
2322
+ 硬测:
2323
+
2324
+ ```text
2325
+ S task = 0 workers by default
2326
+ M can selectively spawn
2327
+ L <= configured worker cap
2328
+ worker cannot graph_commit
2329
+ Judge only consumes validated artifacts
2330
+ no direct spawn bypasses safe_spawn
2331
+ ```
2332
+
2333
+ ---
2334
+
2335
+ # 59. Tests — Skill Autoresearch
2336
+
2337
+ 新增:
2338
+
2339
+ ```text
2340
+ tests/test_autoevolve_protected_manifest.py
2341
+ tests/test_autoevolve_experiment_log.py
2342
+ tests/test_autoevolve_promotion.py
2343
+ tests/test_autoevolve_noise_floor.py
2344
+ tests/test_autoevolve_plateau.py
2345
+ tests/test_autoevolve_holdout_isolation.py
2346
+ tests/test_autoevolve_git_workspace.py
2347
+ ```
2348
+
2349
+ ---
2350
+
2351
+ # 60. CI 扩展
2352
+
2353
+ 现有三 job 继续。
2354
+
2355
+ 新增:
2356
+
2357
+ ```text
2358
+ scientific-invariants
2359
+ protected-manifest
2360
+ orchestration-contract
2361
+ ```
2362
+
2363
+ PR 来自 `autoresearch/*` 时额外运行:
2364
+
2365
+ ```text
2366
+ DEV regression
2367
+ holdout promotion gate
2368
+ adversarial gate
2369
+ complexity report
2370
+ ```
2371
+
2372
+ Empirical model eval 成本较高:
2373
+
2374
+ ```text
2375
+ 不放在每个普通 commit
2376
+ ```
2377
+
2378
+ 只在:
2379
+
2380
+ ```text
2381
+ manual workflow_dispatch
2382
+ nightly / scheduled environment
2383
+ candidate promotion
2384
+ ```
2385
+
2386
+ 运行。
2387
+
2388
+ ---
2389
+
2390
+ # 61. Phase 0 — Architecture Freeze
2391
+
2392
+ 交付:
2393
+
2394
+ ```text
2395
+ docs/autoresearch-evolution-plan.md
2396
+ docs/orchestration-role-model.md
2397
+ references/scientific-invariants.md
2398
+ ```
2399
+
2400
+ 冻结:
2401
+
2402
+ ```text
2403
+ 3 loops
2404
+ 5 orchestration concepts
2405
+ Single Writer
2406
+ protected evaluator
2407
+ append-only evidence
2408
+ ```
2409
+
2410
+ 验收:
2411
+
2412
+ 所有核心文档不再把 8 role 写成 8 常驻 Agents。
2413
+
2414
+ ---
2415
+
2416
+ # 62. Phase 1 — Orchestration Clarity
2417
+
2418
+ 实现:
2419
+
2420
+ ```text
2421
+ skill/roles/registry.yaml
2422
+ ExecutionPlanner
2423
+ TaskSpec
2424
+ WorkerResult
2425
+ ExecutionPlan artifact
2426
+ ```
2427
+
2428
+ 先不做 Autoresearch。
2429
+
2430
+ 原因:
2431
+
2432
+ > 不能在不清晰的 agent topology 上建立自主循环。
2433
+
2434
+ 验收:
2435
+
2436
+ ```text
2437
+ S/M/L deterministic plan tests
2438
+ Agent MCP approval tests 全通过
2439
+ safe_spawn 仍是唯一 spawn path
2440
+ ```
2441
+
2442
+ ---
2443
+
2444
+ # 63. Phase 2 — Evidence Research Memory
2445
+
2446
+ 实现:
2447
+
2448
+ ```text
2449
+ ResearchIteration
2450
+ NegativeSearchRecord
2451
+ ResearchStrategy
2452
+ append-only iteration history
2453
+ ```
2454
+
2455
+ 此阶段仍由人工选择 Gap。
2456
+
2457
+ CLI:
2458
+
2459
+ ```bash
2460
+ eduevidence research auto step --gap GAP-...
2461
+ ```
2462
+
2463
+ 验收:
2464
+
2465
+ ```text
2466
+ 一轮可完整复现
2467
+ no-gain 正确记录
2468
+ Graph 只在 valid evidence 时 revision
2469
+ ```
2470
+
2471
+ ---
2472
+
2473
+ # 64. Phase 3 — Gap Priority + DVI
2474
+
2475
+ 扩展 `engine/gaps.py`,不替换现有 coverage derivation。
2476
+
2477
+ 新增:
2478
+
2479
+ ```text
2480
+ DVI band
2481
+ minimum useful evidence
2482
+ researchability
2483
+ research cost band
2484
+ ```
2485
+
2486
+ 验收 fixture:
2487
+
2488
+ CS1 案例中:
2489
+
2490
+ ```text
2491
+ missing independent transfer
2492
+ ```
2493
+
2494
+ 应优先于:
2495
+
2496
+ ```text
2497
+ 低 decision relevance 的满意度缺口
2498
+ ```
2499
+
2500
+ 同时必须给出可读 rationale。
2501
+
2502
+ ---
2503
+
2504
+ # 65. Phase 4 — Bounded Evidence Autoresearch
2505
+
2506
+ 实现 controller:
2507
+
2508
+ ```text
2509
+ rank
2510
+ → select
2511
+ → hypothesize
2512
+ → dispatch
2513
+ → validate
2514
+ → measure
2515
+ → log
2516
+ → next
2517
+ ```
2518
+
2519
+ 首版:
2520
+
2521
+ ```text
2522
+ max_iterations = 5
2523
+ ```
2524
+
2525
+ 默认不是无限。
2526
+
2527
+ 验收:
2528
+
2529
+ ```text
2530
+ 可以跑完整 3–5 iteration
2531
+ worker failure 可恢复
2532
+ 不重复同一个失败策略
2533
+ ```
2534
+
2535
+ ---
2536
+
2537
+ # 66. Phase 5 — Search Saturation → Pilot Bridge
2538
+
2539
+ 实现:
2540
+
2541
+ ```text
2542
+ saturation.py
2543
+ ```
2544
+
2545
+ 然后连接:
2546
+
2547
+ ```text
2548
+ SEARCH_SATURATED
2549
+ + HIGH DVI
2550
+ → EMPIRICAL_EVIDENCE_NEEDED
2551
+ → existing StudyDesign gate
2552
+ ```
2553
+
2554
+ 验收:
2555
+
2556
+ ```text
2557
+ 不能直接凭“资料少”生成 Pilot
2558
+ 必须有 Gap + attempts + saturation evidence
2559
+ ```
2560
+
2561
+ ---
2562
+
2563
+ # 67. Phase 6 — Skill Autoresearch MVP
2564
+
2565
+ 先只允许 Tier A mutation。
2566
+
2567
+ 运行:
2568
+
2569
+ ```text
2570
+ baseline
2571
+ → one change
2572
+ → deterministic gates
2573
+ → DEV
2574
+ → keep/reject
2575
+ → log
2576
+ ```
2577
+
2578
+ 不做 nightly。
2579
+
2580
+ 验收:
2581
+
2582
+ ```text
2583
+ protected mutation = INVALID
2584
+ bad candidate 自动回退
2585
+ results.tsv append-only
2586
+ best pointer 正确
2587
+ ```
2588
+
2589
+ ---
2590
+
2591
+ # 68. Phase 7 — Holdout / Adversarial / Empirical Promotion
2592
+
2593
+ 实现:
2594
+
2595
+ ```text
2596
+ DEV / HOLDOUT separation
2597
+ noise floor
2598
+ repeated empirical run
2599
+ adversarial suite
2600
+ Pareto promotion
2601
+ ```
2602
+
2603
+ 验收:
2604
+
2605
+ 不能通过:
2606
+
2607
+ ```text
2608
+ 输出更少
2609
+ 只在 DEV 特化
2610
+ 破坏 contradiction recall
2611
+ 增加巨大复杂度换微小收益
2612
+ ```
2613
+
2614
+ 的方式 KEEP。
2615
+
2616
+ ---
2617
+
2618
+ # 69. Phase 8 — Daily Evolution
2619
+
2620
+ 加入:
2621
+
2622
+ ```text
2623
+ bounded daily profile
2624
+ checkpoint
2625
+ plateau
2626
+ budget
2627
+ PR preparation
2628
+ ```
2629
+
2630
+ 初版只:
2631
+
2632
+ ```text
2633
+ branch_only
2634
+ ```
2635
+
2636
+ 绝不自动 merge。
2637
+
2638
+ ---
2639
+
2640
+ # 70. Phase 9 — UI / Showcase
2641
+
2642
+ Research Studio 增加:
2643
+
2644
+ ```text
2645
+ Decision State
2646
+ Gap Priority
2647
+ Autoresearch Iterations
2648
+ Research Saturation
2649
+ Revision Diff
2650
+ ```
2651
+
2652
+ Developer 模式增加:
2653
+
2654
+ ```text
2655
+ Skill Evolution
2656
+ ```
2657
+
2658
+ 公开报告默认不展示内部自我优化 debug 信息。
2659
+
2660
+ ---
2661
+
2662
+ # 71. 文件变更矩阵
2663
+
2664
+ | 文件/目录 | 动作 |
2665
+ |---|---|
2666
+ | `SKILL.md` | 小改:加入 meta-layer 路由,不塞实现细节 |
2667
+ | `docs/architecture.md` | Phase 1 后更新 5 概念分层 |
2668
+ | `docs/living-evidence.md` | Phase 4 后加入主动 Gap research loop |
2669
+ | `docs/benchmark.md` | Phase 7 更新 DEV/HOLDOUT/ADV |
2670
+ | `docs/agent-mcp-enhanced-mode.md` | Phase 1 改成 ExecutionPlanner → TaskSpec → safe_spawn |
2671
+ | `skill/agents/*` | 先兼容保留 |
2672
+ | `skill/roles/registry.yaml` | 新增 |
2673
+ | `engine/gaps.py` | 扩展 priority metadata,不改 coverage truth |
2674
+ | `engine/living.py` | 复用 ingestion;增加 controller adapter,不塞 orchestrator |
2675
+ | `engine/autoresearch/*` | 新增 |
2676
+ | `engine/orchestration/*` | 新增 |
2677
+ | `engine/autoevolve/*` | 新增 |
2678
+ | `integrations/agent_mcp.py` | Phase 1 改读取 registry / TaskSpec,保留 gate |
2679
+ | `benchmarks/*` | 重组 eval partitions,保持历史结果 |
2680
+ | `.github/workflows/ci.yml` | 加 scientific/protected gates |
2681
+
2682
+ ---
2683
+
2684
+ # 72. 不做的架构
2685
+
2686
+ 明确排除:
2687
+
2688
+ ```text
2689
+ “八 Agent 一起跑所有问题”
2690
+ “每一个 Stage 一个 Agent”
2691
+ “无限 swarm”
2692
+ “Agent 互相自由聊天决定研究方向”
2693
+ “自动删除不利证据”
2694
+ “用一个综合 LLM Judge score 决定科学质量”
2695
+ “自动改 evaluator 让 benchmark 变好”
2696
+ “自动 merge main”
2697
+ “没有 Gap 就自动设计研究”
2698
+ “搜不到三轮就声称不存在证据”
2699
+ “DVI 伪装成 EVPI 概率”
2700
+ ```
2701
+
2702
+ ---
2703
+
2704
+ # 73. 旗舰 CS1 案例的最终运行示例
2705
+
2706
+ 用户问题:
2707
+
2708
+ > 大一 C/Python 是否应该允许生成式 AI 编程助手?
2709
+
2710
+ 初始 Evidence Review:
2711
+
2712
+ ```text
2713
+ Task Performance:有收益
2714
+ Independent Learning:冲突
2715
+ Transfer:不足
2716
+ Retention:不足
2717
+ Decision:PILOT
2718
+ ```
2719
+
2720
+ Graph 生成:
2721
+
2722
+ ```text
2723
+ GAP-101 missing_transfer
2724
+ GAP-102 missing_retention
2725
+ GAP-103 population heterogeneity
2726
+ ```
2727
+
2728
+ DVI:
2729
+
2730
+ ```text
2731
+ GAP-101 HIGH
2732
+ GAP-102 MEDIUM
2733
+ GAP-103 MEDIUM
2734
+ ```
2735
+
2736
+ Iteration 1:
2737
+
2738
+ ```text
2739
+ Hypothesis:novice CS1 + without-AI transfer targeted query
2740
+ Result:找到 1 个 eligible Study
2741
+ GraphRevision 8 → 9
2742
+ ```
2743
+
2744
+ Iteration 2:
2745
+
2746
+ ```text
2747
+ 重新排名
2748
+ GAP-101 仍 HIGH 但 directness 改善
2749
+ 尝试 citation chaining
2750
+ Result:0 eligible, 6 duplicates
2751
+ 记录 NegativeSearchRecord
2752
+ ```
2753
+
2754
+ Iteration 3:
2755
+
2756
+ ```text
2757
+ 独立 counter/risk search
2758
+ Result:1 个 relevant Finding
2759
+ GraphRevision 9 → 10
2760
+ ```
2761
+
2762
+ Iteration 4:
2763
+
2764
+ ```text
2765
+ search yield 接近 0
2766
+ strategy diversity 基本耗尽
2767
+ GAP-101 → SEARCH_SATURATED
2768
+ ```
2769
+
2770
+ 系统判断:
2771
+
2772
+ ```text
2773
+ HIGH DVI
2774
+ + unresolved
2775
+ + secondary evidence saturated
2776
+ → EMPIRICAL_EVIDENCE_NEEDED
2777
+ ```
2778
+
2779
+ 然后才:
2780
+
2781
+ ```text
2782
+ Gap
2783
+ → StudyDesign
2784
+ → restricted Pilot
2785
+ → Data
2786
+ → New Finding
2787
+ → GraphRevision 11
2788
+ → DecisionSnapshot
2789
+ ```
2790
+
2791
+ 这是最终要实现的“研究不是报告终点”的系统行为。
2792
+
2793
+ ---
2794
+
2795
+ # 74. Competition / Product Differentiation
2796
+
2797
+ Autoresearch 迭代后,不要宣传:
2798
+
2799
+ > “24 小时无人值守自动科研。”
2800
+
2801
+ 更准确的表达:
2802
+
2803
+ > **EduEvidence 不只在新证据出现后更新决定,还会识别当前决策中最值得解决的证据缺口,执行有边界的下一轮研究,并持续用受保护的评估体系改进自己的研究方法。**
2804
+
2805
+ 英文:
2806
+
2807
+ > **EduEvidence does not only update decisions when evidence changes. It identifies which evidence is most worth seeking next, runs bounded research iterations, and continuously tests how to become a better research system without optimizing the conclusion itself.**
2808
+
2809
+ ---
2810
+
2811
+ # 75. 最终 Definition of Done
2812
+
2813
+ ## Evidence Autoresearch
2814
+
2815
+ - [ ] Gap 来源仍是 Evidence Graph,不是自由脑暴
2816
+ - [ ] Gap 有透明 DVI band 与 rationale
2817
+ - [ ] 每轮一个主 hypothesis
2818
+ - [ ] 每轮有明确 budget / termination
2819
+ - [ ] Negative search 可追溯
2820
+ - [ ] Valid Evidence append-only
2821
+ - [ ] No-gain iteration 不生成假 GraphRevision
2822
+ - [ ] Search saturation 可解释
2823
+ - [ ] 高 DVI + saturated 才能桥接 empirical study
2824
+ - [ ] Decision action 不被自动真实执行
2825
+
2826
+ ## Orchestration
2827
+
2828
+ - [ ] Protocol / Role / Capability / Worker / Model 完全分离
2829
+ - [ ] S 级默认 0 subagents
2830
+ - [ ] M/L 按 evidence axis 并行
2831
+ - [ ] TaskSpec 是所有 spawn 的前置条件
2832
+ - [ ] safe_spawn 仍是唯一 Agent MCP path
2833
+ - [ ] Single Writer
2834
+ - [ ] Judge 不读取 unvalidated worker prose
2835
+ - [ ] parallel worker cap 生效
2836
+
2837
+ ## Skill Autoresearch
2838
+
2839
+ - [ ] Baseline 必跑
2840
+ - [ ] One change per experiment
2841
+ - [ ] Protected manifest 生效
2842
+ - [ ] DEV / HOLDOUT / ADV 隔离
2843
+ - [ ] empirical repeats + noise floor
2844
+ - [ ] Pareto promotion
2845
+ - [ ] simplicity criterion
2846
+ - [ ] results / failures append-only
2847
+ - [ ] plateau / budget / ceiling
2848
+ - [ ] branch only;不 auto merge main
2849
+
2850
+ ## Scientific Integrity
2851
+
2852
+ - [ ] 不优化 conclusion
2853
+ - [ ] 不删除反证
2854
+ - [ ] 不伪造 precision
2855
+ - [ ] 不把 active-learning ranking 当 evidence weight
2856
+ - [ ] 不把 conceptual DVI 当正式 EVSI
2857
+ - [ ] 不把 simulation benchmark 当真实性能证据
2858
+ - [ ] human-subject Pilot 仍有人类 / ethics gate
2859
+
2860
+ ---
2861
+
2862
+ # 76. 实施优先级
2863
+
2864
+ ```text
2865
+ P0 Orchestration clarity / Single Writer
2866
+
2867
+ P1 ResearchIteration + NegativeSearch memory
2868
+
2869
+ P2 DVI / Gap lifecycle
2870
+
2871
+ P3 bounded Evidence Autoresearch
2872
+
2873
+ P4 Saturation → Pilot bridge
2874
+
2875
+ P5 Skill Autoresearch protected MVP
2876
+
2877
+ P6 Holdout / adversarial / repeated empirical eval
2878
+
2879
+ P7 Daily evolution
2880
+
2881
+ P8 Studio visualization
2882
+ ```
2883
+
2884
+ 不要先做 UI。
2885
+
2886
+ 不要先做“每天自动跑”。
2887
+
2888
+ 先让:
2889
+
2890
+ ```text
2891
+ 状态
2892
+ 责任
2893
+ 评估
2894
+ 保护区
2895
+ ```
2896
+
2897
+ 四件事正确。
2898
+
2899
+ ---
2900
+
2901
+ # 77. 最终架构一句话
2902
+
2903
+ > **EduEvidence vNext = 一个以 Evidence Graph 为事实状态、以 Decision 为目标、以 KnowledgeGap 为下一步研究入口、以 bounded experiments 为学习机制、以 protected evals 约束自我改进、以按需 subagents 扩展执行能力的 Living Decision Research Engine。**