AutoProjectClaw uses a single YAML config file. Generate a template with:
autoprojectclaw setup --output my_config.yamlproject:
name: "my-project"
output_root: "./runs"
initial_direction: "Your research direction here"This is enough for a dry run. Add sections as needed.
| Key | Type | Default | Description |
|---|---|---|---|
name |
string | "AutoProjectClaw Project" |
Project identifier |
output_root |
path | "runs" |
Where run outputs are written. Relative paths resolve from config file location. |
grant_profile |
string | "sz_stib_general" |
Grant type profile |
initial_direction |
string | "" |
One-sentence description of your initial research direction |
| Key | Type | Default | Description |
|---|---|---|---|
provider |
string | "dry_run" |
LLM provider: dry_run, codex_cli, claude_cli, openai, anthropic |
model |
string | "dry-run" |
Model ID (provider-specific) |
temperature |
float | 0.2 |
Sampling temperature |
max_tokens |
int | null |
Max output tokens |
api_key_env |
string | null |
Environment variable name for API key |
api_base |
string | null |
Custom API base URL |
timeout_seconds |
float | 60.0 |
Request timeout |
CLI overrides: --llm-provider, --llm-model, --llm-api-key-env, --llm-api-base, --llm-temperature, --llm-max-tokens, --llm-timeout-seconds.
| Key | Type | Default | Description |
|---|---|---|---|
enabled |
bool | false |
Enable real academic API searches |
core_sources |
list | [pubmed, openalex, semantic_scholar] |
Primary literature sources |
preprint_sources |
list | [arxiv, biorxiv, medrxiv] |
Preprint sources |
guideline_sources |
list | [ada, aha, kdigo, who] |
Guideline sources (role-only, no API) |
max_results_per_query |
int | 5 |
Results per query per source |
year_min |
int | 2020 |
Minimum publication year |
preprint_recent_days |
int | 365 |
Preprint recency window in days |
preprint_max_pages |
int | 1 |
Max pages for preprint APIs |
codex_chrome_search |
bool | true |
Generate Chrome search tasks in Codex runtime |
s2_api_key_env |
string | "SEMANTIC_SCHOLAR_API_KEY" |
Env var for Semantic Scholar API key |
s2_api_key |
string | "" |
Inline Semantic Scholar API key (prefer s2_api_key_env) |
openalex_email |
string | "autoprojectclaw@users.noreply.github.com" |
Email for OpenAlex polite pool |
source_roles |
dict | built-in defaults per source | Custom role descriptions for each source |
timeout_seconds |
float | 20.0 |
Per-source request timeout |
List of source files for project context:
sources:
files:
- name: "避重备忘录"
path: "/path/to/avoidance.md"
role: "prior_project_avoidance"
required: true
- name: "申请模板"
path: "/path/to/template.docx"
role: "grant_template"
required: true| Key | Type | Default | Description |
|---|---|---|---|
name |
string | filename | Display name |
path |
path | required | File path (relative to config or absolute) |
role |
string | "" |
Role tag (e.g., protocol, prior_project_avoidance, grant_template) |
required |
bool | false |
Fail if file missing |
List of data dictionary directories:
sources:
data_dictionary_dirs:
- name: "UKB Data Dictionary"
path: "/path/to/ukb_dict"
role: "cohort_hypothesis_validation"
required: falseSame schema as sources.files, but path points to a directory.
Prior-project overlap thresholds:
| Key | Type | Default | Description |
|---|---|---|---|
red_threshold |
int | 4 |
Dimensions with full overlap to trigger red flag |
yellow_threshold |
int | 2 |
Dimensions with partial/full overlap to trigger yellow flag |
avoidance:
red_threshold: 4
yellow_threshold: 2Free-form grant metadata:
grant:
name: "面上项目"
duration_years: 3
body_word_limit: 8000
application_context: "基础研究专项"Free-form investigator profile:
investigator:
background: "流行病与卫生统计学博士生"
domains: ["糖尿病", "心脑血管疾病", "代谢组学"]
methods: ["R/Python", "Cox", "LASSO"]Free-form project assumptions:
assumptions:
local_data: "已有糖尿病体检队列"
omics_status: "代谢组学可用"
ukb_role: "外部验证"| Key | Type | Default | Description |
|---|---|---|---|
enabled |
bool | true |
Archive stage artifacts to markdown KB |
root |
path | null |
Custom KB root (default: <run_dir>/kb) |
backend |
string | "markdown" |
KB backend (only markdown supported) |
| Key | Type | Default | Description |
|---|---|---|---|
timezone |
string | "Asia/Shanghai" |
Timezone for timestamps |
max_retries |
int | 1 |
Max retries per stage |
approval_timeout_hours |
int | 24 |
Hours before approval timeout warning |
| Key | Type | Default | Description |
|---|---|---|---|
scoring_dimensions |
list | [feasible, interesting, novel, ethical, relevant, differentiation, grant_story] |
FINER dimensions |
novelty_threshold |
float | 3.0 |
Minimum novelty score |
differentiation_weight |
float | 1.5 |
Multiplier for differentiation dimension |
| Key | Type | Default | Description |
|---|---|---|---|
cache_dir |
string | ".cache/literature" |
Cache directory (relative to run dir or absolute) |
per_source_ttl |
dict | pubmed: 7d, openalex: 3d, semantic_scholar: 3d, arxiv: 1d, biorxiv: 7d, medrxiv: 7d | Per-source TTL in seconds |
| Key | Type | Default | Description |
|---|---|---|---|
hitl_required_stages |
list | [5] |
Stages requiring human approval. Use [] to disable. |
log_redaction |
bool | false |
Redact sensitive data in logs |
- Unknown keys are silently ignored (use
--verboseto see warnings) - Missing or null fields use defaults
- Explicit
false,[]are preserved as user intent, not replaced by defaults - Known limitation:
runtime.max_retries,runtime.approval_timeout_hours,topic_scoring.novelty_threshold, andtopic_scoring.differentiation_weightuse anor defaultpattern that treats explicit0as missing. Setting these to0will silently fall back to the default value.