| name | oc-deploy |
| description | Use when the user asks to deploy, push, or sync openclaw.json to the remote host, or says '部署設定', '推設定', or wants to apply local config changes to the remote. |
oc-deploy
Runtime Configuration
執行前讀取 setup.json:
- SSH 連線用
remote.sshAlias(以下以 ${SSH_ALIAS} 表示)
- 遠端路徑用
remote.openclawPath(以下以 ${OPENCLAW_PATH} 表示)
- 服務名稱用
gateway.serviceName(以下以 ${SERVICE_NAME} 表示)
步驟
1. 驗證本地 config(LOCAL)
讀取 config/openclaw.json 並確認:
- JSON 格式正確(能 parse)
- 所有
botToken 欄位都是 ${VAR} 格式(regex: \$\{[A-Z_]+\}),沒有明文 token
gateway.auth.token 也是 ${VAR} 格式
- 如果驗證失敗,停止部署並告知 使用者 哪裡有問題
2. SSH 備份遠端現有 config
ssh ${SSH_ALIAS} 'cp ${OPENCLAW_PATH}/openclaw.json ${OPENCLAW_PATH}/openclaw.json.bak.$(date +%Y%m%d-%H%M%S)'
3. SCP 推送新 config
scp config/openclaw.json ${SSH_ALIAS}:${OPENCLAW_PATH}/openclaw.json
4. 確認檔案權限
ssh ${SSH_ALIAS} 'chmod 600 ${OPENCLAW_PATH}/openclaw.json'
5. 重啟 Gateway service
STOP:必須向 使用者 確認後才能執行。 使用 AskUserQuestion 詢問是否重啟 service(CLAUDE.md Law 1)。在 使用者 明確同意前,不得執行以下指令:
ssh ${SSH_ALIAS} 'systemctl --user restart ${SERVICE_NAME}'
6. 驗證部署結果
ssh ${SSH_ALIAS} 'systemctl --user status ${SERVICE_NAME}'
ssh ${SSH_ALIAS} 'journalctl --user -u ${SERVICE_NAME} --no-pager -n 20'
檢查:
- service 狀態是
active (running)
- log 中無
MissingEnvVarError 或其他啟動錯誤
- 回報結果給 使用者
回滾
如果部署失敗,使用步驟 2 建立的備份還原:
ssh ${SSH_ALIAS} 'ls -t ${OPENCLAW_PATH}/openclaw.json.bak.* | head -1'
ssh ${SSH_ALIAS} 'cp ${OPENCLAW_PATH}/openclaw.json.bak.<TIMESTAMP> ${OPENCLAW_PATH}/openclaw.json'
ssh ${SSH_ALIAS} 'systemctl --user restart ${SERVICE_NAME}'