Files
AgentLab/.env.example
ThearchyHelios 2714890d0d 文档重新梳理:README 精简成介绍和索引,细节按主题拆进 docs/zh-CN 与 docs/en(17 篇一一对应),英文文档不含中文
README.zh-CN.md / README.md 只留:这是什么、为什么用它、主要功能(按领域一行一条,链到文档)、快速开始、部署、文档索引、
开发与测试、许可(原文不动)。原来的每一节按读者和任务分到 17 篇主题文档:ask-data、workflows、evidence、
data-sources(新增:接入数据库、只读保证、上传表格、跨库合并、遮罩列)、data-catalog、tools(新增:工具、审批档位、
能力登记、端点、网络规则——它们管所有工作流,不只应用)、apps、evaluation-and-ledger、schedules(含通知)、deployment、
configuration、postgresql-and-scaling、identity-and-security、architecture、development、upgrade-notes(按时间倒序,
每波先写要做的事)、faq。删掉的只有模块名(api/copilot_gen.py、chat/drive.py、data/schema_view.py)、重复的话和
「以前…现在…」的叙述;操作步骤、命令、配置名、限制、权限边界都有归宿。中文是原文,英文按新的中文写;英文里界面文字
只写英文名,开头注明界面目前只有简体中文,中文占位符换成英文占位符,中文数字的例子改成不依赖中文的说法。
数据剖析可以同时剖析 2–3 张表(baf23998)收进 data-catalog。
新增 scripts/check-docs.py:英文文档(README.md、docs/en/**)不许有中日韩字符和全角符号(代码块也算),
README、docs/**、deploy/README.md 的相对链接和锚点都要通,docs/zh-CN 与 docs/en 文件一一对应、标题层级相同。
中文提示里指向 README 章节的地方改指新文档:cluster/guard.py、cluster/version.py、db/base.py 两处报错,
data/schema_view.py 文档串,.env.example 三处,scripts/prod.sh、scripts/test-postgres.sh,terms.ts 两处、
DataSourcesTab.tsx、check-manage.mjs 注释,deploy/README.md 三处链接。deploy/agentlab.env 未动。
验收:check-docs 0 问题(英文文档 18 个 0 处中文,相对链接 369 条 0 断链,18 对标题层级一致);相关后端测试
117 通过、7 跳过;tsc -b、check-copy 通过。
2026-10-21 10:23:26 +08:00

114 lines
6.7 KiB
Bash
Raw Permalink 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(docs/zh-CN/postgresql-and-scaling.md「从 SQLite 搬过来」)
# 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(docs/zh-CN/postgresql-and-scaling.md「直连与 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
# ---- 多进程(docs/zh-CN/postgresql-and-scaling.md「多进程」;只有应用库是 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