mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 00:11:59 +00:00
README:第 4 波的升级说明(导航「评测」、口径召回、依据有变、被驳回的那一步、建图用量、两个新通知事件、后台任务条与定时维护);核心能力加「回归评测」「口径账本」两行;新增「回归评测与口径账本」一节和数据目录下「结构变化、取值变化与定时维护」一节;单进程前提补上后台任务与锁;检查清单 43 项
This commit is contained in:
@@ -17,7 +17,7 @@
|
||||
## 目录
|
||||
|
||||
- [快速开始](#快速开始) · [生产部署](#生产部署) · [核心能力](#核心能力) · [受限动态编排](#受限动态编排模板定骨架agent-填关节)
|
||||
- [可点击证据](#可点击证据报告里的每个数都点得开出处) · [应用](#应用已发布版本的使用面) · [身份与权限](#身份与权限) · [能力登记与端点](#能力登记与端点)
|
||||
- [可点击证据](#可点击证据报告里的每个数都点得开出处) · [评测与口径账本](#回归评测与口径账本) · [应用](#应用已发布版本的使用面) · [身份与权限](#身份与权限) · [能力登记与端点](#能力登记与端点)
|
||||
- [数据目录](#数据目录让助手和-agent-看懂业务数据) · [工作流形态](#工作流形态) · [节点类型](#节点类型) · [架构](#架构)
|
||||
- [关键设计决策](#关键设计决策) · [运行环境](#运行环境) · [常见问题](#常见问题) · [开发与验证](#开发与验证)
|
||||
|
||||
@@ -64,7 +64,8 @@ Mock 不会写引用标记:探索运行里报告撰写节点照样跑完,但
|
||||
http://127.0.0.1:8000 。前端产物不存在或比源码旧时才重新构建,`--build` / `--no-build` 强制构建或跳过。
|
||||
`--port`(或 `AGENTLAB_PORT`)改端口;`--host` 监听所有网卡,默认同样**不开登录**,多人使用请开登录
|
||||
([身份与权限](#身份与权限))。
|
||||
数据目录默认为仓库下的 `data/`,`AGENTLAB_DATA_DIR` 可改。只能单进程运行:运行管理器在进程内、数据库是 SQLite。
|
||||
数据目录默认为仓库下的 `data/`,`AGENTLAB_DATA_DIR` 可改。只能单进程运行:运行管理器在进程内、数据库是 SQLite;后台任务
|
||||
(探查、起草、剖析、评测、影子起草、口径比对与召回)的排队、限流和按需探查的锁也都在进程内,多进程部署要先换成库里的锁。
|
||||
上传表格的版本存储同样只支持单进程运行(不要给 uvicorn 加 `--workers`):启动时会锁住数据目录,同一个数据目录
|
||||
起了第二个进程时,后起的那个不做任何清理,上传、启用版本等写操作一律返回 503。
|
||||
按期累积的数据源每个历史版本是一份完整副本,磁盘占用随期数和被引用的版本数增长。除当前版本和被运行引用的
|
||||
@@ -141,6 +142,23 @@ http://127.0.0.1:8000 。前端产物不存在或比源码旧时才重新构建
|
||||
7 天、1 天各提醒一次。关登录时这两项都不发。
|
||||
- 分享链接(只读、不用登录的视图页)缺省关,见[分享链接](#分享链接)。
|
||||
|
||||
**从旧版本升级(2026-10 下一轮第 4 波)**:
|
||||
|
||||
- 导航多了「评测」(搭建者以上可见,⌥0,排在「设置」前面),见[回归评测与口径账本](#回归评测与口径账本)。
|
||||
- 受管口径发布新版本后,系统在后台反查用过旧版的答案,按参数分组在同一份数据上重算两版之差(来源「口径召回」的探索运行,
|
||||
差值在召回卡里算)。只有数真变了才给答案的主人开「召回」待办、推 `ledger.recall`;没变的在原答案上记「已按 vN 核对,
|
||||
不影响」。每次发布最多重算 `ledger.recall_limit` 组(缺省 50,0 表示只列不算),超出的在版本历史里「接着算」。发布后自动
|
||||
那一批和启动时接着做跟着 `AGENTLAB_SCHEDULER` 开关。
|
||||
- 审阅改了数据目录里影响数字的那几项(有效记录条件、去重、业务日期、关联、业务主键、度量类型),或者表结构删了表、删了列、
|
||||
改了列类型时,用过它的答案标「依据有变」;按新目录新出现错误级问题的才开待办。
|
||||
- 被驳回的那一步,`node.failed` 事件多带 `reason: "rejected"`(和 `run.cancelled` 同一个字段),画布、航迹、时间线、问数据
|
||||
过程都画「被驳回」,不再画成失败。读事件的外部系统按 `reason` 区分;老运行不变。
|
||||
- 问数据每一轮的建图用量改成读完模型的流再记:以前流末尾才报的输出 token 没记上,这一轮的花费会比以前多一些,多的是原来漏掉的。
|
||||
- 可订阅的通知事件多了「数据源有变化要处理」(全局渠道)和「口径升版,答案的数变了」(全局渠道、答案主人的个人渠道),
|
||||
消息里都不放数字。
|
||||
- 数据目录页起草、剖析的进度挪到一条后台任务条(探查、起草、剖析按服务端的排队顺序列),页头只留入口。数据源卡片上可以设
|
||||
「定时维护」。链到某个数据源卡片的地址统一是 `/data/databases#source-<id>`。
|
||||
|
||||
---
|
||||
|
||||
## 核心能力
|
||||
@@ -158,7 +176,7 @@ http://127.0.0.1:8000 。前端产物不存在或比源码旧时才重新构建
|
||||
| **断点续跑** | 失败的运行可从失败节点继续,已完成的节点不重复执行;探索运行允许修改节点配置(拓扑必须一致),正式运行固定在发布的版本上、不能改配置后继续;继续运行不改发起人 |
|
||||
| **知识库** | 向量 + BM25 混合检索、倒排索引、可选模型重排;PDF / Word / PowerPoint / HTML / Markdown 解析;向量模型可接本地端点 |
|
||||
| **表格入库** | Excel / CSV 上传后转为可用 SQL 查询的表,自动生成 `db_query__<name>` 工具——数字由 SQL 计算得出,而非模型读取;复杂报表按取数配方导入(CSV 同样可以),每月一份的明细能按期累积成一张表,夹在明细中间的小计核对后不进数据 |
|
||||
| **数据目录** | 给数据源的每张表记下粒度、业务主键、业务日期、有效记录条件,每个字段的含义、单位、度量类型和码值,以及表与表的关联;由外键、命名推断、数据剖析和模型起草,逐项确认后生效;表详情里可以和助手对话完善一张表,审阅队列按影响排好先审哪些,目录能导出、导入到别的实例;助手建图、agent 查结构、SQL 检查都读它 |
|
||||
| **数据目录** | 给数据源的每张表记下粒度、业务主键、业务日期、有效记录条件,每个字段的含义、单位、度量类型和码值,以及表与表的关联;由外键、命名推断、数据剖析和模型起草,逐项确认后生效;表详情里可以和助手对话完善一张表,审阅队列按影响排好先审哪些,目录能导出、导入到别的实例;助手建图、agent 查结构、SQL 检查都读它;结构变化、取值变化记进变化记录逐条处理,数据源可设定时维护([详见](#结构变化取值变化与定时维护)) |
|
||||
| **SQL 检查** | 按数据目录检查一对多关联后重复计算、存量跨时间相加、比率被相加等七类问题;助手自查时交回修正,受管模板发布时挡住,运行时标在查询结果上、契约指标降档 |
|
||||
| **跨库合并** | 合并查询节点:各库先聚合到同一个键,再在库外按键合并;截断的输入拒收,证据一路追到两边的原始查询 |
|
||||
| **长期记忆** | 跨运行的记忆读写与自动去重;Copilot 建图时主动记录应当记住的事实 |
|
||||
@@ -167,6 +185,8 @@ http://127.0.0.1:8000 。前端产物不存在或比源码旧时才重新构建
|
||||
| **结构化成果** | JSON Schema 校验,不合格时将错误回传模型自动返工 |
|
||||
| **产出复核** | 运行结束后规则扫描事件流,发现异常才调用模型复核;复核可重组答案但**不得引入原答案中不存在的数字** |
|
||||
| **追踪与成本** | 全量事件落库可回放;逐节点耗时、token 用量、按目录价折算的成本;问数据每一轮的花费含助手建图、挑表和复核 |
|
||||
| **回归评测** | 题集与期望答案(写 SQL、选口径、从问数据运行认定,数值不许人填);后台跑一轮和用户拿到的同一套问数据(建图、运行、复核),逐题评分,准确率带区间,按角色记用量与成本;对比、A/B、「目录贡献」对照;定时评测,退步推通知([详见](#回归评测与口径账本)) |
|
||||
| **口径账本** | 问数据答案里的数逐个标口径(等价已证明 / 助手选用 / 相关口径 / 这次的推理);等价于受管口径的自动按口径正式出具,相关口径一键对账、三个数都点得开;反复出现的问题进认证队列、固化成口径草稿;口径升版后召回重算,数变了才通知([详见](#回归评测与口径账本)) |
|
||||
| **三档出具** | 口径卡(受控指标集)+ 出具契约:叙述中每个数字回指指标集,或由报告撰写节点按引用逐段核对,formal / degraded / withheld 三档判定 |
|
||||
| **可点击证据** | 报告撰写节点只写引用标记,数字和表格由系统照快照填值;数字、表名字段名、知识库原话都点得开,一路指到查询结果里的那一格;结论句可要求挂依据或交给另一个模型裁判;证据清单可导出,报告导出为自包含 HTML(数字点得开口径与出处),另有封存哈希核对件「可验证报告」 |
|
||||
| **发布前检查** | 受管级别加证据门禁 G1–G5;问题给出一键修复 / 选项 / 交给 Copilot 三类修法,一律先预览、不许降低要求;老工作流一键升级为可追溯结构 |
|
||||
@@ -325,6 +345,37 @@ flowchart LR
|
||||
|
||||
---
|
||||
|
||||
## 回归评测与口径账本
|
||||
|
||||
**评测**(导航「评测」,搭建者以上)是换模型、改提示词、改目录之后的一把尺:
|
||||
|
||||
- **题集**:每道题是一个问题加期望答案。期望可以是一条 SQL(选格或列,每次评测重算,不冻结数值;查到遮罩列的拒收)、一份
|
||||
已发布口径的指标、或从某次问数据运行里认定的查询;也可以期望「没有数据」或期望反问。数值不许人填,文字要点由裁判判、单列,
|
||||
不计入准确率。口径升版后,用到它的题顶部提示,每道题三选一:改为固定新版本、新旧两版各算一份期望、或旧题归档另建新题,处置之前评测时跳过。题集能导入导出。
|
||||
- **发起**:选变体(助手模型、写作模型、裁判开关、目录用当前 / 快照 / 只用已核实的 / 关、重复几次),先给预估花费;「目录
|
||||
贡献」预设一次跑「当前 vs 关」。评测在后台跑,每题怎么走和用户在问数据里拿到的一样,停在审批的不代批、照实记;并发、每题
|
||||
时限、单次和每日金额都有上限(「设置 → 偏好设置 → 评测」),评测的花费单独一本账。能停、能只重试没做完的;服务重启标中断,
|
||||
不自己续跑。
|
||||
- **结果**:总览(准确率与可追溯准确率带 Wilson 区间、路径和出具档位的分布、按角色的用量与成本、耗时分位),逐题表(结论、
|
||||
期望和答案里的数、SQL 差在哪、看了几次表、花费,点开去运行),和上一次或基线比(逐题转移与归因),A/B 配对表(精确 McNemar,
|
||||
只展示不卡门)。评测运行不进使用统计。
|
||||
- **定时**:定时任务的目标可以选题集;有一道题从通过变成不通过就推「定时评测有退步」,消息只有题集名、通过数、退步题数和链接。
|
||||
|
||||
**口径账本**把问数据的答案和已发布的口径对上:
|
||||
|
||||
- **逐个数标口径**:探索运行封存后在后台和已发布的口径比对。SQL 被证明等价的标「等价已证明」,助手选用口径拼出来的标「助手
|
||||
选用」,用到同一张表却不等价的标「相关口径」并写差在哪,都不沾边的写「这次的推理」。证据面板的出处链最上面多一步「口径」,
|
||||
问数据每一轮底下有一行摘要;比对还没出结果时写「正在比对口径」并按退避重取。
|
||||
- **出具与对账**:整题等价于一份受管口径时自动按口径发起一次正式运行(可关,每天有上限);助手选用的给一键出具。相关口径点
|
||||
「看差多少」发起一次只读的对账运行,这次的数、口径的数和差值各自点得开出处;对账的说明有没有用可以反馈。使用者能对账;按口径
|
||||
正式出具只限他有权使用的应用固定着的口径版本。
|
||||
- **沉淀**:同一类问题反复出现(同一形状的查询 ≥3 次、来自 ≥2 段对话,或问题聚成一类,或答案被反复导出、做成应用)的进工作流
|
||||
选择里的「可沉淀的问题」,可以固化成口径草稿(引用的查询变成取数节点,跨轮变化的字面量自动成为参数),审过再发布。
|
||||
- **召回**:受管口径发布新版本后,反查用过旧版的问数回答、正式运行、固定它的应用和导出,按参数分组在同一份数据上重算两版之差,
|
||||
数变了才开「召回」待办(旧值、新值、差值和原答案当时的值都点得开,可以按新版重新出具),没变的只记账。发布弹窗先预告规模。
|
||||
- **统计**:等价命中、对账、问题重复度、召回四项(E1–E4)由 `GET /api/ledger/stats` 现算,评测页的「口径命中与重复度」页签
|
||||
画趋势。
|
||||
|
||||
## 应用:已发布版本的使用面
|
||||
|
||||
工作流发布出去之后,看数的人、办事的人在「应用」里用它。应用不是新引擎,也不是嵌进来的低代码平台:每个数都来自
|
||||
@@ -558,6 +609,20 @@ curl -H "Authorization: Bearer agl_…" -H "Idempotency-Key: order-20261016-001"
|
||||
加进范围并留痕。「表已不在」只在真删除时说,范围外、读不到结构、索引里从来没有,各自分开说。剖析得到的行数和日期范围也
|
||||
交给助手和 agent,附一句「只供写查询参考,不能作为回答里的数」,遮罩按当时的设置重滤。
|
||||
|
||||
### 结构变化、取值变化与定时维护
|
||||
|
||||
探查时每张表记一个结构版本,和上一次比出结构变化(加删列、改类型、改可空、改注释、键和外键的增删;疑似改名只说「可能」);
|
||||
剖析的取值观察(行数、码值分布、最新业务日期、最近 35 天每天的行数)和同一口径的历史比,比出取值变化(新码值、比例剧变、
|
||||
断档、缺天、量跌、行数大起大落),大表照实写口径(整表、窗口、块采样、前 N 行),口径不同不比。两种变化记在同一份变化记录里:
|
||||
|
||||
- **在哪看**:数据目录的「变化」视图按要处理 / 提醒 / 说明分组,数据源卡片上的角标是要处理的条数,表详情里有「结构与取值
|
||||
变化」一节。每条写影响面:说到这些列的目录项和它们的状态、写死了这一列的已发布模板、哪条 SQL 现在会报列不存在。
|
||||
- **怎么处理**:清理目录项、加入码值、重新起草、重新剖析、知道了、误报(必须写理由),动作都落到目录已有的写入上,记下目录
|
||||
版本或建的任务。机器自己只做一件事:数据证明码值表不再列全时撤销「已列全」。
|
||||
- **定时维护**:数据源卡片上的「定时维护」,选步骤(探查结构、剖析需要的表、取值观察)和低峰时段,存成一条目标为这个数据源
|
||||
的定时任务,缺省没有。和起草、剖析在同一个数据源上排队,没执行的步骤照实记原因。
|
||||
- **通知**:「数据源有变化要处理」只给源名、条数和链接,不放表名、列名和取值。
|
||||
|
||||
### 助手按需查看
|
||||
|
||||
以前每一轮开始前,服务端按库的大小把表结构塞进助手的 system:说一句「你好」也要先挑表,再带着上万字的表结构去
|
||||
@@ -979,14 +1044,14 @@ loop 节点给它定轮数上限的环:用 loop 节点包住它。确实需要
|
||||
## 开发与验证
|
||||
|
||||
```bash
|
||||
# 后端:约 12800 个测试,-n auto 并行约 1 分钟
|
||||
# 后端:约 14300 个测试,-n auto 并行约 1–2 分钟
|
||||
cd backend && env -u ANTHROPIC_API_KEY -u ANTHROPIC_BASE_URL -u ANTHROPIC_AUTH_TOKEN -u OPENAI_API_KEY \
|
||||
python -m pytest -n auto
|
||||
|
||||
# 前端类型检查
|
||||
cd frontend && npx tsc -b
|
||||
|
||||
# 前端检查:33 项,默认 8 道并行。连 5273 / 8000,先起 ./scripts/dev.sh
|
||||
# 前端检查:43 项,默认 8 道并行。连 5273 / 8000,先起 ./scripts/dev.sh
|
||||
node scripts/check-all.mjs
|
||||
# 另起 2 套只给检查用的「后端 + vite」,各用一份数据拷贝,约 6.5 分钟;边改代码边跑也不被打断
|
||||
CHECK_DATA_SRC=<数据目录> node scripts/check-all.mjs --stacks 2 --lanes 12
|
||||
@@ -997,16 +1062,17 @@ node scripts/check-all.mjs evidence publish
|
||||
pytest 前面的 `env -u` 不能省:没配 Key 的 provider 会退回环境变量里的密钥,启动时的 seed 也会拿它种一个
|
||||
provider——环境里留着真密钥,测试就可能真的去调接口。
|
||||
|
||||
`check-all` 的 38 项按 `scripts/check-all.mjs` 里 `ORDER` 的顺序排:
|
||||
`check-all` 的 43 项按 `scripts/check-all.mjs` 里 `ORDER` 的顺序排:
|
||||
|
||||
| 类别 | 检查 |
|
||||
|---|---|
|
||||
| 不开浏览器 | `tokens`(令牌静态扫描)`copy`(界面文案)`trace`(运行态内核的纯函数)`decode`(事件翻译层) |
|
||||
| 走线、组件与护栏 | `canvas-layout` `ui-kit` `guards` |
|
||||
| 外壳、回答流与运行态 | `shell` `stream` `evidence`(可点击证据)`run-states`(节点卡)`canvas-fx`(画布表层) |
|
||||
| 各页面 | `studio` `publish`(发布前检查与自动修复)`chat` `runs` `manage` `versions`(上传表格的版本)`catalog`(数据目录)`catalog-loop`(表助手、审阅队列、导出导入)`catalog-profile`(数据剖析的逐表任务)`ui`(端到端,连真数据) |
|
||||
| 各页面 | `studio` `publish`(发布前检查与自动修复)`chat` `runs` `manage` `versions`(上传表格的版本)`catalog`(数据目录)`catalog-loop`(表助手、审阅队列、导出导入)`catalog-profile`(数据剖析的逐表任务)`catalog-changes`(变化、表详情的变化一节、定时维护、后台任务条)`ui`(端到端,连真数据) |
|
||||
| 复核套件与导出 | `schedules`(定时任务)`compare`(运行对比)`verify`(双盲复算、反方审稿)`inquiry`(审批质询)`challenge`(反方审稿)`bundle`(可验证报告)`whatif`(数字推演)`report-export`(报告导出) |
|
||||
| 应用平台 | `apps`(应用页、印章、点数字看出处、入口校验、实例页)`inbox`(会签进度、超时、动作确认的哈希卡、核实)`app-editor`(应用编辑、派生、检查、发布时选处置、助手)`capabilities`(能力、端点、身份、通知、审计)`blueprint`(新建应用、蓝图卡片、试运行、发布摘要)`personal`(个人应用)`records`(记录列表)`files`(文件控件) |
|
||||
| 评测与口径账本 | `evals`(题集、加题、发起与进度、结果、对比与 A/B、口径命中与重复度)`ledger`(证据里的「口径」一步、轮次摘要、出具与对账、可沉淀的问题) |
|
||||
| 应用平台 | `apps`(应用页、印章、点数字看出处、入口校验、实例页)`inbox`(会签进度、超时、动作确认的哈希卡、核实)`app-editor`(应用编辑、派生、检查、发布时选处置、助手)`capabilities`(能力、端点、身份、通知、审计)`access-keys`(访问密钥)`share`(分享链接与 /s 页)`blueprint`(新建应用、蓝图卡片、试运行、发布摘要)`personal`(个人应用)`records`(记录列表)`files`(文件控件) |
|
||||
|
||||
完整输出写进 `/tmp/agentlab-checks/<时间>/`,终端只给汇总;并行时没过的最后单独重跑一遍,重跑才过的单列成「偶发」。
|
||||
`--stacks` 每套拷一份数据、端口自动挑空闲的,后端不热重载、vite 不监听文件,跑完、出错或被中断都收干净。
|
||||
|
||||
Reference in New Issue
Block a user