Files
pj0235-eai_agentplatform/eai_agentplatform/backend-go/deploy/clonezilla-cleanup.sh
T
eaiadminandClaude Code c1af86c934 feat(asr): 本地语音转写接入为一级路由 + 并行工作流合并提交
按用户指示做**一包提交**,不按工作流拆分。本提交刻意混合了多条并行线:

  · 本地 ASR 接管:audio 成为与 chat/embed/image/video 同等的路由类别
    (IsLocalRoute 单一判据、audio 健康探测、default_audio_route、
    auto 占位、GET /api/ai/routes/audio、回退云端时界面明示「音频已出网」)
  · LLM 调用层:ctx 贯穿、ToolCall/ToolSchema、EmptyCompletionError /
    TransientUpstreamError(按错误类型而非文案判重试)
  · 编排 Agent:general_assistant orchestrate/persistence/spec_driver
  · 联网搜索:internal/search(playwright)
  · 网盘:backend + 前端
  · 前端 UI:导航/路由/工作台若干页
  · 交付文档:DELIVERY.md / AR04 / 部署文档的「无 Python」表述据实改写,
    新增 eai_agentplatform-asr.service、asr.env、clonezilla-cleanup 清 ~/asr-poc

不分拆的原因:dev 早期,粒度不该打断工作节奏。且实测过——这些改动
**在编译上是同一个单元**(llm.go 的 ctx 签名变更牵动 12 个调用点,
chat_message.go 的 ctx 改动又与编排重写同处一个 hunk),拆出来的中间态编不过。
详见 TOP_CODING_RULES.md G14.5 与 bugs_and_errors.md E09。

Co-Authored-By: Claude Code <noreply@anthropic.com>
2026-09-26 22:21:39 +08:00

