diff --git a/README.md b/README.md index 18e663c..afca486 100644 --- a/README.md +++ b/README.md @@ -52,20 +52,77 @@ QQ 用户 →→→ NapCat(Docker:6099) --- -### 第1步:询问用户信息 +### 第1步:环境自动检测 + 询问关键信息 -在执行任何操作前,请 **向用户询问以下信息**,不要使用仓库中的占位符: +本步骤将自动推导绝大多数配置,**只需向用户确认两个不可推导的值**。 -| 信息 | 说明 | 示例 | +#### 1.1 设置默认值(agent 自动执行) + +```bash +# ─── 可自动推导的变量,全部使用默认值 ─── + +# Agent 唯一标识(默认 qq-agent,用户可改但通常不需要) +NEW_AGENT_ID="${NEW_AGENT_ID:-qq-agent}" +AGENT_WORKSPACE="/home/program/${NEW_AGENT_ID}-workspace" + +# 共享目录路径 +SHARED_DIR="${SHARED_DIR:-/opt/napcat_shared}" + +# NapCat HTTP API 地址(同机部署走 127.0.0.1) +NAP CAT_HOST="127.0.0.1" + +# 从 NapCat Docker 容器角度看到的 qqrebot 地址 +# 同机部署时 NapCat 通过 Docker 网关访问宿主机 +QQREBOT_HOST="172.17.0.1:25580" + +# Gateway Token:自动从本机 OpenClaw 配置文件读取 +GATEWAY_TOKEN=$(python3 -c " +import json +with open('$HOME/.openclaw/openclaw.json') as f: + cfg = json.load(f) +print(cfg.get('gateway', {}).get('auth', {}).get('token', '')) +" 2>/dev/null) +``` + +> 注意:`NAP CAT_HOST` 是**不含端口**的纯 IP/域名,后面所有用到 `send_url` 的地方拼入端口 `:6099`。 +> `QQREBOT_HOST` 带端口 `:25580`,用于 onebot11.json 的 `httpPost.url`。 + +#### 1.2 向用户确认 + +只有以下两项无法自动推导,agent 需向用户询问: + +```bash +# 向用户提问示例: +# "主人,我需要以下信息来完成部署: +# 1. ADMIN_QQ — 你的管理员 QQ 号(用于白名单和安全上报) +# 2. GATEWAY_TOKEN — 如上面自动读取的为空,请提供" +``` + +| 变量 | 必须 | 说明 | |---|---|---| -| `ADMIN_QQ` | 管理员的 QQ 号(白名单使用) | `123456789` | -| `GATEWAY_TOKEN` | OpenClaw Gateway 的认证 Token | 读取 `~/.openclaw/openclaw.json` 的 `gateway.auth.token` | -| `NAP CAT_HOST` | NapCat 服务器地址(可含端口) | `127.0.0.1`(同机)或 `192.168.1.100:6099` | -| `QQREBOT_HOST` | qqrebot 服务器地址(NapCat 侧看到的) | `127.0.0.1`(同机)或 `172.17.0.1:25580`(Docker 宿主机) | -| `NEW_AGENT_ID` | 新 agent 的唯一 ID | `qq-agent` | -| `SHARED_DIR` | NapCat 与宿主机共享目录路径 | `/opt/napcat_shared` | +| `ADMIN_QQ` | ✅ | 管理员 QQ 号,用于白名单和安全告警上报 | +| `GATEWAY_TOKEN` | 看情况 | 自动读取失败时(空值)才需要用户提供 | -> `NAP CAT_HOST` 和 `QQREBOT_HOST` 可能不同:当 NapCat 和 qqrebot 运行在同一台机器上时,NapCat 用 Docker 内部地址访问宿主机 qqrebot(如 `172.17.0.1:25580`),而脚本用外部地址访问 NapCat(如 `127.0.0.1:6099`)。 +> 其余变量(`NEW_AGENT_ID`、`SHARED_DIR`、`NAP CAT_HOST`、`QQREBOT_HOST`)全部使用默认值即可,**无需用户确认**。仅在跨机部署(NapCat 和 OpenClaw 不在同一台机器)时需要用户指定 `NAP CAT_HOST`。 + +#### 1.3 应用变量 + +```bash +# 确认 ADMIN_QQ +if [ -z "$ADMIN_QQ" ]; then + echo "请提供 ADMIN_QQ" + exit 1 +fi + +# 确认 GATEWAY_TOKEN 非空 +if [ -z "$GATEWAY_TOKEN" ]; then + echo "自动读取 GATEWAY_TOKEN 失败,请提供" + exit 1 +fi + +export ADMIN_QQ NEW_AGENT_ID AGENT_WORKSPACE SHARED_DIR NAP_CAT_HOST QQREBOT_HOST GATEWAY_TOKEN +echo "环境变量已就绪:ADMIN_QQ=$ADMIN_QQ, AGENT=$NEW_AGENT_ID, NAPCAT=$NAP CAT_HOST" +``` ---