# 复制成 .env 后按需修改。所有项都可以留空——留空时用代码里的默认值。 # API Key 也可以不写在这里,启动后在「设置 → 模型接入」页面填,会加密存进本地 SQLite。 # ---- 环境 ---- # 后端跑在哪个 conda 环境里(dev.sh 用) # AGENTLAB_CONDA_ENV=agentlab # ---- 服务 ---- # AGENTLAB_PORT=8000 # AGENTLAB_WEB_PORT=5273 # ---- 应用库 ---- # 不设:数据目录里的 SQLite(data/agentlab.db,断点 data/checkpoints.db),单机单进程。 # 设成 PostgreSQL 时整个应用库和断点都放进去(要 [postgres] 额外依赖,environment.yml 已带);数据目录照样要有。 # 从现有的 SQLite 数据目录搬过去:python -m app.db copy-to-postgres data(README「用 PostgreSQL」) # AGENTLAB_DATABASE_URL=postgresql+asyncpg://agentlab:密码@127.0.0.1:5432/agentlab # 要 SSL 时加 ?sslmode=require(verify-ca / verify-full 同理);证书文件用环境变量 PGSSLROOTCERT / PGSSLCERT / PGSSLKEY,不写在地址里 # AGENTLAB_DATABASE_URL=postgresql+asyncpg://agentlab:密码@db.example.com:5432/agentlab?sslmode=verify-full # 断点放另一个库时才设(不设就和应用库同一个库) # AGENTLAB_CHECKPOINT_URL=postgresql://agentlab:密码@127.0.0.1:5432/agentlab_checkpoints # 连接池:每个进程常驻几条、高峰再多开几条;设成 0 不用连接池(前面有 PgBouncer 时) # AGENTLAB_DB_POOL_SIZE=10 # AGENTLAB_DB_MAX_OVERFLOW=20 # ---- 沙箱 ---- # auto(挑第一个已就绪的:microvm → bubblewrap → seatbelt → local) # 可选值:microvm | seatbelt | bubblewrap | local | off # AGENTLAB_SANDBOX_BACKEND=auto # ---- microVM 沙箱(独立 Linux 内核,需 conda 环境装了 [microvm] 额外依赖)---- # 注意:内存/CPU/进程表是内核级真限额,但网络关不干净——HTTP/HTTPS 断得掉, # UDP/53 拦不住,DNS 隧道外泄通道始终开着。防外泄要靠网络层,别指望沙箱。 # 跑代码用的 OCI 镜像,首次使用会拉取并缓存到 ~/.microsandbox(实测约 55s,仅此一次) # AGENTLAB_MICROVM_IMAGE=python:3.12-slim # 同 session 复用同一台 VM;空闲这么久就回收,避免闲置 VM 占内存 # AGENTLAB_MICROVM_IDLE_SECONDS=300 # 单次启动(含首次拉镜像)的等待上限 # AGENTLAB_MICROVM_BOOT_TIMEOUT=300 # AGENTLAB_SANDBOX_TIMEOUT=30 # 内存限额:microvm 后端真实生效;seatbelt/local 在 macOS 上限不住(不强制 RLIMIT_AS) # AGENTLAB_SANDBOX_MEMORY_MB=512 # AGENTLAB_SANDBOX_NETWORK=false # ---- 执行护栏 ---- # AGENTLAB_MAX_GRAPH_STEPS=200 # AGENTLAB_MAX_AGENT_STEPS=25 # AGENTLAB_MAX_CONCURRENT_RUNS=20 # ---- HTTP 工具 ---- # 逗号分隔的域名白名单;留空表示只拦内网地址,不限制公网域名 # AGENTLAB_HTTP_TOOL_ALLOWLIST=api.github.com,news.ycombinator.com # 本机代理(Clash / mihomo 等)开了 TUN + fake-ip 时,查任何域名都先拿到这个段的假地址, # 网页工具会把它当内网拦掉。填上之后,落在段里的解析结果改向公共 DNS 核实真实地址: # 公网放行,内网照拦,核实不了也拦。没开 fake-ip 就留空 # AGENTLAB_HTTP_TOOL_FAKE_IP_RANGES=198.18.0.0/15 # 核实用的 DNS-over-HTTPS(JSON 接口),逗号分隔,按顺序试;写 IP 形式免得解析它自己的域名。 # 境外的放前面:境内公共 DNS 对被封锁的域名返回污染结果,会被当成内网误拦 # AGENTLAB_HTTP_TOOL_DOH_URLS=https://1.1.1.1/dns-query,https://223.5.5.5/resolve # ---- 落库加密密钥 ---- # 留空会自动生成并存到 data/.secret_key。换了这个值,之前存的 API Key 会解不开。 # AGENTLAB_SECRET_KEY= # ---- 模型凭据(可选,首次启动会自动导入成 provider)---- # ANTHROPIC_API_KEY=sk-ant-... # 用中转网关时填这两个(会以 Authorization: Bearer 发送) # ANTHROPIC_BASE_URL=https://your-gateway.example.com/api # ANTHROPIC_AUTH_TOKEN=... # OPENAI_API_KEY=sk-... # ---- 可选增强 ---- # 配了就用 Tavily 搜索,否则 web_search 退回 DuckDuckGo # TAVILY_API_KEY=tvly-... # 打开后知识库用 OpenAI embedding 代替本地哈希向量(检索质量更好) # AGENTLAB_USE_OPENAI_EMBEDDINGS=1