feat: AGENT_NAME 占位符 + Step 6.2 自动获取 QQ 昵称

- AGENTS.md/SOUL.md/IDENTITY.md 中 'the Real' → AGENT_NAME 占位符
- Step 6.2 新增 NapCat /get_login_info 接口自动获取登录 QQ 昵称
- 获取失败时回退到 ADMIN_NAME
- sed 替换新增 AGENT_NAME 占位符替换
- config/agent-templates/README.md 同步更新
This commit is contained in:
root
2026-05-04 20:32:24 +08:00
parent f98293d4e8
commit 42b5e022e1
5 changed files with 33 additions and 14 deletions

View File

@ -540,6 +540,21 @@ source /tmp/env_vars.sh
TEMPLATES_DIR="/opt/chatrebot_aireply_plug/config/agent-templates"
if [ -d "$TEMPLATES_DIR" ]; then
# ─── 自动获取已登录 QQ 的昵称作为 agent 名字 ───
echo "正在获取 QQ 昵称..."
AGENT_NAME=$(curl -s -X POST "http://${NAPCAT_HOST}:${NAPCAT_API_PORT}/get_login_info" \
-H "Content-Type: application/json" -d '{}' \
| python3 -c "import sys,json; d=json.load(sys.stdin); print(d.get('data',{}).get('nickname',''))" 2>/dev/null)
if [ -z "$AGENT_NAME" ]; then
echo "⚠️ 无法获取 QQ 昵称,使用 ADMIN_NAME 代替"
AGENT_NAME="${ADMIN_NAME}"
else
echo "✅ 获取到 QQ 昵称:$AGENT_NAME"
fi
# ─── 持久化到 env_vars ───
echo "export AGENT_NAME='${AGENT_NAME}'" >> /tmp/env_vars.sh
# 复制模板文件(不覆盖已有文件)
for f in AGENTS.md SOUL.md IDENTITY.md USER.md TOOLS.md HEARTBEAT.md; do
if [ ! -f "${AGENT_WORKSPACE}/${f}" ]; then
@ -556,14 +571,16 @@ if [ -d "$TEMPLATES_DIR" ]; then
sed -i "s|ADMIN_NAME|${ADMIN_NAME}|g" *.md
sed -i "s|ADMIN_GAME_ID|${ADMIN_GAME_ID}|g" *.md
sed -i "s|AGENT_WORKSPACE|${AGENT_WORKSPACE}|g" *.md
sed -i "s|AGENT_NAME|${AGENT_NAME}|g" *.md
echo "✅ 角色文件已部署,占位符已替换"
echo "✅ 角色文件已部署,占位符已替换agent 昵称:$AGENT_NAME"
else
echo "⚠️ 模板目录不存在:$TEMPLATES_DIR,请确认仓库已克隆到 /opt/chatrebot_aireply_plug"
fi
```
> 这些模板文件从 `config/agent-templates/` 复制到 agent workspace 后sed 自动将 `ADMIN_QQ`、`ADMIN_NAME`、`AGENT_WORKSPACE` 替换为实际值
> `AGENT_NAME` 自动从 NapCat `/get_login_info` 接口获取已登录 QQ 的昵称。获取失败时回退到 `ADMIN_NAME`
> 其余占位符(`ADMIN_QQ`、`ADMIN_NAME`、`ADMIN_GAME_ID`、`AGENT_WORKSPACE`)由 sed 自动替换为实际值。
> 如需自定义人设,可直接编辑 agent workspace 中的对应 `.md` 文件。
---