From badcc2f6aa48c0cf08efc91e5c4edb31fa94caf1 Mon Sep 17 00:00:00 2001 From: ThearchyHelios Date: Mon, 19 Oct 2026 15:46:49 +0800 Subject: [PATCH] =?UTF-8?q?README=EF=BC=9A=E7=BC=96=E6=8E=92=E5=AE=8C?= =?UTF-8?q?=E5=96=84=E7=AC=AC=202=20=E6=B3=A2=E7=9A=84=E5=8D=87=E7=BA=A7?= =?UTF-8?q?=E8=AF=B4=E6=98=8E=EF=BC=88=E7=BC=BA=E7=9C=81=E4=BB=8D=E6=98=AF?= =?UTF-8?q?=20SQLite=20=E5=8D=95=E8=BF=9B=E7=A8=8B=E3=80=81=E6=96=B0?= =?UTF-8?q?=E5=88=97=E4=B8=8E=E8=BF=90=E8=A1=8C=E4=BA=8B=E4=BB=B6=E5=94=AF?= =?UTF-8?q?=E4=B8=80=E7=B4=A2=E5=BC=95=E3=80=81=E6=95=B0=E6=8D=AE=E7=9B=AE?= =?UTF-8?q?=E5=BD=95=E6=A0=87=E8=AE=B0=EF=BC=9B=E5=BA=94=E7=94=A8=E5=BA=93?= =?UTF-8?q?=E5=8F=AF=E6=8D=A2=20PostgreSQL=20=E4=B8=8E=E5=AF=BC=E5=85=A5?= =?UTF-8?q?=E3=80=81deploy.sh=20=E5=86=85=E7=BD=AE=E5=BA=93=E4=B8=8E=20mig?= =?UTF-8?q?rate-to-postgres=E3=80=81dev.sh=20--postgres=EF=BC=9BPostgreSQL?= =?UTF-8?q?=20=E4=B8=8B=E5=A4=9A=E8=BF=9B=E7=A8=8B=E3=80=81=E5=8D=87?= =?UTF-8?q?=E7=BA=A7=E8=A6=81=E5=85=88=E5=81=9C=E5=85=A8=E9=83=A8=E8=BF=9B?= =?UTF-8?q?=E7=A8=8B=EF=BC=9B=E8=BF=90=E8=A1=8C=E6=8C=89=E7=B1=BB=E5=88=AB?= =?UTF-8?q?=E6=8E=92=E9=98=9F=E4=B8=8E=E4=BA=A4=E4=BA=92=E7=95=99=E5=BA=95?= =?UTF-8?q?=EF=BC=9B=E5=8D=87=E7=BA=A7=E5=89=8D=E8=87=AA=E5=8A=A8=E5=A4=87?= =?UTF-8?q?=E4=BB=BD=E3=80=81restart=20=E7=BC=BA=E7=9C=81=E5=8F=AA?= =?UTF-8?q?=E9=87=8D=E5=90=AF=E6=9C=8D=E5=8A=A1=EF=BC=9Bbubblewrap=20?= =?UTF-8?q?=E6=B2=99=E7=AE=B1=E4=B8=8D=E5=86=8D=E7=BB=A7=E6=89=BF=E7=8E=AF?= =?UTF-8?q?=E5=A2=83=E5=8F=98=E9=87=8F=EF=BC=9B=E5=BE=AA=E7=8E=AF=E9=87=8C?= =?UTF-8?q?=E7=9A=84=E5=AD=90=E5=B7=A5=E4=BD=9C=E6=B5=81=E7=BC=96=E5=8F=B7?= =?UTF-8?q?=E4=B8=8E=E5=B9=82=E7=AD=89=E9=94=AE=EF=BC=9B=E9=97=AE=E6=95=B0?= =?UTF-8?q?=E6=8D=AE=E5=BF=83=E8=B7=B3=E4=B8=8D=E8=90=BD=E5=BA=93=E4=B8=8E?= =?UTF-8?q?=E4=BA=8B=E4=BB=B6=E6=97=A5=E5=BF=97=E6=B8=85=E7=90=86=E3=80=81?= =?UTF-8?q?=E6=8E=A5=E6=89=8B=E6=97=B6=E9=87=8D=E6=96=B0=E6=A0=B8=E5=AF=B9?= =?UTF-8?q?=E8=BA=AB=E4=BB=BD=EF=BC=9B=E8=A1=8C=E5=BA=8F=E4=B8=8D=E5=AE=9A?= =?UTF-8?q?=EF=BC=9B=E9=A9=B3=E5=9B=9E=E5=8E=BB=E5=90=91=E7=9A=84=E8=AF=B4?= =?UTF-8?q?=E6=B3=95=EF=BC=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/README.md b/README.md index 35959acd..83b4ae0c 100644 --- a/README.md +++ b/README.md @@ -181,6 +181,33 @@ PostgreSQL 容器,端口不对外,密码自动生成在数据目录里), 记下,调度循环去抖后发起(每一期各自去抖),下游的输入模板用 `{{ event.* }}` 取事件内容;保存时检查串联不成环、运行时 限 5 层;途经驳回的、应用补算的缺省不认(可以勾选)。跟着 `AGENTLAB_SCHEDULER` 开关:关着时事件留着不派发。 +**从旧版本升级(2026-10 编排完善第 2 波)**: + +- 缺省仍是数据目录里的 SQLite、单进程,不改配置的部署升级后行为不变;启动时自动补上这一波的新列和索引(运行事件的 + `(run_id, seq)` 改成唯一索引,存量库里要是已有重号,记一条日志、这一次不建,不影响启动)。数据目录里会多一个 + `.agentlab-data` 标记文件,`deploy.sh` 靠它(或 `agentlab.db`、`.secret_key`)认数据目录,别删。 +- 应用库可以换成 PostgreSQL:设 `AGENTLAB_DATABASE_URL`,执行断点一起进去;现有数据用 `python -m app.db copy-to-postgres` + 导入(要先停服务,断点一起搬)。Docker 部署可以让 `deploy.sh` 在旁边起一个内置的 PostgreSQL(新部署 `install --postgres`, + 已经在用 SQLite 的 `migrate-to-postgres`,失败就原样退回 SQLite);开发时 `./scripts/dev.sh --postgres`。内置和外接只能选 + 一种。见[用 PostgreSQL](#用-postgresql)。 +- 用 PostgreSQL 时可以起多个工作进程(`AGENTLAB_WORKERS`):运行、问数据一轮、后台任务在库里认领,进程没了别的进程接手或 + 照实标中断,停止跨进程生效,调度只由一个进程当班,实时事件跨进程推送。SQLite 只支持单进程:第二个进程拒绝启动。升级要先 + 停掉全部工作进程(`deploy.sh upgrade` 就是这样做的):库里还有活着的、版本不同的进程时,新版本拒绝启动。见[多进程](#多进程)。 +- 运行按类别排队:交互(问数据、画布试跑)、应用、定时、系统(评测、召回、对账、补算、出具)。全站上限照旧是 + `AGENTLAB_MAX_CONCURRENT_RUNS`,其中缺省留四分之一给交互,别的类别空闲时可以借用其余的,「设置 → 运行并发」可调。满载时 + 评测、召回会比以前慢,换来问数据总有名额;评测每题的时限不算排队的时间。 +- `deploy.sh upgrade` 升级前自动备份:SQLite 拷到数据目录的 `backups/sqlite/`,内置 PostgreSQL 用 `pg_dump` 存到 + `backups/postgres/`,各留最近 5 份(`BACKUP_KEEP`),只有属主能读。`restart` 缺省只重启服务,`restart --postgres` 连库一起。 +- bubblewrap 沙箱不再继承后端的环境变量:代码节点里读不到模型的 API Key、数据库地址这类变量了。代码要用的值请显式传进去。 +- 子工作流放在循环里多次执行时,每次的步骤接着编号,写外部系统的幂等键改用父运行里的全局 id:以前循环第二轮的写入会拿到 + 第一轮的回执、不发送,现在照常发;升级前停在子工作流里的运行恢复时仍认旧的键,已经生效的不重发。 +- 问数据的心跳不再落库,结束超过 14 天的轮次清掉事件日志(那一轮的问答、答案照旧在对话里);服务重启后接手一轮时按账号现在的 + 角色重新核对,停用或没了权限的照实标中断。 +- 多行查询没有 `ORDER BY` 时,引用其中一格不再算「来自口径」,召回、对账里照实标「行序不定」(E1 统计会跟着变);全部指标 + 都行序不定的召回结论写「核对不了」并开待办,不再写「没变」。对账要人选对照指标时,按逐个数核对过的那几列预选。 +- 待办、通知、Webhook 里驳回的去向照实写(「被驳回,转到 X」「这一路到此为止」),子工作流里的写「子工作流 › x」;子工作流 + 里一步失败时自动复核只报一条。用户看得到的列表遇到同名、同时间的并列时按 id 排,两种库顺序一致。 + --- ## 核心能力