{"repo": "465146/xiaonuanai", "files": {"start.sh": {"d2530a58543b4c059a5a83f8eafce9c879381219": {"t": 1785745955.0963318, "n": 3586, "h": "6fa5d35b8b3cc03b", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\necho \"[start] Installing music API...\"\n\n# 确保 submodule 存在(Railway 可能不会 git clone --recursive)\nif [ ! -f netease-api/app.js ]; then\n echo \"[start] Pulling netease-api submodule...\"\n git submodule update --init --recursive 2>/dev/null || \\\n git clone --depth 1 https://github.com/NeteaseCloudMusicAPIEnhanced/api-enhanced.git netease-api 2>/dev/null || \\\n echo \"[start] WARNING: Cannot fetch netease-api, music fallback to public API\"\nfi\n\n(cd netease-api && npm install 2>&1 | tail -3)\n\necho \"[start] Starting music API (port 3000)...\"\n(cd netease-api && PORT=3000 node app.js) &\nMUSIC_PID=$!\necho \"[start] Music API PID=$MUSIC_PID\"\nsleep 3\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "7277436bcab241747ad1dd7204b44acd42170062": {"t": 1785758247.472025, "n": 3180, "h": "5414f2e1f1ec6130", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\necho \"[start] Installing music API...\"\n(cd netease-api && npm install 2>&1 | tail -3)\n\necho \"[start] Starting music API (port 3000)...\"\n(cd netease-api && PORT=3000 node app.js) &\nMUSIC_PID=$!\necho \"[start] Music API PID=$MUSIC_PID\"\nsleep 3\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "70b03c973b7ba56671d253a7d5b0d88f012f890e": {"t": 1785758248.7871647, "n": 3170, "h": "984be21419d56409", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\necho \"[start] Installing music API...\"\n(cd netease-api && npm install 2>&1 | tail -3)\n\necho \"[start] Starting music API (port 3000)...\"\n(cd netease-api && node app.js) &\nMUSIC_PID=$!\necho \"[start] Music API PID=$MUSIC_PID\"\nsleep 3\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "91e734f056e72d435c7f227c6288492275e7828c": {"t": 1785758252.517796, "n": 3181, "h": "c294ece246c1168a", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\necho \"[start] Installing music API...\"\ncd netease-api && npm install 2>&1 | tail -3 && cd ..\n\necho \"[start] Starting music API (port 3000)...\"\ncd netease-api && node app.js &\nMUSIC_PID=$!\necho \"[start] Music API PID=$MUSIC_PID\"\ncd ..\nsleep 3\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "aaf7d937fcd4ae20708617a818d2ebbfc38602cf": {"t": 1785758253.8934076, "n": 2938, "h": "5e5f1efa96ef2290", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "27381a485be99009bd45ed415a1294a5cf0b6e2f": {"t": 1785758255.615945, "n": 3407, "h": "5fbd968975cf0d72", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw + music API...\"\nnpm install --omit=none openclaw@2026.5.2\nnpm install NeteaseCloudMusicApi 2>/dev/null || echo \"[start] music API skipped\"\n\n# ── Start NeteaseCloudMusicApi (background, port 3000) ──\nif [ -f \"node_modules/NeteaseCloudMusicApi/app.js\" ]; then\n PORT=3000 node node_modules/NeteaseCloudMusicApi/app.js &\n echo \"[start] Music API PID=$! (port 3000)\"\nelif command -v NeteaseCloudMusicApi >/dev/null 2>&1; then\n PORT=3000 NeteaseCloudMusicApi &\n echo \"[start] Music API PID=$! (port 3000)\"\nfi\nsleep 2\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "78b90dd23b7188fecb1fe29e3c198139fea0905e": {"t": 1785758257.145053, "n": 3411, "h": "249f063587d58bb7", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw + music API...\"\nnpm install --omit=none openclaw@2026.5.2\nnpm install NeteaseCloudMusicApi 2>/dev/null || echo \"[start] music API skipped\"\n\n# ── Start NeteaseCloudMusicApi (background, port 3000) ──\nif [ -f \"node_modules/NeteaseCloudMusicApi/app.js\" ]; then\n node node_modules/NeteaseCloudMusicApi/app.js --port 3000 &\n echo \"[start] Music API PID=$! (port 3000)\"\nelif command -v NeteaseCloudMusicApi >/dev/null 2>&1; then\n NeteaseCloudMusicApi --port 3000 &\n echo \"[start] Music API PID=$! (port 3000)\"\nfi\nsleep 2\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "24668a1bf97be698c2f4aa8e014e7670664ddb4f": {"t": 1785758258.8553782, "n": 3057, "h": "127d29991c2920f0", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw + ncm-cli...\"\nnpm install --omit=none openclaw@2026.5.2\nnpm install -g @music163/ncm-cli 2>/dev/null || echo \"[start] ncm-cli skipped (won't affect core functions)\"\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "436e6d25e62d75bb0eb1b600e9e9c6dcffc893ac": {"t": 1785758260.0933335, "n": 2938, "h": "5e5f1efa96ef2290", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\n# 主配置路径\nmkdir -p \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway/.\" \"$HOME/.openclaw/\"\n# 嵌套路径(Gateway 某些版本会检查 ~/.openclaw/.openclaw/openclaw.json)\nmkdir -p \"$HOME/.openclaw/.openclaw\"\ncp \"$(pwd)/gateway/openclaw.json\" \"$HOME/.openclaw/.openclaw/openclaw.json\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] main: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \"[start] nested: $([ -f \"$OPENCLAW_HOME/.openclaw/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "a48dd63dd07a1945f98fed9c491ac4506378df33": {"t": 1785758261.478334, "n": 2660, "h": "67f8c23f7188621b", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install --omit=none openclaw@2026.5.2\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 --allow-unconfigured &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "b94bfca87bcab1f0dd75b5a74673f7bd0d0f3754": {"t": 1785758266.5872657, "n": 2691, "h": "ee4d146fbef49cba", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw (all deps)...\"\nnpm config set production false\nnpm install openclaw@2026.5.2\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 --allow-unconfigured &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "08e84a2eb64176ab90335ccea57137b05c6aa90b": {"t": 1785758268.3789823, "n": 2693, "h": "36a10ccb573ba4b0", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw (including optional deps)...\"\nnpm install --include=optional openclaw@2026.4.8\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 --allow-unconfigured &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "28be2cb1e2afd0b705224666a8b6a8e54dcd7deb": {"t": 1785758270.8722148, "n": 2648, "h": "efc24a3f8830be02", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install openclaw@2026.4.8\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 --allow-unconfigured &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "5f62ccf344a19bad5405c886e5fa50c6a7600e08": {"t": 1785758272.7589943, "n": 2627, "h": "2c1c458adb880cba", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\nexport PORT=\"${PORT:-8000}\"\n\n# ── Install Node.js if not available ──\nif ! command -v node >/dev/null 2>&1; then\n echo \"[start] Node.js not found, downloading...\"\n NODE_VER=\"22.14.0\"\n curl -fsSL \"https://nodejs.org/dist/v${NODE_VER}/node-v${NODE_VER}-linux-x64.tar.xz\" -o /tmp/node.tar.xz\n tar -xJf /tmp/node.tar.xz -C /tmp\n export PATH=\"/tmp/node-v${NODE_VER}-linux-x64/bin:$PATH\"\n echo \"[start] Node.js v${NODE_VER} installed\"\nfi\necho \"[start] node=$(node --version) npm=$(npm --version)\"\n\n# ── Install OpenClaw ──\necho \"[start] Installing openclaw...\"\nnpm install openclaw@2026.4.8\n\n# ── Generate Gateway runtime files ──\nmkdir -p gateway/agents/cbt/agent gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nfi\n\n# ── Start OpenClaw Gateway ──\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\necho \"[start] Config: OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \"[start] openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\n\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n [ $i -eq 30 ] && echo \"[start] WARNING: Gateway not ready after 30s\"\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# nix store fallback (for when provider installs but PATH misses it)\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls -d /nix/store/*python3* 2>/dev/null | head -5 || echo \"(none)\"\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "2a5c0c3c85f932ac920fb1fb7e83c2523a714887": {"t": 1785758274.0778117, "n": 3161, "h": "f2eef42d0417ade4", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Ensure Node modules are installed ──\nif [ ! -f \"node_modules/openclaw/dist/index.js\" ]; then\n echo \"[start] Installing OpenClaw Gateway...\"\n npm install openclaw@latest || true\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nGATEWAY_PID=\"\"\nif command -v npx >/dev/null 2>&1; then\n npx openclaw gateway --port 18789 &\n GATEWAY_PID=$!\nelif [ -f \"node_modules/openclaw/dist/index.js\" ]; then\n node node_modules/openclaw/dist/index.js gateway --port 18789 &\n GATEWAY_PID=$!\nelif command -v openclaw >/dev/null 2>&1; then\n openclaw gateway --port 18789 &\n GATEWAY_PID=$!\nfi\nif [ -n \"$GATEWAY_PID\" ]; then\n echo \"[start] Gateway PID=$GATEWAY_PID\"\nelse\n echo \"[start] WARNING: Could not start Gateway\"\nfi\n\n# Wait for Gateway to be ready\nif [ -n \"$GATEWAY_PID\" ]; then\n for i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\n done\nfi\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\n# Fallback: search nix store for Python\nif [ -z \"$PY\" ]; then\n for d in /nix/store/*python*3.1*/bin /nix/store/*python3*/bin; do\n if [ -x \"$d/python3\" ]; then\n export PATH=\"$d:$PATH\"\n PY=\"python3\"\n echo \"[start] Found Python in nix store: $d\"\n break\n fi\n done 2>/dev/null\nfi\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n ls /nix/store/*python3*/bin/python* 2>/dev/null | head -5 || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "ea1bf4452b471d5b744c8b5375711f9fbc10cd3a": {"t": 1785758278.245557, "n": 2573, "h": "e1d989ea224a14be", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Install Node.js dependencies ──\nif command -v npm >/dev/null 2>&1; then\n echo \"[start] npm available, installing OpenClaw...\"\n npm install openclaw@latest || true\n echo \"[start] npm install exit code: $?\"\n ls node_modules/openclaw/dist/index.js 2>/dev/null && echo \"[start] openclaw dist found\" || echo \"[start] openclaw dist NOT found\"\nelse\n echo \"[start] npm not available\"\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "fac4510161630fb163b4cb6e3a0df6f2c36923d0": {"t": 1785758281.0642073, "n": 2329, "h": "d09028068b6168c1", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Install Node.js dependencies ──\nif command -v npm >/dev/null 2>&1; then\n echo \"[start] Installing OpenClaw Gateway...\"\n npm install openclaw@latest 2>&1 | tail -5\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nnpx openclaw gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "ded0a4932d20a5d314ed0f5920366c436e52d0da": {"t": 1785758282.5629258, "n": 2328, "h": "055ef3aa5a578e04", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Install Node.js dependencies ──\nif command -v npm >/dev/null 2>&1; then\n echo \"[start] Installing OpenClaw Gateway...\"\n npm install -g openclaw@latest 2>&1 | tail -5\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nopenclaw gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "806ee0d68ff95357cb8326f51e7dbeeae1e555c7": {"t": 1785758283.9840343, "n": 2431, "h": "c025a1daf9818a2f", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport OPENCLAW_HOME=\"$(pwd)/gateway\"\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Install Node.js dependencies ──\nif [ -f \"package.json\" ] && command -v npm >/dev/null 2>&1; then\n echo \"[start] Installing npm packages...\"\n npm install --prefer-offline --no-audit --no-fund 2>&1 | tail -3\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nnpx openclaw gateway --port 18789 --allow-unconfigured &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "226e12d64295f07d6e71d00ce92e914687d8436e": {"t": 1785758285.5520117, "n": 2214, "h": "a3f919ff164bac5e", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport OPENCLAW_HOME=\"$(pwd)/gateway\"\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nnpx openclaw gateway --port 18789 --allow-unconfigured &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "e344fb898d118d034a65af8d6777a419e79133c8": {"t": 1785758286.735665, "n": 2221, "h": "1c3bb2ac2fe75bb2", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport OPENCLAW_HOME=\"$(pwd)/gateway\"\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 必须从 ~/.openclaw/ 读取配置(硬拷贝,不用软链接)\nrm -rf \"$HOME/.openclaw\"\ncp -r \"$(pwd)/gateway\" \"$HOME/.openclaw\"\nexport OPENCLAW_HOME=\"$HOME/.openclaw\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" openclaw.json: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" workspace/cbt: $([ -d \"$OPENCLAW_HOME/workspace/cbt\" ] && echo YES || echo NO)\"\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "fb44dc57d150ae18d0e1d3dadfaf17e24bfe5bc3": {"t": 1785758287.966049, "n": 2350, "h": "269056eff848ff70", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport OPENCLAW_HOME=\"$(pwd)/gateway\"\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Start OpenClaw Gateway (background) ──\n# Gateway 默认从 ~/.openclaw/ 读取配置,创建软链接\nGATEWAY_HOME=\"$HOME/.openclaw\"\nif [ ! -L \"$GATEWAY_HOME\" ] && [ ! -e \"$GATEWAY_HOME\" ]; then\n ln -sf \"$(pwd)/gateway\" \"$GATEWAY_HOME\"\n echo \"[start] Linked gateway -> ~/.openclaw\"\nfi\nexport OPENCLAW_HOME=\"$(pwd)/gateway\"\n\necho \"[start] Config check:\"\necho \" OPENCLAW_HOME=$OPENCLAW_HOME\"\necho \" config exists: $([ -f \"$OPENCLAW_HOME/openclaw.json\" ] && echo YES || echo NO)\"\necho \" symlink: $([ -L \"$HOME/.openclaw\" ] && echo '->' \"$(readlink \"$HOME/.openclaw\")\" || echo none)\"\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "196a91f5e1979c9e435f0602c7f3acd30751de05": {"t": 1785758289.216138, "n": 1829, "h": "3f99294b3e779bd1", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\n# ── Environment ──\nexport OPENCLAW_HOME=\"$(pwd)/gateway\"\nexport PORT=\"${PORT:-8000}\"\n\n# ── Generate runtime files from env vars ──\nmkdir -p gateway/agents/cbt/agent gateway/data gateway/workspace/cbt/memory gateway/workspace/cbt/state\nif [ -n \"$DEEPSEEK_API_KEY\" ]; then\n # Gateway auth-profiles.json (agent 使用)\n cat > gateway/agents/cbt/agent/auth-profiles.json << AUTH_EOF\n{\n \"version\": 1,\n \"profiles\": {\n \"deepseek:default\": {\n \"type\": \"api_key\",\n \"provider\": \"deepseek\",\n \"key\": \"${DEEPSEEK_API_KEY}\"\n }\n }\n}\nAUTH_EOF\n # Gateway .env(模板变量替换用)\n echo \"DEEPSEEK_API_KEY=${DEEPSEEK_API_KEY}\" > gateway/.env\n echo \"[start] Gateway auth files generated\"\nelse\n echo \"[start] WARNING: DEEPSEEK_API_KEY not set, Gateway may fail\"\nfi\n\n# ── Start OpenClaw Gateway (background) ──\necho \"[start] Launching OpenClaw Gateway...\"\nnode node_modules/openclaw/dist/index.js gateway --port 18789 &\nGATEWAY_PID=$!\necho \"[start] Gateway PID=$GATEWAY_PID\"\n\n# Wait for Gateway to be ready\nfor i in $(seq 1 30); do\n if curl -s http://127.0.0.1:18789/health > /dev/null 2>&1; then\n echo \"[start] Gateway ready (port 18789)\"\n break\n fi\n if [ $i -eq 30 ]; then\n echo \"[start] WARNING: Gateway not ready after 30s, continuing anyway\"\n fi\n sleep 1\ndone\n\n# ── Find Python ──\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=$PORT Gateway=18789\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"$PORT\"\n"}, "f4c0c05803f86576825d9ca6110fbca2a31a29ef": {"t": 1785758291.7885563, "n": 545, "h": "b880051e1b2b53fb", "c": "#!/bin/bash\ncd \"$(dirname \"$0\")\"\n\n# 找到可用的 Python\nPY=\"\"\nfor cmd in python3.13 python3.12 python3.11 python3.10 python3 python; do\n if command -v \"$cmd\" >/dev/null 2>&1; then\n PY=\"$cmd\"\n break\n fi\ndone\n\nif [ -z \"$PY\" ]; then\n echo \"ERROR: No Python found!\"\n echo \"PATH=$PATH\"\n ls /usr/bin/python* 2>/dev/null || true\n ls /usr/local/bin/python* 2>/dev/null || true\n exit 1\nfi\n\necho \"=== XiaoNuan CBT ===\"\necho \"Python=$PY PORT=${PORT:-8000}\"\n\nexec \"$PY\" -m uvicorn main:app --host 0.0.0.0 --port \"${PORT:-8000}\"\n"}, "70d2756841a2f8f3b2a99fbbe93a819592d5862b": {"t": 1785758292.9577823, "n": 300, "h": "bf92785c0edf7f5f", "c": "#!/bin/bash\ncd \"$(dirname \"$0\")\"\n\necho \"=== XiaoNuan CBT ===\"\necho \"PORT=${PORT:-8000}\"\n\n# 诊断(不阻塞启动)\npython3 -c \"import main; print('import ok')\" 2>&1 || echo \"import failed, trying uvicorn anyway...\"\n\necho \"Starting uvicorn...\"\nexec python3 -m uvicorn main:app --host 0.0.0.0 --port \"${PORT:-8000}\"\n"}, "c7cb6eefc76bd8944a74975f3451ebb71cdb2d64": {"t": 1785758295.4982378, "n": 258, "h": "0ce3c2d3e221523c", "c": "#!/bin/bash\nset -e\ncd \"$(dirname \"$0\")\"\n\necho \"=== XiaoNuan CBT ===\"\necho \"PORT=${PORT:-8000}\"\n\n# 先试 import,失败就打印具体错误\npython -c \"import main; print('OK')\" 2>&1\n\necho \"Starting uvicorn...\"\nexec python -m uvicorn main:app --host 0.0.0.0 --port \"${PORT:-8000}\"\n"}, "fe40133cff7a09df931c68840f325a91818085c0": {"t": 1785758296.965144, "n": 214, "h": "24ff2dc18935548d", "c": "#!/bin/bash\n# 小暖 CBT 启动脚本 (Linux / Railway)\nset -e\n\necho \"=== XiaoNuan CBT Starting ===\"\necho \"[web] Port: ${PORT:-8000}\"\n\ncd \"$(dirname \"$0\")\"\nexec python -m uvicorn main:app --host 0.0.0.0 --port \"${PORT:-8000}\"\n"}, "1909fc0f12dc0d14d9947e6ae289e03e62ac2001": {"t": 1785758298.3056011, "n": 819, "h": "d8361098af734e33", "c": "#!/bin/bash\n# 小暖 CBT 启动脚本 (Linux / Railway)\nset -e\n\necho \"=== XiaoNuan CBT Starting ===\"\n\n# ── OpenClaw Gateway(可选)──\n# Railway 上 openclaw 可能无法正常工作(微信插件依赖本地环境)\n# 尝试启动,失败不影响网站功能\nif command -v openclaw &> /dev/null || command -v npx &> /dev/null; then\n echo \"[openclaw] Starting Gateway (best-effort)...\"\n openclaw gateway --port 18789 &>/tmp/openclaw.log &\n sleep 3\n if curl -s http://127.0.0.1:18789/health >/dev/null 2>&1; then\n echo \"[openclaw] Gateway ready\"\n else\n echo \"[openclaw] Gateway failed to start — website will run without enhanced mode\"\n fi\nelse\n echo \"[openclaw] Not available — running in basic mode\"\nfi\n\n# ── FastAPI 网站 ──\necho \"[web] Starting FastAPI on port ${PORT:-8000}...\"\ncd \"$(dirname \"$0\")\"\nexec uv run uvicorn main:app --host 0.0.0.0 --port \"${PORT:-8000}\"\n"}, "739e2e2261104e253dd2d3852254bdc3fa2f2553": {"t": 1785758299.7009177, "n": 598, "h": "8930913fcde8f48b", "c": "#!/bin/bash\n# 小暖 CBT 启动脚本\n# 1. 安装 OpenClaw(可选,如果 package.json 存在)\n# 2. 启动 OpenClaw Gateway(可选,后台)\n# 3. 安装 Python 依赖\n# 4. 启动 FastAPI 网站\n\nset -e\n\necho \"=== 小暖 CBT 启动中 ===\"\n\n# ── OpenClaw Gateway(可选,如果已安装)──\nif command -v openclaw &> /dev/null || [ -f \"$HOME/.npm-global/bin/openclaw\" ]; then\n echo \"[openclaw] 启动 Gateway...\"\n openclaw gateway --port 18789 &\n sleep 2\n echo \"[openclaw] Gateway 已启动\"\nelse\n echo \"[openclaw] 未安装,跳过 Gateway(网站仍可正常使用)\"\nfi\n\n# ── FastAPI 网站 ──\necho \"[web] 启动 FastAPI...\"\ncd \"$(dirname \"$0\")\"\nexec uv run uvicorn main:app --host 0.0.0.0 --port \"${PORT:-8000}\"\n"}}, "templates/index.html": {"d2530a58543b4c059a5a83f8eafce9c879381219": {"t": 1785746427.3861594, "n": 20210, "h": "ace1a48da557f194", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "df56528239fb35ae1cf81659210374bcad48fe9a": {"t": 1785758246.281471, "n": 20210, "h": "ace1a48da557f194", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "e338a0de57c70e9572998cede1db2933fbbedf9d": {"t": 1785758247.7614934, "n": 20210, "h": "450b8760c0f41d5a", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "8407dd60e7a687636d5d1f438aefa49b968b6ce1": {"t": 1785758249.7079217, "n": 20022, "h": "46e8b32a1d8e7c9a", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "9dc708f7aff54cb2edb33bdea1ba3edc7f5df755": {"t": 1785758252.0553045, "n": 20018, "h": "da2a69447815ebba", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "24668a1bf97be698c2f4aa8e014e7670664ddb4f": {"t": 1785758253.863635, "n": 20018, "h": "ffd7e283d2a62db7", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "d03397a11d95872dc08c3adf40fe55a3768987df": {"t": 1785758255.663657, "n": 20018, "h": "71c41a638b6d9317", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n
✅
\n

微信已连接

\n

Bot ID:

\n \n
\n\n \n
\n

点击按钮,生成你的专属微信二维码

\n \n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n

\n \n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}, "739e2e2261104e253dd2d3852254bdc3fa2f2553": {"t": 1785758257.4013019, "n": 21286, "h": "e113ea4c12aa8f1a", "c": "\n\n\n \n \n 小暖 - AI 心理陪伴伙伴\n \n \n \n\n\n
\n \n \n\n \n
\n \n
\n
\n \n

💬 和小暖聊聊

\n \n
\n
\n
\n
\n
🫧
\n

嗨,我是小暖 👋

\n

一个温暖的 AI 心理陪伴伙伴。
无论你想聊什么,我都在这里倾听。

\n

今天感觉怎么样?

\n
\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📊 情绪仪表盘

\n
\n
\n
\n
\n
今日情绪
\n
--
\n
\n
\n
本周平均
\n
--
\n
\n
\n
最新 PHQ-9
\n
--
\n
\n
\n
\n

📈 情绪分数趋势(30天)

\n
\n
\n
\n

📋 PHQ-9 测试历史

\n
\n
\n
\n

📝 周度文字报告

\n
加载中...
\n
\n
\n
\n\n \n
\n
\n \n

📝 情绪日记

\n \n
\n
\n
\n

加载中...

\n
\n
\n

点击左侧日记查看详情

\n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n \n

📋 PHQ-9 抑郁筛查

\n
\n
\n
\n
\n

国际通用情绪状态自评量表

\n

PHQ-9 是国际通用的抑郁症状自评量表,基于 DSM-5 诊断标准设计。

\n

注意:结果仅作为自我觉察的参考,不能替代专业诊断。

\n

大约需要 2 分钟完成

\n \n
\n
\n
\n
\n
\n

第 1/9 题

\n

\n
\n
\n
\n
\n
\n
\n
\n

📜 历史记录

\n

加载中...

\n
\n
\n
\n\n \n
\n
\n \n

📱 连接微信

\n
\n
\n
\n

📱 扫码连接微信

\n\n \n
\n

点击按钮,获取 Gateway 微信机器人的二维码

\n \n
\n
\n\n \n
\n
\n \"微信登录二维码\"\n\n
\n

请用微信扫描二维码

\n
\n 等待扫码中\n ...\n
\n
\n\n \n
\n
✅
\n

微信连接成功!

\n

现在可以通过微信和小暖聊天了

\n
\n\n \n
\n

\n \n
\n\n \n
\n 管理员:手动配置静态二维码\n
\n \n \n \n
\n
\n
\n
\n
\n\n \n
\n
\n \n

⚙️ 我的设置

\n
\n
\n
\n \n
\n
\n

👤 个人档案

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

⏰ 每日提醒

\n
\n \n
\n
\n \n \n
\n
\n
\n\n \n
\n
\n

🤖 大模型 API

\n

配置你自己的大模型,不填则使用系统默认的 DeepSeek

\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n\n
\n

小暖会根据你的档案,更懂你

\n \n \n
\n
\n
\n
\n
\n
\n
\n\n \n \n \n \n \n \n \n\n\n"}}}}