mirror of
https://github.com/ThearchyHelios/AgentLab.git
synced 2026-11-15 05:11:59 +00:00
全栈安全加固、性能提速与架构演进:连接池与沙箱止血、双路混合检索、多版本归档及前端分包治理
- 第一批(安全加固与生命周期止血):隔离测试宿主机密钥与 .env 泄漏;修复 SQLite 取消查询挂死、:memory: 连接池报错与 EngineCache 世代竞态;补齐运行与评测删除时的 Checkpointer 线程、Artifact 磁盘文件与无主附件回收;加固三套沙箱路径越界、进程组清理与 Seatbelt 数据目录隔离,封堵 SSRF IPv4-mapped IPv6 元数据绕过与响应体 OOM;修复推理模型多轮 reasoning_content、结构化输出 Token 漏计与缓存折扣计费 - 第二批(数据库/集群/问数提速与首屏分包):补齐核心表索引与 SQLite WAL 调优,列表接口按需 defer 大列,收敛启动扫描并打通跨进程 slot 槽位唤醒;优化跨源全局选表、哈希桶数字绑定、流式 CSV 导入及多方言分析算子;剥离首屏静态引入的 @xyflow/react 与全局样式(首屏主包降至 461.59 kB),补充流式 rAF 攒批、Store 精细订阅与表单无障碍绑定 - 第三批(架构演进与工程自动化闭环):记录库超挂接阈值历史版本自动增量归档至单库多表(解除 SQLite 10 库 ATTACH 硬上限);重构知识库为词面 BM25 与全集合归一化向量矩阵真·双路独立召回并支持游标分批重建;升级多方言感知 SQL 模板词法分析(E'...' / $$...$$ / q'[...]' / # / 嵌套注释)与 Decimal / bool / NaN 参数校验,消除 ledger 层对 api 路由层的反向依赖;拆分 3101 行 CaliberDrafts 页面为 7 个领域子模块,消除检查脚本本机路径硬编码并新增 GitHub Actions CI 门禁与三批回归测试套件
This commit is contained in:
@@ -6,7 +6,7 @@ set -euo pipefail
|
||||
usage() {
|
||||
cat <<'USAGE'
|
||||
用法:./scripts/package-docker.sh [--platform linux/arm64|linux/amd64] [--version <版本>] [--out <目录>] [--gzip] [--no-microvm]
|
||||
[--no-postgres]
|
||||
[--no-postgres] [--keep <数量>]
|
||||
|
||||
--platform <平台> 目标机的平台。默认按本机架构取 linux/<arch>。64 位系统的 ARM 单板机是 linux/arm64,
|
||||
普通 PC 和服务器是 linux/amd64。和本机架构不同时 docker 用模拟构建,会慢很多。
|
||||
@@ -18,6 +18,7 @@ usage() {
|
||||
--no-postgres 不带内置 PostgreSQL 的镜像(postgres-image.tar,约 160 MB)。只用 SQLite 或外接 PostgreSQL 时用不上;
|
||||
不带的包在目标机上 install --postgres 要先 docker pull 到同一个标签。默认带上,标签取 deploy.sh 里的
|
||||
POSTGRES_IMAGE(只在那一处定)。
|
||||
--keep <数量> 在产物目录里最多保留最近几份同架构的离线包(默认取 AGENTLAB_KEEP_RELEASES,未设时为 3;传 0 不清理旧包)。
|
||||
-h, --help 显示这段说明。
|
||||
|
||||
产物:<out>/agentlab-<版本>-linux-<arch>.tar,里面有 image.tar、postgres-image.tar、deploy.sh、agentlab.env、README.md、
|
||||
@@ -34,6 +35,7 @@ OUT="$ROOT/release"
|
||||
GZIP=""
|
||||
WITH_MICROVM=1
|
||||
WITH_POSTGRES=1
|
||||
KEEP_RELEASES="${AGENTLAB_KEEP_RELEASES:-3}"
|
||||
need_value() { [ $# -ge 2 ] && [ -n "$2" ] || { echo "$1 后面要跟一个值"; echo; usage; exit 2; }; }
|
||||
while [ $# -gt 0 ]; do
|
||||
case "$1" in
|
||||
@@ -46,11 +48,16 @@ while [ $# -gt 0 ]; do
|
||||
--gzip) GZIP=1 ;;
|
||||
--no-microvm) WITH_MICROVM=0 ;;
|
||||
--no-postgres) WITH_POSTGRES=0 ;;
|
||||
--keep) need_value "$@"; KEEP_RELEASES="$2"; shift ;;
|
||||
--keep=*) KEEP_RELEASES="${1#--keep=}" ;;
|
||||
-h|--help) usage; exit 0 ;;
|
||||
*) echo "认不出的参数:$1"; echo; usage; exit 2 ;;
|
||||
esac
|
||||
shift
|
||||
done
|
||||
case "$KEEP_RELEASES" in
|
||||
''|*[!0-9]*) echo "--keep 需要是非负整数:$KEEP_RELEASES"; exit 2 ;;
|
||||
esac
|
||||
|
||||
# ---- 平台 ----
|
||||
if [ -z "$PLATFORM" ]; then
|
||||
@@ -183,6 +190,29 @@ if [ -n "$GZIP" ]; then
|
||||
if command -v pigz >/dev/null 2>&1; then pigz -c "$TAR" > "$TAR.gz"; else gzip -c "$TAR" > "$TAR.gz"; fi
|
||||
fi
|
||||
|
||||
# ---- 4. 清理旧离线包 ----
|
||||
if [ "$KEEP_RELEASES" -gt 0 ]; then
|
||||
SEEN_STEMS=" $NAME "
|
||||
KEPT_COUNT=1
|
||||
for OLD_FILE in $(ls -1t "$OUT"/agentlab-*-linux-"$ARCH".tar "$OUT"/agentlab-*-linux-"$ARCH".tar.gz 2>/dev/null || true); do
|
||||
[ -f "$OLD_FILE" ] || continue
|
||||
BASE_NAME="$(basename "$OLD_FILE")"
|
||||
STEM="${BASE_NAME%.gz}"
|
||||
STEM="${STEM%.tar}"
|
||||
case "$SEEN_STEMS" in
|
||||
*" $STEM "*) ;;
|
||||
*)
|
||||
SEEN_STEMS="$SEEN_STEMS$STEM "
|
||||
KEPT_COUNT=$((KEPT_COUNT + 1))
|
||||
;;
|
||||
esac
|
||||
if [ "$KEPT_COUNT" -gt "$KEEP_RELEASES" ] && [ "$STEM" != "$NAME" ]; then
|
||||
echo "==> 清理旧离线包 $OLD_FILE(保留最近 $KEEP_RELEASES 份)"
|
||||
rm -f "$OLD_FILE"
|
||||
fi
|
||||
done
|
||||
fi
|
||||
|
||||
size() { du -h "$1" | awk '{print $1}'; }
|
||||
echo
|
||||
echo "完成:"
|
||||
|
||||
Reference in New Issue
Block a user