diff --git a/01_卡资(金)/金仓_存储备份/服务器管理/scripts/kr宝塔_SSH登录.sh b/01_卡资(金)/金仓_存储备份/服务器管理/scripts/kr宝塔_SSH登录.sh index 854f12ac..ea5c2d52 100755 --- a/01_卡资(金)/金仓_存储备份/服务器管理/scripts/kr宝塔_SSH登录.sh +++ b/01_卡资(金)/金仓_存储备份/服务器管理/scripts/kr宝塔_SSH登录.sh @@ -11,13 +11,13 @@ if [ -f "/Users/karuo/Documents/开发/4、小工具/服务器管理/Steam/id_ed echo ">>> 尝试密钥登录 (port 22022)..." if ssh -p 22022 -o StrictHostKeyChecking=no -o ConnectTimeout=10 \ -i "/Users/karuo/Documents/开发/4、小工具/服务器管理/Steam/id_ed25519" \ - root@"$HOST" $CMD 2>/dev/null; then + root@"$HOST" "bash -lc $(printf '%q' "$CMD")" 2>/dev/null; then exit 0 fi echo ">>> 尝试密钥登录 (port 22)..." if ssh -p 22 -o StrictHostKeyChecking=no -o ConnectTimeout=10 \ -i "/Users/karuo/Documents/开发/4、小工具/服务器管理/Steam/id_ed25519" \ - root@"$HOST" $CMD 2>/dev/null; then + root@"$HOST" "bash -lc $(printf '%q' "$CMD")" 2>/dev/null; then exit 0 fi fi @@ -27,12 +27,12 @@ echo ">>> 尝试密码登录 root@$HOST (port 22022)..." if command -v sshpass >/dev/null 2>&1; then if sshpass -p 'Zhiqun1984' ssh -p 22022 -o StrictHostKeyChecking=no \ -o PubkeyAuthentication=no -o PreferredAuthentications=password \ - root@"$HOST" $CMD 2>/dev/null; then + root@"$HOST" "bash -lc $(printf '%q' "$CMD")" 2>/dev/null; then exit 0 fi echo ">>> 尝试密码登录 (port 22)..." if sshpass -p 'Zhiqun1984' ssh -p 22 -o StrictHostKeyChecking=no \ - -o PubkeyAuthentication=no root@"$HOST" $CMD 2>/dev/null; then + -o PubkeyAuthentication=no root@"$HOST" "bash -lc $(printf '%q' "$CMD")" 2>/dev/null; then exit 0 fi fi diff --git a/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json b/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json index 2cd56ffe..3eb8d1df 100644 --- a/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json +++ b/01_卡资(金)/金仓_存储备份/聊天记录管理/fallback/recent_chats_fallback.json @@ -1,7 +1,15 @@ { -"updated": "2026-03-26T16:08:36.831097+00:00", +"updated": "2026-03-27T04:18:17.077964+00:00", "conversations": [ { +"对话ID": "8df1d11b-731f-43bd-aac9-2c3299e23557", +"名称": "Docker 容器默认自动启动", +"项目": "服务器", +"首条消息": "启动 Docker 的时候,是一些网站都要默认全部自动启动", +"创建时间": "2026-03-27T03:38:30.640000+00:00", +"消息数量": 22 +}, +{ "对话ID": "ff8edeb0-9797-4fd8-a98a-508499421b54", "名称": "五清单 APP 网址添加与任务规划", "项目": "未分类", diff --git a/运营中枢/工作台/gitea_push_log.md b/运营中枢/工作台/gitea_push_log.md index 6fb4f4fa..0c4bae99 100644 --- a/运营中枢/工作台/gitea_push_log.md +++ b/运营中枢/工作台/gitea_push_log.md @@ -447,3 +447,4 @@ | 2026-03-26 22:37:12 | 🔄 卡若AI 同步 2026-03-26 22:37 | 更新:金仓、水桥平台对接、水溪整理归档、卡木、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | | 2026-03-27 00:01:33 | 🔄 卡若AI 同步 2026-03-27 00:01 | 更新:Cursor规则、金仓、水桥平台对接、卡木、火炬、总索引与入口、运营中枢、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | | 2026-03-27 00:01:59 | 🔄 卡若AI 同步 2026-03-27 00:01 | 更新:金仓、火炬、运营中枢工作台 | 排除 >20MB: 12 个 | +| 2026-03-27 00:09:17 | 🔄 卡若AI 同步 2026-03-27 00:09 | 更新:金仓、运营中枢工作台 | 排除 >20MB: 12 个 | diff --git a/运营中枢/工作台/代码管理.md b/运营中枢/工作台/代码管理.md index 39b96c6d..95fe1253 100644 --- a/运营中枢/工作台/代码管理.md +++ b/运营中枢/工作台/代码管理.md @@ -450,3 +450,4 @@ | 2026-03-26 22:37:12 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-26 22:37 | 更新:金仓、水桥平台对接、水溪整理归档、卡木、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-27 00:01:33 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-27 00:01 | 更新:Cursor规则、金仓、水桥平台对接、卡木、火炬、总索引与入口、运营中枢、运营中枢参考资料、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | | 2026-03-27 00:01:59 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-27 00:01 | 更新:金仓、火炬、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | +| 2026-03-27 00:09:17 | 成功 | 成功 | 🔄 卡若AI 同步 2026-03-27 00:09 | 更新:金仓、运营中枢工作台 | 排除 >20MB: 12 个 | [仓库](http://open.quwanzhi.com:3000/fnvtk/karuo-ai) [百科](http://open.quwanzhi.com:3000/fnvtk/karuo-ai/wiki) | diff --git a/运营中枢/工作台/脚本/amiao_install_openclaw_launchagent.sh b/运营中枢/工作台/脚本/amiao_install_openclaw_launchagent.sh new file mode 100755 index 00000000..8240db75 --- /dev/null +++ b/运营中枢/工作台/脚本/amiao_install_openclaw_launchagent.sh @@ -0,0 +1,53 @@ +#!/usr/bin/env bash +# 在「能 SSH 到阿猫」的机器上执行:安装 LaunchAgent,使龙虾网关登录自启 + 崩溃自动拉起。 +# 默认:ssh -p 22203 kr@macbook.quwanzhi.com +set -euo pipefail +AMIAO_SSH="${AMIAO_SSH:-ssh -p 22203 kr@macbook.quwanzhi.com}" +REPO_PLIST="$(cd "$(dirname "$0")" && pwd)/com.openclaw.gateway.longmao.plist" + +if [[ ! -f "$REPO_PLIST" ]]; then + echo "缺少 $REPO_PLIST" >&2 + exit 1 +fi + +echo ">>> 推 plist 并加载 LaunchAgent(用户 kr)…" +$AMIAO_SSH bash -s <<'ENDREMOTE' +set -euo pipefail +PLIST_SRC="$HOME/Library/LaunchAgents/com.openclaw.gateway.longmao.plist" +mkdir -p "$HOME/Library/LaunchAgents" +# 先卸载旧任务(忽略不存在) +launchctl bootout "gui/$(id -u)/com.openclaw.gateway.longmao" 2>/dev/null || true +launchctl unload "$PLIST_SRC" 2>/dev/null || true +# 结束旧的手动网关,避免占端口 +pkill -f "/openclaw/dist/index.js gateway" 2>/dev/null || true +# 停用旧 Label「ai.openclaw.gateway」(曾用错误 Node 版本,易与龙虾冲突) +UIDN="$(id -u)" +launchctl bootout "gui/$UIDN/ai.openclaw.gateway" 2>/dev/null || launchctl unload "$HOME/Library/LaunchAgents/ai.openclaw.gateway.plist" 2>/dev/null || true +if [[ -f "$HOME/Library/LaunchAgents/ai.openclaw.gateway.plist" ]]; then + mv "$HOME/Library/LaunchAgents/ai.openclaw.gateway.plist" "$HOME/Library/LaunchAgents/ai.openclaw.gateway.plist.off_autodisable" +fi +sleep 2 +ENDREMOTE + +# 上传 plist(本机路径 → 远程) +$AMIAO_SSH "cat > /Users/kr/Library/LaunchAgents/com.openclaw.gateway.longmao.plist" < "$REPO_PLIST" + +$AMIAO_SSH bash -s <<'ENDREMOTE' +set -euo pipefail +PLIST="$HOME/Library/LaunchAgents/com.openclaw.gateway.longmao.plist" +chmod 644 "$PLIST" +UID_NUM="$(id -u)" +# macOS 现代用法:bootstrap + enable + kickstart +launchctl bootstrap "gui/$UID_NUM" "$PLIST" 2>/dev/null || launchctl load -w "$PLIST" +launchctl enable "gui/$UID_NUM/com.openclaw.gateway.longmao" 2>/dev/null || true +launchctl kickstart -k "gui/$UID_NUM/com.openclaw.gateway.longmao" 2>/dev/null || true +sleep 4 +echo "=== launchctl list (grep openclaw) ===" +launchctl list | grep -i openclaw || true +echo "=== 18789 ===" +lsof -iTCP:18789 -sTCP:LISTEN 2>/dev/null || echo "未监听(看 err 日志)" +echo "=== stderr 末 20 行 ===" +tail -20 "$HOME/.openclaw/launchd-gateway-longmao.err.log" 2>/dev/null || true +ENDREMOTE + +echo ">>> 完成。阿猫重启或注销后需用户 kr 登录一次,LaunchAgent 才会再次加载(用户级规则)。" diff --git a/运营中枢/工作台/脚本/com.openclaw.gateway.longmao.plist b/运营中枢/工作台/脚本/com.openclaw.gateway.longmao.plist new file mode 100644 index 00000000..6a0d7e90 --- /dev/null +++ b/运营中枢/工作台/脚本/com.openclaw.gateway.longmao.plist @@ -0,0 +1,30 @@ + + + + + Label + com.openclaw.gateway.longmao + Comment + OpenClaw 龙虾网关(飞书龙猫)— 阿猫 Mac;须 Node >=22.16,故使用 Homebrew Node,勿用 ~/.local/node22 + ProgramArguments + + /usr/local/opt/node/bin/node + /Users/kr/.local/share/npm-global/lib/node_modules/openclaw/dist/index.js + gateway + --port + 18789 + + WorkingDirectory + /Users/kr/.openclaw + RunAtLoad + + KeepAlive + + ThrottleInterval + 15 + StandardOutPath + /Users/kr/.openclaw/launchd-gateway-longmao.out.log + StandardErrorPath + /Users/kr/.openclaw/launchd-gateway-longmao.err.log + + diff --git a/运营中枢/工作台/阿猫Mac_OpenClaw配置情况分析.md b/运营中枢/工作台/阿猫Mac_OpenClaw配置情况分析.md index b2460901..d2c9e3dd 100644 --- a/运营中枢/工作台/阿猫Mac_OpenClaw配置情况分析.md +++ b/运营中枢/工作台/阿猫Mac_OpenClaw配置情况分析.md @@ -184,4 +184,18 @@ --- +## 十五、2026-03-27:龙虾网关 LaunchAgent(登录自启 + 崩溃拉起) + +| 项目 | 说明 | +|------|------| +| **目的** | 阿猫 Mac 上 **OpenClaw 网关(龙虾)** 在 **用户 kr 登录后自动启动**,进程退出后由 **launchd 自动重启**(`KeepAlive`),避免仅依赖手动 `nohup`。 | +| **plist** | `~/Library/LaunchAgents/com.openclaw.gateway.longmao.plist`(仓库真源:`运营中枢/工作台/脚本/com.openclaw.gateway.longmao.plist`)。 | +| **进程** | **`/usr/local/opt/node/bin/node`** + `…/openclaw/dist/index.js gateway --port 18789`(**禁止**用 `~/.local/node22` 的 22.14,否则不满足 OpenClaw ≥22.16)。 | +| **日志** | `~/.openclaw/launchd-gateway-longmao.out.log` / `launchd-gateway-longmao.err.log`。 | +| **重装/修复** | 在能 SSH 的机器上执行:`bash 运营中枢/工作台/脚本/amiao_install_openclaw_launchagent.sh`(可用环境变量 `AMIAO_SSH` 覆盖 SSH 命令)。 | +| **旧任务** | 曾存在的 **`ai.openclaw.gateway`** 已 **unload** 且 plist 改名为 `ai.openclaw.gateway.plist.off_20260327`,避免与龙虾 **双实例抢端口** 或用错 Node。 | +| **范围说明** | 本 plist 在 **`~/Library/LaunchAgents`**,属 **用户级**:**开机后需用户 kr 登录 macOS 一次** 才会加载;未登录桌面会话前不会启动(与系统级 LaunchDaemon 不同)。 | + +--- + *文档生成:卡若AI 工作台。*