ThearchyHelios
|
5a341b48e9
|
文档:新增 analysis 一篇(中英各一,标题层级一致)——分析能力是什么、为什么(判定由系统算、判定语由系统写、照实说、留痕)、五种分析各回答什么问题与判定标准(括号里是缺省阈值)、算不了的情形与调用写错、期次的写法、两个入口(Agent 的分析工具、分析卡)、引用写法、分析说法核对(判断词的类、check / strict / off、来源与因果的分界)、分析范围、设置、限制。更新:证据与出具(按引用核对的血缘口子与分析说法复核、口径卡指标的两期可比性、引用标记加 a: 与 v:A / table:A、点开一个分析结论看到什么、两种导出认分析结论、运行对比按分析卡对齐、复核套件加分析说法核对)、工作流(内置模板 11 个、节点类型表加分析卡、G3 加分析说法核对、agent 可绑分析工具)、问数据(分析类问题怎么走、复核只写说明的几种缺口、分析结论的数不标口径、自查提醒)、回归评测与口径账本(贡献、判定两种期望与评分,细节待评测包交付后校对;分析结论的数不比对口径)、配置(偏好设置里的分析一节,17 项的叫法、缺省、范围)、工具(内置工具 23 个、分析工具一节;原来写的 15 个早已对不上)、升级说明(本轮);README 中英加一条主要功能、文档索引加 analysis,节点 19 种、模板 11 个。development.md 的检查项数没动,等前端包的数
|
2026-10-21 18:25:46 +08:00 |
|
ThearchyHelios
|
1ad087c387
|
文档补充:复核套件逐项写清(双盲复算、反方审稿、审批质询、数字推演沙盘、运行对比),新增「查询区间里没有数据」一节,补全访问密钥到期提醒发到哪里;中英文同步
- evidence.md「复核套件」:开头讲三项共用的只读核查 agent 和「设置 → 偏好设置 → 核查」,再按代码模块文档逐项写解决什么、怎么用、结果、局限;可验证报告的细节并进「导出」一节(只证明内部一致、封存后追加的单列、遮罩、何时能导出),复核套件里链过去
- evidence.md 新增「查询区间里没有数据」:整列是 0 时现查表里实际的日期范围,口径卡标「区间内无数据」、出具降档、写作提醒、问数据按复核重来、助手自查、宁可漏报;data-catalog.md 的数据剖析一节链过去
- schedules.md:访问密钥到期提醒写明个人密钥发本人的个人渠道、服务账号的密钥发全局渠道,以及消息里有什么;定时运行结束后的自动对比链到运行对比
- README 两版:功能列表加复核套件一条,文档索引里证据与出具一行补上新加的两节
scripts/check-docs.py:英文文档中文字符 0 处,相对链接 383 条全通,中英文档 18 对标题层级一致
|
2026-10-21 10:51:15 +08:00 |
|
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 |
|
ThearchyHelios
|
f774e42463
|
数据剖析可以同时剖析几张表:剖析设置加「同时剖析的表数」(table_concurrency,1–3,缺省 1,即以前的一张做完再做下一张;上限 3 是给这个源上的分析留出连接池的临时连接),每张表的查询仍一条一条发,所以同一时刻对业务库最多这么多条查询。剖析任务的执行改成按设置开几个执行者,按任务里的顺序一张结束就开始下一张;进度、发过的查询各落在自己那张表上(不再记「正在做的那一张」)。每张表开始前照旧重读数据源:停用、关掉剖析或止损后不再开始新的表,正在做的几张照常做完(止损时剩下的项记止损的原因),都结束后再把没开始的记停下;止损的连续失败、超时比例按几张表的查询合起来算。停止、关停时正在做的几张各自收尾,做完的项照常写进目录,都收完才往上交(等的时候又被停止也等完);一张表让任务整体出错(快照被改动、数据源没了、记结果写库出错)时,另几张按停止收尾、原因写这一句,本进程续不上租约的不写。同时要估同一张表的行数时只估一次(按表加锁,先来的没估成后来的自己估)。同源已有剖析时的 409 说法从「第 x / y 张表」改成「已完成 x / y 张表」。界面:设置表单多一格(单位「张」,提示写明业务库同时要应付几条查询、和分析共用连接),风险说明、卡片悬停、开始前的醒目一句在大于 1 时写明「同时剖析 N 张表、每张表的查询一条一条地发」,预算多一行,这次最多用时按几轮算。测试:同一时刻在途查询不超过设置、每张表仍一条一条发(1/2/3 三种)、几张一起显示进行中并按顺序开始、同时停止各自写进目录、止损后不再开始新表、停用时正在做的做完、一张出错另几张按停止收尾、共享行数只估一次;check-catalog-profile 加一节(预算、估算、说法、两行进行中、表清单)。验收:后端全量 14979 通过;止损那条并发测试单独跑 30 遍、整个剖析任务测试文件并行跑 15 遍都没有偶发;tsc;check-catalog-profile 217 项、check-copy 28 项全过
|
2026-10-21 09:08:10 +08:00 |
|
ThearchyHelios
|
0d4ee79440
|
README.md 改成英文版(中文版 README.zh-CN.md 的完整翻译),作为仓库默认 README
逐节对译,不删不并:标题层级和顺序、45 个标题、18 个代码块、10 张表、142 条列表项、图片和外链与中文版一一对应;
代码块里命令、配置名、环境变量、路径、接口原样,只译注释(Mermaid 图的标签一并译成英文);行内代码原样(含 <密码>、
<数据目录> 这类中文占位符,含义不明显处在正文里附一句英文说明)。界面文字写英文译名,并在每个二级节首次出现时附中文
原文,如 Settings → Preferences(「设置 → 偏好设置」);附的中文都和中文版逐字一致。页内锚点全部换成英文标题的
GitHub 锚点,目录按英文标题重建;顶上一行「English | [简体中文](README.zh-CN.md)」。
核对:两份文件各 43 条页内链接(25 个锚点)0 条断链,deploy/README.md 指向 README.zh-CN.md 的 3 条带锚点链接也通;
中文版的 460 个行内代码在英文版里全部原样出现;正文里的数字除「200 万 → 2 million」这类单位换算外一致;
另按节对照通读复核一遍,改正漏译的限定语和几处语义偏差。
|
2026-10-21 08:50:47 +08:00 |
|
ThearchyHelios
|
aadc8d0115
|
中文 README 移到 README.zh-CN.md(内容不改,顶上加语言切换),中文提示里指向 README 章节的地方改指中文版
git mv 保留历史;顶上一行「[English](README.md) | 简体中文」,英文版随后单独提交。
改指 README.zh-CN.md 的:报错文字(cluster/guard.py、cluster/version.py、db/base.py 两处)、.env.example 三处注释、
scripts/prod.sh 用法说明、scripts/test-postgres.sh 注释、「口径同 README「哪些角色看得到原值」」的四处代码注释
(terms.ts 两处、DataSourcesTab.tsx、check-manage.mjs),deploy/README.md 里三处「仓库 README」写成指向
../README.zh-CN.md 对应章节的链接。
没改的:deploy/deploy.sh 四处「README 的常见问题」「README「用 PostgreSQL」」和 deploy/agentlab.env 117 行——离线包里和
deploy.sh 放在一起的 README.md 就是 deploy/README.md,那几句指的正是它的常见问题、用 PostgreSQL 两节;
deploy/README.md 第 16 行文件清单说的是它自己;version.py、runner.py 文档串里「以前 README 写…」是旧事的叙述。
验收:相关后端测试 117 通过、7 跳过;tsc -b、check-copy 通过。
|
2026-10-21 08:13:58 +08:00 |
|
ThearchyHelios
|
badcc2f6aa
|
README:编排完善第 2 波的升级说明(缺省仍是 SQLite 单进程、新列与运行事件唯一索引、数据目录标记;应用库可换 PostgreSQL 与导入、deploy.sh 内置库与 migrate-to-postgres、dev.sh --postgres;PostgreSQL 下多进程、升级要先停全部进程;运行按类别排队与交互留底;升级前自动备份、restart 缺省只重启服务;bubblewrap 沙箱不再继承环境变量;循环里的子工作流编号与幂等键;问数据心跳不落库与事件日志清理、接手时重新核对身份;行序不定;驳回去向的说法)
|
2026-10-19 15:46:49 +08:00 |
|
ThearchyHelios
|
d117237bbc
|
配置模板补上 PostgreSQL 和多进程的几项:.env.example 的应用库一节分成应用库、连接池、PgBouncer、多进程、开发用 PostgreSQL 五组,补上 AGENTLAB_DATABASE_DIRECT_URL、AGENTLAB_DB_PGBOUNCER、AGENTLAB_DB_POOL_TIMEOUT、AGENTLAB_DB_POOL_RECYCLE、AGENTLAB_DB_STARTUP_TIMEOUT、AGENTLAB_WORKERS、AGENTLAB_WORKER_LEASE_S、AGENTLAB_WORKER_HEARTBEAT_S、AGENTLAB_SCHEDULER、AGENTLAB_SCHEDULER_TICK_S、AGENTLAB_BUILD 和 dev.sh --postgres 的 AGENTLAB_DEV_PG_*(都注释着,名字、缺省值照 core/config.py 和脚本);dev.sh 的 AGENTLAB_DEV_PG_* 也认 .env / backend/.env(环境变量优先,和后端的配置同一个规矩,不 source)。deploy/agentlab.env 末尾再追加「外接 PostgreSQL 与多进程(可选)」一段(地址写宿主机网桥 172.17.0.1、放行容器网段,和内置库二选一;断点库、PgBouncer、直连地址、工作进程、租约、连接池、启动时等库),已有的行一行没动。deploy.sh:AGENTLAB_DATABASE_DIRECT_URL 也算外接的库(和内置互斥),只设直连地址不设 AGENTLAB_DATABASE_URL、内置库开 AGENTLAB_DB_PGBOUNCER、SQLite 时 AGENTLAB_WORKERS 大于 1 都在起容器之前照实拦下(migrate-to-postgres 在停服务之前查)。单测:这些 AGENTLAB_* 经 --env-file 进容器、几条拦截、模板两段的项和缺省值、dev.sh 从 .env 读设置,以及守卫——config.py 里应用库、连接池、多进程、调度几类配置每一项都要在 .env.example 里有
|
2026-10-19 15:41:37 +08:00 |
|
ThearchyHelios
|
27237623c5
|
合入 nr8/b 的 45513c90(复核 R-b7–R-b15 和 R-b12 的尾巴:租约按库的时钟、隔离用计入休眠的钟、PostgreSQL 单进程墙钟跳变不再隔离自己、Fenced 只对绑定世代的执行抛、隔离后等不到重新登记的运行照实收尾、续租任务不退出、换身份后收拾旧身份、quota.take 交回日期、check_pgbouncer 同一主机端口(本机回环规范化)也拒绝、copy-to-postgres 抽出 checkpoint_conninfo 加 --direct-url、版本指纹算进 requirements.lock、run_events 重号记进设置);没有冲突,README、db/base.py、db/to_postgres.py 自动合并:to_postgres.main 里 nr8/b 的 --direct-url 和这边连不上时一句话报错的分支都在
|
2026-10-19 15:14:25 +08:00 |
|
ThearchyHelios
|
eb9af51abb
|
复核 R-b14(PostgreSQL 单进程墙钟一跳就隔离自己):取得到计入休眠的钟(SLEEP_AWARE)时 stale() 只看它,墙钟只在取不到时当后备(两只里走得多的那只);两只钟对不上(jumped)不再直接隔离,先续一次租——续租那一句按库的时钟核对「自己的租约还没过期」,以它为准:续上了只记一条日志照常,续不上才隔离。README「多进程」补一句:库服务器自己的时钟往前跳超过一个租约时所有进程一起隔离、怎么恢复,往回跳时真没了的进程要多等,本机墙钟跳了不隔离。补测试:墙钟往前往后跳一小时不算续晚了、只算对不上,计入休眠的钟走过两个租约照样算,取不到时墙钟当后备;PostgreSQL 单进程墙钟 ±1 小时续租照常续上、不隔离,真过期仍隔离;执行到一半墙钟 ±1 小时,运行照常跑完、世代不变(改前的写法往前跳那条不过)
|
2026-10-19 15:07:17 +08:00 |
|
ThearchyHelios
|
68c1f4143e
|
复核 R-b13(版本拦截与零碎):preflight 报错列出全部活着的、版本不同的进程,各标明心跳在走还是停着、等租约过期(以前只点名先看到心跳的那个,人停掉它再起还会被另一个拦下);源码指纹把依赖锁文件 requirements.lock 的内容也算进去,只升了依赖也算版本不同,锁文件取不到时换成几个关键包的版本,Docker 镜像里留一份锁文件;存量库 run_events 撞了号时把结果记一次(settings 表 cluster:run_events_seq_duplicates,记下撞号的那几处,最多 200 处),之后启动不再整表 GROUP BY、只按索引核对那几处还撞不撞,都处理掉了才再数一遍、建唯一索引、删掉记录。隔离后换身份那几条日志写出新旧完整身份已在 R-b9 那一笔里改了。README「升级」一段跟着补一句。补测试:一个心跳在走、一个心跳停着,报错两个都列出、各标状态;锁文件变了指纹跟着变、取不到时用包版本;撞号第一次整表数、第二次只核对不扫、处理掉之后建上索引并删掉记录
|
2026-10-19 14:45:54 +08:00 |
|
ThearchyHelios
|
7fcce90f95
|
复核 R-b7(休眠、时钟偏差下隔离失灵):租约改用库的时钟——续租、登记写 lease_until = 库的 clock_timestamp() + 租约,判活、清理过期登记、版本守卫看谁活着都比库的时钟,调度当班的租约同样按库的时钟接班、续租,本地判还当不当班改看计入休眠的单调钟,机器之间墙钟差多少都不起作用;隔离改用计入休眠的钟(Linux CLOCK_BOOTTIME,macOS clock_gettime(CLOCK_MONOTONIC),取不到退回 monotonic),并且一律同时比墙钟,两只钟里走得多的那只说过了一个租约就算续晚了;续租时两只钟差出一个租约(墙钟跳了、休眠没计)也隔离;续租那一句带上「库里自己的租约还没过期」的条件,过期了或者登记不见了就不再续这个身份、隔离换身份(以前登记不见了是用旧身份重新登记)。补测试:单调钟不走而墙钟过了两个租约、墙钟往回拨,都算续晚了;本机墙钟快一小时,别的进程照样活着、当班租约抢不走;库的时钟过了自己的租约时续租不续、隔离一次
|
2026-10-19 14:27:55 +08:00 |
|
ThearchyHelios
|
5318c33f57
|
合入 nr8/b 的 ac8b194c(复核 R-b1–R-b6、交互留底的运行名额、先占额度再出具、直连地址 AGENTLAB_DATABASE_DIRECT_URL 和 AGENTLAB_DB_PGBOUNCER、不许新旧版本混跑、prod.sh 和 Docker 入口问 python -m app.cluster workers、镜像带构建号);没有冲突,README、config.py、db/base.py 自动合并
|
2026-10-19 14:01:07 +08:00 |
|
ThearchyHelios
|
237850f6c9
|
部署说明:deploy/README「用 PostgreSQL」改成三种放法(缺省 SQLite、内置 PostgreSQL、外接 PostgreSQL)各自的用法和数据在哪里,内置的怎么起、能改的几项、备份和恢复(pg_dump / pg_restore 的完整步骤)、从 SQLite 切过来的六步和出错时的样子、SQLite 库文件什么时候能删、卸载;包里多了 postgres-image.tar,升级前自动备份、升级时自动迁移,停止和卸载按顺序管两个容器。仓库 README:离线包一段补内置 PostgreSQL,「用 PostgreSQL」补启动时等库和「和库一起起」(deploy.sh install --postgres / migrate-to-postgres、dev.sh --postgres),快速开始提一句 --postgres
|
2026-10-19 13:43:52 +08:00 |
|
ThearchyHelios
|
75ab3678cb
|
代码里拦住新旧版本混跑(用户拍板):新增 cluster/version——代码版本(包版本 + 构建号 AGENTLAB_BUILD 或 git 提交 + app/ 下源码指纹,比较按源码指纹)、库结构版本(各表各列加迁移清单的哈希),进程登记时一并记下(cluster_workers 两列,add-only 迁移)。PostgreSQL 时补列之前先看一眼(preflight):库里还有活着的、版本不同的进程,心跳在走就拒绝启动、照实写明是哪几个进程什么版本、要先停掉再升级,心跳停着的(强杀留下的)等租约过期再起;登记那一下在事务级咨询锁里再查一遍,两个不同版本同时启动只有先登记上的起得来。Docker 镜像带上构建号;README 写明升级步骤。补测试:版本不同的活进程被点名拒绝、同版本照常加入、过期的不算、只比源码指纹;PostgreSQL 上心跳在走的拒绝、心跳停着的等过期、登记时再拦一次
|
2026-10-19 13:04:07 +08:00 |
|
ThearchyHelios
|
d68ca9774f
|
加直连地址 AGENTLAB_DATABASE_DIRECT_URL 和 PgBouncer 事务模式开关 AGENTLAB_DB_PGBOUNCER(用户拍板):依赖会话状态的连接——收发进程间通知的那一条(LISTEN)、跨进程的锁(会话级咨询锁,另建一个直连的小池子)、断点库(缺省)——走直连地址,普通查询走 AGENTLAB_DATABASE_URL,不设就全用同一个;开关打开时普通地址不用客户端连接池、关掉 SQLAlchemy 和 asyncpg 的预备语句缓存、预备语句用随机名字(照 SQLAlchemy 文档),事务级咨询锁照常成立;开关打开却没给直连地址时拒绝启动。README 写三种部署(直连、PgBouncer 会话模式、事务模式加直连地址)和要配的 server_reset_query,照实说没在真的 PgBouncer 上跑过。补测试:地址解析和规范化、断点库缺省走直连、事务模式关掉的几样、LISTEN 和跨进程锁走直连、事务模式没给直连地址拒绝启动
|
2026-10-19 13:01:21 +08:00 |
|
ThearchyHelios
|
6ed782a84b
|
运行名额改成给交互留底、其余可借(用户拍板):交互留底缺省全站上限的 1/4、至少 1、至多全站上限减 1,应用、定时、系统三类合起来永远用不到留底;三类各自的上限缺省 = 全站上限 − 留底(设置里可调小),没人问数据时评测能开满;交互上限缺省 = 全站上限;等名额照旧按优先级、同级先来先得。存着的设置原样存、缺省按全站上限和留底现算;留底不小于全站上限时 422。设置页「运行并发」加「给交互留底」一项,写明留底和借用是什么,README 同步。补测试:缺省值、空闲时系统类借满到 全站 − 留底、留底不借给应用类、问数据一来马上拿到留底;多进程端到端加 5b(评测借满时问数据拿留底、不等评测跑完)
|
2026-10-19 12:53:28 +08:00 |
|
ThearchyHelios
|
09907b21f1
|
README:prod.sh 那一句照多进程改;多进程一节补连接数(每个进程多一条收发通知的连接,咨询锁持锁期间占一条;PgBouncer 事务模式下 LISTEN 和会话级咨询锁不成立,多进程建议直连)
|
2026-10-19 12:23:07 +08:00 |
|
ThearchyHelios
|
4e3623885b
|
合入 W2-a 的复核修复(nr8/a:导入的 NOT NULL 补值与孤儿行、收尾 dispose、sslmode 换算、PostgreSQL 写入去 NUL、不分大小写搜索 contains_ci、json_eq 两库同语义、JSON 守卫、用户可见列表补决胜键、bubblewrap --clearenv、部署脚本与原子写的几处、README 连接数预算)
# Conflicts:
# backend/app/api/schedules.py
# backend/app/main.py
|
2026-10-19 12:21:38 +08:00 |
|
ThearchyHelios
|
4a80936c38
|
多进程的跑法和说法:prod.sh 加 --workers(AGENTLAB_WORKERS,SQLite 时大于 1 先拦下),Docker 入口按 AGENTLAB_WORKERS 起 uvicorn --workers,dev.sh 写明开发时单进程;README 把各处「单进程前提」改成实话——SQLite 单进程(第二个进程拒绝启动),PostgreSQL 可多进程,新增「多进程」一节:怎么起、配置项、认领和租约与各类接手规矩、跨进程停止、运行并发的四类与缺省、调度当班、实时流、进程里的账和缓存(哪些进了库、哪些留在进程里及其影响)、多台机器的条件(共享存储同一路径、对时、NFS 上 SQLite 文件的实话)、升级要停掉全部进程、多进程端到端测试;deploy/README 补多进程。按需视图的锁改成按应用取(每日上限几个键之间也数得准),出具的锁改成全站一把(每日上限是全站的)
|
2026-10-19 12:08:17 +08:00 |
|
ThearchyHelios
|
1ab500dfbd
|
README「用 PostgreSQL」按复核补全:SSL 的写法(sslmode= 自动换、证书走 PGSSLROOTCERT 等环境变量、别的 libpq 参数启动时报错)、没装 [postgres] 的提示、每个进程的连接数预算(应用库最多 30、断点池最多 20,max_connections=100 时起几个进程怎么算、怎么调)、孤儿行和 NOT NULL 空值导入时怎么处理、NULL 排序补写的范围和列表的决胜键、JSON 按类型比、文本列的 NUL、不分大小写的搜索看建库的区域设置、记录表 records/*.db 原地写要停服务或用 SQLite 备份接口拷;.env.example 补 SSL 的写法
|
2026-10-19 12:07:31 +08:00 |
|
ThearchyHelios
|
9a0d87aa6e
|
合入遗留收口分支 nr8/l(问数据心跳不落库与事件日志清理、续跑重新核对身份、事件触发批量查询与去抖边界、子图编号与驳回出口等),W2-b 在此之上做多进程协调
|
2026-10-19 10:46:34 +08:00 |
|
ThearchyHelios
|
b9cfc243e2
|
PostgreSQL 上文本按字节比大小、排序,同 SQLite:应用库建表时文本列带 COLLATE "C"(PostgreSQL 缺省按建库的区域设置比,en_US.UTF-8 下大小写混排、标点被忽略,排出来的先后和 key < '…' 的结果都跟 SQLite 不一样),不看建库时选了什么;驱动报错的第一句去掉 asyncpg 带的「<class '…'>: 」前缀
- 测试:大小写、标点、中文混在一起的排序和比较两种库一样;建表语句里带 COLLATE "C",SQLite 的不带
- README:和 SQLite 一致的那几条补上排序规则
|
2026-10-19 10:26:45 +08:00 |
|
ThearchyHelios
|
b2f6d8d7d2
|
README、部署说明补上用 PostgreSQL:AGENTLAB_DATABASE_URL、断点、连接池(含 PgBouncer)、和 SQLite 一致的那几条、从 SQLite 导入的步骤(copy-to-postgres,先停服务、先 --dry-run)、备份(pg_dump 加数据目录)、多台机器要把数据目录挂在共享存储的同一个路径上,以及实话:数据目录里的 SQLite 文件(记录表原地追加写、上传表格版本库的 flock)在网络文件系统上并发写不安全,眼下仍按单进程部署
- 依赖与锁文件:[postgres] 里装的是什么、为什么 langgraph-checkpoint 单独卡小版本、checkpoint-postgres 锁在 3.1.2;数据位置:PostgreSQL 时不再用 agentlab.db / checkpoints.db;开发与验证:scripts/test-postgres.sh
- environment.yml 带上 [postgres];.env.example 补应用库一节
- deploy.sh:数据目录里没有 agentlab.db(库在 PostgreSQL)时,认 .secret_key、uploads/ 也算 AgentLab 的数据目录,不再拒绝改属主
- 断点库的连接串不带只给 asyncpg 看的参数(prepared_statement_cache_size 之类,psycopg 不认);地址规范化、启动日志不带密码的测试
|
2026-10-19 10:13:58 +08:00 |
|
ThearchyHelios
|
edde451d19
|
问数据事件日志:助手的心跳不落库、已结束的轮次按期清理。心跳(模型几秒没出声时的 heartbeat 操作)是纯保活,以前每 3 秒落一条库;现在只在本进程里记最近的一拍(chat/log.beat),流上发一条不带 seq 的,重连时流先补最近的那一拍,之后落了任何事件就作废;页面照收不带 seq 的心跳、不动收到的最后一个 seq。其余事件照落(第 2 波跨进程从库里按 seq 追)。已结束(成功、失败、取消、中断)超过 14 天的轮次整轮删事件日志(chat/log.purge,挂在调度循环的那一拍里,一小时最多一次):重开已结束的一轮读的是 conversation_turns 那一行,不读事件日志;任务行留着,seq 接着发号。README 数据位置写明
|
2026-10-19 09:34:14 +08:00 |
|
ThearchyHelios
|
591db44afd
|
README:编排完善第 1 波的升级说明(问数据整轮放到服务端、子工作流的步骤和证据进父图、驳回出口、定时任务的事件触发);核心能力的人工介入补上驳回出口
|
2026-10-18 18:31:52 +08:00 |
|
ThearchyHelios
|
3d9dc7239b
|
README:口径账本逐个数判与取数 SQL 别取整的建议;第 4 波升级说明补上最终验收后的修正(比对算法第 4 版、评分规则第 2 版可重评、只思考不出操作自动重来、未完成的调用也计次)
|
2026-10-17 13:35:39 +08:00 |
|
ThearchyHelios
|
c8cd56c108
|
README:第 4 波的升级说明(导航「评测」、口径召回、依据有变、被驳回的那一步、建图用量、两个新通知事件、后台任务条与定时维护);核心能力加「回归评测」「口径账本」两行;新增「回归评测与口径账本」一节和数据目录下「结构变化、取值变化与定时维护」一节;单进程前提补上后台任务与锁;检查清单 43 项
|
2026-10-16 22:33:59 +08:00 |
|
ThearchyHelios
|
728d0c5d2a
|
README:第 3 波的升级说明(结构变化与取值观察、定时维护、按口径自动出具、最近一次封存的来源白名单、使用者的原始运行记录、邮件与待办汇总、密钥到期提醒);应用一节加「分享链接」(开关、两种模式、/s#key、到期与撤销、嵌入、留痕)
|
2026-10-16 18:51:02 +08:00 |
|
ThearchyHelios
|
c28fc336a2
|
README:第 2 波的升级说明(后台探查与探查范围、db_schema 的检索与按需加入、封存后比对口径、导出审计与来源链);身份与权限加「访问密钥」一节和 curl 示例;数据目录加「大库:探查范围与按需加入」
|
2026-10-16 15:39:32 +08:00 |
|
ThearchyHelios
|
853a130c93
|
README:第 1 波的行为变化与升级说明(驳回记为被驳回、选人按候选池核对、安全响应头、对外访问地址只留一个、/docs 收起、列类型完整写法与重新探查、剖析设置改名);核心能力的人工介入、表格入库、追踪与成本三行;安全边界补安全头、错误码、系统运行不进统计
|
2026-10-16 12:54:13 +08:00 |
|
ThearchyHelios
|
68f521c000
|
README:数据剖析一行按逐表后台任务重写(按表预算、止损、排队、留痕、开始时定范围),导入在剖析时也不行;check-all 改成 38 项,补上 catalog-profile 和此前没列上的 blueprint、personal、records、files
|
2026-10-15 19:50:14 +08:00 |
|
ThearchyHelios
|
7739340607
|
普通用户建应用集成收尾:
- 问数据和个人应用的图放行绑定只读查询等合规工具的调用工具节点,只读和遮罩在这条路径上生效;被治理成写入的工具在只读运行里直接拒;知识库范围在工具层固定(图级默认值、参数名纠错、Agent 都改不了)
- 个人应用的刷新和个人蓝图的试运行只有拥有者能读:运行、事件、证据、工件、文件、运行与审批列表、对比、可验证报告、质询、假设分析、提取工作流一并收紧;个人蓝图的试运行不论谁发起都按个人应用约束
- 共享蓝图只给拥有者、对应应用的管理者、管理员,看不到的一律 404;审核副本归审核人;管理员看别人的个人应用只有元数据、可以归档
- 记录表跨版本汇总(只读挂载旧版本、按当前列 UNION ALL、各版本各自固定高水位,缺的版本照实写进印章);停用前发起的运行可以继续写旧版本;更正沿用原提交人、更正人记审计
- 约定收口:待办种类 review、事件 file.extracted、表单错误 file、模板定义带示例与预置;前端类型一次补齐、去掉临时的局部类型;审核待办卡不再给打不开的链接;读附件事件有中文说法;检查脚本补断言
|
2026-10-15 13:55:19 +08:00 |
|
ThearchyHelios
|
941723b17c
|
端到端验收修复与指标出具:
- 身份与工具:登录页建第一个管理员(认人接口的 401 说明能不能建);搭建者有只读的人和组名录,选人给候选并核对名字;授权三行带标题;端点请求头名校验(空名、非法名存不进、发不出时说清原因);写入能力在工具页试运行一律演练、不发送,HTTP 状态照实说成败;写记忆不算只读、查询能力只能选同一端点上的只读能力;审批与遮罩的说法和实际规则一致;开登录时不要署名、导入和发布记登录的人;使用者不显示推演等只给搭建者的操作,403 按是否开登录说话;登录页只认一次人
- 流程与实例:图里用到的岗位(派给谁、超时升级给谁、发送确认派给谁)全部派生、没绑人的发布时报错;写外部系统的参数按能力声明的类型收拢后再算哈希和发送,收不成就不发;发起人的实例页只看这一步的状态,处理人才给待办卡;会签进度带登录核实和时间,升级后照实写规则;实例状态写流程的结论(已退回、未确认、等待核实写入结果),核实生效后不再挂失败原因;流程应用首页不派生最近封存运行的结果块,看板没数据时是安静的空态;样例⑩的金额带类型和下限、待办标题带金额,表单上下限前后端一起生效
- 看板与证据:定时任务模板加 ISO 周、上一 ISO 周、本月、上月;出处链穿过原样解析查询结果的整形节点,追不到原始数据的照实说停在哪里,样例⑨改用 cell();应用首页和版本历史都能做成应用;指标块单位不重复;版本列表带退役说明;定时任务页头跟着刷新;删视图要确认、新视图能起名;编辑器属性用中文名、术语带解释
- 指标出具(用户 2026-10-15 拍板):契约只写「指标来自」、上游没有报告撰写节点、成果里没有模型写的话时按指标出具——必需指标齐、指标输入追到原始数据、成果字段里的数回指得上才完整出具;受管级要求每个指标静态地追到原始数据(governed.metric_untraced);出具横幅和应用印章写明按指标
- 受管工作流降为已发布只给管理员(Q8 顺延,服务端同样拦);工作流接口带当前发布版的级别,画布上改过之后也认得出受管工作流
|
2026-10-15 07:15:37 +08:00 |
|
ThearchyHelios
|
c86e58f464
|
README 与部署说明:应用(怎么生成、能做哪几类、视图与印章、流程与待办、写外部系统、入站钩子、按新口径补算、升级安全)、身份与权限(三种登录方式、会话、找回、角色与授权、使用者的问数据、遮罩的边界)、能力登记与端点、助手按需查看;默认不开登录的说法、核心能力表、数据目录与遮罩、节点类型、安全边界、检查项(33 项另加 check-auth)、从旧版本升级;部署配置模板加登录一节
|
2026-10-14 22:12:01 +08:00 |
|
ThearchyHelios
|
fc002bd3b3
|
README:检查数改成 29 项并在分类里列上 catalog-loop;功能概览的数据目录一行补上表助手、审阅队列、导出导入;对话里纠正一行写明理由记为这一项的「确认时的依据」
|
2026-10-14 16:26:59 +08:00 |
|
ThearchyHelios
|
49f00c589a
|
目录修改提案的依据改存成目录项单独的字段 reason(界面上叫「确认时的依据」,最多 500 字,超了截成 499 字加「…」),不再拼进备注:拼进 note 之后,带依据保存的关联关系再剖析时测量的说法换不了新、和覆盖率那一栏对不上;改了值的关联关系旧依据叠在新依据后面、越存越长;值不变、保存即确认的项撤销审阅回到推断后「依据:使用者说……」还挂着,看起来像使用者确认过一条推断项。去留:值改了(关联关系也一样)换成这次的依据,没写就去掉旧的;值不变的确认换成这次的,不叠;单项确认、驳回留着,撤销审阅去掉;整份提交改了值的、状态改回推断的、双盲复算改写的去掉;剖析刷新关联关系的测量只动备注。校验认 reason(文字、最多 500 字),起草、剖析的合并不碰人工确认的项,导出导入时已确认、已驳回的项连依据一起带,推断、有确证的项不带。表助手背景里已有的依据写成「以前确认时的依据:……」,系统提示词和 propose_changes 的说明写清那不是这次对话里使用者说的话、引用时写「以前确认时的依据写着:……」,遮罩列的项不给。表详情里依据和说明分开写:表级的项在值下面另起一行,列的一格、关联关系另一个悬停图标(读屏念「确认时的依据:……」),状态弹层里也写,驳回的项只在弹层里写;check-catalog-loop 的假服务端照服务端记下依据,补依据和说明分开、弹层、驳回项的检查;README 表助手一行写上依据另存
|
2026-10-14 15:38:15 +08:00 |
|
ThearchyHelios
|
5b5b6d8df2
|
起草逐表行列出服务端记下的说明(task.log:没收下的有效记录条件和原因),check-catalog 补一项;README 数据目录一节补上防错事实的提议、审阅队列、表助手、导出与导入,模型起草一行写上逐段落盘、不设总时长上限与按比例止损、块进度、同步起草与任务互斥
|
2026-10-14 10:19:18 +08:00 |
|
ThearchyHelios
|
f74744b29e
|
README:数据目录的模型起草照复核修正补上——超时的两半同时问、拆到每段 10 列仍接连超时就不再拆,每段连同它分开、拆小的各块最多 8 次,没写出来的原因写清第几段、哪几列,留空的列只记目录里还没有中文名和含义的,库注释就是名字本身或标识符写法的整条不记进目录
|
2026-10-13 21:26:07 +08:00 |
|
ThearchyHelios
|
a9170d8728
|
README:数据目录的模型起草补上验收后的修正(列分段均分、按表先后排队、超时拆小、段大小减半、每段 8 次封顶、提醒换模型、重新起草不删模型这次没给的项、留空的列逐表记下、库注释就是名字本身的不当中文名)
|
2026-10-13 20:30:02 +08:00 |
|
ThearchyHelios
|
950b88a15b
|
README:数据目录一节补上模型起草(后台任务、只重试失败的表、中断不自动续跑、保留思考加大额度、按段起草宽表、起草要求与本次补充说明、起草模型设置)
|
2026-10-13 16:57:02 +08:00 |
|
ThearchyHelios
|
265ba0c91d
|
报告导出为自包含 HTML(数字点得开口径、来源、计算方式);可验证报告的数字详情补齐口径卡一节
两件事,一条心:把「网页上点数字看得到的效果」带出系统外。
① 报告导出:新增 GET /api/runs/{run_id}/report.html(app/report_export:build + 模板 + 浏览器端脚本)。
正文由服务端按报告文档的块、句、片段渲染成 HTML——不执行脚本也读得到整份报告(附件预览常常不执行脚本);
执行脚本后,带出处的数字、无证据的数字、可疑的表名字段名都点得开,面板是网页上证据面板同一个拼法的
出处链(api/evidence._chain):指标步骤带口径卡名与版本、原式、代入式、每个输入取自哪次查询的哪一格、
复算、双盲复算;查询步骤带 SQL 和被引用的行;数据源遮罩列照网页上的规矩写「已遮罩」。封存状态逐项标明;
没封存的运行照常导出(和网页上读报告一个道理)。同样的引用共用一条链,长报告不把整份快照抄几十遍。
入口在问数据答案和运行详情成果上的「导出」(带证据的报告给 HTML,Markdown 留一个小的;旧运行照旧只有
Markdown)——api.reportExport + AssistantStream 的 AnswerActions。
② 可验证报告(bundle)的数字详情补齐:点开数字原来只有出处和值,现在多一节口径卡——指标(名 + id)、
单位、原式、代入式、输入(取值 ← 路径、取自哪次查询的哪一行哪一列)、复算;输入指向的查询快照也随文件
附带(遮罩规则同嵌入那一套,build._card_input_queries),④ 引用链按「已核对的口径卡的输入」认它们
(哈希对不上的卡不认,免得替被改过的卡圆)。收件人不连服务也能看到每个数怎么算出来的。
测试:后端 tests/test_report_export.py(真跑运行导出,正文、出处链、遮罩、只读、404/409、共用链);
bundle_samples 的口径卡换成带原式/代入式/输入/复算的真实形状,另加 metric-only 样本页(只引用指标的
报告,快照从口径卡的输入这一条路附带);check-bundle 断言数字详情和这条引用链,加上篡改;新增
scripts/check-report-export.mjs(真导出断网点开、不执行脚本也读得到、成果上的导出按钮、旧答案没有
HTML 按钮、409 提示),挂进 check-all。README 补「导出两份」一节。全量 pytest 通过;check-bundle、
check-report-export、check-stream、check-evidence、check-chat 全部通过(check-runs 5 项失败为基线
上就有的沙箱数据形态问题,与本次无关)。
|
2026-10-10 12:59:21 +08:00 |
|
ThearchyHelios
|
fbc48b4e61
|
README 补上数据目录:核心能力加数据目录、SQL 检查、跨库合并,节点类型加合并查询,新增一节说明数据目录的读法、来源与状态、剖析的约束、版本与提醒,开发与验证更新测试数和检查项
|
2026-10-04 01:33:42 +08:00 |
|
ThearchyHelios
|
e4f8ee5d08
|
Excel 导入改造期 4:证据下钻——报告里引用上传表格的数,点开能看到它来自原表格的哪一格;裁判核对时看得到来源、口径、接受理由和区域外文字
推断的来源(新 engine/direct_select、data/provenance、data/provenance_db;api/evidence 新增推断来源接口)
- 只对直接引用一列的查询下钻:受限文法用和执行时相同的 SQLite 分词读法,别名互换、自连接、表达式、聚合、子查询、集合运算(含藏在注释、字符串、方括号、转义、BOM 之后的)一律只给表级来历;再用 EXPLAIN 字节码和授权回调兜底
- 结果带齐主键、值非空,按主键参数化回查只读快照、类型和值严格一致才给格子;不一致时整份重算库哈希,哈希不符标红
- 从导入清单和溯源找回格子:宽表、交叉表逆透视的长表(日期取自表头格、年份取自统计期、行标签、分段标题)、列表、合计表、按期累积的并集(换算到所属那一期);原文与规范写法不同时一并列出
- 清单读不到、登记哈希与清单不一致、快照已回收、遮罩列,都只给表级来历或不给,写明原因;原件已清除、接受已作废照实显示;未封存的运行照常推断并标明
- 相关核对:这一行、这一期的核对结论与接受理由
裁判摘录(engine/judge)
- 带期 4 标记的报告,上传表格的查询旁加来源行、口径行、接受理由、可见单元格里的区域外文字和人工录入的统计期;限定语写明这些数未经系统核对,长度有上限、截断时写明
- 隐藏行列里的区域外文字不送;设了遮罩的源只写条数
前端证据面板(run/EvidenceProvenance;ManifestBody 从版本页抽出复用)
- 「推断的来源」一节与已封存的证据分开标注:格子坐标、取自哪些格、年份来源、规范写法、回查、相关核对、数据版本与各期;标红与拒绝原因按状态显示
不变的部分
- 文档顶层加 provenance 标记,只有新报告走新路径;期 4 之前的运行、非上传源、手工源的面板、复核、裁判摘录逐字不变,由金样测试钉住
- 执行器给区域外文字记录是否在隐藏行列;不建「导入校验」系统表(D6)
|
2026-10-02 14:38:10 +08:00 |
|
ThearchyHelios
|
2cdbf9a733
|
Excel 导入改造期 3:网格交互、自助修复、按期累积——每月的报表可以累积成一份跨月的表,漂移了点修复按钮就能接着导入,网格上框一块就能写进配方,版本页可以回滚、移除一期、清除原件
按期累积(新 recipe_accumulate;table_versions 扩展)
- 按统计期出的交叉表报表首次导入时默认「按期累积」,由人确认;一期一个构建,两期及以上物化成一份新的 SQLite 快照,不用视图
- 统计期完全相同要勾「替换该期」,部分重叠拒收,中间有空缺要确认;物化前逐期核对库哈希和行号,并集上另加行数守恒、主键唯一、日期落在所属统计期三条核对
- 配方演进分三档:新增列(早期各期为空值)、退役的列和表保留旧值(只在这次才退役时要勾)、不兼容变化只能显式「重新开始累积」
- 快照 id 在累积时含目标配方和模式;同样的输入物化两次库哈希相同,同一文件换名再传直接复用
- 说明按期合并,任何一期没核对过就不写「已核对」;各期维度取值不同、退役列、合计表都有提示,经过数字检查
修复按钮(新 recipe_fixes;执行器给问题带结构化参数)
- 加入标签、移除标签、声明为合计行、分段标题改名、编辑恒等式成员、按锚点忽略行/列/区域外文字、声明占位符、声明隐藏行处理、工作表改名
- 服务端算补丁,先预览新旧配方对照、再应用,可以撤销;补丁封闭,不引入正则、自由文本常量和写死坐标;修复进确认清单
- 只改分段标题、新标题仍含原来选的词时沿用已确认的常量,不算破坏性变更;修复后只查改动过的段的认领,没改的关系交给试运行核对
框选转锚点(新 recipe_select)
- 网格上框选(鼠标、键盘、区域输入),按八种用途换算成按文字认的锚点,立刻干跑比对;配方里不存坐标,泛化不了时列出原因
- 整张表挪位后同一配方照样认得;框进合计行、夹着小计、表下说明都有明确的处理
确认与对照(recipe_confirm、recipe_diff、新 recipe_compare)
- 改配方后确认清单只列有变化的项(同时按本期数据比较),不用每修一次重勾十来项;新旧配方对照界面;按规则重新起草并把名字对齐到现行配方
- 改配方后已体现在配方里的回答保留,矛盾的列出来请人重答
- 「排除的行」写进回执和导入清单:隐藏行、跳过的空行、按配方忽略的行、停止后的文字行、只核对不另存的合计行
版本页(新 source_versions、api/source_versions;前端 VersionsDialog)
- 快照与导入记录列表、启用旧版本(可写理由)、查看清单、移除一期、作废接受、清除原件;写操作带界面看到的当前版本,并发改动回 409,不静默丢期
- 除当前版本和被运行引用的版本外,再保留最近 3 个版本供回滚;遮罩列丢失要明确确认
期 1、期 2 遗留
- 重传撞上被改过的构建文件:能用本次上传恢复就隔离旧文件再恢复,否则回 409,不再是 500
- 跳过空行的列表不再把表下隔一行的说明读成数据;不像说明的单格行要人确认;受影响的配方构建换 id
- 版本存储加进程级文件锁:第二个进程拿不到锁时不清理、不回收,写操作回 503(部署本来就是单进程)
|
2026-10-02 07:38:44 +08:00 |
|
ThearchyHelios
|
78f24dfe3f
|
Docker 镜像内置 microVM:构建时装好运行时、预拉沙箱镜像;deploy.sh 检测到 KVM 先试启动一台,起得来才交给容器;没有 KVM 时服务端不再选 microVM
- microvm_sandbox:Linux 上 available() 要求 /dev/kvm 存在且可读写,不可用时给出具体原因(没装、运行时没装、没有 KVM、没有权限)
- 新增 app.sandbox.selftest:真起一台 VM 执行一行代码,部署脚本用它判断
- Dockerfile:WITH_MICROVM(默认 1)构建期 install 并 pull python:3.12-slim,自带的 msb、libkrunfw 改为链接,镜像约多 150 MB
- deploy.sh:ENABLE_MICROVM=auto|0|1,有 KVM 时用临时容器试启动,成功才加 --device /dev/kvm 和所属组;部署完和 status 打印实际用的沙箱
- package-docker.sh:--no-microvm;部署说明、配置模板、README 同步
|
2026-09-30 11:19:25 +08:00 |
|
ThearchyHelios
|
6af4e396b9
|
生产部署:prod.sh 直接运行,package-docker.sh 打 Docker 离线包(镜像 + 一键部署脚本 + 配置 + 说明)
- 服务端可以托管前端构建产物(AGENTLAB_WEB_DIST):页面路由回退到 index.html,/api 下不存在的路径照旧是 JSON 404,
挡住路径穿越;index.html 不缓存,assets/ 带哈希的文件长缓存;没设时行为完全不变
- scripts/prod.sh:不用 Docker 的生产运行。按需构建前端,单进程、不热重载,默认只听本机,--host 开放到局域网并提示没有登录
- Dockerfile(多阶段构建,Linux 镜像):前端在构建机架构上构建,运行阶段用 python:3.12-slim,依赖装进独立的 venv,
以非 root 用户(uid 10001)运行,数据在 /data,带健康检查;.dockerignore 排除 .env、data/、各种库文件,镜像里实测没有密钥和数据库
- scripts/package-docker.sh:构建指定平台的镜像(默认按本机架构,可选 linux/amd64),打成
release/agentlab-<版本>-linux-<架构>.tar,里面有 image.tar、deploy.sh、agentlab.env、README.md、SHA256SUMS
- deploy/deploy.sh:目标机上只依赖 Docker,离线可用。install / start / stop / restart / status / logs / upgrade / uninstall;
检查架构和配置,自动导入镜像,替换容器时保留旧容器以便回退,数据永远保留,日志轮转
- 修正 bubblewrap 的可用性判断:以前只看有没有装 bwrap,容器里和 Ubuntu 24.04 默认配置下装了却建不了命名空间,
每次执行代码都失败;现在真起一次试,不能用就退回下一个后端,并写明原因
- README 增加「生产部署」一节,部署细节见 deploy/README.md
|
2026-09-30 09:48:16 +08:00 |
|
ThearchyHelios
|
f45ccbfc0c
|
README:去掉工业场景的表述,改用通用场景的例子
- 「受限动态编排」一节开头的「工业场景中……(接单报价、周报、体检)」改成通用说法,
例子换成内置模板里就有的场景:写周报、核对数据、审批后发布
|
2026-09-29 19:12:59 +08:00 |
|
ThearchyHelios
|
5b0c0e3a32
|
更新 README.md
|
2026-09-29 18:39:30 +08:00 |
|
ThearchyHelios
|
8e0817bbc4
|
README 更新到最新:可点击证据、受管门禁与发布前修复、agent 护栏、测试与检查的新跑法;图片重拍
- 新开一节「可点击证据」:引用标记的全部写法、取数链路、点开能看到什么、可疑实体、结论句与裁判(成本上限可设不限)、
审计导出、旧运行的猜测来源、一键升级;子节「受管门禁与发布前修复」写明 G1–G5 和三类修法
- 核心能力表补上 agent 护栏、可点击证据、发布前检查;节点 17 种、模板 9 个、内置工具 15 个,都按代码数过
- 新增「agent 的护栏取代固定步数」一节;工具审批写明三档 ask / gated / always
- 快速开始补上 ./scripts/dev.sh --host(写明没有登录、只在信得过的网络里开)
- 启用 microVM:安装命令换成能跑的写法(原写法报 no running event loop);补上手动拉镜像(auto 只选镜像已缓存的
microVM,不手动拉永远选不到)、改完要重启、Linux 上的 KVM 权限、doctor 全绿不等于装好、拉不下来时走代理或镜像源
- 开发与验证:pytest 带 env -u 和 -n auto(约 2860 个测试、约 16 秒);check-all 的默认跑法、--stacks、只跑某几项
- 5 张图在只装内置模板、只用 Mock 的干净环境里重拍(深色、2 倍像素);新增证据面板图,用前端测试夹具的示例数据
|
2026-09-29 18:07:08 +08:00 |
|