Files
AgentLab/.env.example
T

114 lines
6.6 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 复制成 .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
# 启动时库还连不上(和库一起起、库还在初始化)最多等几秒,按退避重试;密码不对、库不存在这种不等。缺省 90
# AGENTLAB_DB_STARTUP_TIMEOUT=90
# ---- 连接池(PostgreSQL;每个进程一套)----
# 常驻几条,缺省 10;设成 0 不用连接池、每次新建连接
# AGENTLAB_DB_POOL_SIZE=10
# 高峰再多开几条,缺省 20
# AGENTLAB_DB_MAX_OVERFLOW=20
# 池子满了等一条空出来最多等几秒,缺省 30
# AGENTLAB_DB_POOL_TIMEOUT=30
# 一条连接用多久换新的(秒),缺省 1800
# AGENTLAB_DB_POOL_RECYCLE=1800
# ---- PgBouncer(README「多进程」的「直连与 PgBouncer」)----
# 直连地址(写法同 AGENTLAB_DATABASE_URL):进程间通知、跨进程锁、断点这几样依赖会话状态的连接走它,普通查询走上面的地址。
# 不设就全用 AGENTLAB_DATABASE_URL(直连 PostgreSQL、或 PgBouncer 的会话模式时都不用设)
# AGENTLAB_DATABASE_DIRECT_URL=postgresql+asyncpg://agentlab:密码@db.example.com:5432/agentlab
# AGENTLAB_DATABASE_URL 指的是 PgBouncer 的事务模式时设成 1(缺省 0):不用客户端连接池、关掉预备语句缓存;
# 这时必须另给上面的直连地址,没给就拒绝启动
# AGENTLAB_DB_PGBOUNCER=0
# ---- 多进程(README「多进程」;只有应用库是 PostgreSQL 时才能大于 1)----
# 几个工作进程,缺省 1(scripts/prod.sh、Docker 的入口按它起;dev.sh 总是一个进程、热重载)
# AGENTLAB_WORKERS=1
# 每个进程在库里登记、续租约:租约多长(秒,缺省 30)、隔多久续一次(秒,缺省 5)。租约到期没续上算进程没了,别的进程接手它的活
# AGENTLAB_WORKER_LEASE_S=30
# AGENTLAB_WORKER_HEARTBEAT_S=5
# 后台调度循环(定时任务、事件派发、流程时限)开不开,缺省开;拷一份数据目录另起的服务要关成 0。一拍隔几秒,缺省 15
# AGENTLAB_SCHEDULER=1
# AGENTLAB_SCHEDULER_TICK_S=15
# 构建号:进程登记的代码版本里带上它(新旧版本不许同时连一个库)。Docker 镜像构建时自动写进去,不设就用 git 提交
# AGENTLAB_BUILD=
# ---- 开发用 PostgreSQL(./scripts/dev.sh --postgres)----
# 这几项只有 dev.sh 读:写成环境变量或写在这个 .env 里都行(环境变量优先)。数据在 docker 数据卷里,
# 密码第一次自动生成在数据目录(和后端一样照 AGENTLAB_DATA_DIR,缺省 data/)的 .postgres-dev/ 里,
# dev.sh 照它设 AGENTLAB_DATABASE_URL(盖过上面写的)
# AGENTLAB_DEV_PG_CONTAINER=agentlab-dev-postgres
# AGENTLAB_DEV_PG_PORT=55432
# AGENTLAB_DEV_PG_VOLUME=agentlab-dev-pgdata
# AGENTLAB_DEV_PG_IMAGE=postgres:16
# ---- 沙箱 ----
# 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