研究自动化,为何卡在这一步

PRAXIST 主打可执行、可度量的自治研究,2.9k Star 背后是开发者对 AI 科研流水线长期可验证性的渴求。但很多人装好跑起来才发现:任务描述太模糊、指标无法回归、代码环境总脏。本文拆 5 个最容易踩的坑,附可直接复制的代码。

源仓库: sapientinc/PRAXIST

PRAXIST 是 Sapient Inc. 开源的自治研究框架,目标是把“提问题—做实验—写报告”全流程交给 AI 代理完成,关键约束是研究过程必须可在计算机上执行并量化复现。它在 8 月底登上 GitHub Trending,2.9k+ Star 背后是开发者对“AI 科研流水线”长期可验证性的渴求——比起花哨 Demo,大家更想确认代理真的把实验跑出来了。

任务规范怎么写才“可执行”

现象:直接甩一句“研究 LLM 推理优化”,代理给出 5 个候选方向却跑不出一个可验证实验。

根因:PRAXIST 把任务当成 DSL 处理,要求显式声明 hypothesis、metric、dataset、budget 四个字段,缺一个就退化成“自由探索”模式,结果既不可复现也无法对比。

解法:用项目自带的 schema 把模糊目标转成可度量命题:

from praxist import Task, Metric

task = Task(
    name="kv_cache_quant_eval",
    hypothesis="INT8 KV cache 在 Llama-3-8B 上 perplexity 退化 < 1%",
    dataset="wikitext-103",
    metric=Metric(name="perplexity", target=1.0, direction="lower"),
    budget={"gpu_hours": 4, "max_trials": 12},
)
result = praxist.run(task)

沙箱跑代码,为什么总报“环境脏”

现象:本地能跑,代理在云端 sandbox 执行时却 ModuleNotFoundError

根因:PRAXIST 默认用 ephemeral Docker 镜像,不继承本地 pip 缓存,也不会自动读 requirements.txt

解法:在仓库根目录新增 praxist.env.yaml,让代理按你的清单重建环境:

# praxist.env.yaml
runtime:
  base_image: "pytorch/pytorch:2.3.0-cuda12.1-cudnn8-runtime"
  pip:
    - transformers==4.43.3
    - bitsandbytes==0.43.1
    - datasets==2.20.0

怎么让“度量”真的可复现

现象:同一任务连跑两次,结果差 3%,回归失败。

根因:代理默认随机选种子,数据切分每次也可能不同。

解法:用 add_constraint 把 seed 和 split 钉死,PRAXIST 会把这些字段 hash 进 result signature,下次可直接对比:

task.add_constraint(seed=42, split="test[:1024]", n_samples=1024)
print(result.signature)  # sig:7e3a-91bd-2048,跑两次完全一致

报告里怎么区分“代理编的”和“实验出的”

现象:阅读自动生成的 markdown 报告,发现结论是代理自己 hallucinate 的。

根因:默认 reporter 没启用 citation 模式,文字结论与真实指标没强制挂勾。

解法:开启 cite 模式,强制每段挂 metric id:

report = praxist.report(task, mode="cite")
report.save("out.md")
# 渲染后每段尾部挂 [metric:kv_cache_quant_eval@trial_07]

想并行跑多个任务,资源怎么排

现象:4 卡机只跑 1 个 trial,剩下的 trial 全在排队。

根因:默认调度器是串行执行,每个 trial 独占全部 GPU。

解法:切到 parallel scheduler 并指定每个 trial 占几张卡:

praxist.run_many([task_a, task_b, task_c],
                 scheduler="parallel",
                 gpus_per_trial=1)

调度器会按 trial 数 × 每卡数 自动填满,剩余的进等待队列而不是阻塞主线程。

Sources

本文参考:GitHub Trending 2026-08-30、sapientinc/PRAXIST README、r/MachineLearning 周贴 #42、Hacker News 评论 #31872。