跳转至

Install

环境要求

  • Python 3.12 或更新版本;
  • Linux、macOS,或能够提供等价 Python 环境的系统;
  • 至少一个受支持模型服务的 API Key。

代码沙箱需要 Landlock ABI 3 或更新版本

code_executor、evaluate_code、workspace_code_executor 和自定义 Evaluator 使用 Linux Landlock 与 seccomp 进行内核级隔离。Landlock 是 Linux 内核自带的安全模块,不是需要通过 pip 或系统包管理器单独安装的软件;SRHarness 要求 Landlock ABI 3 或更新版本(通常对应 Linux 6.2 或更新内核),以确保沙箱能够限制文件截断。若当前发行版的内核不支持或未启用 Landlock,请升级或启用发行版提供的较新内核。其他系统仍可使用不涉及任意代码执行的功能,但上述入口会抛出 SandboxUnavailableError,而不会退回到仅靠 Python 源码检查的弱隔离。

可用下面的命令检查当前内核提供的 Landlock ABI:

python -c "from sr_harness.runtime.landlock import landlock_abi; print(landlock_abi())"

从 PyPI 安装

pip install sr-harness

安装完成后检查入口:

sr-harness --help
python -c "import sr_harness, sr_harness_engine; print('SRHarness is ready')"

使用 Docker

官方镜像发布在 Docker Hub。镜像已经包含 WebUI 和 tools 可选依赖,不需要在宿主机中安装 Python。先在当前目录创建 .env 并写入所用模型服务的 API Key,然后执行:

docker volume create sr-harness-data
docker pull yumeoww/sr-harness:latest
docker run --detach \
  --name sr-harness \
  --restart unless-stopped \
  --env-file .env \
  --publish 127.0.0.1:8000:8000 \
  --volume sr-harness-data:/data \
  yumeoww/sr-harness:latest

在浏览器中打开 http://127.0.0.1:8000/。名为 sr-harness-data 的 Docker volume 会持久保存对话注册表、各对话工作区和运行记录;删除或更新容器不会删除其中的数据。可以通过以下命令查看日志或管理服务:

docker logs --follow --tail 100 sr-harness
docker stop sr-harness
docker start sr-harness

如需通过外部主机访问,可将端口映射改为 --publish 8000:8000,并开放相应的防火墙端口。SRHarness 本身未提供完整的认证、授权或网络安全边界;将服务暴露到不可信网络前,应配置反向代理、TLS 和访问控制。

Warning

Docker 可以限制 Agent 对宿主机文件和进程的访问,但传入同一容器的环境变量仍可能被容器内执行的代码读取。不要把含有敏感文件的宿主机目录挂载到 /data。在面向不可信用户的公网部署中,还应将模型凭据放在独立网关中,并限制容器的出站网络,而不是直接把真实 API Key 交给运行 Agent 的容器。

从源码安装

需要修改 SRHarness、运行测试或构建文档时,使用可编辑安装:

git clone https://github.com/yuzhTHU/SRHarness.git SRHarness
cd SRHarness
conda create -p ./venv python=3.12 -y
conda activate ./venv
python -m pip install --upgrade pip
pip install -e '.[all]'

可选依赖

SRHarness 将较重或特定场景的依赖拆成 extras:

Extra 内容 安装命令
tools PySR、PySINDy、PDF 读取等研究工具 pip install 'sr-harness[tools]'
nn PyTorch 与 PyTorch Geometric pip install 'sr-harness[nn]'
dev pytest、MkDocs、Material、mkdocstrings 与开发辅助依赖 pip install 'sr-harness[dev]'
all 所有可选 extras pip install 'sr-harness[all]'

例如,同时安装研究工具和开发依赖:

pip install 'sr-harness[tools,dev]'

在源码目录中开发时,将上面的命令换成 pip install -e '.[tools,dev]'。

Note

PySR、PyTorch 等依赖的安装时间更长,并且可能有额外的平台要求。仅希望体验 SRHarness 时,不必安装全部 extras;需要相应功能时再按需安装即可。

配置模型服务

在运行目录中创建 .env,或者在 shell 中设置所用 provider 的环境变量。例如 OpenRouter:

OPENROUTER_API_KEY="sk-or-v1-..."

从源码安装时,也可以执行 test -f .env || cp .env.sample .env 并编辑生成的 .env 模板。

常用环境变量包括:

Provider 环境变量 申请 API Key
OpenRouter OPENROUTER_API_KEY OpenRouter Keys
DeepSeek DEEPSEEK_API_KEY DeepSeek Platform
Gemini GEMINI_API_KEY Google AI Studio
SiliconFlow SILICONFLOW_API_KEY SiliconFlow API Keys
OpenAI/Azure OpenAI OPENAI_API_KEY、OPENAI_ENDPOINT、OPENAI_API_VERSION OpenAI API Keys / Azure Portal

也可以在 SRHarness 网页工作台 中配置 API Key。配置的 API Key 将被保存到当前对话私有的 sessions/{CONVERSATION_ID}/.env,不会暴露给 Agent 工作区或其它对话。

代理

需要网络代理时,设置 HTTP_PROXY 和 HTTPS_PROXY,例如:

export HTTP_PROXY=http://127.0.0.1:7890
export HTTPS_PROXY=http://127.0.0.1:7890

也可以在 SRHarness 网页工作台 中配置网络代理。配置的代理地址将被用于 HTTP 和 HTTPS 请求,并保存到当前对话私有的 .env 中。

验证安装

启动 WebUI:

sr-harness run --save-path ./sr-harness --host 127.0.0.1 --port 8000

并在浏览器打开 http://127.0.0.1:8000/。

构建文档

可从 GitHub 获取项目源码并构建文档:

git clone https://github.com/yuzhTHU/SRHarness.git SRHarness
cd SRHarness
pip install -e '.[dev]'
mkdocs serve

并在浏览器打开 http://127.0.0.1:8001/。

发布前可执行严格构建:

mkdocs build --strict