0.11.5: 旗舰版第六轮完善(节点Agent程序/裸机安装脚本/集群冷备部署方案)
- cmd/agent-node:独立节点执行器,心跳/认领/执行/上报闭环;prompt 走本地 LLM 或网关,http 仅 http(s) 禁重定向限 1MiB,mcp/skill/数字员工经网关 转发,custom 回显;不执行任意 shell 命令,串行执行 + 优雅退出。 - scripts/install-agent-node.sh:裸机安装 + systemd 加固(0600 配置/ NoNewPrivileges/ProtectSystem)。 - deploy/CLUSTER.md:单机/冷备/集群形态,多副本网关 compose override + nginx least_conn 入口,冷备 master key 同步与恢复演练要点。 - 修复 agent claim 未解包 apiresponse 信封;真实 Agent 进程端到端验证 (注册→心跳上线→custom/http 任务认领执行上报→管理端成功可见); 25 包测试通过。
This commit is contained in:
Executable
+91
@@ -0,0 +1,91 @@
|
||||
#!/usr/bin/env bash
|
||||
# install-agent-node.sh — 在裸机/虚拟机安装 AI Gateway 智能体节点 Agent。
|
||||
#
|
||||
# 用法:
|
||||
# sudo AGENT_GATEWAY_URL=https://gw.example.com \
|
||||
# AGENT_CODE=worker-01 \
|
||||
# AGENT_TOKEN=agn_xxxx(管理端登记节点后交付) \
|
||||
# [AGENT_NAME=] [AGENT_LLM_BASE_URL=] [AGENT_LLM_API_KEY=] \
|
||||
# [AGENT_GATEWAY_KEY=] [AGENT_CAPABILITIES=tool_exec,llm,http] \
|
||||
# bash scripts/install-agent-node.sh
|
||||
#
|
||||
# 动作:
|
||||
# 1. 安装 Go 工具链(缺失时)并构建 cmd/agent-node;
|
||||
# 2. 安装二进制到 /usr/local/bin/ai-agent-node;
|
||||
# 3. 生成 /etc/ai-agent-node/env(权限 600,含节点令牌);
|
||||
# 4. 安装 systemd 服务 ai-agent-node.service 并启动。
|
||||
set -euo pipefail
|
||||
|
||||
AGENT_GATEWAY_URL="${AGENT_GATEWAY_URL:-http://127.0.0.1:8080}"
|
||||
AGENT_CODE="${AGENT_CODE:?AGENT_CODE 必填(管理端登记的节点编码)}"
|
||||
AGENT_TOKEN="${AGENT_TOKEN:?AGENT_TOKEN 必填(管理端登记节点后交付的令牌)}"
|
||||
AGENT_NAME="${AGENT_NAME:-$AGENT_CODE}"
|
||||
AGENT_VERSION="${AGENT_VERSION:-0.11.4-agent}"
|
||||
AGENT_CAPABILITIES="${AGENT_CAPABILITIES:-tool_exec,llm,http}"
|
||||
AGENT_LLM_BASE_URL="${AGENT_LLM_BASE_URL:-}"
|
||||
AGENT_LLM_API_KEY="${AGENT_LLM_API_KEY:-}"
|
||||
AGENT_GATEWAY_KEY="${AGENT_GATEWAY_KEY:-}"
|
||||
|
||||
REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
|
||||
INSTALL_DIR="/usr/local/bin"
|
||||
ENV_FILE="/etc/ai-agent-node/env"
|
||||
SERVICE_FILE="/etc/systemd/system/ai-agent-node.service"
|
||||
|
||||
echo "==> 1/4 构建 agent-node 二进制"
|
||||
if ! command -v go >/dev/null 2>&1; then
|
||||
echo " 未找到 go,尝试通过 apt 安装(仅 Debian/Ubuntu)"
|
||||
apt-get update -qq && apt-get install -y -qq golang-go
|
||||
fi
|
||||
(
|
||||
cd "$REPO_DIR"
|
||||
GOFLAGS=-mod=mod go build -trimpath -ldflags "-s -w" -o /tmp/ai-agent-node ./cmd/agent-node
|
||||
)
|
||||
|
||||
echo "==> 2/4 安装二进制到 $INSTALL_DIR/ai-agent-node"
|
||||
install -m 0755 /tmp/ai-agent-node "$INSTALL_DIR/ai-agent-node"
|
||||
rm -f /tmp/ai-agent-node
|
||||
|
||||
echo "==> 3/4 写入节点配置 $ENV_FILE(权限 600,含令牌)"
|
||||
install -d -m 0700 /etc/ai-agent-node
|
||||
umask 077
|
||||
cat > "$ENV_FILE" <<EOF
|
||||
AGENT_GATEWAY_URL=$AGENT_GATEWAY_URL
|
||||
AGENT_CODE=$AGENT_CODE
|
||||
AGENT_TOKEN=$AGENT_TOKEN
|
||||
AGENT_NAME=$AGENT_NAME
|
||||
AGENT_VERSION=$AGENT_VERSION
|
||||
AGENT_CAPABILITIES=$AGENT_CAPABILITIES
|
||||
AGENT_LLM_BASE_URL=$AGENT_LLM_BASE_URL
|
||||
AGENT_LLM_API_KEY=$AGENT_LLM_API_KEY
|
||||
AGENT_GATEWAY_KEY=$AGENT_GATEWAY_KEY
|
||||
EOF
|
||||
|
||||
echo "==> 4/4 安装并启动 systemd 服务"
|
||||
cat > "$SERVICE_FILE" <<EOF
|
||||
[Unit]
|
||||
Description=AI Gateway Agent Node ($AGENT_CODE)
|
||||
After=network-online.target
|
||||
Wants=network-online.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
EnvironmentFile=$ENV_FILE
|
||||
ExecStart=$INSTALL_DIR/ai-agent-node
|
||||
Restart=always
|
||||
RestartSec=5
|
||||
# 节点进程只读本地文件系统;LLM/网关出站不受限。
|
||||
ProtectSystem=strict
|
||||
ReadWritePaths=/tmp
|
||||
NoNewPrivileges=true
|
||||
LimitNOFILE=65536
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
EOF
|
||||
systemctl daemon-reload
|
||||
systemctl enable ai-agent-node.service >/dev/null 2>&1
|
||||
systemctl restart ai-agent-node.service
|
||||
|
||||
echo "==> 完成:节点 $AGENT_CODE 已安装并启动"
|
||||
echo " 查看日志: journalctl -u ai-agent-node -f"
|
||||
echo " 心跳/任务状态: 管理端 → 安全与审计 → 智能体节点 / 节点任务"
|
||||
Reference in New Issue
Block a user