diff --git a/README.md b/README.md index 48c5f79..3ab9019 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,35 @@ # Agent-System-Releases -发布仓:从 Dev 仓固定组合导出版本 manifest,分发单二进制制品与原生部署物料(systemd、安装/回退脚本)。只做打包与分发,不做源码开发,不提供容器镜像。 +发布仓:从 Agent-System-Dev 固定提交组合导出版本 manifest,分发**单二进制制品**与原生部署 +物料(systemd、安装/回退脚本)。只做打包与分发,不做源码开发;**不提供容器镜像**(全局部署 +约束,设计 4.1 原则 8)。 -契约与架构见 Agent-System-Documents 设计方案与架构文档;开发规范见 development-guidelines(Dev 仓 `development/guidelines`)。本仓为 Agent-System 多仓组合的组成部分。 +## 构建一个版本 + +```bash +scripts/build-release.sh 0.1.0 # 从 gitea Dev 仓最新 main +scripts/build-release.sh 0.1.0 /path/to/Agent-System-Dev # 本地路径 +``` + +产物(build//): + +- `agent-system` — 静态链接单二进制(内嵌前端 + 嵌入式 SQLite;约 13MB) +- `plugins/` — 示例插件(示例面板/声明式 HTTP 工具/意图/卡片/提示词) +- `manifest.json` — Dev 提交、各组件 gitlink、制品 sha256 +- `agent-system-.tar.gz` — 以上打包 +- `agent-system.service` / `install.sh` — 原生部署与回退 + +## 部署(原生) + +```bash +tar xzf agent-system-.tar.gz && cd +./install.sh verify # manifest↔制品 sha256 校验 +sudo ./install.sh install +# 回退:sudo ./install.sh rollback +``` + +要求:任意 Linux x86_64/arm64(静态链接,无运行时依赖);模型 API 出网可选(演示模式离线可用)。 + +## 版本记录 + +见 `versions/`(构建后由人工提交 manifest 快照与发布说明)。 diff --git a/deploy/agent-system.service b/deploy/agent-system.service new file mode 100644 index 0000000..622bc4a --- /dev/null +++ b/deploy/agent-system.service @@ -0,0 +1,22 @@ +# Agent-System systemd 单元(原生部署,非容器)。 +# 安装:install.sh 或手动: +# sudo cp agent-system /usr/local/bin/ && sudo mkdir -p /var/lib/agent-system /etc/agent-system/plugins +# sudo cp agent-system.service /etc/systemd/system/ && sudo systemctl enable --now agent-system +[Unit] +Description=Agent-System (single binary, embedded frontend & storage) +After=network-online.target +Wants=network-online.target + +[Service] +Type=simple +ExecStart=/usr/local/bin/agent-system serve --addr 127.0.0.1:8787 --data /var/lib/agent-system --plugins /etc/agent-system/plugins +Restart=on-failure +RestartSec=3 +# 最小权限(按需调整;静态二进制无外部运行时依赖) +NoNewPrivileges=true +ProtectSystem=full +ProtectHome=true +PrivateTmp=true + +[Install] +WantedBy=multi-user.target diff --git a/deploy/install.sh b/deploy/install.sh new file mode 100755 index 0000000..b7b41fd --- /dev/null +++ b/deploy/install.sh @@ -0,0 +1,58 @@ +#!/usr/bin/env bash +# Agent-System 原生安装/升级/回退脚本(单二进制;非容器)。 +# 用法: +# ./install.sh install # 首次安装(或就地升级) +# ./install.sh rollback # 回退到上一版本(保留上一二进制备份) +set -euo pipefail + +CMD="${1:-install}" +BIN_DST=/usr/local/bin/agent-system +DATA_DIR=/var/lib/agent-system +PLUGIN_DIR=/etc/agent-system/plugins +HERE="$(cd "$(dirname "$0")" && pwd)" + +need_root() { [ "$(id -u)" -eq 0 ] || { echo "需要 root(sudo)"; exit 1; }; } + +case "$CMD" in +install) + need_root + test -x "$HERE/agent-system" || { echo "缺少 agent-system 二进制"; exit 1; } + # 备份当前版本(升级路径) + if [ -x "$BIN_DST" ]; then + cp "$BIN_DST" "$BIN_DST.prev" + echo "已备份当前版本 → $BIN_DST.prev" + systemctl stop agent-system 2>/dev/null || true + fi + install -m 0755 "$HERE/agent-system" "$BIN_DST" + mkdir -p "$DATA_DIR" "$PLUGIN_DIR" + cp -r "$HERE/plugins/." "$PLUGIN_DIR/" + cp "$HERE/agent-system.service" /etc/systemd/system/ + systemctl daemon-reload + systemctl enable --now agent-system + echo "✓ 已安装并启动:http://127.0.0.1:8787 (数据:$DATA_DIR,插件:$PLUGIN_DIR)" + echo " 首次使用建议:设置 → 运行时 → 开启演示模式(无需模型密钥即可体验全部交互)" + ;; +rollback) + need_root + test -x "$BIN_DST.prev" || { echo "无上一版本备份($BIN_DST.prev)"; exit 1; } + systemctl stop agent-system 2>/dev/null || true + cp "$BIN_DST" "$BIN_DST.staged" 2>/dev/null || true + mv "$BIN_DST.prev" "$BIN_DST" + systemctl start agent-system + echo "✓ 已回退到上一版本(当前版本暂存于 $BIN_DST.staged)" + ;; +verify) + "$HERE/agent-system" version + test -f "$HERE/manifest.json" && python3 -c " +import json, hashlib +m = json.load(open('$HERE/manifest.json')) +sha = hashlib.sha256(open('$HERE/agent-system','rb').read()).hexdigest() +ok = sha == m['artifacts']['agent-system'] +print('manifest↔制品校验:', '一致 ✓' if ok else '不一致 ✗') +exit(0 if ok else 1)" + ;; +*) + echo "用法:$0 install|rollback|verify" + exit 1 + ;; +esac diff --git a/scripts/build-release.sh b/scripts/build-release.sh new file mode 100755 index 0000000..445ec5b --- /dev/null +++ b/scripts/build-release.sh @@ -0,0 +1,59 @@ +#!/usr/bin/env bash +# Agent-System-Releases:从 Dev 仓固定提交构建发布(非容器;单二进制 + 原生部署物料)。 +# 用法:scripts/build-release.sh [dev-repo-URL-or-path] +# 产物:build//{agent-system, plugins/, manifest.json, agent-system-.tar.gz} +set -euo pipefail + +VERSION="${1:?用法: build-release.sh [dev-repo]}" +DEV_REPO="${2:-ssh://git@git-ssh.u1680832.nyat.app:31411/weichen/Agent-System-Dev.git}" +ROOT="$(cd "$(dirname "$0")/.." && pwd)" +OUT="$ROOT/build/$VERSION" +WORK="$(mktemp -d)" +trap 'rm -rf "$WORK"' EXIT + +echo "==> 克隆 Dev 仓(固定提交组合)" +git clone -q --recurse-submodules "$DEV_REPO" "$WORK/dev" +# 嵌套子模块(backend/deps) +cd "$WORK/dev" && git submodule update --init --recursive -q +DEV_SHA="$(git rev-parse HEAD)" +echo " dev @ $DEV_SHA" + +echo "==> 构建(契约同步 → 前端 → embed → 静态链接单二进制)" +make build -s +test -x bin/agent-system + +echo "==> 组装发布目录" +rm -rf "$OUT" && mkdir -p "$OUT" +cp bin/agent-system "$OUT/agent-system" +cp -r plugins "$OUT/plugins" +cp deploy/agent-system.service "$OUT/" 2>/dev/null || cp "$ROOT/deploy/agent-system.service" "$OUT/" +cp "$ROOT/deploy/install.sh" "$OUT/" + +echo "==> 生成 manifest(gitlink 组合 + 制品摘要;从固定提交导出,不自引用)" +{ + echo '{' + echo " \"version\": \"$VERSION\"," + echo " \"devCommit\": \"$DEV_SHA\"," + echo " \"builtAt\": \"$(date -u +%Y-%m-%dT%H:%M:%SZ)\"," + echo " \"components\": {" + first=1 + while read -r sha path; do + test -n "$path" || continue + [ $first -eq 1 ] && first=0 || echo ',' + printf ' "%s": "%s"' "$path" "$sha" + done < <(git submodule status | awk '{print $1, $2}') + echo '' + echo ' },' + echo " \"artifacts\": {" + echo " \"agent-system\": \"$(sha256sum "$OUT/agent-system" | cut -d' ' -f1)\"" + echo ' },' + echo ' "deployment": "native-single-binary",' + echo ' "container": false' + echo '}' +} > "$OUT/manifest.json" + +echo "==> 打包" +tar -czf "$OUT/agent-system-$VERSION.tar.gz" -C "$OUT" agent-system plugins manifest.json agent-system.service install.sh + +echo "✓ 发布就绪:$OUT" +cat "$OUT/manifest.json" diff --git a/versions/0.1.0/RELEASE.md b/versions/0.1.0/RELEASE.md new file mode 100644 index 0000000..98a4ce9 --- /dev/null +++ b/versions/0.1.0/RELEASE.md @@ -0,0 +1,10 @@ +# 0.1.0(2026-09-29) + +首个骨架版本(P0–P5 全量):三栏工作台、流式对话(正文/思考/工具区分与终态折叠)、 +HITL 卡片(选项/影响/建议/自由输入三路径路由)、sub-agent 任务树与追踪弹窗、计划/待办面板、 +文档摄取(md/txt/docx/pdf 文本层)、工件管理与查看、分层设置(schema 驱动 + 密钥掩码)、 +智能体画像(导入导出)、插件宿主(五类能力 + fail-closed + 热重载)+ 示例插件、 +声明式 HTTP 工具、中文全文检索(FTS5 + LIKE 兜底)、单二进制原生部署。 + +模型接入:OpenAI 兼容端点(复用 agent-native 流式客户端);未配置时可用演示模式(mock)。 +已知边界见 Documents 使用与测试报告(Agent-Squad 编排适配、向量 RAG、记忆、MinerU 交叉验证为远期)。 diff --git a/versions/0.1.0/manifest.json b/versions/0.1.0/manifest.json new file mode 100644 index 0000000..e19eb9c --- /dev/null +++ b/versions/0.1.0/manifest.json @@ -0,0 +1,22 @@ +{ + "version": "0.1.0", + "devCommit": "6a70d1a8054f000fb3ac7ae0b28572e435b13527", + "builtAt": "2026-09-29T18:05:00Z", + "components": { + "deps/agent-intent": "7d9d505d6523ecbf3b103c64d766f463769f4015", + "deps/agent-native": "292142ac1a8b125488794e9374faee2cb1c8c579", + "deps/agent-squad": "5454f7485e7cf8b7ea7432b3c3c680da8a99056e", + "deps/development-guidelines": "26b562d2e34fbc560711296a309c91c74ffc55b1", + "deps/error-code-system": "dbeed2f1b67eb417ce089e7033a228578fbbeb03", + "deps/logging-system": "2c5716fdcffbc4696fc0371afc70f39c44174201", + "modules/backend": "97b90ad4c850b29168b1bf7ebcdf8444ee82e961", + "modules/core": "992d6014a82cdf2841f4b621d9fd38e7e9b9aefe", + "modules/documents": "d7ce9444c8a602a1f8311e817433bbb95c8e19cb", + "modules/frontend": "5b6b52d652d6532a3ec67c746a933a317d9ee665" + }, + "artifacts": { + "agent-system": "6cdcc30f10136d701156e5775b9abc88e77f4a6693163a651d617ca19c697339" + }, + "deployment": "native-single-binary", + "container": false +}