一键导入
research-agent
Orchestrate an end-to-end chemistry or materials optimization study from a plain-English research question to BO execution and a paper draft.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
Orchestrate an end-to-end chemistry or materials optimization study from a plain-English research question to BO execution and a paper draft.
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
BO execution layer — initializes a run from a resolved experiment spec, records observations, and continues through suggest/observe/report.
Initialize a BO run from a dataset or explicit search-space JSON.
Generate a final BO report and summarize optimization status.
Run an external evaluator loop for a BO run using a pre-provisioned backend id.
Design and stabilize an expensive or fragile chemistry evaluator before BO setup.
Produce a lightweight chemistry or materials literature summary for research-agent, focused on baselines, key variables, and known constraints.
| name | research-agent |
| description | Orchestrate an end-to-end chemistry or materials optimization study from a plain-English research question to BO execution and a paper draft. |
Use this skill when the user wants a top-level research workflow rather than a raw BO command sequence.
V1 is observer-agnostic. The agent frames the problem, defines a structured experiment spec, initializes a BO run, continues through suggest / observe / report, interprets the outcome, and drafts a paper.
The agent does not choose a mode like simulation vs human_in_the_loop. Observation values may come from:
Do not tell the agent to build its own proxy oracle as part of this workflow.
task_manifest.jsonGenerate research_id as a short slug from the system and date, e.g. oer_caltech_20240311. Create and maintain these files under research_runs/<research_id>/:
research_state.json: machine-readable phase stateresearch_plan.md: human-readable lab notebookpaper.md or paper.tex: final draft written in Phase 6, depending on the requested output formatThese are the only required core artifacts. Any additional supporting files should be optional and discoverable through research_state.json.run_artifacts. When helper code is needed, the default run-local location is research_runs/<research_id>/scripts/.
Use this research_state.json shape in v1:
{
"research_id": "string",
"research_question": "string",
"system": null,
"objective_property": null,
"objective_direction": null,
"dataset_path": null,
"prior_observations_path": null,
"bo_run_id": null,
"literature_findings": {
"baselines": [],
"key_variables": [],
"known_constraints": [],
"source_urls": [],
"summary": "",
"computable_candidates": [],
"evaluator_profile": {
"mode": "lookup | surrogate | live_simulation | unknown",
"evaluation_cost": "cheap | moderate | expensive",
"stability_risk": "low | medium | high",
"requires_run_local_setup": false,
"why": ""
}
},
"run_artifacts": {
"scripts_dir": null,
"extra_paths": [],
"dependency_installs": []
},
"evaluator_assessment": {
"evidence_class": "validated | physics_inspired_heuristic | retrospective_lookup | user_provided",
"claim_posture": "strong | moderate | cautious",
"why": ""
},
"calibration_summary": {
"points_tested": [],
"fit_scope": "",
"metrics": {},
"artifact_path": null
},
"experiment_spec": {
"target_column": null,
"design_parameters": [],
"fixed_features": {},
"constraints": [],
"seed_observations_count": 0,
"bo_engine": null
},
"bo_results": {
"best_value": null,
"best_x": null,
"best_iteration": null,
"num_observations": null,
"oracle_model": null,
"oracle_rmse": null,
"report_path": null
},
"paper_path": null,
"phases": {
"problem_framing": "pending | in_progress | completed",
"literature_search": "pending | in_progress | completed | skipped",
"experiment_setup": "pending | in_progress | completed",
"bo_execution": "pending | in_progress | completed",
"interpretation": "pending | in_progress | completed",
"paper_writing": "pending | in_progress | completed"
}
}
research_plan.md must contain these sections:
Interaction modes:
Rules:
research_plan.md, and proceed.Resolve and write:
systemobjective_propertyobjective_directiondataset_pathprior_observations_pathAlso resolve the intended observation source as early as possible:
Also decide whether to run a literature search:
phases.literature_search to skipped and proceed.Other rules:
evaluator-design unless they separately ask the agent to design a new evaluator.If phases.literature_search is skipped, write empty-but-valid literature_findings and move to Phase 3.
Otherwise, delegate to the literature-review skill. Pass:
systemobjective_propertyobjective_directiondataset_path (if available)local_packet_path when the benchmark task bundle provides literature.mode = local_packetresearch_runs/<research_id>/research_plan.md (for the skill to write the Literature Context section)Receive back the structured literature_findings JSON and write it into research_state.json.
By default, treat literature search as web-enabled and open-world:
literature_findings.evaluator_profile clearly says whether the path is a lookup, surrogate, or live simulation and how costly/risky it looksTreat local-packet mode as the closed-world/control exception:
Use the framed problem plus literature findings to define the experiment.
Treat Phase 3 as two internal steps when the evaluator path is nontrivial:
Rules:
experiment_spec is the canonical BO search-space object for the agent. Populate:
target_columndesign_parametersfixed_featuresconstraintsresearch_plan.md.research_runs/<research_id>/scripts/ and put ad hoc converters, preprocessors, evaluator modules, plotting scripts, scraping helpers, and other one-off utilities there.research_runs/<research_id>/scripts/evaluator.py by default.research_runs/<research_id>/search_space.json by default.uv pip install <pkg> rather than editing project dependency files.run_artifacts.extra_paths.run_artifacts.dependency_installs as objects with packages, command, and reason.run_artifacts.scripts_dir when a run-local scripts directory is used.research_state.json.experiment_spec mirrors the actual BO setup that will be passed to init; do not leave a stale draft schema or placeholder categorical options behind once setup is finalized.metal × facet × site blindly. Use:
candidate_id, orcalibration_summary in research_state.json or a sidecar artifact referenced from run_artifacts.extra_paths.Routing rule:
evaluator-design skill before BO init when any of these are true:
literature_findings.evaluator_profile.mode is live_simulationliterature_findings.evaluator_profile.requires_run_local_setup is trueliterature_findings.evaluator_profile.mode is not lookup and either:
literature_findings.evaluator_profile.stability_risk is highliterature_findings.evaluator_profile.evaluation_cost is expensiveWhen evaluator-design is invoked:
research_plan.mdresearch_state.json.evaluator_assessmentresearch_state.json.calibration_summary when an empirical calibration step is usedresearch_state.json.experiment_spec.bo_engineWhen evaluator-design is not needed:
research_state.json.evaluator_assessment entry based on the actual observation source so later interpretation and writing stay calibratedDelegate the BO-layer setup to bo-execution-workflow. That skill owns:
--drop-cols execution config when relevantbo-init-runbo-record-observation to seed prior observations when they existIn Phase 3, call bo-execution-workflow in setup-only mode:
init and any seed observations are completeWrite the resulting BO run ID into research_state.json.bo_run_id.
Keep research_state.json.experiment_spec.constraints structured and machine-readable. Do not collapse constraints into prose strings.
Delegate BO execution to bo-execution-workflow, continuing from the existing bo_run_id from Phase 3 through iterative suggest / observe / report.
The observation source may be:
The agent does not need to model those as separate modes.
Always finish with bo-report-run and write:
best_valuebest_xbest_iterationnum_observationsoracle_model when the BO artifacts report oneoracle_rmse when the BO artifacts report onereport_pathDo not re-run Phase 3 setup during Phase 4. In particular:
build-oraclerun-proxyinitbo_run_idIf the user or operator explicitly provides a backend_id for external evaluation, bo-run-evaluator is an acceptable way to automate the suggest/observe loop. It is still not acceptable to build the backend from inside research-agent.
If a benchmark task bundle provides a prebuilt evaluation.backend_id, it is acceptable to automate Phase 4 directly with run-evaluator against the backend copied into the public workspace.
If Phase 3 produced a local evaluator module, automate Phase 4 with:
uv run python -m bo_workflow.cli run-python-evaluator \
--run-id <BO_RUN_ID> \
--module-path research_runs/<research_id>/scripts/evaluator.py \
--iterations <BUDGET> \
--batch-size <N>
Summarize:
Write this into the Interpretation section of research_plan.md.
When updating research_plan.md after Phase 4:
bo_runs/<bo_run_id>/report.json as the source of truth for best_value, best_iteration, num_observations, oracle_model, and oracle_rmsereport.json["best_observation_number"] for human-facing iteration/observation references; treat best_iteration as a zero-based engine indexreport.json["trajectory"] for human-facing trajectory summaries when it is availablereport.json["trajectory"] is present, use it directly rather than reconstructing ranges or phase breakpoints from memoryreport.json["trajectory"], verify them against observations.jsonl rather than summarizing from memoryobservations.jsonl, keep trajectory language qualitative rather than claiming exact phase ranges or per-iteration valuesIf literature was skipped or the BO artifacts indicate proxy-backed evaluation:
If research_state.json.evaluator_assessment says the evaluator is physics_inspired_heuristic or if the calibration uncertainty is of the same order as the top-candidate gap:
Delegate drafting to scientific-writing. Pass all of the following so the skill has everything it needs:
research_runs/<research_id>/research_state.jsonresearch_runs/<research_id>/research_plan.mdbo_runs/<bo_run_id>/report.jsonbo_runs/<bo_run_id>/state.jsonbo_runs/<bo_run_id>/observations.jsonlbo_runs/<bo_run_id>/convergence.pdf if presentOutput:
research_runs/<research_id>/paper.tex when the prompt explicitly asks for LaTeX; otherwise research_runs/<research_id>/paper.mdresearch_state.json.paper_pathAfter the paper is written, perform a final consistency pass before declaring the workflow complete:
research_state.json, research_plan.md, bo_runs/<bo_run_id>/report.json, and the final paper file referenced by research_state.json.paper_pathresearch_state.json.paper_path points to the final paperresearch_plan.md to the real paper path; do not leave placeholder text like "to be written in Phase 6"research_plan.md and the final paper match report.jsonreport.json["trajectory"] when that field is presentresearch_plan.md and the final paper uses best_observation_number when available rather than the zero-based best_iterationresearch_state.json.experiment_spec matches the final executed BO spec rather than an earlier draftresearch_plan.md and the final paper reflect evaluator_assessment.claim_posture and any stated calibration uncertaintyrun_artifacts and described in research_plan.mdOn resume:
research_state.json.completed or skipped.research_state.json concise and structured; put narrative detail in research_plan.md.build-oracle or run-proxy as part of research-agent.experiment_spec first.