119 lines
5.3 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/usr/bin/env bash
# ============================================================
# eai_agentplatform — Clonezilla 整盘克隆前的清理脚本
# 目标:交付给客户的设备上「无源代码、无开发痕迹、无测试数据、无默认口令」。
#
# 用法(在交付原型机上以 root 执行):
# sudo bash clonezilla-cleanup.sh
#
# 脚本只做「可逆的清理」;删除源代码属于不可逆动作,默认 DRY-RUN,
# 确认无误后加 --confirm 才真正执行删除。
# ============================================================
set -euo pipefail
APP_DIR="/opt/eai_agentplatform"
CONFIRM="${1:-}"
log() { echo -e "\033[1;32m[OK]\033[0m $*"; }
warn() { echo -e "\033[1;33m[!!]\033[0m $*"; }
step() { echo -e "\n\033[1;36m==>\033[0m $*"; }
DRY=1
if [[ "$CONFIRM" == "--confirm" ]]; then DRY=0; warn "已确认,执行真实清理。"; else warn "DRY-RUN 模式:只列出将执行的动作,不实际修改。加 --confirm 真正执行。"; fi
step "1. 删除 Go 源代码(二进制保留,源代码不复原)"
for p in \
"$APP_DIR/cmd" "$APP_DIR/internal" \
"$APP_DIR/go.mod" "$APP_DIR/go.sum" \
"$APP_DIR/*.go"; do
if compgen -G "$p" >/dev/null 2>&1; then
echo " 将删除: $p"
[[ $DRY -eq 0 ]] && rm -rf $p
fi
done
step "2. 清除版本控制痕迹"
for p in "$APP_DIR/.git" "$APP_DIR/.gitignore" "$APP_DIR/.github" "$APP_DIR/.gitlab"; do
if [[ -e "$p" ]]; then
echo " 将删除: $p"
[[ $DRY -eq 0 ]] && rm -rf "$p"
fi
done
step "3. 清理测试/演示数据(保留生产库结构,清空内容)"
echo " - 提示:测试用户 zhangsan / 演示素材 / 演示考试记录等由管理员在 Web 界面手动清理,"
echo " 或在克隆前用 sqlite3 执行(见 DELIVERY.md 第 4 节)。脚本不自动清库,避免误删正式数据。"
echo " - 别漏了 $APP_DIR/data/backups/ :里面是原型机自己的历史快照,含同一批测试数据,"
echo " 整盘克隆会一起带到客户机器上。确认无用后手工清空该目录(见 DELIVERY.md 第 7 节)。"
step "4. 清理本地 ASR 工作区的原型机数据(录音与逐字稿)"
ASR_DIR="/opt/eai_agentplatform-asr"
# 为什么这一步必须做,而不是「顺手清个缓存」:
# 原型机的 ~/asr-poc/audio/ 里是**真实会议录音**,~/asr-poc/out/ 里是它的完整逐字稿
# 与说话人分离结果(还有一份云端转写的对照稿)。整盘克隆会把它们原样带到客户机器上。
# 与 data/backups/ 同一类问题:不是程序数据,是原型机自己的业务内容。
for ws in /home/*/asr-poc; do
[[ -d "$ws" ]] || continue
echo " 工作区: $ws"
for sub in out audio __pycache__; do
[[ -e "$ws/$sub" ]] || continue
echo " 将删除: $ws/$sub(录音 / 逐字稿 / 缓存)"
[[ $DRY -eq 0 ]] && rm -rf "$ws/$sub"
done
# requirements.lock.txt 留着:它是这套环境精确版本的唯一记录,
# 属于离线重建的工具件,不是开发痕迹(venv 里 pip freeze 也能再生成)。
for f in "$ws"/*.log; do
[[ -e "$f" ]] || continue
echo " 将删除: $f"
[[ $DRY -eq 0 ]] && rm -f "$f"
done
done
# 工作区本身能不能删,取决于它是否已经**装到**交付位置。
# 删早了服务就起不来,而且没有源码可以重建 —— 所以只提示,不自动删。
if [[ -d "$ASR_DIR" ]]; then
echo " 已安装到交付位置:$ASR_DIR"
echo " 确认下面这些都在,就可以删掉 ~/asr-poc(其中 venv 有 9G,别在两处各留一份):"
echo " $ASR_DIR/serve.py $ASR_DIR/asr_core.py $ASR_DIR/venv/ $ASR_DIR/models/ $ASR_DIR/asr.env"
echo " 删之前先确认服务能起来:systemctl restart eai_agentplatform-asr && curl -sI http://127.0.0.1:8090/v1/models"
else
warn " 未发现 $ASR_DIR —— 本地 ASR 还没装到交付位置,先别动 ~/asr-poc。"
fi
step "5. 清空日志与 shell 历史"
for f in "$APP_DIR/logs" "$APP_DIR"/*.log /var/log/eai_agentplatform*.log; do
if compgen -G "$f" >/dev/null 2>&1; then
echo " 将清空: $f"
[[ $DRY -eq 0 ]] && find "$f" -type f -name '*.log' -exec truncate -s 0 {} \; 2>/dev/null || true
fi
done
for h in /root/.bash_history /home/*/.bash_history; do
if [[ -f "$h" ]]; then
echo " 将清空: $h"
[[ $DRY -eq 0 ]] && truncate -s 0 "$h"
fi
done
step "6. 提示:以下必须手工完成(脚本无法替你决定口令)"
cat <<'EOF'
[A] 重置管理员密码:
sudo -u eai_agentplatform /opt/eai_agentplatform/eai_agentplatform-server -reset-admin '<新强密码>'
[B] 重新生成 JWT 密钥(写回 /opt/eai_agentplatform/.env):
python3 -c "import secrets; print('JWT_SECRET='+secrets.token_urlsafe(48))"
[C] 确认 .env 内无 __CHANGE_ME__ 占位符:
grep -n '__CHANGE_ME__' /opt/eai_agentplatform/.env && echo '!! 存在未替换占位符' || echo '无占位符'
EOF
step "7. 移除本清理脚本自身(交付物不含脚本)"
echo " 将删除: $0"
[[ $DRY -eq 0 ]] && rm -f "$0"
echo
if [[ $DRY -eq 0 ]]; then
log "清理完成。请复核 [A][B][C] 三项,再执行 Clonezilla 整盘克隆。"
warn "本地 ASR 工作区(~/asr-poc)是否已删、是否只剩一份 venv,请手工确认(见上面第 4 步的提示)。"
else
warn "DRY-RUN 结束,未做任何修改。确认后:sudo bash $0 --confirm"
fi